This commit is contained in:
何美荣 2025-10-29 18:21:22 +08:00
parent 9a7512cd6e
commit 1c2637dc3a
3 changed files with 271 additions and 137 deletions

View File

@ -1498,58 +1498,61 @@ namespace APT.BaseData.Services.Services.FM
/// <param name="taskLast">上一个审批待办</param>
public void TaskToHead(IEnumerable<T_PF_APPROVE_DETAIL> appdetails, T_FM_NOTIFICATION_TASK taskNext, List<T_FM_NOTIFICATION_TASK> listModelNext, T_FM_NOTIFICATION_TASK taskLast)
{
var checkAdd = appdetails.FirstOrDefault(e => e.ISHEAD && e.IS_CURRENT);
if (checkAdd == null)
if (appdetails != null)
{
//审批的最后一步 IS_CURRENT =false
if (taskNext == null && (listModelNext == null || listModelNext.Count() < 1) && taskLast != null)
var checkAdd = appdetails.FirstOrDefault(e => e.ISHEAD && e.IS_CURRENT);
if (checkAdd == null)
{
checkAdd = appdetails.FirstOrDefault(e => e.APPROVE_USER_ID.HasValue && e.ISHEAD && e.APPROVE_USER_ID.Value == taskLast.USER_ID);
if (checkAdd != null)
//审批的最后一步 IS_CURRENT =false
if (taskNext == null && (listModelNext == null || listModelNext.Count() < 1) && taskLast != null)
{
if (checkAdd.NUM != appdetails.Max(e => e.NUM))
checkAdd = appdetails.FirstOrDefault(e => e.APPROVE_USER_ID.HasValue && e.ISHEAD && e.APPROVE_USER_ID.Value == taskLast.USER_ID);
if (checkAdd != null)
{
checkAdd = null;
if (checkAdd.NUM != appdetails.Max(e => e.NUM))
{
checkAdd = null;
}
}
}
}
}
if (checkAdd != null)
{
var isLastDeal = false;//上一个是审批相关
if (taskLast != null)
if (checkAdd != 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<T_FM_NOTIFICATION_TASK> listSync = null;
if (listModelNext != null && listModelNext.Any())
var isLastDeal = false;//上一个是审批相关
if (taskLast != null)
{
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())
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<T_FM_NOTIFICATION_TASK> listSync = null;
if (listModelNext != null && listModelNext.Any())
{
listSync = listModelNext.Where(e => userids.Contains(e.USER_ID));
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);
}
}
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) { }
}
catch (Exception ex) { }
}
}

View File

@ -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<Guid>() { 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);
}
}
}
}
@ -13133,23 +13149,33 @@ namespace APT.BaseData.Services.DomainServices
}
}
}
//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;
// }
// }
//}
//当前层级安全员和负责人都找不到,找一次上级安全员和负责人
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_SK_REQUEST>(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_SK_EVALUATION>(t => !t.IS_DELETED);
var filter = new BaseFilter(entity.ORG_ID);

View File

@ -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
{
@ -1482,6 +1483,7 @@ namespace APT.PP.WebApi.Controllers.Api
var planIds = planTemps.Select(t => t.ID).ToList();
var newFilter = new BaseFilter(filter.GetOrgId());
newFilter.IgnoreDataRule = true;
baseFilter.SelectField = new string[] { "ID", "IDENTIFY_EVALUATION_PLAN_ID", "STATUS", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "CONTENTS" }; //指定字段,包括导航属性
Expression<Func<T_SK_RISK_IDENTIFY_RESULT, bool>> expressionTemp = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID);
List<T_SK_RISK_IDENTIFY_RESULT> identityResults = this.GetOrderEntities(expressionTemp, newFilter).ToList();
Expression<Func<T_SK_RISK_IDENTIFY, bool>> newexpression = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID);
@ -1505,6 +1507,7 @@ 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<Guid>();
//公司默认职能部门
@ -1512,6 +1515,7 @@ namespace APT.PP.WebApi.Controllers.Api
departListIds.Add(company.ID);
var tempids = departs.Where(t => t.DEPARTMENT_STATUS != 1).Select(m => m.ID).ToList();
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;
@ -1630,6 +1634,7 @@ 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();
departIds = departIds.Where(t => applyDepIds.Contains(t)).Distinct().ToList();
if (departIds.Any())
{
//部门级给部门安全员
@ -1645,7 +1650,34 @@ 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)
{
@ -1778,7 +1810,34 @@ 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)
{