Exemple #1
0
 /// <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);
     }
 }
Exemple #2
0
        /// <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;
            }
        }
Exemple #3
0
        /// <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);
        }