From 1c2637dc3a5e18aab17febefc585289e9a6d7b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E7=BE=8E=E8=8D=A3?= <10755671+mei-rong-he@user.noreply.gitee.com> Date: Wed, 29 Oct 2025 18:21:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/FM/FMNotificationTaskService.cs | 105 ++++++------ .../Services/PF/PFApproveCallBackService.cs | 144 ++++++++++++---- .../Controllers/Api/SKController.cs | 159 ++++++++++++------ 3 files changed, 271 insertions(+), 137 deletions(-) diff --git a/APT.BaseData.Services/Services/FM/FMNotificationTaskService.cs b/APT.BaseData.Services/Services/FM/FMNotificationTaskService.cs index 1c596a4..069438a 100644 --- a/APT.BaseData.Services/Services/FM/FMNotificationTaskService.cs +++ b/APT.BaseData.Services/Services/FM/FMNotificationTaskService.cs @@ -1498,59 +1498,62 @@ namespace APT.BaseData.Services.Services.FM /// 上一个审批待办 public void TaskToHead(IEnumerable appdetails, T_FM_NOTIFICATION_TASK taskNext, List listModelNext, T_FM_NOTIFICATION_TASK taskLast) { - var checkAdd = appdetails.FirstOrDefault(e => e.ISHEAD && e.IS_CURRENT); - if (checkAdd == null) - { - //审批的最后一步 IS_CURRENT =false - if (taskNext == null && (listModelNext == null || listModelNext.Count() < 1) && taskLast != null) - { - checkAdd = appdetails.FirstOrDefault(e => e.APPROVE_USER_ID.HasValue && e.ISHEAD && e.APPROVE_USER_ID.Value == taskLast.USER_ID); - if (checkAdd != null) - { - if (checkAdd.NUM != appdetails.Max(e => e.NUM)) - { - checkAdd = null; - } - } + if (appdetails != null) + { + var checkAdd = appdetails.FirstOrDefault(e => e.ISHEAD && e.IS_CURRENT); + if (checkAdd == null) + { + //审批的最后一步 IS_CURRENT =false + if (taskNext == null && (listModelNext == null || listModelNext.Count() < 1) && taskLast != null) + { + checkAdd = appdetails.FirstOrDefault(e => e.APPROVE_USER_ID.HasValue && e.ISHEAD && e.APPROVE_USER_ID.Value == taskLast.USER_ID); + if (checkAdd != null) + { + if (checkAdd.NUM != appdetails.Max(e => e.NUM)) + { + checkAdd = null; + } + } + } + } + if (checkAdd != null) + { + var isLastDeal = false;//上一个是审批相关 + if (taskLast != null) + { + var checkLast = appdetails.FirstOrDefault(e => e.ISHEAD && e.APPROVE_USER_ID.HasValue && e.APPROVE_USER_ID.Value == taskLast.USER_ID); + if (checkLast != null) + isLastDeal = true; + } + + try + { + IEnumerable listSync = null; + if (listModelNext != null && listModelNext.Any()) + { + var userids = appdetails.Where(e => e.ISHEAD && e.IS_CURRENT && e.APPROVE_USER_ID.HasValue).Select(e => e.APPROVE_USER_ID.Value); + if (userids != null && userids.Any()) + { + listSync = listModelNext.Where(e => userids.Contains(e.USER_ID)); + } + } + + if (isLastDeal && taskLast != null) + { + this.UpdateEntityByTenant(taskLast, HeadHelper.HeadtelnetCode); + } + if (taskNext != null) + { + this.AddEntityByTenant(taskNext, HeadHelper.HeadtelnetCode); + } + if (listSync != null && listSync.Count() > 0) + { + this.AddEntitiesByTenant(listSync, HeadHelper.HeadtelnetCode); + } + } + catch (Exception ex) { } } } - if (checkAdd != null) - { - var isLastDeal = false;//上一个是审批相关 - if (taskLast != null) - { - var checkLast = appdetails.FirstOrDefault(e => e.ISHEAD && e.APPROVE_USER_ID.HasValue && e.APPROVE_USER_ID.Value == taskLast.USER_ID); - if (checkLast != null) - isLastDeal = true; - } - - try - { - IEnumerable listSync = null; - if (listModelNext != null && listModelNext.Any()) - { - var userids = appdetails.Where(e => e.ISHEAD && e.IS_CURRENT && e.APPROVE_USER_ID.HasValue).Select(e => e.APPROVE_USER_ID.Value); - if (userids != null && userids.Any()) - { - listSync = listModelNext.Where(e => userids.Contains(e.USER_ID)); - } - } - - if (isLastDeal && taskLast != null) - { - this.UpdateEntityByTenant(taskLast, HeadHelper.HeadtelnetCode); - } - if (taskNext != null) - { - this.AddEntityByTenant(taskNext, HeadHelper.HeadtelnetCode); - } - if (listSync != null && listSync.Count() > 0) - { - this.AddEntitiesByTenant(listSync, HeadHelper.HeadtelnetCode); - } - } - catch (Exception ex) { } - } } #endregion diff --git a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs index cf0972d..83b6237 100644 --- a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs +++ b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs @@ -12729,10 +12729,15 @@ namespace APT.BaseData.Services.DomainServices departIds.Add(currentDepart.ID); if (user == null) { - user = users.FirstOrDefault(t => t.DEPARTMENT_ID == currentDepart.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); - if (user != null) + var departUser = departs.FirstOrDefault(t => t.ID == currentDepart.ID); + if (departUser != null) { - userId = user.ID; + userId = departUser.USER_ID; + if (userId != null) + { + //currentDepart = departUser; + user = users.FirstOrDefault(t => t.ID == userId); + } } } } @@ -12743,10 +12748,16 @@ namespace APT.BaseData.Services.DomainServices departIds.AddRange(classIds); if (user == null) { - user = users.FirstOrDefault(t => t.DEPARTMENT_ID == currentDepart.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); - if (user != null) + //负责人 + var departUser = departs.FirstOrDefault(t => t.ID == currentDepart.ID); + if (departUser != null) { - userId = user.ID; + userId = departUser.USER_ID; + if (userId != null) + { + //currentDepart = departUser; + user = users.FirstOrDefault(t => t.ID == userId); + } } } //DepartmentService.GetDepartmentIds(entity.ORG_ID.Value, new List() { currentDepart.ID }, ref departIds); @@ -12809,7 +12820,7 @@ namespace APT.BaseData.Services.DomainServices } else { - //车间负责人 + //负责人 var departUser = departs.FirstOrDefault(t => t.ID == parentId); if (departUser != null) { @@ -13042,10 +13053,15 @@ namespace APT.BaseData.Services.DomainServices departIds.AddRange(classIds); if (user == null) { - user = users.FirstOrDefault(t => t.DEPARTMENT_ID == currentDepart.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); - if (user != null) + var departUser = departs.FirstOrDefault(t => t.ID == currentDepart.ID); + if (departUser != null) { - userId = user.ID; + userId = departUser.USER_ID; + if (userId != null) + { + //currentDepart = departUser; + user = users.FirstOrDefault(t => t.ID == userId); + } } } } @@ -13132,24 +13148,34 @@ namespace APT.BaseData.Services.DomainServices userId = user.ID; } } + } + //当前层级安全员和负责人都找不到,找一次上级安全员和负责人 + if (userId == null) + { + var parentId = departs.FirstOrDefault(t => t.ID == currentDepart.ID)?.PARENT_ID; + if (parentId != null) + { + user = users.FirstOrDefault(t => t.DEPARTMENT_ID == parentId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); + if (user != null) + { + userId = user.ID; + } + else + { + //负责人 + var departUser = departs.FirstOrDefault(t => t.ID == parentId); + if (departUser != null) + { + userId = departUser.USER_ID; + if (userId != null) + { + //currentDepart = departUser; + user = users.FirstOrDefault(t => t.ID == userId); + } + } + } + } } - //var departId = departs.FirstOrDefault(t => departIds.Contains(t.ID) && t.DEPARTMENT_TYPE == 0); - //if (departId != null) - //{ - // user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); - // if (user != null) - // { - // userId = user.ID; - // } - // else - // { - // user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); - // if (user != null) - // { - // userId = user.ID; - // } - // } - //} } var requre = this.GetEntity(t => !t.IS_DELETED); var filter = new BaseFilter(entity.ORG_ID); @@ -13609,10 +13635,18 @@ namespace APT.BaseData.Services.DomainServices departIds.AddRange(shopIds); var classIds = departs.Where(t => t.PARENT_ID != null && shopIds.Contains(t.PARENT_ID.Value)).Select(t => t.ID).ToList(); departIds.AddRange(classIds); - user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); - if (user != null) + if (user == null) { - userId = user.ID; + var departUser = departs.FirstOrDefault(t => t.ID == currentDepart.ID); + if (departUser != null) + { + userId = departUser.USER_ID; + if (userId != null) + { + //currentDepart = departUser; + user = users.FirstOrDefault(t => t.ID == userId); + } + } } } else if (currentDepart.DEPARTMENT_TYPE == 15) @@ -13633,10 +13667,15 @@ namespace APT.BaseData.Services.DomainServices } else { - user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.DEPARTMENT_ID == parentId && t.Nav_ApproveRole.NAME.Contains("负责人")); - if (user != null) + var departUser = departs.FirstOrDefault(t => t.ID == parentId); + if (departUser != null) { - userId = user.ID; + userId = departUser.USER_ID; + if (userId != null) + { + //currentDepart = departUser; + user = users.FirstOrDefault(t => t.ID == userId); + } } } } @@ -13663,10 +13702,15 @@ namespace APT.BaseData.Services.DomainServices } else { - user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.DEPARTMENT_ID == parentId2 && t.Nav_ApproveRole.NAME.Contains("负责人")); - if (user != null) + var departUser = departs.FirstOrDefault(t => t.ID == parentId2); + if (departUser != null) { - userId = user.ID; + userId = departUser.USER_ID; + if (userId != null) + { + //currentDepart = departUser; + user = users.FirstOrDefault(t => t.ID == userId); + } } } } @@ -13689,6 +13733,34 @@ namespace APT.BaseData.Services.DomainServices } } } + + //当前层级安全员和负责人都找不到,找一次上级安全员和负责人 + if (userId == null) + { + var parentId = departs.FirstOrDefault(t => t.ID == currentDepart.ID)?.PARENT_ID; + if (parentId != null) + { + user = users.FirstOrDefault(t => t.DEPARTMENT_ID == parentId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); + if (user != null) + { + userId = user.ID; + } + else + { + //负责人 + var departUser = departs.FirstOrDefault(t => t.ID == parentId); + if (departUser != null) + { + userId = departUser.USER_ID; + if (userId != null) + { + //currentDepart = departUser; + user = users.FirstOrDefault(t => t.ID == userId); + } + } + } + } + } } var requre = this.GetEntity(t => !t.IS_DELETED); var filter = new BaseFilter(entity.ORG_ID); diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs index 4b76c3b..6fc500d 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs @@ -1,51 +1,52 @@ -using APT.BaseData.Domain.Entities.FM; -using APT.BaseData.Domain.IServices.FM; -using APT.BaseData.Domain.IServices; -using APT.Infrastructure.Core; -using APT.Utility; -using Microsoft.AspNetCore.Mvc; -using APT.WebApi.Models; -using System; -using System.Collections.Generic; -using APT.MS.Domain.Entities.SK; -using APT.MS.Domain.Enums.SK; -using APT.MS.Domain.Enums; -using APT.MS.Domain.Entities.SC.PT; -using System.Linq; -using APT.BaseData.Domain.Enums; +using APT.BaseData.Domain.ApiModel; using APT.BaseData.Domain.Entities; +using APT.BaseData.Domain.Entities.FM; +using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.Enums.PF; -using APT.BaseData.Domain.ApiModel; -using NPOI.SS.Formula.Functions; -using System.Threading.Tasks; -using static Microsoft.AspNetCore.Razor.Language.TagHelperMetadata; -using log4net.Filter; -using Microsoft.Extensions.DependencyModel; -using NPOI.Util; -using System.Numerics; +using APT.BaseData.Domain.IServices; +using APT.BaseData.Domain.IServices.FM; +using APT.Infrastructure.Core; +using APT.MS.Domain.Entities.BS; +using APT.MS.Domain.Entities.LR; +using APT.MS.Domain.Entities.SC.PT; +using APT.MS.Domain.Entities.SK; +using APT.MS.Domain.Enums; +using APT.MS.Domain.Enums.SK; +using APT.Utility; +using APT.WebApi.Models; using IdentityModel; using InfluxData.Net.InfluxDb.Models.Responses; -using NPOI.POIFS.FileSystem; -using System.Security.Principal; +using log4net.Filter; using Microsoft.AspNetCore.Http; -using APT.MS.Domain.Entities.BS; -using Org.BouncyCastle.Utilities; -using System.Reflection.Metadata; -using MySqlX.XDevAPI.Common; -using System.Collections.Immutable; -using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Asn1.Tsp; -using System.Runtime.Intrinsics.X86; -using static Google.Protobuf.WireFormat; -using NPOI.HSSF.UserModel; -using System.Runtime.Intrinsics.Arm; -using APT.MS.Domain.Entities.LR; -using System.Linq.Expressions; -using System.Security.Policy; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyModel; using Microsoft.Extensions.Hosting; -using System.Security.Cryptography; -using System.Collections; using Microsoft.Extensions.Logging; +using MySqlX.XDevAPI.Common; +using NPOI.HSSF.UserModel; +using NPOI.POIFS.FileSystem; +using NPOI.POIFS.Properties; +using NPOI.SS.Formula.Functions; +using NPOI.Util; +using Org.BouncyCastle.Asn1.Tsp; +using Org.BouncyCastle.Crypto; +using Org.BouncyCastle.Utilities; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Linq.Expressions; +using System.Numerics; +using System.Reflection.Metadata; +using System.Runtime.Intrinsics.Arm; +using System.Runtime.Intrinsics.X86; +using System.Security.Cryptography; +using System.Security.Policy; +using System.Security.Principal; +using System.Threading.Tasks; +using static Google.Protobuf.WireFormat; +using static Microsoft.AspNetCore.Razor.Language.TagHelperMetadata; namespace APT.PP.WebApi.Controllers.Api { @@ -1481,7 +1482,8 @@ namespace APT.PP.WebApi.Controllers.Api List planTemps = this.GetOrderEntities(expression, baseFilter).ToList(); var planIds = planTemps.Select(t => t.ID).ToList(); var newFilter = new BaseFilter(filter.GetOrgId()); - newFilter.IgnoreDataRule = true; + newFilter.IgnoreDataRule = true; + baseFilter.SelectField = new string[] { "ID", "IDENTIFY_EVALUATION_PLAN_ID", "STATUS", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "CONTENTS" }; //指定字段,包括导航属性 Expression> expressionTemp = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID); List identityResults = this.GetOrderEntities(expressionTemp, newFilter).ToList(); Expression> newexpression = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID); @@ -1505,13 +1507,15 @@ namespace APT.PP.WebApi.Controllers.Api var ides = identityTemps.Where(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan).ToList(); if (ides.Any()) { + var applyDepIds = ides.Select(t => t.APPLY_DEPARTMENT_ID).Distinct().ToList(); //找出所有职能部门 var departListIds = new List(); //公司默认职能部门 var company = departs.FirstOrDefault(t => t.PARENT_ID == null); departListIds.Add(company.ID); var tempids = departs.Where(t => t.DEPARTMENT_STATUS != 1).Select(m => m.ID).ToList(); - departListIds.AddRange(tempids); + departListIds.AddRange(tempids); + departListIds = departListIds.Where(t=> applyDepIds.Contains(t)).Distinct().ToList(); //职能口统一汇总给安环部安全员 if (departListIds.Any()) { @@ -1532,12 +1536,12 @@ namespace APT.PP.WebApi.Controllers.Api result.ORG_ID = filter.OrgId; result.APPLY_DEPARTMENT_ID = user?.DEPARTMENT_ID; result.APPLY_USER_ID = user.ID; - result.IDENTIFY_ID = deTemp.ID; + result.IDENTIFY_ID = deTemp?.ID; result.IDENTIFY_EVALUATION_PLAN_ID = plan; result.YEAR = DateTime.Now.Year.ToString(); result.ISAUTO = true; result.ISCOMPANY = SKIsStoreEnum.Yes; - result.CONTENTS = deTemp.CONTENTS; + result.CONTENTS = deTemp?.CONTENTS; result.START_DATE = DateTime.Now; result.END_DATE = DateTime.Now; result.REQUIRE_ID = requre?.ID; @@ -1629,7 +1633,8 @@ namespace APT.PP.WebApi.Controllers.Api } } //非职能口 - var departIds = ides.Where(m => !departListIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.APPLY_DEPARTMENT_ID).Distinct().ToList(); + var departIds = ides.Where(m => !departListIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.APPLY_DEPARTMENT_ID).Distinct().ToList(); + departIds = departIds.Where(t => applyDepIds.Contains(t)).Distinct().ToList(); if (departIds.Any()) { //部门级给部门安全员 @@ -1644,8 +1649,35 @@ namespace APT.PP.WebApi.Controllers.Api { var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user == null) - { - user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); + { + //负责人 + var parentId = departs.FirstOrDefault(t => t.ID == de)?.PARENT_ID; + var departUser = departs.FirstOrDefault(t => t.ID == parentId); + if (departUser != null && departUser.USER_ID != null) + { + user = users.FirstOrDefault(t => t.ID == departUser.USER_ID); + } + } + //当前层级安全员和负责人都找不到,找一次上级安全员和负责人 + if (user == null) + { + var parentId = departs.FirstOrDefault(t => t.ID == de)?.PARENT_ID; + if (parentId != null) + { + user = users.FirstOrDefault(t => t.DEPARTMENT_ID == parentId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); + if (user == null) + { + //负责人 + var departUser = departs.FirstOrDefault(t => t.ID == parentId); + if (departUser != null) + { + if (departUser.USER_ID != null) + { + user = users.FirstOrDefault(t => t.ID == departUser.USER_ID); + } + } + } + } } if (user != null) { @@ -1777,8 +1809,35 @@ namespace APT.PP.WebApi.Controllers.Api { var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user == null) - { - user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); + { + //负责人 + var parentId = departs.FirstOrDefault(t => t.ID == de)?.PARENT_ID; + var departUser = departs.FirstOrDefault(t => t.ID == parentId); + if (departUser != null && departUser.USER_ID!=null) + { + user = users.FirstOrDefault(t => t.ID == departUser.USER_ID); + } + } + //当前层级安全员和负责人都找不到,找一次上级安全员和负责人 + if (user == null) + { + var parentId = departs.FirstOrDefault(t => t.ID == de)?.PARENT_ID; + if (parentId != null) + { + user = users.FirstOrDefault(t => t.DEPARTMENT_ID == parentId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); + if (user == null) + { + //负责人 + var departUser = departs.FirstOrDefault(t => t.ID == parentId); + if (departUser != null) + { + if (departUser.USER_ID != null) + { + user = users.FirstOrDefault(t => t.ID == departUser.USER_ID); + } + } + } + } } if (user != null) {