diff --git a/APT.MicroApi/APT.FM.WebApi/Controllers/Api/DepartmentController.cs b/APT.MicroApi/APT.FM.WebApi/Controllers/Api/DepartmentController.cs index 0835ba5..0dad4d0 100644 --- a/APT.MicroApi/APT.FM.WebApi/Controllers/Api/DepartmentController.cs +++ b/APT.MicroApi/APT.FM.WebApi/Controllers/Api/DepartmentController.cs @@ -1,24 +1,24 @@ -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.ApiModel; using APT.BaseData.Domain.Entities.BD; -using System.Linq; +using APT.BaseData.Domain.Entities.FM; 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; +using APT.BaseData.Domain.IServices; +using APT.BaseData.Domain.IServices.FM; +using APT.BaseData.Services.DomainServices; +using APT.BaseData.Services.Services.FM; +using APT.Infrastructure.Core; +using APT.MS.Domain.Entities.PF; +using APT.Utility; +using Google.Protobuf.WellKnownTypes; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using NPOI.SS.Formula.Functions; +using NPOI.Util; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; namespace APT.FM.WebApi.Controllers.Api.FM { @@ -384,17 +384,19 @@ namespace APT.FM.WebApi.Controllers.Api.FM { //var safeUser = entity==null?null:entity.Nav_SafeUser; //entity.Nav_SafeUser = null; - T_FM_TEAM teamInfo = null; + T_FM_TEAM addTeamInfo = null; + T_FM_TEAM updateTeamInfo = null; + var teamInfos = new List(); if (entity.DEPARTMENT_TYPE == (int)FMDepartmentType.Class) { - teamInfo = this.GetEntity(t => t.DEPARTMENT_ID == entity.ID); + var teamInfo = this.GetEntity(t => t.DEPARTMENT_ID == entity.ID); if (teamInfo == null) { - teamInfo = new T_FM_TEAM() + addTeamInfo = new T_FM_TEAM() { NAME = entity.NAME, DEPARTMENT_ID = entity.ID, - //CHARGE_PERSON_ID = user.PERSON_ID, + //CHARGE_PERSON_ID = entity.USER_ID, ORG_ID = entity.ORG_ID, ID = Guid.NewGuid(), }; @@ -404,14 +406,10 @@ namespace APT.FM.WebApi.Controllers.Api.FM teamInfo.NAME = entity.NAME; teamInfo.DEPARTMENT_ID = entity.ID; //teamInfo.CHARGE_PERSON_ID = entity.USER_ID; + updateTeamInfo = teamInfo; } } - 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()) @@ -424,8 +422,10 @@ namespace APT.FM.WebApi.Controllers.Api.FM //} var unitList = new List(); var userUnitList = new List(); - var departmentList = new List(); - var userList = new List(); + var departUpdateList = new List(); + var entityUpdateList = new List(); + var userUpdateList = new List(); + var userList = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID), "Nav_ProdutionUnit").ToList(); var deleteDepartIds = new List(); var deleteUserIds = new List(); if (entity.PRODUCTION_UNIT_ID != null) @@ -435,14 +435,17 @@ namespace APT.FM.WebApi.Controllers.Api.FM //查所有下级部门组织 List departmentId = new List(); departmentId.Add(entity.ID); - List departmentIds = new List() { entity.ID }; + List departmentIds = new List(); 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 => - { + var departmentList = this.GetEntities(t => departmentIds.Contains(t.ID) && t.ENABLE_STATUS == 0, new BaseFilter(orgId), "Nav_ProdutionUnit").ToList(); + foreach (var t in departmentList) + { + t.ENABLE_STATUS = entity.ENABLE_STATUS; + t.IS_DELETED = entity.IS_DELETED; t.MineType = entity.MineType; t.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; + departUpdateList.Add(t); 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; unit.DEPART_UNIT_ID = entity.PRODUCTION_UNIT_ID; @@ -452,10 +455,10 @@ namespace APT.FM.WebApi.Controllers.Api.FM 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 userListTemp = userList.Where(t => t.DEPARTMENT_ID!=null && departmentIds.Contains(t.DEPARTMENT_ID.Value)).ToList(); + userListTemp.ForEach(t => { //var enumValues = new List(); //productionUnit.ForEach(t1 => @@ -468,6 +471,7 @@ namespace APT.FM.WebApi.Controllers.Api.FM // enumValues.Add(value); //}); //t.MineType = string.Join(",", enumValues); + userUpdateList.Add(t); 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; unit.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; @@ -479,42 +483,58 @@ namespace APT.FM.WebApi.Controllers.Api.FM } }); } + if (entity.USER_ID != null) + { + var user = userList.FirstOrDefault(t => t.ID == entity.USER_ID); + if (addTeamInfo != null) + addTeamInfo.CHARGE_PERSON_ID = user.PERSON_ID; + if (updateTeamInfo != null) + updateTeamInfo.CHARGE_PERSON_ID = user.PERSON_ID; + } if (entity.ENABLE_STATUS == 1) { entity.IS_DELETED = true; - if (teamInfo != null) + if (updateTeamInfo != null) { - teamInfo.ENABLE_STATUS = 1; - teamInfo.IS_DELETED = true; - } - foreach (var item in unitList.Where(m => m.DEPARTMENT_ID == entity.ID)) - { - item.IS_DELETED = true; + updateTeamInfo.ENABLE_STATUS = 1; + updateTeamInfo.IS_DELETED = true; + teamInfos.Add(updateTeamInfo); } } + entityUpdateList.Add(entity); + foreach (var item in departUpdateList) + { + item.Nav_User = null; item.Nav_ProdutionUnit = null; item.Nav_Unit = null; item.Nav_Parent = null; item.Nav_DepartmentUser = null; + } + foreach (var item in entityUpdateList) + { + item.Nav_User = null; item.Nav_ProdutionUnit = null; item.Nav_Unit = null; item.Nav_Parent = null;item.Nav_DepartmentUser = null; + } this.UnifiedCommit(() => { //BantchUpdateEntity_noneBase //if (safeUser != null && safeUser.Any()) // this.BantchSaveEntityNoCommit(safeUser); - if (teamInfo != null) - this.UpdateEntityNoCommit(teamInfo); - //if (productionUnit != null && productionUnit.Any()) - // this.BantchSaveEntityNoCommit(productionUnit); + if (addTeamInfo != null) + this.UpdateEntityNoCommit(addTeamInfo); 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 (userUpdateList != null && userUpdateList.Any()) + this.BantchSaveEntityNoCommit(userUpdateList); if (unitList != null && unitList.Any()) this.BantchSaveEntityNoCommit(unitList); if (userUnitList != null && userUnitList.Any()) this.BantchSaveEntityNoCommit(userUnitList); - if (entity != null) - this.UpdateEntityNoCommit(entity); + if (departUpdateList != null && departUpdateList.Any()) + this.BantchUpdateEntity_noneBase(departUpdateList); + if (teamInfos != null && teamInfos.Any()) + this.BantchUpdateEntity_noneBase(teamInfos); + if (entityUpdateList != null && entityUpdateList.Any()) + this.BantchUpdateEntity_noneBase(entityUpdateList); + //if (entity != null) + // this.UpdateEntityNoCommit(entity); }); return true; }); diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs index 52d0850..22221a0 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/FMController.cs @@ -2779,10 +2779,13 @@ namespace APT.PP.WebApi.Controllers.Api.PP return SafeExecute(() => { try - { - var teamLists = new List(); - var teamPersonLists = new List(); - var teamPersonIds = new List(); + { + var departLists = new List(); + var teamAddLists = new List(); + var teamUpdateLists = new List(); + var teamPersonAddLists = new List(); + var teamPersonUpdateLists = new List(); + var deleteTeamPersonIds = new List(); var departs = this.GetEntities_noneBase(t => t.DEPARTMENT_TYPE == (int)FMDepartmentType.Class); var departIds = departs.Select(t => t.ID).ToList(); var teams = this.GetEntities_noneBase(t => true); @@ -2795,79 +2798,84 @@ namespace APT.PP.WebApi.Controllers.Api.PP var departInfo = departs.FirstOrDefault(t => t.ID == item); var userInfo = users.FirstOrDefault(t => t.ID == departInfo?.USER_ID); var persons = users.Where(t => t.DEPARTMENT_ID == item && t.PERSON_ID != null).ToList(); - var teamInfo = teams.FirstOrDefault(t => t.DEPARTMENT_ID == item); - if (teamInfo == null) + var teamInfo = teams.FirstOrDefault(t => t.DEPARTMENT_ID == item); + if (teamInfo == null) + { + if (departInfo.IS_DELETED == false) { - if (departInfo.IS_DELETED == false) + T_FM_TEAM team = new T_FM_TEAM(); + team.ORG_ID = filter.OrgId; + team.CHARGE_PERSON_ID = userInfo?.PERSON_ID; + team.NAME = departInfo.NAME; + team.ENABLE_STATUS = 0; + team.DEPARTMENT_ID = item; + team.ENABLE_STATUS = departInfo.ENABLE_STATUS; + team.IS_DELETED = departInfo.IS_DELETED; + teamAddLists.Add(team); + if (persons != null && persons.Any()) { - T_FM_TEAM team = new T_FM_TEAM(); - team.ORG_ID = filter.OrgId; - team.CHARGE_PERSON_ID = userInfo?.PERSON_ID; - team.NAME = departInfo.NAME; - team.ENABLE_STATUS = 0; - team.DEPARTMENT_ID = item; - team.ENABLE_STATUS = departInfo.ENABLE_STATUS; - team.IS_DELETED = departInfo.IS_DELETED; - teamLists.Add(team); + foreach (var per in persons) + { + T_FM_TEAM_PERSON person = new T_FM_TEAM_PERSON(); + person.ORG_ID = filter.OrgId; + person.TEAM_ID = team.ID; + person.PERSON_ID = (Guid)per.PERSON_ID; + person.IS_DELETED = departInfo.IS_DELETED; + teamPersonAddLists.Add(person); + } + } + } + } + else + { + teamInfo.CHARGE_PERSON_ID = userInfo?.PERSON_ID; + if (departInfo.IS_DELETED == true || departInfo.ENABLE_STATUS == 1) + { + departInfo.IS_DELETED = true; + departInfo.ENABLE_STATUS = 1; + departLists.Add(departInfo); + teamInfo.ENABLE_STATUS = 1; + teamInfo.IS_DELETED = true; + teamUpdateLists.Add(teamInfo); + foreach (var item1 in teamPersons.Where(t => t.TEAM_ID == teamInfo.ID)) + { + item1.IS_DELETED = true; + teamPersonUpdateLists.Add(item1); + } + } + else + { + var teamPersonIds = teamPersons.Where(t => t.TEAM_ID == teamInfo.ID).Select(m => m.ID).ToList(); + deleteTeamPersonIds.AddRange(teamPersonIds); if (persons != null && persons.Any()) { foreach (var per in persons) { T_FM_TEAM_PERSON person = new T_FM_TEAM_PERSON(); person.ORG_ID = filter.OrgId; - person.TEAM_ID = team.ID; + person.TEAM_ID = teamInfo.ID; person.PERSON_ID = (Guid)per.PERSON_ID; - person.IS_DELETED = departInfo.IS_DELETED; - teamPersonLists.Add(person); + teamPersonAddLists.Add(person); } } - } - } - else - { - teamInfo.CHARGE_PERSON_ID = userInfo?.PERSON_ID; - teamInfo.ENABLE_STATUS = departInfo.ENABLE_STATUS; - teamInfo.IS_DELETED = departInfo.IS_DELETED; - teamLists.Add(teamInfo); - if (teamInfo.IS_DELETED == true) - { - foreach (var item1 in teamPersons.Where(t => t.TEAM_ID == teamInfo.ID)) - { - item1.IS_DELETED = true; - teamPersonLists.Add(item1); - } - } - else - { - var personIds = teamPersons.Where(t => t.TEAM_ID == teamInfo.ID).Select(m => m.PERSON_ID).ToList(); - if (persons != null && persons.Any()) - { - foreach (var per in persons) - { - if (!personIds.Contains((Guid)per.PERSON_ID)) - { - T_FM_TEAM_PERSON person = new T_FM_TEAM_PERSON(); - person.ORG_ID = filter.OrgId; - person.TEAM_ID = teamInfo.ID; - person.PERSON_ID = (Guid)per.PERSON_ID; - teamPersonLists.Add(person); - } - } - } - var deletePersonId = teamPersonLists.Select(t => t.PERSON_ID).ToList(); - teamPersonIds = teamPersons.Where(t => personIds.Contains(t.PERSON_ID) && t.TEAM_ID != teamInfo.ID).Select(m => m.ID).ToList(); } } } } UnifiedCommit(() => { - if (teamPersonLists != null && teamPersonLists.Any()) - BantchUpdateEntity_noneBase(teamPersonLists); - if (teamLists != null && teamLists.Any()) - BantchUpdateEntity_noneBase(teamLists); - if (teamPersonIds != null && teamPersonIds.Any()) - BantchDeleteEntityNoCommit(teamPersonIds); + if (deleteTeamPersonIds != null && deleteTeamPersonIds.Any()) + BantchDeleteEntityNoCommit(deleteTeamPersonIds); + if (teamAddLists != null && teamAddLists.Any()) + BantchSaveEntityNoCommit(teamAddLists); + if (teamPersonAddLists != null && teamPersonAddLists.Any()) + BantchSaveEntityNoCommit(teamPersonAddLists); + if (teamPersonUpdateLists != null && teamPersonUpdateLists.Any()) + BantchUpdateEntity_noneBase(teamPersonUpdateLists); + if (teamUpdateLists != null && teamUpdateLists.Any()) + BantchUpdateEntity_noneBase(teamUpdateLists); + if (departLists != null && departLists.Any()) + BantchUpdateEntity_noneBase(departLists); }); } catch (Exception ex)