using APT.Infrastructure.Core; using APT.BaseData.Domain.Entities.FM; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using APT.BaseData.Domain.IServices.FM; using APT.Utility; using APT.BaseData.Domain.Entities.BD; using System.Linq; using APT.BaseData.Domain.Enums; using System; using System.Linq.Expressions; using APT.BaseData.Services.Services.FM; using APT.BaseData.Domain.IServices; using APT.BaseData.Services.DomainServices; using NPOI.Util; using Google.Protobuf.WellKnownTypes; using APT.BaseData.Domain.ApiModel; using NPOI.SS.Formula.Functions; using APT.MS.Domain.Entities.PF; using APT.BaseData.Domain.Enums.PF; namespace APT.FM.WebApi.Controllers.Api.FM { [Route("api/FM/Department")] public class DepartmentController : AuthorizeTreeApiController { IFMDepartmentService DepartmentService { get; set; } public DepartmentController(IFMDepartmentService departmentService) { DepartmentService = departmentService; } /// /// 查询 /// /// /// [HttpPost, Route("Entities")] public JsonActionResult> Entities([FromBody] KeywordFilter filter) { return WitEntities(null, filter); } /// /// 查询 /// /// /// /// [HttpPost, Route("OrderEntities")] public JsonActionResult> OrderEntities([FromBody] KeywordFilter filter) { filter.FilterGroup.Rules.Add(new FilterRule() { Field = "ENABLE_STATUS", Operate = FilterOperate.Equal, Value = 0 }); filter.FilterGroup.Rules.Add(new FilterRule() { Field = "CATEGORY", Operate = FilterOperate.Equal, Value = 5 }); var result = WitOrderEntities(null, filter); if (result.Data.Count() > 0) { var users = this.GetEntities(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, new BaseFilter(filter.OrgId)).ToList(); foreach (var item in result.Data) { List outPartmentIds = new List(); List inputIds = new List() { item.ID }; GetDepartmentIds(filter.OrgId.Value, inputIds, ref outPartmentIds); outPartmentIds.Add(item.ID); var userCount = users.Count(t => t.DEPARTMENT_ID != null && outPartmentIds.Contains((Guid)t.DEPARTMENT_ID)); item.NAME = item.NAME + "(" + userCount + ")"; } } return result; } /// /// 返回所有下级部门节点 /// /// /// /// public void GetDepartmentIds(Guid orgId, List listDepIDInt, ref List departmentIdPs) { var listDep = GetEntities(e => !e.IS_DELETED && e.PARENT_ID.HasValue && listDepIDInt.Contains(e.PARENT_ID.Value), new BaseFilter(orgId)); if (listDep != null && listDep.Any()) { listDepIDInt = listDep.Select(e => e.ID).ToList(); departmentIdPs.AddRange(listDepIDInt); GetDepartmentIds(orgId, listDepIDInt, ref departmentIdPs); } } /// /// 查询 /// /// /// [HttpPost, Route("Paged")] public PagedActionResult Paged([FromBody] KeywordPageFilter pageFilter) { return WitPaged(null, pageFilter); } /// /// 查询 /// /// /// [HttpPost, Route("OrderPaged")] public PagedActionResult OrderPaged([FromBody] KeywordPageFilter pageFilter) { bool isAdd = false; if (pageFilter.FilterGroup.Rules == null) isAdd = true; if (!isAdd) { var c = pageFilter.FilterGroup.Rules.FirstOrDefault(e => e.Field == "CATEGORY"); if (c == null) isAdd = true; } if (isAdd) { if (pageFilter.FilterGroup.Rules == null) pageFilter.FilterGroup.Rules = new List(); //默认非外包 FilterRule filterRule = new FilterRule(); filterRule.Field = "CATEGORY"; filterRule.Value = FMCATEGORY.ACTURE; filterRule.IsSysParamRule = false; filterRule.Operate = FilterOperate.Equal; pageFilter.FilterGroup.Rules.Add(filterRule); } return WitOrderPaged(null, pageFilter); } /// /// 删除 /// /// /// [HttpGet, Route("Delete")] public JsonActionResult Delete(string id) { return WitRealDelete(id); } /// /// 更新 /// /// /// [HttpPost, Route("Update")] public JsonActionResult Update([FromBody] T_FM_DEPARTMENT entity) { return WitUpdate(entity); } /// /// 批量删除 /// /// /// [HttpGet, Route("BatchDelete")] public JsonActionResult BatchDelete(string ids) { return WitRealBatchDelete(ids); } /// /// 获得单条实体数据 /// /// /// [HttpPost, Route("Get")] public JsonActionResult Get([FromBody] KeywordFilter filter) { return WitEntity(null, filter); } /// /// 更新 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_FM_DEPARTMENT entity) { return SafeExecute(() => { var deptUser = entity.Nav_UserDeparts; entity.Nav_UserDeparts = null; this.UnifiedCommit(() => { this.UpdateEntityNoCommit(entity); if (deptUser != null) { this.BantchSaveEntityNoCommit(deptUser); } }); return true; }); } /// /// 部门列表 /// /// 过滤条件 /// [HttpPost, Route("WorkShopTreeData")] public JsonActionResult>> WorkShopTreeData([FromBody] KeywordFilter filter) { return WitTreeOrderEntities(i => i.DEPARTMENT_TYPE == (int)FMDepartmentType.车间, filter); } /// /// 保存生产日历配置信息 /// /// /// [HttpPost, Route("CalendarUpdate")] public JsonActionResult CalendarUpdate([FromBody] T_FM_DEPARTMENT entity) { return SafeExecute(() => { if (entity != null && entity.Nav_DepartmentScheduling != null && entity.ORG_ID != null) { //var shiftList = this.GetEntities(s => s.ORG_ID == entity.ORG_ID && s.DEPARTMENT_ID == entity.ID && s.DATE_TIME == entity //.Nav_DepartmentScheduling.FirstOrDefault().DATE_TIME, filter); //var sIds = shiftList.Select(s => s.ID); //排除不存在数据库中并且是删除状态的数据 List nodeSchedulingList = entity.Nav_DepartmentScheduling.Where(i => !i.IS_DELETED).Select(e => new T_FM_DEPARTMENT_SCHEDULING { ORG_ID = entity.ORG_ID, ID = Guid.NewGuid(), DEPARTMENT_ID = entity.ID, //DEPARTMENT_CALENDAR_CONFIG_ID = e.DEPARTMENT_CALENDAR_CONFIG_ID, DATE_TIME = e.DATE_TIME, CLASS_ID = e.CLASS_ID, TEAM_ID = e.TEAM_ID, ENABLE_STATUS = e.ENABLE_STATUS }).ToList(); //删除原本的人员排班计划 var teamIds = entity.Nav_DepartmentScheduling.Select(i => i.TEAM_ID).ToList(); var filter = new BaseFilter(entity.ORG_ID); filter.SelectField = new string[] { "ID", "TEAM_ID", "PERSON_ID" }; var classPersons = this.GetEntities(i => teamIds.Contains(i.TEAM_ID), filter); List departmentSchedulingDetails = new List(); foreach (var e in nodeSchedulingList) { var classPerson = classPersons.Where(i => i.TEAM_ID == e.TEAM_ID).ToList(); foreach (var t in classPerson) { T_FM_DEPARTMENT_SCHEDULING_DETAIL sd = new T_FM_DEPARTMENT_SCHEDULING_DETAIL() { ID = Guid.NewGuid(), ORG_ID = e.ORG_ID, PERSON_ID = t.PERSON_ID, DEPARTMENT_SCHEDULING_ID = e.ID, }; departmentSchedulingDetails.Add(sd); } } this.UnifiedCommit(() => { this.DeleteEntityNoCommit(i => i.Nav_DepartmentScheduling.DEPARTMENT_ID == entity.ID && i.Nav_DepartmentScheduling.DATE_TIME == entity.Nav_DepartmentScheduling.FirstOrDefault().DATE_TIME); this.DeleteEntityNoCommit(i => i.DEPARTMENT_ID == entity.ID && i.DATE_TIME == entity.Nav_DepartmentScheduling.FirstOrDefault().DATE_TIME); if (nodeSchedulingList.Count > 0) this.BantchAddEntityNoCommit(nodeSchedulingList); if (departmentSchedulingDetails.Count > 0) this.BantchAddEntityNoCommit(departmentSchedulingDetails); }); } else this.ThrowError("040001"); return true; }); } /// /// 应用当日所有节点 /// /// /// [HttpPost, Route("ApplyAll")] public JsonActionResult ApplyAll([FromBody] T_FM_DEPARTMENT entity) { return SafeExecute(() => { KeywordFilter filter = new KeywordFilter(); if (entity != null && entity.ID != null && entity.ORG_ID != null && entity.Nav_DepartmentScheduling != null) { var shiftList = this.GetEntities(s => s.ORG_ID == entity.ORG_ID && s.DATE_TIME == entity.Nav_DepartmentScheduling.FirstOrDefault().DATE_TIME, filter); //获取当前排班单元排班配置 var sIds = shiftList.Where(s => s.DEPARTMENT_ID == entity.ID).Select(s => s.ID); //排除不存在数据库中并且是删除状态的数据 List nodeSchedulingList = entity.Nav_DepartmentScheduling.Select(e => new T_FM_DEPARTMENT_SCHEDULING { ORG_ID = entity.ORG_ID, ID = e.ID, DEPARTMENT_ID = e.DEPARTMENT_ID, DEPARTMENT_CALENDAR_CONFIG_ID = e.DEPARTMENT_CALENDAR_CONFIG_ID, DATE_TIME = e.DATE_TIME, CLASS_ID = e.CLASS_ID, TEAM_ID = e.TEAM_ID, IS_DELETED = e.IS_DELETED, ENABLE_STATUS = e.ENABLE_STATUS }).Where(n => !(!sIds.Contains(n.ID) && n.IS_DELETED == true)).ToList(); //获取所有排班单元(排除当前配置项) var spanList = this.GetEntities(n => n.DEPARTMENT_TYPE == (int)FMDepartmentType.车间 && n.ID != entity.ID, filter); //获取要删除的排班信息(排除当前排班单元) var delIds = shiftList.Where(s => s.DEPARTMENT_ID != entity.ID).Select(d => d.ID).ToList(); //获取要删除排班明细表的数据 var delDetailIds = this.GetEntities(x => delIds.Contains(x.DEPARTMENT_SCHEDULING_ID), filter).Select(x => x.ID).ToList(); var batchData = nodeSchedulingList.Where(b => b.IS_DELETED == false); List batchDataList = new List(); foreach (var item in spanList) { var shiftSpanList = batchData.Select(b => new T_FM_DEPARTMENT_SCHEDULING { ORG_ID = entity.ORG_ID, ID = new Guid(), DEPARTMENT_ID = item.ID, DEPARTMENT_CALENDAR_CONFIG_ID = b.DEPARTMENT_CALENDAR_CONFIG_ID, DATE_TIME = b.DATE_TIME, CLASS_ID = b.CLASS_ID, TEAM_ID = b.TEAM_ID, CREATE_TIME = DateTime.Now, MODIFY_TIME = DateTime.Now, IS_DELETED = b.IS_DELETED, ENABLE_STATUS = b.ENABLE_STATUS }); batchDataList.AddRange(shiftSpanList); } //保存当前配置 this.UnifiedCommit(() => { //保存当前配置 this.BantchSaveEntityNoCommit(nodeSchedulingList); //先清空明细表数据 this.BantchDeleteEntityNoCommit(delDetailIds); //清空其它排班 this.BantchDeleteEntityNoCommit(delIds); //重新创建新的排班 this.BantchAddEntityNoCommit(batchDataList); }); } else this.ThrowError("040001"); return true; }); } /// /// 部门保存(新增安全员子表) /// /// /// [HttpPost, Route("UpdateAll")] public JsonActionResult UpdateAll([FromBody] T_FM_DEPARTMENT entity) { return SafeExecute(() => { //var safeUser = entity==null?null:entity.Nav_SafeUser; //entity.Nav_SafeUser = null; T_FM_TEAM teamInfo = null; if (entity.DEPARTMENT_TYPE == (int)FMDepartmentType.班组) { teamInfo = this.GetEntity(t => t.DEPARTMENT_ID == entity.ID); if (teamInfo == null) { teamInfo = new T_FM_TEAM() { NAME = entity.NAME, DEPARTMENT_ID = entity.ID, //CHARGE_PERSON_ID = user.PERSON_ID, ORG_ID = entity.ORG_ID, ID = Guid.NewGuid(), }; } else { teamInfo.NAME = entity.NAME; teamInfo.DEPARTMENT_ID = entity.ID; //teamInfo.CHARGE_PERSON_ID = entity.USER_ID; } } if (entity.USER_ID != null) { var user = this.GetEntity(t => t.ID == entity.USER_ID); if (teamInfo != null) teamInfo.CHARGE_PERSON_ID = user.PERSON_ID; } //List productionUnit = null; entity.Nav_ProdutionUnit = null; //if (productionUnit != null && productionUnit.Any()) //{ // productionUnit.ForEach(t => // { // t.ORG_ID = entity.ORG_ID; t.DEPARTMENT_ID = entity.ID; // t.Nav_Enums = null; // }); //} var unitList = new List(); var userUnitList = new List(); var departmentList = new List(); var userList = new List(); var deleteDepartIds = new List(); var deleteUserIds = new List(); if (entity.MineType != null) { //var enumIds = productionUnit.Select(t => t.ENUMS_ID).Distinct().ToList(); var enumList = this.GetEntity(t => t.CODE == "BSMineTypeEnum" && t.VALUE == entity.MineType); //查所有下级部门组织 List departmentId = new List(); departmentId.Add(entity.ID); List departmentIds = new List() { entity.ID }; var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value; DepartmentService.GetDepartmentIds(orgId, departmentId, ref departmentIds); departmentList = this.GetEntities(t => departmentIds.Contains(t.ID) && t.ENABLE_STATUS == 0, new BaseFilter(orgId), "Nav_ProdutionUnit").ToList(); departmentList.ForEach(t => { t.MineType = entity.MineType; T_FM_DEPARTMENT_PRODUCTION_UNIT unit = new T_FM_DEPARTMENT_PRODUCTION_UNIT(); unit.ORG_ID = t.ORG_ID; unit.DEPARTMENT_ID = t.ID; unit.ENUMS_ID = enumList?.ID; unit.Nav_Enums = null; unitList.Add(unit); if (t.Nav_ProdutionUnit != null && t.Nav_ProdutionUnit.Any()) { var ids = t.Nav_ProdutionUnit.Select(t => t.ID).ToList(); deleteDepartIds.AddRange(ids); } }); //departmentList.ForEach(t => t.MineType = entity.MineType); userList = this.GetEntities(t => departmentIds.Contains(t.DEPARTMENT_ID.Value) && t.ENABLE_STATUS == 0, new BaseFilter(orgId), "Nav_ProdutionUnit").ToList(); userList.ForEach(t => { //var enumValues = new List(); //productionUnit.ForEach(t1 => //{ // T_FM_USER_PRODUCTION_UNIT unit = new T_FM_USER_PRODUCTION_UNIT(); // unit.ORG_ID = t.ORG_ID; unit.USER_ID = t.ID; unit.ENUMS_ID = t1.ENUMS_ID; // unit.Nav_Enums = null; // userUnitList.Add(unit); // var value = enumList.FirstOrDefault(m => m.ID == t1.ENUMS_ID)?.VALUE.ToString(); // enumValues.Add(value); //}); //t.MineType = string.Join(",", enumValues); t.MineType = entity.MineType.ToString(); T_FM_USER_PRODUCTION_UNIT unit = new T_FM_USER_PRODUCTION_UNIT(); unit.ORG_ID = t.ORG_ID; unit.USER_ID = t.ID; unit.ENUMS_ID = enumList?.ID; unit.Nav_Enums = null; userUnitList.Add(unit); if (t.Nav_ProdutionUnit != null && t.Nav_ProdutionUnit.Any()) { var ids = t.Nav_ProdutionUnit.Select(t => t.ID).ToList(); deleteUserIds.AddRange(ids); } }); } this.UnifiedCommit(() => { //if (safeUser != null && safeUser.Any()) // this.BantchSaveEntityNoCommit(safeUser); if (teamInfo != null) this.UpdateEntityNoCommit(teamInfo); //if (productionUnit != null && productionUnit.Any()) // this.BantchSaveEntityNoCommit(productionUnit); if (deleteDepartIds != null && deleteDepartIds.Any()) this.BantchDeleteEntityNoCommit(deleteDepartIds); if (deleteUserIds != null && deleteUserIds.Any()) this.BantchDeleteEntityNoCommit(deleteUserIds); if (departmentList != null && departmentList.Any()) this.BantchSaveEntityNoCommit(departmentList); if (userList != null && userList.Any()) this.BantchSaveEntityNoCommit(userList); if (unitList != null && unitList.Any()) this.BantchSaveEntityNoCommit(unitList); if (userUnitList != null && userUnitList.Any()) this.BantchSaveEntityNoCommit(userUnitList); if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; }); } /// /// 获得单条实体数据(新增部门人员子表) /// /// /// [HttpPost, Route("GetAll")] public JsonActionResult GetAll([FromBody] KeywordFilter filter) { return SafeExecute(() => { T_FM_DEPARTMENT main = new T_FM_DEPARTMENT(); var id = filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID").Value.ToString(); if (!string.IsNullOrEmpty(id)) { var entity = this.GetEntity(id, false, "Nav_SafeUser", "Nav_DepartmentUser", "Nav_Parent", "Nav_ChargeUser", "Nav_SafeUser.Nav_User", "Nav_DepartmentUser.Nav_User", "Nav_DepartmentUser.Nav_User.Nav_ApproveRole", "Nav_User", "Nav_Person", "Nav_Person.Nav_Post", "Nav_ProdutionUnit.Nav_Enums"); if (entity != null) { main = entity; if (entity.Nav_DepartmentUser != null && entity.Nav_DepartmentUser.Any()) { main.Nav_DepartmentUser = entity.Nav_DepartmentUser.Where(t => !t.Nav_User.CODE.Contains("admin")).ToList(); } else { //List departmentIds = new List(); //List departmentId = new List(); //departmentId.Add(main.ID); //GetAllDepartmentId(departmentId, ref departmentIds); var users = this.GetEntities(t => main.ID == t.DEPARTMENT_ID && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && !t.CODE.Contains("admin"), new BaseFilter(main.ORG_ID), new string[] { "Nav_ApproveRole", "Nav_Person.Nav_Post" }).ToList(); if (users.Any() && users != null) { List departmentUser = new List(); users.ForEach(u => { T_FM_DEPARTMENT_USER us = new T_FM_DEPARTMENT_USER(); us.DEPARTMENT_ID = u.DEPARTMENT_ID; us.USER_ID = u.ID; us.Nav_User = u; departmentUser.Add(us); }); //main.Nav_DepartmentUser = departmentUser.OrderByDescending(e => e.Nav_User.APPROVE_ROLE_ID).ToList();//wyw 有审批角色的显示再前面 main.Nav_DepartmentUser = departmentUser.OrderByDescending(e => e.Nav_User.Nav_ApproveRole?.CODE).ToList(); } } } } return main; }); } /// /// 返回所有部门节点 /// private void GetAllDepartmentId(List departmentId, ref List allDepartmentIds) { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; allDepartmentIds.AddRange(departmentId); var department = GetEntities(t => departmentId.Contains((Guid)t.PARENT_ID), new BaseFilter(orgId)); if (department != null && department.Any()) { var departmentIds = department.Select(u => u.ID).ToList(); GetAllDepartmentId(departmentIds, ref allDepartmentIds); } } /// /// 查询 /// /// /// [HttpPost, Route("OrderPagedPost")] public PagedActionResult OrderPagedPost([FromBody] KeywordPageFilter pageFilter) { return SafeGetPagedData(delegate (PagedActionResult result) { Guid DEPARTMENT_ID = Guid.Empty; if (pageFilter.FilterGroup.Rules != null && pageFilter.FilterGroup.Rules.Any()) { var rules = pageFilter.FilterGroup.Rules; foreach (var rule in rules) { if (rule.Field == "DEPARTMENT_ID") { DEPARTMENT_ID = new Guid(rule.Value.ToString()); rules.Remove(rule); break; } } pageFilter.FilterGroup.Rules = rules; } else if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Any()) { var rules = pageFilter.FilterGroup.Groups.ToList()[0].Rules; foreach (var rule in rules) { if (rule.Field == "DEPARTMENT_ID") { DEPARTMENT_ID = new Guid(rule.Value.ToString()); rules.Remove(rule); break; } } //pageFilter.FilterGroup.Groups = rules; } if (DEPARTMENT_ID != Guid.Empty) { List listPersonID = new List(); var IListPersons = GetEntities(e => e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID == DEPARTMENT_ID && e.PERSON_ID.HasValue && !e.IS_DELETED && e.ENABLE_STATUS == 0, null, null); if (IListPersons != null && IListPersons.Any()) { foreach (var item in IListPersons) { listPersonID.Add(item.PERSON_ID.Value); } } //var listPersonID = GetEntities(e => e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID == DEPARTMENT_ID && e.PERSON_ID.HasValue, null, null).ToList().Select(e => e.PERSON_ID); if (listPersonID != null && listPersonID.Any()) { var IlistPerson = GetEntities(e => e.POST_ID.HasValue && listPersonID.Contains(e.ID), null, null); if (IlistPerson != null && IlistPerson.Any()) { List listPostID = new List(); foreach (var item in IlistPerson) { listPostID.Add(item.POST_ID.Value); } if (listPostID.Any()) { Expression> expression = e => !e.IS_DELETED && e.STATUS == 1 && listPostID.Contains(e.ID); PagedActionResult orderPageEntities = this.GetOrderPageEntities(expression, pageFilter, null); result.Data = orderPageEntities.Data; result.TotalCount = orderPageEntities.TotalCount; } } } } else { result.Data = new List(); result.TotalCount = 0; } }); } /// /// 根据部门和人员返回人员信息 /// /// /// [HttpPost, Route("GetSelectUsers")] public JsonActionResult> GetSelectUsers([FromBody] SelectUsersModel userModel) { return SafeExecute>(() => { Expression> express = t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用; Expression> selectExpress = t => false; if (userModel == null || (!userModel.UserIds.Any() && !userModel.DepartmentIds.Any())) { return new List(); } else { if (userModel.UserIds.Any()) { var userIds = userModel.UserIds.Select(i => Guid.Parse(i)); selectExpress = selectExpress.Or(item => userIds.Contains(item.ID)); } if (userModel.DepartmentIds.Any()) { var departmentIds = userModel.DepartmentIds.Select(i => Guid.Parse(i)); selectExpress = selectExpress.Or(item => departmentIds.Contains(item.DEPARTMENT_ID ?? Guid.Empty)); } } express = express.And(selectExpress); var filter = new BaseFilter(Guid.Parse(userModel.OrgId)); filter.SelectField = new string[] { "ID", "NAME" }; var deUsers = this.GetEntities(express, filter); return deUsers.Select(u => new UserModel { UserId = u.ID.ToString(), UserName = u.NAME }).ToList(); }); } /// /// 获取部门和安全员信息 /// /// /// [HttpPost, Route("DepartmentAndUserEntities")] public JsonActionResult> DepartmentAndUserEntities([FromBody] KeywordFilter filter) { return SafeExecute(() => { bool? isMaster = null; if (!string.IsNullOrEmpty(filter.Keyword)) { isMaster = Convert.ToBoolean(filter.Keyword); } filter.FilterGroup.Rules.Add(new FilterRule() { Field = "ENABLE_STATUS", Operate = FilterOperate.Equal, Value = 0 }); var result = GetOrderEntities(null, filter, null); if (result.Count() > 0 && isMaster.HasValue) { IEnumerable listUserID = null; T_FM_USER userCheck = null; //Nav_UserList if (isMaster.Value) { //负责人 result = result.Where(e => e.USER_ID.HasValue); listUserID = result.Select(e => e.USER_ID.Value).Distinct(); if (listUserID != null && listUserID.Any()) { var listUser = GetEntities(e => listUserID.Contains(e.ID), null, null); foreach (var item in result) { //找负责人 userCheck = listUser.FirstOrDefault(e => e.ID == item.USER_ID.Value); if (userCheck != null) { item.Nav_UserList = new List() { userCheck }; } } } } else { //安全员 var listDepID = result.Select(e => e.ID); var rows = GetEntities(e => e.NAME.Contains("安全"), null, null); IEnumerable listRoleID = null; if (rows != null && rows.Any()) { listRoleID = rows.Select(e => e.ID); } if (listRoleID != null && listRoleID.Any()) { var listUser = GetEntities(e => e.DEPARTMENT_ID.HasValue && listDepID.Contains(e.DEPARTMENT_ID.Value) && e.APPROVE_ROLE_ID.HasValue && listRoleID.Contains(e.APPROVE_ROLE_ID.Value), null, null); foreach (var item in result) { userCheck = listUser.FirstOrDefault(e => e.DEPARTMENT_ID == item.ID); if (userCheck != null) { item.Nav_UserList = new List() { userCheck }; } } } } } result = result.Where(e => e.Nav_UserList != null && e.Nav_UserList.Any()); return result; }); } #region 外包单位 组织 /// /// 更新 /// /// /// [HttpPost, Route("FullUpdateWB")] public JsonActionResult FullUpdateWB([FromBody] T_FM_DEPARTMENT entity) { return SafeExecute(() => { if (!entity.ORG_ID.HasValue) { throw new Exception("获取传参失败!"); } T_FM_DEPARTMENT modelP = null; if (entity.PARENT_ID == null || entity.PARENT_ID == Guid.Empty) { List list = APT.Utility.DataHelper.GetEnum("FilePathHead"); modelP = GetEntity(e => e.NAME == "外包虚拟组织" && e.CATEGORY == FMCATEGORY.WB); if (modelP == null) { //新增外包初始节点 var root = GetEntity(e => e.DEPARTMENT_TYPE == 3 && e.ENABLE_STATUS == 0); string depID = "1BBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB"; string ORG_ID = entity.ORG_ID.Value.ToString().ToUpper(); if (ORG_ID == FilePathHead.XLK.GetDescription()) { depID = "1BBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB"; } else if (ORG_ID == FilePathHead.LYXT.GetDescription()) { depID = "2BBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB"; } else if (ORG_ID == FilePathHead.LYYL.GetDescription()) { depID = "3BBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB"; } else if (ORG_ID == FilePathHead.DCJD.GetDescription()) { depID = "4BBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB"; } else if (ORG_ID == FilePathHead.GXBB.GetDescription()) { depID = "5BBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB"; } else if (ORG_ID == FilePathHead.SPSD.GetDescription()) { depID = "8BBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB"; } modelP = new T_FM_DEPARTMENT(); modelP.ID = new Guid(depID); modelP.NAME = "外包虚拟组织"; modelP.CODE = "WB"; modelP.ORG_ID = entity.ORG_ID; modelP.CATEGORY = FMCATEGORY.WB; modelP.NUM = 1000; modelP.DEPARTMENT_TYPE = 0;//所有的外包定位在一个部门里面 modelP.PARENT_ID = root.ID;//绑在公司下级 } entity.PARENT_ID = modelP.ID; } entity.DEPARTMENT_TYPE = 1;//默认到车间级别 entity.CATEGORY = FMCATEGORY.WB;//操作的都是外包的 entity.Nav_UserDeparts = null; #region 外包管理员 添加 组织权限 var role = GetEntity(e => e.NAME == "外包管理员"); bool isAddRole = false; if (role == null) { isAddRole = true; role = new T_FM_ROLE(); role.ID = Guid.NewGuid(); role.ORG_ID = entity.ORG_ID; role.CODE = "WBGL"; role.NAME = "外包管理员"; role.NAME_ACRONYM = ";"; role.PLATFORM_TYPE = 0; role.REMARK = "系统自动添加外包管理员"; } List listRoleDep = new List(); List listDepID = new List() { entity.ID }; if (entity.PARENT_ID.HasValue) { listDepID.Add(entity.PARENT_ID.Value); } var lisrRDCheck = GetEntities(e => e.ROLE_ID == role.ID && listDepID.Contains(e.DEPARTMENT_ID), null, null); T_FM_ROLE_DEPARTMENT check = null; foreach (var item in listDepID) { check = lisrRDCheck.FirstOrDefault(e => e.DEPARTMENT_ID == item); if (check == null) { listRoleDep.Add(new T_FM_ROLE_DEPARTMENT() { ID = Guid.NewGuid(), ORG_ID = entity.ORG_ID, DEPARTMENT_ID = item, ROLE_ID = role.ID, }); } } #endregion this.UnifiedCommit(() => { this.UpdateEntityNoCommit(entity); if (modelP != null) this.UpdateEntityNoCommit(modelP); if (isAddRole)//添加角色 this.UpdateEntityNoCommit(role); if (listRoleDep != null && listRoleDep.Any()) this.BantchSaveEntityNoCommit(listRoleDep); }); return true; }); } #endregion } }