/// <summary> /// 根据组织Id集合获取组织集合,包括为0的组织,为0的组织表示"本部门", /// 为-1的表示全部 /// </summary> /// <param name="orgIds">组织Id集合</param> /// <returns></returns> public static List <TempOrganization> GetFormatOrgs(List <string> orgIds) { if (orgIds == null || orgIds.Count == 0) { return(new List <TempOrganization>()); } List <TempOrganization> orgs = new List <TempOrganization>(); foreach (string orgId in orgIds) { if (orgId == Guid.Empty.ToString()) { orgs.Add(new TempOrganization() { Id = "0", Name = "本部门", Des = "本部门" }); } else if (orgId == "-1") { orgs.Add(new TempOrganization() { Id = "-1", Name = "全部", Des = "全部" }); } Sys_Organization org = GetOrg(orgId.ObjToGuid()); if (org != null) { orgs.Add(new TempOrganization() { Id = org.Id.ToString(), Name = org.Name, Des = org.Des }); } } return(orgs); }
/// <summary> /// 操作完成后 /// </summary> /// <param name="operateType"></param> /// <param name="t"></param> /// <param name="result"></param> /// <param name="currUser"></param> /// <param name="otherParams"></param> public void OperateCompeletedHandle(ModelRecordOperateType operateType, OrgM_EmpDeptDuty t, bool result, UserInfo currUser, object[] otherParams = null) { if (result) { string errMsg = string.Empty; if (operateType == ModelRecordOperateType.Add || operateType == ModelRecordOperateType.Edit) { if (t.OrgM_EmpId.HasValue && t.OrgM_EmpId.Value != Guid.Empty && t.OrgM_DeptId.HasValue && t.OrgM_DeptId.Value != Guid.Empty) { OrgM_Dept dept = OrgMOperate.GetDeptById(t.OrgM_DeptId.Value); string username = OrgMOperate.GetUserNameByEmpId(t.OrgM_EmpId.Value); if (!string.IsNullOrEmpty(username) && dept != null) { Sys_User user = UserOperate.GetUser(username); Sys_Organization org = UserOperate.GetAllOrgs(x => x.Name == dept.Name && x.Flag == dept.Id.ToString()).FirstOrDefault(); if (user != null && org != null && user.Sys_OrganizationId != org.Id) { user.Sys_OrganizationId = org.Id; CommonOperate.OperateRecord <Sys_User>(user, ModelRecordOperateType.Edit, out errMsg, new List <string>() { "Sys_OrganizationId" }, false); } } } } } }
/// <summary> /// 部门操作完成 /// </summary> /// <param name="operateType"></param> /// <param name="t"></param> /// <param name="result"></param> /// <param name="currUser"></param> /// <param name="otherParams"></param> public void OperateCompeletedHandle(ModelRecordOperateType operateType, OrgM_Dept t, bool result, UserInfo currUser, object[] otherParams = null) { if (result) { string errMsg = string.Empty; Guid? parentId = null; if (t.ParentId.HasValue && t.ParentId.Value != Guid.Empty) { OrgM_Dept parentDept = OrgMOperate.GetParentDept(t.ParentId.Value); if (parentDept != null && !string.IsNullOrEmpty(parentDept.Name)) { Sys_Organization parentOrg = CommonOperate.GetEntity <Sys_Organization>(x => x.Name == parentDept.Name && x.Flag == parentDept.Id.ToString() && !x.IsDeleted, null, out errMsg); if (parentOrg != null) { parentId = parentOrg.Id; } } } //部门新增后增加到系统组织中 if (operateType == ModelRecordOperateType.Add) { Sys_Organization org = new Sys_Organization() { Name = t.Name, ParentId = parentId, Flag = t.Id.ToString(), Des = t.Alias, CreateUserId = t.CreateUserId, CreateUserName = t.CreateUserName, ModifyUserId = t.ModifyUserId, ModifyUserName = t.ModifyUserName }; CommonOperate.OperateRecord <Sys_Organization>(org, ModelRecordOperateType.Add, out errMsg, null, false); } else if (operateType == ModelRecordOperateType.Edit) { Sys_Organization org = CommonOperate.GetEntity <Sys_Organization>(x => x.Name == t.Name && x.Flag == t.Id.ToString() && !x.IsDeleted, null, out errMsg); if (org != null) { org.ParentId = parentId; org.ModifyDate = DateTime.Now; org.ModifyUserId = t.ModifyUserId; org.ModifyUserName = t.ModifyUserName; List <string> fileNames = new List <string>() { "ParentId", "ModifyDate", "ModifyUserId", "ModifyUserName" }; CommonOperate.OperateRecord <Sys_Organization>(org, ModelRecordOperateType.Edit, out errMsg, fileNames, false); } } } }
/// <summary> /// 组织用户树 /// </summary /// <param name="orgId">组织根结点ID,为空是加载整棵树</param> /// <param name="isAsync">是否异步方式</param> /// <param name="expression">过滤表达式</param> /// <returns></returns> public static TreeNode LoadOrgUserTree(Guid?orgId, bool isAsync = false, Expression <Func <Sys_User, bool> > expression = null) { TreeNode node = null; Sys_Organization orgRoot = GetOrgRoot(); Sys_Organization root = orgId.HasValue && orgId.Value != Guid.Empty ? GetOrg(orgId.Value) : orgRoot; List <TreeNode> list = new List <TreeNode>(); if (root != null) { if (expression == null) { //组织根结点 node = new TreeNode() { id = root.Id.ToString(), text = root.Name, iconCls = "eu-icon-dept", state = isAsync ? "closed" : "open" }; //加载用户节点 List <Sys_User> listUsers = GetOrgUsers(root.Id, true, expression); //该组织下用户 if (listUsers != null && listUsers.Count > 0) { List <TreeNode> empNodes = listUsers.Select(x => new TreeNode() { id = x.Id.ToString(), text = string.IsNullOrEmpty(x.AliasName) ? x.UserName : string.Format("{0}({1})", x.UserName, x.AliasName), iconCls = "eu-icon-user" }).ToList(); list.AddRange(empNodes); } //加载组织子结点 List <Sys_Organization> listOrgs = GetChildOrgs(root.Id, true); if (!isAsync) //同步方式 { foreach (Sys_Organization org in listOrgs) { TreeNode tempNode = LoadOrgUserTree(org.Id, isAsync, expression); if (tempNode != null && tempNode.children != null && tempNode.children.ToList().Count > 0) { list.Add(tempNode); } } } else //异步方式 { list.AddRange(listOrgs.Select(x => new TreeNode() { id = x.Id.ToString(), text = x.Name, iconCls = "eu-icon-dept", state = isAsync ? "closed" : "open" })); } node.children = list; if (orgRoot != null && orgRoot.Id == root.Id) { Expression <Func <Sys_User, bool> > exp = x => x.Sys_OrganizationId == null || x.Sys_OrganizationId == Guid.Empty; if (expression != null) { exp = ExpressionExtension.And(exp, expression); } //加载没有组织的用户 List <Sys_User> noOrgUsers = GetAllUsers(exp); if (noOrgUsers.Count > 0) { TreeNode tempNode = new TreeNode() { id = Guid.Empty.ToString(), text = "根结点", iconCls = "eu-icon-dept" }; List <TreeNode> tempChildren = new List <TreeNode>() { node }; List <TreeNode> noUserNodes = noOrgUsers.Select(x => new TreeNode() { id = x.Id.ToString(), text = string.IsNullOrEmpty(x.AliasName) ? x.UserName : string.Format("{0}({1})", x.UserName, x.AliasName), iconCls = "eu-icon-user" }).ToList(); tempChildren.AddRange(noUserNodes); tempNode.children = tempChildren; node = tempNode; } } } else { node = new TreeNode() { id = root.Id.ToString(), text = root.Name, iconCls = "eu-icon-dept" }; List <Sys_User> listUsers = GetAllUsers(expression); if (listUsers != null && listUsers.Count > 0) { List <TreeNode> empNodes = listUsers.Select(x => new TreeNode() { id = x.Id.ToString(), text = string.IsNullOrEmpty(x.AliasName) ? x.UserName : string.Format("{0}({1})", x.UserName, x.AliasName), iconCls = "eu-icon-user" }).ToList(); list.AddRange(empNodes); node.children = list; } } } else { //加载用户节点 List <Sys_User> listUsers = GetAllUsers(expression); if (listUsers != null && listUsers.Count > 0) { node = new TreeNode() { id = Guid.Empty.ToString(), text = "根结点", iconCls = "eu-icon-dept" }; List <TreeNode> empNodes = listUsers.Select(x => new TreeNode() { id = x.Id.ToString(), text = string.IsNullOrEmpty(x.AliasName) ? x.UserName : string.Format("{0}({1})", x.UserName, x.AliasName), iconCls = "eu-icon-user" }).ToList(); list.AddRange(empNodes); node.children = list; } } return(node); }