/// <summary> /// 登录信息 /// </summary> /// <param name="empNo"></param> /// <param name="dcLoginInfo"></param> /// <param name="dcHospitalInfo"></param> public void GetLoginInfo(string empNo, ref EntityLogin loginVo, ref EntityHospital hospitalVo) { using (BizLogin biz = new BizLogin()) { biz.GetLoginInfo(empNo, ref loginVo, ref hospitalVo); } }
/// <summary> /// 获取登录者信息 /// </summary> /// <param name="strEmpNo"></param> /// <param name="loginVo"></param> /// <param name="hospitalVo"></param> /// <returns></returns> public void GetLoginInfo(string strEmpNo, ref EntityLogin loginVo, ref EntityHospital hospitalVo) { string SQL = string.Empty; string strValue = string.Empty; DataTable dtResult = null; loginVo = new EntityLogin(); hospitalVo = new EntityHospital(); SqlHelper svc = new SqlHelper(EnumBiz.onlineDB); IDataParameter[] objParamArr = null; try { EntityCodeOperator voEmp = new EntityCodeOperator(); voEmp.disable = "F"; voEmp.operCode = strEmpNo; List <EntityCodeOperator> lstEmployee = EntityTools.ConvertToEntityList <EntityCodeOperator>(svc.Select(voEmp, new List <string> { EntityCodeOperator.Columns.disable, EntityCodeOperator.Columns.operCode })); if (lstEmployee != null && lstEmployee.Count == 1) { voEmp = lstEmployee[0]; EntityPlusOperator voEmpPlus = new EntityPlusOperator(); voEmpPlus.operCode = strEmpNo; List <EntityPlusOperator> lstEmpPlus = EntityTools.ConvertToEntityList <EntityPlusOperator>(svc.Select(voEmpPlus, new List <string> { EntityPlusOperator.Columns.operCode })); if (lstEmpPlus != null && lstEmpPlus.Count > 0) { voEmpPlus = lstEmpPlus[0]; } bool blnLock = false; if (voEmp.acctStatus.ToString() == "1") { blnLock = true; if (voEmp.acctLockDate != null) { strValue = SysParameter(72); int intTemp = 24;//默认24小时后自动解锁 if (!string.IsNullOrEmpty(strValue)) { intTemp = Function.Int(strValue); } if (intTemp != 0) { DateTime dtmLock = voEmp.acctLockDate.Value; DateTime dtmNow = DateTime.Now; if (dtmNow.Subtract(dtmLock).TotalHours >= intTemp) { blnLock = false; Dictionary <string, object> dicSet = new Dictionary <string, object>(); dicSet.Add(EntityCodeOperator.Columns.acctStatus, 0); dicSet.Add(EntityCodeOperator.Columns.acctLockDate, null); Dictionary <string, object> dicWhere = new Dictionary <string, object>(); dicWhere.Add(EntityCodeOperator.Columns.operCode, strEmpNo); svc.Commit(svc.GetUpdateParm(voEmp, dicSet, dicWhere)); } } } } //loginVo.EmpId = voEmp.Empid.ToString(); loginVo.EmpNo = voEmp.operCode; loginVo.EmpName = voEmp.operName; //loginVo.Sex = voEmpPlus.Sex; loginVo.Birthday = voEmpPlus.birth; //loginVo.IdCard = voEmpPlus.Idcard; loginVo.Tel = voEmpPlus.tel; loginVo.Addr = voEmpPlus.addr; //loginVo.IdentityFlag = voEmp.Identity; loginVo.AdminlevelCode = voEmpPlus.dutyCode; loginVo.TechLevelCode = voEmpPlus.rankCode; //loginVo.SignKeyID = voEmp.Signdigital; if (!string.IsNullOrEmpty(voEmp.pwd)) { loginVo.Pwd = voEmp.pwd; //ESCryptography.Decrypt(voEmp.pwd); } else { loginVo.Pwd = string.Empty; } loginVo.LoginTime = svc.ServerTime().ToString("yyyy-MM-dd HH:mm:ss"); if (!string.IsNullOrEmpty(voEmpPlus.clsCode) && voEmpPlus.clsCode.Trim() == "01") { loginVo.EmpFlag = 1; } else if (!string.IsNullOrEmpty(voEmpPlus.clsCode) && voEmpPlus.clsCode.Trim() == "02") { loginVo.EmpFlag = 2; } else { loginVo.EmpFlag = 3; } loginVo.clsCode = voEmpPlus.clsCode.Trim(); // 是否管理员 if (loginVo.EmpNo.Trim() == "00") { loginVo.IsAdmin = true; } //if (voEmp.Pwdusedate == null) // loginVo.PwdUseDate = null; //else // loginVo.PwdUseDate = Convert.ToDateTime(voEmp.Pwdusedate.Value); loginVo.AcctLock = blnLock; #region 职称改从code_rank取值 //EntityCommonDic voComm = new EntityCommonDic(); //voComm.Status = 1; //voComm.Classid = 1; //voComm.Itemcode = loginVo.TechLevelCode; //List<EntityCommonDic> lstComm = EntityTools.ConvertToEntityList<EntityCommonDic>(svc.Select(voComm, new List<string> { EntityCommonDic.Columns.Status, EntityCommonDic.Columns.Classid, EntityCommonDic.Columns.Itemcode })); //if (lstComm.Count > 0) //{ // loginVo.TechLevelName = lstComm[0].Itemname; //} EntityCodeRank rankVo = new EntityCodeRank(); rankVo.rankCode = loginVo.TechLevelCode; List <EntityCodeRank> lstRank = EntityTools.ConvertToEntityList <EntityCodeRank>(svc.Select(rankVo, new List <string> { EntityCodeRank.Columns.rankCode })); if (lstRank.Count > 0) { loginVo.TechLevelName = lstRank[0].rankName; } #endregion string strIDArr = string.Empty; //DataTable dtTemp = null; //if (loginVo.EmpFlag == 1 || loginVo.EmpFlag == 3) //{ SQL = @"select b.defaultflag as defaultflag, null as deptid, a.dept_code as deptcode, a.dept_name as deptname, a.py_code as pycode, a.wb_code as wbcode from code_department a inner join defDeptemployee b on a.dept_code = b.deptcode where b.opercode = ?"; objParamArr = svc.CreateParm(1); objParamArr[0].Value = loginVo.EmpNo; dtResult = svc.GetDataTable(SQL, objParamArr); if (dtResult.Rows.Count > 0) { EntityCodeDepartment deptVo = null; loginVo.lstDept = new List <EntityCodeDepartment>(); foreach (DataRow dr in dtResult.Rows) { deptVo = new EntityCodeDepartment(); //deptVo.Deptid = Function.Int(dr["deptid"]); deptVo.deptCode = dr["deptcode"].ToString(); deptVo.deptName = dr["deptname"].ToString(); deptVo.pyCode = dr["pycode"].ToString().ToUpper(); deptVo.wbCode = dr["wbcode"].ToString().ToUpper(); loginVo.lstDept.Add(deptVo); if (Function.Int(dr["defaultflag"]) == 1) { //loginVo.DeptID = Function.Int(deptVo.Deptid); loginVo.DeptName = deptVo.deptName; loginVo.DeptCode = dr["deptcode"].ToString(); // SQL = @"select b.areaid, // b.areaname, // b.pycode, // b.wbcode, // '' as c_code // from defDeptarea a // left join dicArea b // on a.areaid = b.areaid // where a.deptid = ?"; // objParamArr = svc.CreateParm(1); // objParamArr[0].Value = deptVo.Deptid; // dtTemp = svc.GetDataTable(SQL, objParamArr); // if (dtTemp != null && dtTemp.Rows.Count > 0) // { // loginVo.AreaID = Function.Int(dtTemp.Rows[0]["areaid"]); // loginVo.AreaName = dtTemp.Rows[0]["areaname"].ToString(); // loginVo.DeptCode_zy = dtTemp.Rows[0]["c_code"].ToString(); // } } //strIDArr += dr["deptid"].ToString() + ","; } // SQL = @"select distinct b.areaid, b.areaname, b.pycode, b.wbcode // from defDeptarea a, dicArea b // where a.areaid = b.areaid // and a.deptid in (" + strIDArr.Substring(0, strIDArr.Length - 1) + ")"; // dtResult = svc.GetDataTable(SQL); // if (dtResult.Rows.Count > 0) // { // EntityArea dcAreaInfo = null; // loginVo.lstArea = new List<EntityArea>(); // foreach (DataRow dr in dtResult.Rows) // { // dcAreaInfo = new EntityArea(); // dcAreaInfo.Areaid = Function.Int(dr["areaid"]); // dcAreaInfo.Areaname = dr["areaname"].ToString(); // dcAreaInfo.Pycode = dr["pycode"].ToString(); // dcAreaInfo.Wbcode = dr["wbcode"].ToString(); // loginVo.lstArea.Add(dcAreaInfo); // } // } // } // } // else if (loginVo.EmpFlag == 2) // { // SQL = @"select a.defaultflag, b.areaid, b.areaname, b.pycode, b.wbcode // from defDeptemployee a, dicArea b // where a.deptid = b.areaid // and a.attrflag = 2 // and a.empid = ?"; // objParamArr = svc.CreateParm(1); // objParamArr[0].Value = loginVo.EmpId; // dtResult = svc.GetDataTable(SQL, objParamArr); // if (dtResult.Rows.Count > 0) // { // EntityArea dcAreaInfo = null; // loginVo.lstArea = new List<EntityArea>(); // foreach (DataRow dr in dtResult.Rows) // { // dcAreaInfo = new EntityArea(); // dcAreaInfo.Areaid = Function.Int(dr["areaid"]); // dcAreaInfo.Areaname = dr["areaname"].ToString(); // dcAreaInfo.Pycode = dr["pycode"].ToString(); // dcAreaInfo.Wbcode = dr["wbcode"].ToString(); // loginVo.lstArea.Add(dcAreaInfo); // if (Function.Int(dr["defaultflag"]) == 1) // { // loginVo.AreaID = Function.Int(dcAreaInfo.Areaid); // loginVo.AreaName = dcAreaInfo.Areaname; // SQL = @"select b.deptid, b.deptname, b.deptcode, b.pycode, b.wbcode // from defDeptarea a, dicDepartment b // where a.deptid = b.deptid // and a.areaid = ?"; // objParamArr = svc.CreateParm(1); // objParamArr[0].Value = dcAreaInfo.Areaid; // dtTemp = svc.GetDataTable(SQL, objParamArr); // if (dtTemp != null && dtTemp.Rows.Count > 0) // { // loginVo.DeptID = Function.Int(dtTemp.Rows[0]["deptid"]); // loginVo.DeptName = dtTemp.Rows[0]["deptname"].ToString(); // loginVo.DeptCode = dtTemp.Rows[0]["deptcode"].ToString(); // } // } // strIDArr += dr["areaid"].ToString() + ","; // } // SQL = @"select distinct b.deptid, b.deptcode, b.deptname, b.pycode, b.wbcode // from defDeptarea a, dicDepartment b // where a.deptid = b.deptid // and a.areaid in (" + strIDArr.Substring(0, strIDArr.Length - 1) + ")"; // dtResult = svc.GetDataTable(SQL); // if (dtResult.Rows.Count > 0) // { // EntityDepartment dcDeptInfo = null; // loginVo.lstDept = new List<EntityDepartment>(); // foreach (DataRow dr in dtResult.Rows) // { // dcDeptInfo = new EntityDepartment(); // dcDeptInfo.Deptid = Function.Int(dr["deptid"]); // dcDeptInfo.Deptcode = dr["deptcode"].ToString(); // dcDeptInfo.Deptname = dr["deptname"].ToString(); // dcDeptInfo.Pycode = dr["pycode"].ToString(); // dcDeptInfo.Wbcode = dr["wbcode"].ToString(); // loginVo.lstDept.Add(dcDeptInfo); // } // } } //} if (loginVo != null) { EntityDefOperatorRole voRoleEmp = new EntityDefOperatorRole(); voRoleEmp.operCode = loginVo.EmpNo; List <EntityDefOperatorRole> lstRoleEmp = EntityTools.ConvertToEntityList <EntityDefOperatorRole>(svc.Select(voRoleEmp, new List <string> { EntityDefOperatorRole.Columns.operCode })); if (lstRoleEmp.Count > 0) { loginVo.lstRoleID = new List <string>(); foreach (EntityDefOperatorRole vo in lstRoleEmp) { loginVo.lstRoleID.Add(vo.roleCode); } } } EntityHospital voHospital = new EntityHospital(); List <EntityHospital> lstHospital = EntityTools.ConvertToEntityList <EntityHospital>(svc.Select(voHospital)); if (lstHospital.Count > 0) { hospitalVo = lstHospital[0]; GlobalHospital.HospitalName = hospitalVo.Hospitalname; } //密码有效期 loginVo.PwdValidDays = Function.Int(SysParameter(2)); } dtResult = null; } catch (Exception e) { ExceptionLog.OutPutException(e); } finally { svc = null; } }
/// <summary> /// Verify /// </summary> /// <returns></returns> private bool Verify() { string accountNo = this.txtAccountNo.Text.Trim(); string pwd = this.txtPwd.Text; if (accountNo == string.Empty) { return(false); } if (lstAccount == null || lstAccount.Count == 0) { DialogBox.Msg("登录账号信息未配置,请联系管理员。", MessageBoxIcon.Information); return(false); } List <EntityAccount> acc = lstAccount.FindAll(t => t.EmpNo == accountNo); ProxyLogin proxy = new ProxyLogin(); try { if (acc == null || acc.Count == 0) { DialogBox.Msg("登录账号不存在,请重新输入。", MessageBoxIcon.Information); this.txtAccountNo.Focus(); return(false); } GlobalAppConfig.AccountFuncs = acc; EntityLogin dcLoginInfo = null; EntityHospital dcHospitalInfo = null; proxy.Service.GetLoginInfo(accountNo, ref dcLoginInfo, ref dcHospitalInfo); if (dcLoginInfo != null) { //本机信息 dcLoginInfo.IP = Function.LocalIP(); dcLoginInfo.Mac = Function.LocalMac(); dcLoginInfo.HostName = Function.LocalHostName(); GlobalLogin.objLogin = dcLoginInfo; GlobalHospital.objHospital = dcHospitalInfo; string oriPwd = GlobalLogin.objLogin.Pwd; if (pwd != string.Empty) { if (1 != 1) { oriPwd = (new clsSymmetricAlgorithm()).Decrypt(oriPwd, clsSymmetricAlgorithm.enmSymmetricAlgorithmType.DES); } } if (pwd != oriPwd) //GlobalLogin.objLogin.Pwd) { //if (CheckCAType()) //{ // if (!HopeBridge.Common.Ca.CA.IDVerify(acc[0].SignDigital)) // { // DialogBox.Msg("电子认证失败,请检查电子密钥KEY盘。"); // return false; // } //} if (dcLoginInfo.AcctLock) { DialogBox.Msg("账户被锁定,请与管理员联系。", MessageBoxIcon.Information); return(false); } this.ErrorNums++; if (this.AllowErrorNums == this.ErrorNums) { ProxyFrame proxy1 = new ProxyFrame(); if (proxy1.Service.LockAccount(accountNo) > 0) { DialogBox.Msg("密码输入超过系统允许的最大错误次数(" + this.AllowErrorNums.ToString() + "次)\r\n\r\n系统将被锁定,请与管理员联系。", MessageBoxIcon.Information); Application.Exit(); return(false); } } this.txtPwd.Focus(); DialogBox.Msg("密码不正确,请重新输入。\r\n\r\n错误" + this.ErrorNums.ToString() + "次,剩余" + Convert.ToString((3 - this.ErrorNums)) + "次。"); return(false); } //if (dcLoginInfo.Pwd == GlobalAppConfig.INIT_PWD) //{ // DialogBox.Msg("使用系统前请先修改初始密码!", MessageBoxIcon.Information); // frmPassWord frmPwd = new frmPassWord(accountNo); // if (frmPwd.ShowDialog() != DialogResult.OK) // { // return false; // } //} //if (dcLoginInfo.PwdValidDays > 0 && dcLoginInfo.PwdUseDate != null) //{ // DateTime dtmNow = Utils.ServerTime(); // TimeSpan ts = new TimeSpan(dcLoginInfo.PwdValidDays, 0, 0, 0); // if (dtmNow.Subtract(ts) >= dcLoginInfo.PwdUseDate) // { // DialogBox.Msg("密码超过系统默认的有效期(" + dcLoginInfo.PwdValidDays.ToString() + "天),请重设密码。"); // frmPassWord frmPwd = new frmPassWord(accountNo); // if (frmPwd.ShowDialog() != DialogResult.OK) // { // return false; // } // } //} if (dcLoginInfo.EmpFlag == 1 || dcLoginInfo.EmpFlag == 3) { if (string.IsNullOrEmpty(dcLoginInfo.DeptCode) || dcLoginInfo.lstDept.Count == 0) { DialogBox.Msg("当前登录人没有默认科室,请联系管理员。"); return(false); } } //if (dcLoginInfo.EmpFlag == 2) //{ // if (dcLoginInfo.AreaID <= 0 || dcLoginInfo.lstArea.Count == 0) // { // DialogBox.Msg("当前登录人没有默认病区,请联系管理员。"); // return false; // } //} // 重新.加载本地参数 GlobalAppConfig.AppConfig = GetAppConfig(dcLoginInfo.EmpNo); // 医院组织机构系统编码 //GlobalHospital.OrgSysCode = Function.LocalSettingValue("Login", "Hospital", "OrgSysCode"); // 主题 string skinName = Function.ReadLocalSettingValue("Main|skinName", "value"); if (string.IsNullOrEmpty(skinName)) { EntityLocalSetting vo = new EntityLocalSetting(); vo.MachName = Function.LocalHostName(); vo.MacAddr = Function.LocalMac(); vo.IpAddr = Function.LocalIP(); vo.EmpNo = dcLoginInfo.EmpNo; vo.Parent = "Common"; vo.Node = "SkinName"; ProxyFrame proxyFrame = new ProxyFrame(); proxyFrame.Service.GetLocalSetting(ref vo); skinName = vo.Value; } if (!string.IsNullOrEmpty(skinName)) { GlobalLogin.SkinName = skinName; } // 写账号 WriteAccountNo(); return(true); } } finally { proxy = null; } return(false); }