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)
{