public BaseBll() { if (OrgClient == null) { OrgClient = new SMT.SaaS.BLLCommonServices.OrganizationWS.OrganizationServiceClient(); } if (PermClient == null) { PermClient = new SMT.SaaS.BLLCommonServices.PermissionWS.PermissionServiceClient(); } if (BllPermClient == null) { BllPermClient = new SMT.SaaS.BLLCommonServices.BllCommonUserPermissionWS.BllCommonPermissionServicesClient(); } if (UtilityClass == null) { UtilityClass = new SMT.SaaS.BLLCommonServices.Utility(); } }
/// <summary> /// 更新离职申请记录 /// </summary> /// <param name="entity">离职申请记录实体</param> public void LeftOfficeUpdate(T_HR_LEFTOFFICE entity, ref string strMsg) { try { SMT.SaaS.BLLCommonServices.PermissionWS.PermissionServiceClient perclient = new SMT.SaaS.BLLCommonServices.PermissionWS.PermissionServiceClient(); string employeeId = entity.T_HR_EMPLOYEE.EMPLOYEEID; var t_sys_user = perclient.GetUserByEmployeeID(employeeId); var tmp = from c in dal.GetObjects() where c.T_HR_EMPLOYEE.EMPLOYEEID == entity.T_HR_EMPLOYEE.EMPLOYEEID && (c.CHECKSTATE == "0" || c.CHECKSTATE == "1") && c.T_HR_EMPLOYEEPOST.EMPLOYEEPOSTID == entity.T_HR_EMPLOYEEPOST.EMPLOYEEPOSTID && c.DIMISSIONID != entity.DIMISSIONID select c; if (tmp.Count() > 0) { //throw new Exception("LEFTOFFICESUBMITTED"); strMsg = "LEFTOFFICESUBMITTED"; return; } T_HR_LEFTOFFICE ent = dal.GetTable().FirstOrDefault(s => s.DIMISSIONID == entity.DIMISSIONID); if (ent != null) { if (entity.CHECKSTATE == Convert.ToInt32(CheckStates.Approved).ToString()) { //如果是代理岗位 就将代理岗设为无效 并添加异动记录 EmployeePostBLL epbll = new EmployeePostBLL(); T_HR_EMPLOYEEPOST epost = dal.GetObjects <T_HR_EMPLOYEEPOST>().Include("T_HR_POST").FirstOrDefault(ep => ep.EMPLOYEEPOSTID == entity.T_HR_EMPLOYEEPOST.EMPLOYEEPOSTID); if (epost != null && epost.ISAGENCY == "1") { epost.EDITSTATE = "0"; epbll.EmployeePostUpdate(epost); //删除岗位 #region 添加异动记录 var tmpInfo = from c in dal.GetObjects <T_HR_POST>() join b in dal.GetObjects <T_HR_DEPARTMENT>() on c.T_HR_DEPARTMENT.DEPARTMENTID equals b.DEPARTMENTID where c.POSTID == epost.T_HR_POST.POSTID select new { c.POSTID, b.DEPARTMENTID, b.T_HR_COMPANY.COMPANYID }; EmployeePostChangeBLL epchangeBLL = new EmployeePostChangeBLL(); T_HR_EMPLOYEEPOSTCHANGE postChange = new T_HR_EMPLOYEEPOSTCHANGE(); postChange = new T_HR_EMPLOYEEPOSTCHANGE(); postChange.T_HR_EMPLOYEE = new T_HR_EMPLOYEE(); postChange.T_HR_EMPLOYEE.EMPLOYEEID = entity.T_HR_EMPLOYEE.EMPLOYEEID; postChange.EMPLOYEECODE = entity.T_HR_EMPLOYEE.EMPLOYEECODE; postChange.EMPLOYEENAME = entity.T_HR_EMPLOYEE.EMPLOYEECNAME; postChange.POSTCHANGEID = Guid.NewGuid().ToString(); postChange.CHECKSTATE = Convert.ToInt32(CheckStates.Approved).ToString(); postChange.ISAGENCY = "1"; if (tmpInfo.Count() > 0) { postChange.FROMCOMPANYID = tmpInfo.FirstOrDefault().COMPANYID; postChange.FROMDEPARTMENTID = tmpInfo.FirstOrDefault().DEPARTMENTID; postChange.FROMPOSTID = tmpInfo.FirstOrDefault().POSTID; postChange.OWNERCOMPANYID = tmpInfo.FirstOrDefault().COMPANYID; postChange.OWNERDEPARTMENTID = tmpInfo.FirstOrDefault().DEPARTMENTID; postChange.OWNERPOSTID = tmpInfo.FirstOrDefault().POSTID; } postChange.OWNERID = entity.T_HR_EMPLOYEE.EMPLOYEEID; postChange.POSTCHANGREASON = entity.LEFTOFFICEREASON; postChange.CHANGEDATE = entity.LEFTOFFICEDATE.ToString(); postChange.CREATEUSERID = entity.CREATEUSERID; postChange.POSTCHANGCATEGORY = "3"; string Msg = string.Empty; epchangeBLL.EmployeePostChangeAdd(postChange, ref Msg); #endregion //通知及时通讯 DelImstantMember(entity.T_HR_EMPLOYEE.EMPLOYEEID, epost.T_HR_POST.POSTID); } else { //员工状态修改为离职中 string tmpstr = ""; var employeetmps = from c in dal.GetObjects <T_HR_EMPLOYEE>() where c.EMPLOYEEID == entity.T_HR_EMPLOYEE.EMPLOYEEID select c; if (employeetmps.Count() > 0) { EmployeeBLL bll = new EmployeeBLL(); var employeetmp = employeetmps.FirstOrDefault(); if (employeetmp.EMPLOYEESTATE != "2") //已离职,如果已经离职则不要再改为离职中 { employeetmp.EMPLOYEESTATE = "3"; //离职中 } bll.EmployeeUpdate(employeetmp, ref tmpstr); } } #region 员工离职通知流程管理员进行修改相应的流程 try { SMT.Foundation.Log.Tracer.Debug(System.DateTime.Now.ToString() + " 员工离职审核通过通知流程管理员进行修改相应的流程"); StringBuilder sb = new StringBuilder(); sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); sb.Append("<Root>"); //查出用户的所有角色 var roleUserList = perclient.GetSysUserRoleByUser(t_sys_user.SYSUSERID).ToList(); if (roleUserList != null && roleUserList.Any()) { bool hasRole = false; sb.Append("<Roles>"); foreach (var roleUser in roleUserList) { //查出改用户所在的角色,还有没有其它用户,如果没有则调流程 string roleId = roleUser.T_SYS_ROLE.ROLEID; var roleUserIncludeSource = perclient.GetSysUserByRoleToEmployeeLeave(roleId); if (roleUserIncludeSource == null) { hasRole = true; sb.Append("<Role RoleID=\"" + roleUser.T_SYS_ROLE.ROLEID + "\" RoleName=\"" + roleUser.T_SYS_ROLE.ROLENAME + "\" />"); } else { var roleUserInclude = roleUserIncludeSource.Where(t => t.EMPLOYEEID != employeeId).ToList(); if (roleUserInclude.Count == 0) { hasRole = true; sb.Append("<Role RoleID=\"" + roleUser.T_SYS_ROLE.ROLEID + "\" RoleName=\"" + roleUser.T_SYS_ROLE.ROLENAME + "\" />"); } } } sb.Append("</Roles>"); //如果存在角色 if (hasRole) { var empInfo = from c in dal.GetObjects <T_HR_POST>() join b in dal.GetObjects <T_HR_DEPARTMENT>() on c.T_HR_DEPARTMENT.DEPARTMENTID equals b.DEPARTMENTID join d in dal.GetObjects <T_HR_COMPANY>() on b.T_HR_COMPANY.COMPANYID equals d.COMPANYID where c.POSTID == entity.T_HR_EMPLOYEE.OWNERPOSTID select new { c.T_HR_DEPARTMENT.T_HR_DEPARTMENTDICTIONARY.DEPARTMENTNAME, b.T_HR_COMPANY.BRIEFNAME, c.T_HR_POSTDICTIONARY.POSTNAME }; string companyName = ""; string deptName = ""; string postName = ""; if (empInfo != null) { companyName = empInfo.FirstOrDefault().BRIEFNAME; deptName = empInfo.FirstOrDefault().DEPARTMENTNAME; postName = empInfo.FirstOrDefault().POSTNAME; } sb.Append(" <User UserID=\"" + entity.T_HR_EMPLOYEE.EMPLOYEEID + "\" UserName=\"" + entity.T_HR_EMPLOYEE.EMPLOYEECNAME + "\" CompanyID=\"" + entity.T_HR_EMPLOYEE.OWNERCOMPANYID + "\" CompanyName=\"" + companyName + "\" DeparmentID=\"" + entity.T_HR_EMPLOYEE.OWNERDEPARTMENTID + "\" DeparmentName=\"" + deptName + "\" PostID=\"" + entity.T_HR_EMPLOYEE.OWNERPOSTID + "\" PostName=\"" + postName + "\" />"); bool hasManagerEmail = false; var flowManagers = perclient.GetFlowManagers(new string[] { entity.T_HR_EMPLOYEE.OWNERCOMPANYID }); if (flowManagers != null) { sb.Append("<Admins>"); foreach (var mangers in flowManagers) { string email = ""; var employee = from c in dal.GetObjects <T_HR_EMPLOYEE>() where c.EMPLOYEEID == mangers.EMPLOYEEID select c; if (employee != null) { email = employee.FirstOrDefault().EMAIL; } if (!string.IsNullOrEmpty(email)) { hasManagerEmail = true; sb.Append("<Admin ID=\"" + mangers.EMPLOYEEID + "\" Name=\"" + mangers.EMPLOYEENAME + "\" Email=\"" + email + "\" />"); } } sb.Append("</Admins>"); } sb.Append("</Root>"); if (hasManagerEmail) { SMT.Foundation.Log.Tracer.Debug(System.DateTime.Now.ToString() + "调用CheckFlowByRole:" + sb.ToString()); SMT.SaaS.BLLCommonServices.WFPlatformWS.OutInterfaceClient outClient = new SaaS.BLLCommonServices.WFPlatformWS.OutInterfaceClient(); outClient.CheckFlowByRole(sb.ToString()); } else { SMT.Foundation.Log.Tracer.Debug(System.DateTime.Now.ToString() + "流程管理员没有设置邮箱,不调用CheckFlowByRole"); } } else { SMT.Foundation.Log.Tracer.Debug(System.DateTime.Now.ToString() + "当前用户id:(" + employeeId + ")所在角色还有用户,不调用CheckFlowByRole"); } } else { SMT.Foundation.Log.Tracer.Debug(System.DateTime.Now.ToString() + "没有找到用户的角色"); } } catch (Exception ex) { SMT.Foundation.Log.Tracer.Debug(System.DateTime.Now.ToString() + "调用员工离职审核通过通知流程管理员进行修改相应的流程异常:" + ex.Message.ToString()); } #endregion } Utility.CloneEntity <T_HR_LEFTOFFICE>(entity, ent); if (entity.T_HR_EMPLOYEE != null) { ent.T_HR_EMPLOYEEReference.EntityKey = new System.Data.EntityKey(qualifiedEntitySetName + "T_HR_EMPLOYEE", "EMPLOYEEID", entity.T_HR_EMPLOYEE.EMPLOYEEID); } if (entity.T_HR_EMPLOYEEPOST != null) { ent.T_HR_EMPLOYEEPOSTReference.EntityKey = new System.Data.EntityKey(qualifiedEntitySetName + "T_HR_EMPLOYEEPOST", "EMPLOYEEPOSTID", entity.T_HR_EMPLOYEEPOST.EMPLOYEEPOSTID); } //dal.Update(ent); Update(ent, ent.CREATEUSERID); } } catch (Exception ex) { strMsg = ex.Message; SMT.Foundation.Log.Tracer.Debug(System.DateTime.Now.ToString() + " LeftOfficeUpdate:" + ex.Message); throw ex; } }