From d8963ba9be1bc72b5f246f67302ef8b1bc7a6167 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, 2 Sep 2026 17:30:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/PF/PFApproveCallBackService.cs | 39 +- .../CrucialLicenseJobController.cs | 37 +- .../APT.PP.WebApi/APT.PP.WebApi.csproj | 1 + .../Controllers/Api/SKController.cs | 9130 ++++++++--------- .../Api/RiskEvaluationController.cs | 18 +- .../Api/RiskEvaluationSummaryController.cs | 22 +- .../Controllers/Api/RiskIdentifyController.cs | 110 +- .../Api/RiskIdentifyResultController.cs | 70 +- .../RiskIdentifyResultSummaryController.cs | 80 +- 9 files changed, 4762 insertions(+), 4745 deletions(-) diff --git a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs index 1ebc8a3..d143366 100644 --- a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs +++ b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs @@ -1,4 +1,4 @@ -using AlibabaCloud.OpenApiClient.Models; +using AlibabaCloud.OpenApiClient.Models; using APT.BaseData.Domain.ApiModel; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; @@ -13098,9 +13098,9 @@ namespace APT.BaseData.Services.DomainServices T_SK_RISK_IDENTIFY_DETAIL_MEASURE mes = new T_SK_RISK_IDENTIFY_DETAIL_MEASURE(); mes.ORG_ID = ideDetail.ORG_ID; mes.RISK_IDENTIFY_DETAIL_ID = ideDetail.ID; - mes.MEASURE = id2; - mes.NUM = i; - var temp = i + "、" + id2; + mes.MEASURE = (id2 ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","); + mes.NUM = i; + var temp = i + "、" + id2 + ";"; ideDetail.MEASURE = ideDetail.MEASURE + temp; detailMeasures.Add(mes); i++; @@ -13495,9 +13495,9 @@ namespace APT.BaseData.Services.DomainServices mes.ORG_ID = filter.OrgId; mes.RISK_IDENTIFY_RESULT_DETAIL_ID = ideDetail.ID; mes.NUM = i; - mes.MEASURE = mm; + mes.MEASURE = (mm ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","); resultDetailMes.Add(mes); - var mtemp = i + "、" + mm; + var mtemp = i + "、" + mm + ";"; ideDetail.MEASURE = ideDetail.MEASURE + mtemp; i++; } @@ -13587,7 +13587,7 @@ namespace APT.BaseData.Services.DomainServices if (resultDetailPosts != null && resultDetailPosts.Count > 0) BantchSaveEntityNoCommit(resultDetailPosts); if (resultDetailPostDets != null && resultDetailPostDets.Count > 0) - BantchSaveEntityNoCommit(resultDetailPostDets); + BantchSaveEntityNoCommit(resultDetailPostDets.GroupBy(p => new { p.RISK_IDENTIFY_DETAIL_RESULT_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); //if (resultDetailDeps != null && resultDetailDeps.Count > 0) // BantchSaveEntityNoCommit(resultDetailDeps); }); @@ -13915,9 +13915,9 @@ namespace APT.BaseData.Services.DomainServices mes.ORG_ID = filter.OrgId; mes.IDENTIFY_RESULT_SUMMARY_DETAIL_ID = ideDetail.ID; mes.NUM = i; - mes.MEASURE = mm; + mes.MEASURE = (mm ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","); summaryMeasures.Add(mes); - var mtemp = i + "、" + mm; + var mtemp = i + "、" + mm + ";"; ideDetail.MEASURE = ideDetail.MEASURE + mtemp; i++; } @@ -14279,7 +14279,7 @@ namespace APT.BaseData.Services.DomainServices detailPosts.Add(pos); if (item.Nav_ResultPostDets != null && item.Nav_ResultPostDets.Any()) { - foreach (var item2 in item.Nav_ResultPostDets) + foreach (var item2 in item.Nav_ResultPostDets.Where(t => !t.IS_DELETED).GroupBy(t => t.POST_ID).Select(g => g.First())) { T_SK_RISK_EVALUATION_DETAIL_POST_DETAIL depDetail = new T_SK_RISK_EVALUATION_DETAIL_POST_DETAIL(); depDetail.POST_ID = item2.POST_ID; @@ -14294,7 +14294,8 @@ namespace APT.BaseData.Services.DomainServices resultDetails.Add(detail); } } - var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险评估表" + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'), result.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK039"); + var param = departs.FirstOrDefault(t => t.ID == bm.APPLY_DEPARTMENT_ID)?.NAME; + var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险评估表" + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0') +"("+param+")", result.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK039"); notices.Add(noticeTask); //T_SC_MT_MEETING_BEGIN modelBegin = new T_SC_MT_MEETING_BEGIN(); //modelBegin.ID = Guid.NewGuid(); @@ -14719,7 +14720,7 @@ namespace APT.BaseData.Services.DomainServices pos.DEPARTMENT_ID = ite.ID; pos.RISK_EVALUATION_SUMMARY_DETAIL_ID = detail.ID; detailPostSums.Add(pos); - var postIds = detailPosts.Where(t => t.DEPARTMENT_ID != null && t.DEPARTMENT_ID == ite.ID).SelectMany(m => m.Nav_PostDetails).Select(n=>n.POST_ID).ToList(); + var postIds = detailPosts.Where(t => t.DEPARTMENT_ID != null && t.DEPARTMENT_ID == ite.ID).SelectMany(m => m.Nav_PostDetails).Select(n=>n.POST_ID).Distinct().ToList(); if (postIds.Any()) { foreach (var poId in postIds) @@ -14912,7 +14913,7 @@ namespace APT.BaseData.Services.DomainServices dep.ORG_ID = item.ORG_ID; dep.DOUBLE_PREVENT_MECHANISM_DETAIL_ID = detail.ID; douDetailPosts.Add(dep); - var lpostDetails = detailPostDetailSums.Where(t => t.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID == item2.ID).ToList(); + var lpostDetails = detailPostDetailSums.Where(t => t.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID == item2.ID).GroupBy(t => t.POST_ID).Select(g => g.First()).ToList(); if (lpostDetails != null && lpostDetails.Any()) { foreach (var item3 in lpostDetails) @@ -15053,7 +15054,7 @@ namespace APT.BaseData.Services.DomainServices if (detailPostSums != null && detailPostSums.Any()) BantchSaveEntityNoCommit(detailPostSums); if (detailPostDetailSums != null && detailPostDetailSums.Any()) - BantchSaveEntityNoCommit(detailPostDetailSums); + BantchSaveEntityNoCommit(detailPostDetailSums.GroupBy(p => new { p.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); if (notice != null) this.UpdateEntityNoCommit(notice); if (dou != null) @@ -15067,7 +15068,7 @@ namespace APT.BaseData.Services.DomainServices if (douDetailPosts != null && douDetailPosts.Count > 0) BantchSaveEntityNoCommit(douDetailPosts); if (douDetailPostDetails != null && douDetailPostDetails.Count > 0) - BantchSaveEntityNoCommit(douDetailPostDetails); + BantchSaveEntityNoCommit(douDetailPostDetails.GroupBy(p => new { p.MECHANISM_DETAIL_DEPART_ID, p.POST_ID }).Select(g => g.First()).ToList()); if (douDetailContents != null && douDetailContents.Count > 0) BantchSaveEntityNoCommit(douDetailContents); if (douContentPosts != null && douContentPosts.Count > 0) @@ -15104,7 +15105,7 @@ namespace APT.BaseData.Services.DomainServices if (detailPostSums != null && detailPostSums.Any()) BantchSaveEntityNoCommit(detailPostSums); if (detailPostDetailSums != null && detailPostDetailSums.Any()) - BantchSaveEntityNoCommit(detailPostDetailSums); + BantchSaveEntityNoCommit(detailPostDetailSums.GroupBy(p => new { p.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); if (notice != null) this.UpdateEntityNoCommit(notice); if (dou != null) @@ -15118,7 +15119,7 @@ namespace APT.BaseData.Services.DomainServices if (douDetailPosts != null && douDetailPosts.Count > 0) BantchSaveEntityNoCommit(douDetailPosts); if (douDetailPostDetails != null && douDetailPostDetails.Count > 0) - BantchSaveEntityNoCommit(douDetailPostDetails); + BantchSaveEntityNoCommit(douDetailPostDetails.GroupBy(p => new { p.MECHANISM_DETAIL_DEPART_ID, p.POST_ID }).Select(g => g.First()).ToList()); if (douDetailContents != null && douDetailContents.Count > 0) BantchSaveEntityNoCommit(douDetailContents); if (douContentPosts != null && douContentPosts.Count > 0) @@ -15262,7 +15263,7 @@ namespace APT.BaseData.Services.DomainServices dep.ORG_ID = item.ORG_ID; dep.DOUBLE_PREVENT_MECHANISM_DETAIL_ID = detail.ID; douDetailPosts.Add(dep); - var lpostDetails = detailPostDetailSums.Where(t => t.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID == item2.ID).ToList(); + var lpostDetails = detailPostDetailSums.Where(t => t.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID == item2.ID).GroupBy(t => t.POST_ID).Select(g => g.First()).ToList(); if (lpostDetails != null && lpostDetails.Any()) { foreach (var item3 in lpostDetails) @@ -15398,7 +15399,7 @@ namespace APT.BaseData.Services.DomainServices if (douDetailPosts != null && douDetailPosts.Count > 0) BantchSaveEntityNoCommit(douDetailPosts); if (douDetailPostDetails != null && douDetailPostDetails.Count > 0) - BantchSaveEntityNoCommit(douDetailPostDetails); + BantchSaveEntityNoCommit(douDetailPostDetails.GroupBy(p => new { p.MECHANISM_DETAIL_DEPART_ID, p.POST_ID }).Select(g => g.First()).ToList()); if (douDetailContents != null && douDetailContents.Count > 0) BantchSaveEntityNoCommit(douDetailContents); if (douContentPosts != null && douContentPosts.Count > 0) diff --git a/APT.MicroApi/APT.FO.WebApi/Controllers/CrucialLicenseJobController.cs b/APT.MicroApi/APT.FO.WebApi/Controllers/CrucialLicenseJobController.cs index 35cf3d1..eb636d9 100644 --- a/APT.MicroApi/APT.FO.WebApi/Controllers/CrucialLicenseJobController.cs +++ b/APT.MicroApi/APT.FO.WebApi/Controllers/CrucialLicenseJobController.cs @@ -1447,19 +1447,25 @@ namespace APT.FO.WebApi.Controllers curentTask.USER_NAME = users.FirstOrDefault(t => t.ID == applyUserId)?.NAME; curentTask.SOURCE_FORMCODE = approve.APPROVE_CODE; notices.Add(curentTask); - T_PF_APPROVE_DETAIL detail = new T_PF_APPROVE_DETAIL(); - detail.APPROVE_ID = approve.ID; - detail.IS_CURRENT = false; - detail.ORG_ID = approveTemp.ORG_ID; - detail.NAME = applyApprove.FirstOrDefault()?.NAME; - detail.NUM = applyApprove.FirstOrDefault() != null ? applyApprove.FirstOrDefault().NUM:0; - detail.APPROVE_ROLE_ID = applyApprove.FirstOrDefault()?.APPROVE_ROLE_ID; - detail.IS_ALLOW_UPDATE = applyApprove.FirstOrDefault() != null? applyApprove.FirstOrDefault().IS_ALLOW_UPDATE:false; - detail.APPROVE_USER_ID = applyApprove.FirstOrDefault()?.APPROVE_USER_ID; - detail.NODE_APPROVE_STATUS = (int)NodeApproveStatus.Done; - detail.NODE_APPROVE_TIME = DateTime.Now; - appdetailAutos.Add(detail); - } + applyApprove.ForEach(t => + { + + t.IS_CURRENT = false;t.NODE_APPROVE_STATUS = (int)NodeApproveStatus.Done; + t.NODE_APPROVE_TIME = DateTime.Now; + }); + //T_PF_APPROVE_DETAIL detail = new T_PF_APPROVE_DETAIL(); + //detail.APPROVE_ID = approve.ID; + //detail.IS_CURRENT = false; + //detail.ORG_ID = approveTemp.ORG_ID; + //detail.NAME = applyApprove.FirstOrDefault()?.NAME; + //detail.NUM = applyApprove.FirstOrDefault() != null ? applyApprove.FirstOrDefault().NUM:0; + //detail.APPROVE_ROLE_ID = applyApprove.FirstOrDefault()?.APPROVE_ROLE_ID; + //detail.IS_ALLOW_UPDATE = applyApprove.FirstOrDefault() != null? applyApprove.FirstOrDefault().IS_ALLOW_UPDATE:false; + //detail.APPROVE_USER_ID = applyApprove.FirstOrDefault()?.APPROVE_USER_ID; + //detail.NODE_APPROVE_STATUS = (int)NodeApproveStatus.Done; + //detail.NODE_APPROVE_TIME = DateTime.Now; + //appdetailAutos.Add(detail); + } var detailTemps = appdetails.Where(i => i.NUM == appdetails.Min(x => x.NUM) && i.APPROVE_USER_ID != applyUserId && i.NODE_APPROVE_STATUS == (int)NodeApproveStatus.Doing).ToList(); if (detailTemps != null && detailTemps.Any()) { @@ -1482,10 +1488,11 @@ namespace APT.FO.WebApi.Controllers //var sendUserName = users.Where(i => i.ID == sendUserId).FirstOrDefault().NAME; //var sendUserIds = detailUsers.Where(t => t.APPROVE_DETAIL_ID == curentApprove.ID).Select(m => (Guid)m.USER_ID).ToList(); - if (sendUserIds != null && sendUserIds.Any()) + var sendUserIdNews = users.Where(i => sendUserIds.Contains(i.ID)).Select(m => m.ID).ToList(); + if (sendUserIdNews != null && sendUserIdNews.Any()) { var sendUserNames = new List(); - foreach (var u in sendUserIds) + foreach (var u in sendUserIdNews) { var current = users.FirstOrDefault(t => t.ID == u); sendUserNames.Add(current?.NAME); diff --git a/APT.MicroApi/APT.PP.WebApi/APT.PP.WebApi.csproj b/APT.MicroApi/APT.PP.WebApi/APT.PP.WebApi.csproj index e6975d1..1bee415 100644 --- a/APT.MicroApi/APT.PP.WebApi/APT.PP.WebApi.csproj +++ b/APT.MicroApi/APT.PP.WebApi/APT.PP.WebApi.csproj @@ -117,6 +117,7 @@ + diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs index c276baa..eca1737 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs @@ -1,377 +1,377 @@ -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.IServices; -using APT.BaseData.Domain.IServices.FM; -using APT.Infrastructure.Core; -using APT.MS.Data.Mapping; -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 log4net.Filter; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.DependencyModel; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; -using Microsoft.VisualStudio.Web.CodeGeneration.Utils; -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 -{ - public class CheckListNew - { - public Guid? PRODUCTION_UNIT_ID { get; set; } - public SKProductionUnit Mine { get; set; } - public SKPLANCHECKFREQUENCYEnum Cycle { get; set; } - public SKDepartmentTypeEnum DepartType { get; set; } - public string MineType { get; set; } - - public string CheckType { get; set; } - public Guid? CheckTypeId { get; set; } - public string CheckCycle { get; set; } - public string CheckLevel { get; set; } - public int Num { get; set; } - - public Guid? CheckDepartId { get; set; } - public string CheckDepart { get; set; } - public string CheckPost { get; set; } - public Guid? CheckPostId { get; set; } - +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.IServices; +using APT.BaseData.Domain.IServices.FM; +using APT.Infrastructure.Core; +using APT.MS.Data.Mapping; +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 log4net.Filter; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyModel; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Microsoft.VisualStudio.Web.CodeGeneration.Utils; +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 +{ + public class CheckListNew + { + public Guid? PRODUCTION_UNIT_ID { get; set; } + public SKProductionUnit Mine { get; set; } + public SKPLANCHECKFREQUENCYEnum Cycle { get; set; } + public SKDepartmentTypeEnum DepartType { get; set; } + public string MineType { get; set; } + + public string CheckType { get; set; } + public Guid? CheckTypeId { get; set; } + public string CheckCycle { get; set; } + public string CheckLevel { get; set; } + public int Num { get; set; } + + public Guid? CheckDepartId { get; set; } + public string CheckDepart { get; set; } + public string CheckPost { get; set; } + public Guid? CheckPostId { get; set; } + public List details { get; set; } - public List users { get; set; } + public List users { get; set; } } public class CheckListUser { public Guid? USER_ID { get; set; } - } - public class CheckListDetail + } + public class CheckListDetail { - public Guid? ID { get; set; } - public string RISK_NAME { get; set; } - public Guid? RISK_AREA_ID { get; set; } - - public string RISK_AREA_NAME { get; set; } - public Guid? CHECK_CONTENTS_ID { get; set; } - - public string CHECK_CONTENTS_NAME { get; set; } - - public string CHECKPROOF { get; set; } - + public Guid? ID { get; set; } + public string RISK_NAME { get; set; } + public Guid? RISK_AREA_ID { get; set; } + + public string RISK_AREA_NAME { get; set; } + public Guid? CHECK_CONTENTS_ID { get; set; } + + public string CHECK_CONTENTS_NAME { get; set; } + + public string CHECKPROOF { get; set; } + public string CHECKSTANDARD { get; set; } public Guid? ENTERPRISE_LIBRARY_DETAIL_ID { get; set; } public Guid? ENTERPRISE_LIBRARY_ID { get; set; } - public string MEASURES_NAME { get; set; } - } - [Route("api/PP/SKController")] - [TypeFilter(typeof(CustomActionFilterAttribute))] - public class SKController : AuthorizeApiController - { - IFMNotificationTaskService NotificationTaskService { get; set; } - - public SKController(IFMNotificationTaskService notificationTaskService) - { - NotificationTaskService = notificationTaskService; - } - /// - /// 触发安全检查通知 - /// - /// - /// - [HttpPost, Route("SafeCheckNotice")] - public JsonActionResult SafeCheckNotice([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var dtNow = DateTime.Now; - var year = dtNow.Year; - var month = dtNow.Month; - var day = dtNow.Day; - var week = dtNow.DayOfWeek; - List setList = new List(); - //查配置表,有配才执行 - var timeSets = GetEntities(i => i.SET_TYPE == SKSetTypeEnum.SecurityNotice && i.ENABLE_STATUS == 0 && i.RUNSETTIME.Value.Hour == DateTime.Now.Hour, new BaseFilter(filter.OrgId)).ToList(); - if (timeSets != null && timeSets.Any()) - { - foreach (var set in timeSets) - { - switch (set.PLANCHECKFREQUENCY) - { - case SKPLANCHECKFREQUENCYEnum.Year: - if (set.MONTH == month && set.DATA == day) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Year); - } - break; - case SKPLANCHECKFREQUENCYEnum.HalfYear: - if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.HalfYear); - } - break; - case SKPLANCHECKFREQUENCYEnum.Date: - setList.Add(SKPLANCHECKFREQUENCYEnum.Date); - break; - //case SKPLANCHECKFREQUENCYEnum.Class: - // setList.Add(SKPLANCHECKFREQUENCYEnum.Class); - // break; - case SKPLANCHECKFREQUENCYEnum.Week: - if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Week); - } - break; - case SKPLANCHECKFREQUENCYEnum.Month: - if (set.DATA == day) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Month); - } - break; - case SKPLANCHECKFREQUENCYEnum.Quarter: - if (set.MONTH == 1) - { - if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); - } - } - if (set.MONTH == 2) - { - if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); - } - } - if (set.MONTH == 3) - { - if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); - } - } - break; - default: - break; - } - } - } - List notices = new List(); - List safeNotices = new List(); - List safeDetialNotices = new List(); - List records = new List(); - List recordDetails = new List(); - List recordDetailUsers = new List(); - if (setList != null && setList.Any()) - { - var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); - var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); - var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); - var cycles = setList.Distinct().ToList(); - var libraryDeparts = this.GetEntities(t => cycles.Contains(t.CHECK_CYCLE), new BaseFilter(filter.OrgId)); - var ldepartIds = libraryDeparts.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); - var libraryContents = this.GetEntities(t => ldepartIds.Contains(t.ID), new BaseFilter(filter.OrgId)); - var detailsIds = libraryContents.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_ID).Distinct().ToList(); - var libraryDetails = this.GetEntities(t => detailsIds.Contains(t.ID), new BaseFilter(filter.OrgId)); - var libraryIds = libraryDetails.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); - var librarys = this.GetEntities(t => libraryIds.Contains(t.ID), new BaseFilter(filter.OrgId)); - if (libraryContents != null && libraryContents.Any()) - { - foreach (var content in libraryContents) - { - var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID); - var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); - content.MineType = libraryTemp.MineType; - content.AREA_ID = libraryTemp.AREA_ID; - } - } + public string MEASURES_NAME { get; set; } + } + [Route("api/PP/SKController")] + [TypeFilter(typeof(CustomActionFilterAttribute))] + public class SKController : AuthorizeApiController + { + IFMNotificationTaskService NotificationTaskService { get; set; } + + public SKController(IFMNotificationTaskService notificationTaskService) + { + NotificationTaskService = notificationTaskService; + } + /// + /// 触发安全检查通知 + /// + /// + /// + [HttpPost, Route("SafeCheckNotice")] + public JsonActionResult SafeCheckNotice([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var dtNow = DateTime.Now; + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + List setList = new List(); + //查配置表,有配才执行 + var timeSets = GetEntities(i => i.SET_TYPE == SKSetTypeEnum.SecurityNotice && i.ENABLE_STATUS == 0 && i.RUNSETTIME.Value.Hour == DateTime.Now.Hour, new BaseFilter(filter.OrgId)).ToList(); + if (timeSets != null && timeSets.Any()) + { + foreach (var set in timeSets) + { + switch (set.PLANCHECKFREQUENCY) + { + case SKPLANCHECKFREQUENCYEnum.Year: + if (set.MONTH == month && set.DATA == day) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Year); + } + break; + case SKPLANCHECKFREQUENCYEnum.HalfYear: + if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.HalfYear); + } + break; + case SKPLANCHECKFREQUENCYEnum.Date: + setList.Add(SKPLANCHECKFREQUENCYEnum.Date); + break; + //case SKPLANCHECKFREQUENCYEnum.Class: + // setList.Add(SKPLANCHECKFREQUENCYEnum.Class); + // break; + case SKPLANCHECKFREQUENCYEnum.Week: + if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Week); + } + break; + case SKPLANCHECKFREQUENCYEnum.Month: + if (set.DATA == day) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Month); + } + break; + case SKPLANCHECKFREQUENCYEnum.Quarter: + if (set.MONTH == 1) + { + if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); + } + } + if (set.MONTH == 2) + { + if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); + } + } + if (set.MONTH == 3) + { + if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); + } + } + break; + default: + break; + } + } + } + List notices = new List(); + List safeNotices = new List(); + List safeDetialNotices = new List(); + List records = new List(); + List recordDetails = new List(); + List recordDetailUsers = new List(); + if (setList != null && setList.Any()) + { + var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); + var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); + var cycles = setList.Distinct().ToList(); + var libraryDeparts = this.GetEntities(t => cycles.Contains(t.CHECK_CYCLE), new BaseFilter(filter.OrgId)); + var ldepartIds = libraryDeparts.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); + var libraryContents = this.GetEntities(t => ldepartIds.Contains(t.ID), new BaseFilter(filter.OrgId)); + var detailsIds = libraryContents.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_ID).Distinct().ToList(); + var libraryDetails = this.GetEntities(t => detailsIds.Contains(t.ID), new BaseFilter(filter.OrgId)); + var libraryIds = libraryDetails.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var librarys = this.GetEntities(t => libraryIds.Contains(t.ID), new BaseFilter(filter.OrgId)); + if (libraryContents != null && libraryContents.Any()) + { + foreach (var content in libraryContents) + { + var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID); + var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); + content.MineType = libraryTemp.MineType; + content.AREA_ID = libraryTemp.AREA_ID; + } + } if (libraryDeparts != null && libraryDeparts.Any()) - { - foreach (var depart in libraryDeparts) - { - var departTemp = libraryContents.FirstOrDefault(t => t.ID == depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID); - var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == departTemp.ENTERPRISE_LIBRARY_DETAIL_ID); - var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); - depart.MineType = libraryTemp.MineType; - } - var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); - var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); - var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); + { + foreach (var depart in libraryDeparts) + { + var departTemp = libraryContents.FirstOrDefault(t => t.ID == depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID); + var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == departTemp.ENTERPRISE_LIBRARY_DETAIL_ID); + var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); + depart.MineType = libraryTemp.MineType; + } + var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); + var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); + var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); - var libraryNoPost = libraryDeparts.ToList(); - if (libraryNoPost.Any()) - { - var groups = libraryNoPost.GroupBy(t => new { t.MineType, t.CHECK_TYPE_ID, t.CHECK_CYCLE, t.CHECK_TYPE }).ToList(); - if (groups != null && groups.Any()) - { - foreach (var group in groups) - { - var departName = checkTypes.FirstOrDefault(t => t.ID == group.Key.CHECK_TYPE_ID)?.NAME; - var departContent = libraryNoPost.Where(t => t.MineType == group.Key.MineType && t.CHECK_TYPE_ID == group.Key.CHECK_TYPE_ID && t.CHECK_CYCLE == group.Key.CHECK_CYCLE && t.CHECK_TYPE == group.Key.CHECK_TYPE).ToList(); - var contentIds = departContent.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); - var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList(); - var departList = departs.Where(t => t.DEPARTMENT_TYPE == 10).ToList(); - if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.部门级) - { - departList = departs.Where(t => t.DEPARTMENT_TYPE == 10).ToList(); - } - if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.车间级) - { - departList = departs.Where(t => t.DEPARTMENT_TYPE == 15).ToList(); - } - if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.班组级) - { - departList = departs.Where(t => t.DEPARTMENT_TYPE == 20 && teamDepartIds.Contains(t.ID)).ToList(); - } - if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.公司级) - { - departList = departs.Where(t => t.NAME.Contains("安全环保")).ToList(); - } - var departIds = departList.Select(t => t.ID).ToList(); - foreach (var departId in departIds) - { - var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); - if (user == null) - { - user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); - } - if (user != null) - { - T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); - safeNotice.ORG_ID = filter.OrgId; - safeNotice.APPLY_DEPARTMENT_ID = departId; - safeNotice.APPLY_USER_ID = user.ID; - safeNotice.MineType = group.Key.MineType; - safeNotice.CHECK_TYPE_ID = group.Key.CHECK_TYPE_ID; - safeNotice.PLANCHECKFREQUENCY = group.Key.CHECK_CYCLE; - safeNotice.DEPARTMENT_TYPE = group.Key.CHECK_TYPE; - safeNotice.STATUS = PFStandardStatus.Draft; - safeNotice.ISAUTO = true; - safeNotices.Add(safeNotice); - if (content != null && content.Any()) - { - foreach (var item in content) - { - T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; - detail.RISK_AREA_ID = item.AREA_ID; - detail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; - detail.CHECKCONTENT = item.CHECK_CONTENT; - detail.CHECKPROOF = item.CHECK_BASIC; - detail.CHECKSTANDARD = item.CHECK_STANDARD; - safeDetialNotices.Add(detail); - } - } - var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全检查通知(" + departName + ")", safeNotice.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK006"); - notices.Add(notice); - } - } - } - } - } - //var libraryPost = libraryDeparts.Where(t => t.CHECK_TYPE == SKDepartmentTypeEnum.岗位级).ToList(); - //if (libraryPost.Any()) - //{ - // var groups = libraryPost.GroupBy(t => new { t.MineType, t.CHECK_TYPE_ID, t.CHECK_CYCLE, t.CHECK_TYPE }).ToList(); - // if (groups != null && groups.Any()) - // { - // foreach (var group in groups) - // { - // var departName = checkTypes.FirstOrDefault(t => t.ID == group.Key.CHECK_TYPE_ID)?.NAME; - // var departContent = libraryNoPost.Where(t => t.MineType == group.Key.MineType && t.CHECK_TYPE_ID == group.Key.CHECK_TYPE_ID && t.CHECK_CYCLE == group.Key.CHECK_CYCLE && t.CHECK_TYPE == group.Key.CHECK_TYPE).ToList(); - // var contentIds = departContent.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); - // var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList(); - // foreach (var depart in shiftClassList) - // { - // if (depart.Nav_DepartmentSchedulingDetail != null && depart.Nav_DepartmentSchedulingDetail.Any()) - // { - // var personIds = depart.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).ToList(); - // foreach (var personId in personIds) - // { - // var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart.DEPARTMENT_ID && t.PERSON_ID == personId); - // if (user != null) - // { - // //触发安全检查记录表 - // T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); - // record.ORG_ID = filter.OrgId; - // record.MineType = group.Key.MineType; - // record.APPLY_DEPARTMENT_ID = depart.ID; - // record.APPLY_USER_ID = user.ID; - // record.CHECK_TYPE_ID = group.Key.CHECK_TYPE_ID; - // record.PLANCHECKFREQUENCY = group.Key.CHECK_CYCLE; - // record.DEPARTMENT_TYPE = group.Key.CHECK_TYPE; - // record.CHECK_TIME = DateTime.Now; - // record.CHECK_PERSON = user.NAME; - // record.ISAUTO = true; - // record.STATUS = PFStandardStatus.Draft; - // records.Add(record); - // if (content != null && content.Any()) - // { - // foreach (var item in content) - // { - // T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); - // detail.ORG_ID = filter.OrgId; - // detail.SECURITY_INSPECTION_RECORD_ID = record.ID; - // detail.RISK_AREA_ID = item.AREA_ID; - // detail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; - // detail.CHECKCONTENT = item.CHECK_CONTENT; - // detail.CHECKPROOF = item.CHECK_BASIC; - // detail.CHECKSTANDARD = item.CHECK_STANDARD; - // recordDetails.Add(detail); - // T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER userA = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); - // userA.ORG_ID = filter.OrgId; - // userA.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; - // userA.USER_ID = user.ID; - // recordDetailUsers.Add(userA); - // } - // } - // var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK010"); - // notices.Add(notice); - // } - // } - // } - // } - // } - // } - //} - } - } + var libraryNoPost = libraryDeparts.ToList(); + if (libraryNoPost.Any()) + { + var groups = libraryNoPost.GroupBy(t => new { t.MineType, t.CHECK_TYPE_ID, t.CHECK_CYCLE, t.CHECK_TYPE }).ToList(); + if (groups != null && groups.Any()) + { + foreach (var group in groups) + { + var departName = checkTypes.FirstOrDefault(t => t.ID == group.Key.CHECK_TYPE_ID)?.NAME; + var departContent = libraryNoPost.Where(t => t.MineType == group.Key.MineType && t.CHECK_TYPE_ID == group.Key.CHECK_TYPE_ID && t.CHECK_CYCLE == group.Key.CHECK_CYCLE && t.CHECK_TYPE == group.Key.CHECK_TYPE).ToList(); + var contentIds = departContent.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); + var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList(); + var departList = departs.Where(t => t.DEPARTMENT_TYPE == 10).ToList(); + if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.部门级) + { + departList = departs.Where(t => t.DEPARTMENT_TYPE == 10).ToList(); + } + if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.车间级) + { + departList = departs.Where(t => t.DEPARTMENT_TYPE == 15).ToList(); + } + if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.班组级) + { + departList = departs.Where(t => t.DEPARTMENT_TYPE == 20 && teamDepartIds.Contains(t.ID)).ToList(); + } + if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.公司级) + { + departList = departs.Where(t => t.NAME.Contains("安全环保")).ToList(); + } + var departIds = departList.Select(t => t.ID).ToList(); + foreach (var departId in departIds) + { + var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); + if (user == null) + { + user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); + } + if (user != null) + { + T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); + safeNotice.ORG_ID = filter.OrgId; + safeNotice.APPLY_DEPARTMENT_ID = departId; + safeNotice.APPLY_USER_ID = user.ID; + safeNotice.MineType = group.Key.MineType; + safeNotice.CHECK_TYPE_ID = group.Key.CHECK_TYPE_ID; + safeNotice.PLANCHECKFREQUENCY = group.Key.CHECK_CYCLE; + safeNotice.DEPARTMENT_TYPE = group.Key.CHECK_TYPE; + safeNotice.STATUS = PFStandardStatus.Draft; + safeNotice.ISAUTO = true; + safeNotices.Add(safeNotice); + if (content != null && content.Any()) + { + foreach (var item in content) + { + T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; + detail.RISK_AREA_ID = item.AREA_ID; + detail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; + detail.CHECKCONTENT = item.CHECK_CONTENT; + detail.CHECKPROOF = item.CHECK_BASIC; + detail.CHECKSTANDARD = item.CHECK_STANDARD; + safeDetialNotices.Add(detail); + } + } + var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全检查通知(" + departName + ")", safeNotice.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK006"); + notices.Add(notice); + } + } + } + } + } + //var libraryPost = libraryDeparts.Where(t => t.CHECK_TYPE == SKDepartmentTypeEnum.岗位级).ToList(); + //if (libraryPost.Any()) + //{ + // var groups = libraryPost.GroupBy(t => new { t.MineType, t.CHECK_TYPE_ID, t.CHECK_CYCLE, t.CHECK_TYPE }).ToList(); + // if (groups != null && groups.Any()) + // { + // foreach (var group in groups) + // { + // var departName = checkTypes.FirstOrDefault(t => t.ID == group.Key.CHECK_TYPE_ID)?.NAME; + // var departContent = libraryNoPost.Where(t => t.MineType == group.Key.MineType && t.CHECK_TYPE_ID == group.Key.CHECK_TYPE_ID && t.CHECK_CYCLE == group.Key.CHECK_CYCLE && t.CHECK_TYPE == group.Key.CHECK_TYPE).ToList(); + // var contentIds = departContent.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); + // var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList(); + // foreach (var depart in shiftClassList) + // { + // if (depart.Nav_DepartmentSchedulingDetail != null && depart.Nav_DepartmentSchedulingDetail.Any()) + // { + // var personIds = depart.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).ToList(); + // foreach (var personId in personIds) + // { + // var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart.DEPARTMENT_ID && t.PERSON_ID == personId); + // if (user != null) + // { + // //触发安全检查记录表 + // T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); + // record.ORG_ID = filter.OrgId; + // record.MineType = group.Key.MineType; + // record.APPLY_DEPARTMENT_ID = depart.ID; + // record.APPLY_USER_ID = user.ID; + // record.CHECK_TYPE_ID = group.Key.CHECK_TYPE_ID; + // record.PLANCHECKFREQUENCY = group.Key.CHECK_CYCLE; + // record.DEPARTMENT_TYPE = group.Key.CHECK_TYPE; + // record.CHECK_TIME = DateTime.Now; + // record.CHECK_PERSON = user.NAME; + // record.ISAUTO = true; + // record.STATUS = PFStandardStatus.Draft; + // records.Add(record); + // if (content != null && content.Any()) + // { + // foreach (var item in content) + // { + // T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); + // detail.ORG_ID = filter.OrgId; + // detail.SECURITY_INSPECTION_RECORD_ID = record.ID; + // detail.RISK_AREA_ID = item.AREA_ID; + // detail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; + // detail.CHECKCONTENT = item.CHECK_CONTENT; + // detail.CHECKPROOF = item.CHECK_BASIC; + // detail.CHECKSTANDARD = item.CHECK_STANDARD; + // recordDetails.Add(detail); + // T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER userA = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); + // userA.ORG_ID = filter.OrgId; + // userA.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; + // userA.USER_ID = user.ID; + // recordDetailUsers.Add(userA); + // } + // } + // var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK010"); + // notices.Add(notice); + // } + // } + // } + // } + // } + // } + //} + } + } UnifiedCommit(() => { if (notices != null && notices.Any()) @@ -386,416 +386,416 @@ namespace APT.PP.WebApi.Controllers.Api // BantchSaveEntityNoCommit(recordDetails); //if (recordDetailUsers != null && recordDetailUsers.Any()) // BantchSaveEntityNoCommit(recordDetailUsers); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 触发安全检查记录,且未处理的通知表自动转为已办 - /// - /// - /// - [HttpPost, Route("SafeCheckNoticeRecordOld")] - public JsonActionResult SafeCheckNoticeRecordOld([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var dtNow = DateTime.Now; - var year = dtNow.Year; - var month = dtNow.Month; - var day = dtNow.Day; - var week = dtNow.DayOfWeek; - //filter.IgnoreDataRule = false; - List tasks = new List(); - List noticeTasks = new List(); - List records = new List(); - List recordFiles = new List(); - List recordDetails = new List(); - List recordDetailUsers = new List(); - List recordDetailBasics = new List(); - //查通知表,检查时间到期的 - var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); - var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); - var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId)); - filter.IgnoreDataRule = true; - Expression> expression = i => i.IS_DELETED == false && i.CHECK_TIME != null && i.CHECK_TIME.Value.Date == DateTime.Now.Date && i.CHECK_TIME.Value.Hour == DateTime.Now.Hour; - List notices = this.GetEntities(expression, filter, new string[] { "Nav_CheckNoticeFiles", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailUsers", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailBasics" }).ToList(); - var noticeExsisIds = notices.Select(t => t.ID).ToList(); - Expression> expression2 = i => i.IS_DELETED == false && i.SECURITY_INSPECTION_NOTICE_ID != null && noticeExsisIds.Contains((Guid)i.SECURITY_INSPECTION_NOTICE_ID); - List recordExsis = this.GetEntities(expression2, filter).ToList(); - var recordExsisIds = recordExsis.Select(t => t.SECURITY_INSPECTION_NOTICE_ID).Distinct().ToList(); - notices = notices.Where(t => !recordExsisIds.Contains(t.ID)).ToList(); - if (notices != null && notices.Any()) - { - foreach (var item in notices) - { - List userIds = new List(); - var departName = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID)?.NAME; - //触发安全检查记录表 - T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); - record.SECURITY_INSPECTION_NOTICE_ID = item.ID; - record.ORG_ID = item.ORG_ID; - record.MineType = item.MineType; - record.APPLY_DEPARTMENT_ID = item.APPLY_DEPARTMENT_ID; - record.APPLY_USER_ID = item.APPLY_USER_ID; - record.CHECK_TYPE_ID = item.CHECK_TYPE_ID; - record.PLANCHECKFREQUENCY = item.PLANCHECKFREQUENCY; - record.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; - record.CHECK_TIME = item.CHECK_TIME; - record.CHECK_PERSON = item.CHECK_PERSON; - record.ISAUTO = true; - record.STATUS = PFStandardStatus.Draft; - records.Add(record); - if (item.Nav_CheckNoticeFiles != null && item.Nav_CheckNoticeFiles.Any()) - { - foreach (var item2 in item.Nav_CheckNoticeFiles) - { - T_SK_SECURITY_INSPECTION_RECORD_FILE file = new T_SK_SECURITY_INSPECTION_RECORD_FILE(); - file.ORG_ID = item2.ORG_ID; - file.SECURITY_INSPECTION_RECORD_ID = record.ID; - file.IMG_FILE_ID = item2.IMG_FILE_ID; - recordFiles.Add(file); - } - } - if (item.Nav_CheckNoticeDetails != null && item.Nav_CheckNoticeDetails.Any()) - { - foreach (var item2 in item.Nav_CheckNoticeDetails) - { - T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); - detail.ORG_ID = item2.ORG_ID; - detail.SECURITY_INSPECTION_RECORD_ID = record.ID; - detail.RISK_AREA_ID = item2.RISK_AREA_ID; - detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; - detail.CHECKCONTENT = item2.CHECKCONTENT; - detail.CHECKPROOF = item2.CHECKPROOF; - detail.CHECKSTANDARD = item2.CHECKSTANDARD; - recordDetails.Add(detail); - if (item2.Nav_CheckNoticeDetailUsers != null && item2.Nav_CheckNoticeDetailUsers.Any()) - { - foreach (var item3 in item2.Nav_CheckNoticeDetailUsers) - { - T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); - user.ORG_ID = item3.ORG_ID; - user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; - user.USER_ID = item3.USER_ID; - recordDetailUsers.Add(user); - userIds.Add((Guid)user.USER_ID); - } - item2.Nav_CheckNoticeDetailUsers = null; - } - if (item2.Nav_CheckNoticeDetailBasics != null && item2.Nav_CheckNoticeDetailBasics.Any()) - { - foreach (var item3 in item2.Nav_CheckNoticeDetailBasics) - { - T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC(); - user.ORG_ID = item3.ORG_ID; - user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; - user.LAW_ID = item3.LAW_ID; - recordDetailBasics.Add(user); - } - item2.Nav_CheckNoticeDetailBasics = null; - } - } - } - userIds = userIds.Distinct().ToList(); - if (userIds.Any()) - { - foreach (var userId in userIds) - { - var userFirst = users.FirstOrDefault(t => t.ID == userId); - if (userFirst != null) - { - var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, userFirst.ID, userFirst.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK010"); - noticeTasks.Add(noticeTask); - } - } - } - item.Nav_CheckNoticeDetails = null; - item.Nav_CheckNoticeFiles = null; - } - var noticeIds = notices.Select(i => i.ID).ToList(); - tasks = this.GetEntities(t => noticeIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - tasks.ForEach(t => t.NOTICE_STATUS = 4); - var sourceIds = tasks.Select(i => i.SOURCE_DATA_ID).ToList(); - notices.Where(t => sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Close); - notices.Where(t => !sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Archived); - } - UnifiedCommit(() => - { - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - if (tasks != null && tasks.Any()) - BantchSaveEntityNoCommit(tasks); - if (noticeTasks != null && noticeTasks.Any()) - BantchSaveEntityNoCommit(noticeTasks); - if (records != null && records.Any()) - BantchSaveEntityNoCommit(records); - if (recordFiles != null && recordFiles.Any()) - BantchSaveEntityNoCommit(recordFiles); - if (recordDetails != null && recordDetails.Any()) - BantchSaveEntityNoCommit(recordDetails); - if (recordDetailUsers != null && recordDetailUsers.Any()) - BantchSaveEntityNoCommit(recordDetailUsers); - if (recordDetailBasics != null && recordDetailBasics.Any()) - BantchSaveEntityNoCommit(recordDetailBasics); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 触发安全检查记录,且未处理的通知表自动转为已办 - /// - /// - /// - [HttpPost, Route("SafeCheckNoticeRecord")] - public JsonActionResult SafeCheckNoticeRecord([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var dtNow = DateTime.Now; - var year = dtNow.Year; - var month = dtNow.Month; - var day = dtNow.Day; - var week = dtNow.DayOfWeek; - //DateTime minTime = dt.AddMinutes(0); - //DateTime maxTime = dt.AddMinutes(60); - if (filter.Parameter1 != null) - { - dtNow = DateTime.Parse(filter.Parameter1); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 触发安全检查记录,且未处理的通知表自动转为已办 + /// + /// + /// + [HttpPost, Route("SafeCheckNoticeRecordOld")] + public JsonActionResult SafeCheckNoticeRecordOld([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var dtNow = DateTime.Now; + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + //filter.IgnoreDataRule = false; + List tasks = new List(); + List noticeTasks = new List(); + List records = new List(); + List recordFiles = new List(); + List recordDetails = new List(); + List recordDetailUsers = new List(); + List recordDetailBasics = new List(); + //查通知表,检查时间到期的 + var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); + var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId)); + filter.IgnoreDataRule = true; + Expression> expression = i => i.IS_DELETED == false && i.CHECK_TIME != null && i.CHECK_TIME.Value.Date == DateTime.Now.Date && i.CHECK_TIME.Value.Hour == DateTime.Now.Hour; + List notices = this.GetEntities(expression, filter, new string[] { "Nav_CheckNoticeFiles", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailUsers", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailBasics" }).ToList(); + var noticeExsisIds = notices.Select(t => t.ID).ToList(); + Expression> expression2 = i => i.IS_DELETED == false && i.SECURITY_INSPECTION_NOTICE_ID != null && noticeExsisIds.Contains((Guid)i.SECURITY_INSPECTION_NOTICE_ID); + List recordExsis = this.GetEntities(expression2, filter).ToList(); + var recordExsisIds = recordExsis.Select(t => t.SECURITY_INSPECTION_NOTICE_ID).Distinct().ToList(); + notices = notices.Where(t => !recordExsisIds.Contains(t.ID)).ToList(); + if (notices != null && notices.Any()) + { + foreach (var item in notices) + { + List userIds = new List(); + var departName = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID)?.NAME; + //触发安全检查记录表 + T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); + record.SECURITY_INSPECTION_NOTICE_ID = item.ID; + record.ORG_ID = item.ORG_ID; + record.MineType = item.MineType; + record.APPLY_DEPARTMENT_ID = item.APPLY_DEPARTMENT_ID; + record.APPLY_USER_ID = item.APPLY_USER_ID; + record.CHECK_TYPE_ID = item.CHECK_TYPE_ID; + record.PLANCHECKFREQUENCY = item.PLANCHECKFREQUENCY; + record.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; + record.CHECK_TIME = item.CHECK_TIME; + record.CHECK_PERSON = item.CHECK_PERSON; + record.ISAUTO = true; + record.STATUS = PFStandardStatus.Draft; + records.Add(record); + if (item.Nav_CheckNoticeFiles != null && item.Nav_CheckNoticeFiles.Any()) + { + foreach (var item2 in item.Nav_CheckNoticeFiles) + { + T_SK_SECURITY_INSPECTION_RECORD_FILE file = new T_SK_SECURITY_INSPECTION_RECORD_FILE(); + file.ORG_ID = item2.ORG_ID; + file.SECURITY_INSPECTION_RECORD_ID = record.ID; + file.IMG_FILE_ID = item2.IMG_FILE_ID; + recordFiles.Add(file); + } + } + if (item.Nav_CheckNoticeDetails != null && item.Nav_CheckNoticeDetails.Any()) + { + foreach (var item2 in item.Nav_CheckNoticeDetails) + { + T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); + detail.ORG_ID = item2.ORG_ID; + detail.SECURITY_INSPECTION_RECORD_ID = record.ID; + detail.RISK_AREA_ID = item2.RISK_AREA_ID; + detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; + detail.CHECKCONTENT = item2.CHECKCONTENT; + detail.CHECKPROOF = item2.CHECKPROOF; + detail.CHECKSTANDARD = item2.CHECKSTANDARD; + recordDetails.Add(detail); + if (item2.Nav_CheckNoticeDetailUsers != null && item2.Nav_CheckNoticeDetailUsers.Any()) + { + foreach (var item3 in item2.Nav_CheckNoticeDetailUsers) + { + T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); + user.ORG_ID = item3.ORG_ID; + user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; + user.USER_ID = item3.USER_ID; + recordDetailUsers.Add(user); + userIds.Add((Guid)user.USER_ID); + } + item2.Nav_CheckNoticeDetailUsers = null; + } + if (item2.Nav_CheckNoticeDetailBasics != null && item2.Nav_CheckNoticeDetailBasics.Any()) + { + foreach (var item3 in item2.Nav_CheckNoticeDetailBasics) + { + T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC(); + user.ORG_ID = item3.ORG_ID; + user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; + user.LAW_ID = item3.LAW_ID; + recordDetailBasics.Add(user); + } + item2.Nav_CheckNoticeDetailBasics = null; + } + } + } + userIds = userIds.Distinct().ToList(); + if (userIds.Any()) + { + foreach (var userId in userIds) + { + var userFirst = users.FirstOrDefault(t => t.ID == userId); + if (userFirst != null) + { + var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, userFirst.ID, userFirst.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK010"); + noticeTasks.Add(noticeTask); + } + } + } + item.Nav_CheckNoticeDetails = null; + item.Nav_CheckNoticeFiles = null; + } + var noticeIds = notices.Select(i => i.ID).ToList(); + tasks = this.GetEntities(t => noticeIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + tasks.ForEach(t => t.NOTICE_STATUS = 4); + var sourceIds = tasks.Select(i => i.SOURCE_DATA_ID).ToList(); + notices.Where(t => sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Close); + notices.Where(t => !sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Archived); + } + UnifiedCommit(() => + { + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + if (tasks != null && tasks.Any()) + BantchSaveEntityNoCommit(tasks); + if (noticeTasks != null && noticeTasks.Any()) + BantchSaveEntityNoCommit(noticeTasks); + if (records != null && records.Any()) + BantchSaveEntityNoCommit(records); + if (recordFiles != null && recordFiles.Any()) + BantchSaveEntityNoCommit(recordFiles); + if (recordDetails != null && recordDetails.Any()) + BantchSaveEntityNoCommit(recordDetails); + if (recordDetailUsers != null && recordDetailUsers.Any()) + BantchSaveEntityNoCommit(recordDetailUsers); + if (recordDetailBasics != null && recordDetailBasics.Any()) + BantchSaveEntityNoCommit(recordDetailBasics); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 触发安全检查记录,且未处理的通知表自动转为已办 + /// + /// + /// + [HttpPost, Route("SafeCheckNoticeRecord")] + public JsonActionResult SafeCheckNoticeRecord([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var dtNow = DateTime.Now; + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + //DateTime minTime = dt.AddMinutes(0); + //DateTime maxTime = dt.AddMinutes(60); + if (filter.Parameter1 != null) + { + dtNow = DateTime.Parse(filter.Parameter1); } //filter.IgnoreDataRule = false; - List updateNotices = new List(); - List tasks = new List(); - List noticeTasks = new List(); - List records = new List(); - List recordFiles = new List(); - List recordDetails = new List(); - List recordDetailUsers = new List(); - List recordDetailBasics = new List(); - //查通知表,检查时间到期的 - var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); - var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); - var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId)); - filter.IgnoreDataRule = true; - var baseFilter = new BaseFilter(filter.GetOrgId()); - baseFilter.IgnoreDataRule = true; - baseFilter.SelectField = new string[] { "ID", "PRODUCTION_UNIT_ID","NOTICE_CODE", "CHECK_TYPE_ID","APPLY_DEPARTMENT_ID","APPLY_USER_ID","PLANCHECKFREQUENCY","DEPARTMENT_TYPE","CHECK_TIME","CHECK_PERSON", - "Nav_CheckNoticeDetails.RISK_AREA_ID","Nav_CheckNoticeDetails.CHECK_CONTENTS_ID","Nav_CheckNoticeDetails.CHECKCONTENT","Nav_CheckNoticeDetails.CHECKPROOF","Nav_CheckNoticeDetails.CHECKSTANDARD", - "Nav_CheckNoticeFiles.IMG_FILE_ID", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailUsers.USER_ID", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailBasics.LAW_ID" }; //指定字段,包括导航属性 - Expression> expression = i => i.IS_DELETED == false && i.CHECK_TIME != null && i.CHECK_TIME.Value.Date == dtNow.Date && i.CHECK_TIME <= dtNow && (i.STATUS == PFStandardStatus.Archived || i.STATUS == PFStandardStatus.Sign); - List notices = this.GetEntities(expression, baseFilter).ToList(); - var noticeExsisIds = notices.Select(t => t.ID).ToList(); - baseFilter.SelectField = new string[] { "ID", "SECURITY_INSPECTION_NOTICE_ID" }; //指定字段,包括导航属性 - Expression> expression2 = i => i.IS_DELETED == false && i.SECURITY_INSPECTION_NOTICE_ID != null && noticeExsisIds.Contains((Guid)i.SECURITY_INSPECTION_NOTICE_ID); - List recordExsis = this.GetEntities(expression2, baseFilter).ToList(); - var recordExsisIds = recordExsis.Select(t => t.SECURITY_INSPECTION_NOTICE_ID).Distinct().ToList(); - notices = notices.Where(t => !recordExsisIds.Contains(t.ID)).ToList(); - //排班表 - //var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == DateTime.Now.Date && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); - if (notices != null && notices.Any()) - { - foreach (var item in notices) - { - var departName = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID)?.NAME; - var userTempIds = new List(); - if (item.Nav_CheckNoticeDetails != null && item.Nav_CheckNoticeDetails.Any()) - { - foreach (var detail in item.Nav_CheckNoticeDetails) - { - var tempIds = detail.Nav_CheckNoticeDetailUsers.Select(t => (Guid)t.USER_ID).ToList(); - userTempIds.AddRange(tempIds); - } - userTempIds = userTempIds.Distinct().ToList(); - } - if (userTempIds.Any()) - { - foreach (var userItem in userTempIds) - { - //触发安全检查记录表 - T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); - record.SECURITY_INSPECTION_NOTICE_ID = item.ID; - record.ORG_ID = filter.GetOrgId(); - //record.MineType = item.MineType; - record.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; - record.APPLY_DEPARTMENT_ID = item.APPLY_DEPARTMENT_ID; - record.APPLY_USER_ID = item.APPLY_USER_ID; - record.CHECK_TYPE_ID = item.CHECK_TYPE_ID; - record.PLANCHECKFREQUENCY = item.PLANCHECKFREQUENCY; - record.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; - record.CHECK_TIME = item.CHECK_TIME; - record.ISAUTO = true; - record.STATUS = PFStandardStatus.Draft; - record.RECORD_USER_ID = userItem; - record.NOTICE_CODE = item.NOTICE_CODE; - if (item.Nav_CheckNoticeFiles != null && item.Nav_CheckNoticeFiles.Any()) - { - foreach (var item2 in item.Nav_CheckNoticeFiles) - { - T_SK_SECURITY_INSPECTION_RECORD_FILE file = new T_SK_SECURITY_INSPECTION_RECORD_FILE(); - file.ORG_ID = filter.GetOrgId(); - file.SECURITY_INSPECTION_RECORD_ID = record.ID; - file.IMG_FILE_ID = item2.IMG_FILE_ID; - recordFiles.Add(file); - } - } - var userIds = new List(); - var noticeDetails = item.Nav_CheckNoticeDetails?.Where(c => c.Nav_CheckNoticeDetailUsers != null && c.Nav_CheckNoticeDetailUsers.FirstOrDefault(m => m.USER_ID == userItem)?.USER_ID == userItem).OrderBy(t => t.NUM).ToList(); - if (noticeDetails != null && noticeDetails.Any()) - { - var i = 1; - foreach (var item2 in noticeDetails) - { - T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); - detail.ORG_ID = filter.GetOrgId(); - detail.SECURITY_INSPECTION_RECORD_ID = record.ID; - detail.RISK_AREA_ID = item2.RISK_AREA_ID; - detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; - detail.CHECKCONTENT = item2.CHECKCONTENT; - detail.CHECKPROOF = item2.CHECKPROOF; - detail.CHECKSTANDARD = item2.CHECKSTANDARD; - detail.NUM = i; - detail.CHECK_RESULT = SKCheckResultEnum.None; - recordDetails.Add(detail); - if (item2.Nav_CheckNoticeDetailUsers != null && item2.Nav_CheckNoticeDetailUsers.Any()) - { - foreach (var item3 in item2.Nav_CheckNoticeDetailUsers) - { - T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); - user.ORG_ID = filter.GetOrgId(); - user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; - user.USER_ID = item3.USER_ID; - if (item3.USER_ID == userItem) - { - user.ISMAINCHECK = true; - } - else - { - user.ISCHECK = true; - user.CHECKTIME = DateTime.Now; - } - userIds.Add((Guid)user.USER_ID); - recordDetailUsers.Add(user); - } - //item2.Nav_CheckNoticeDetailUsers = null; - } - if (item2.Nav_CheckNoticeDetailBasics != null && item2.Nav_CheckNoticeDetailBasics.Any()) - { - foreach (var item3 in item2.Nav_CheckNoticeDetailBasics) - { - T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC basic = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC(); - basic.ORG_ID = filter.GetOrgId(); - basic.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; - basic.LAW_ID = item3.LAW_ID; - recordDetailBasics.Add(basic); - } - //item2.Nav_CheckNoticeDetailBasics = null; - } - i++; - } - } - var userNames = users.Where(t => userIds.Contains(t.ID)).Select(m => m.NAME).Distinct().ToList(); - record.CHECK_PERSON = string.Join(",", userNames); - records.Add(record); - var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, userItem, users.FirstOrDefault(t => t.ID == userItem)?.NAME, DateTime.Now, DateTime.Now.AddHours(48), (int)FMNoticeTypeEnum.消息, "SK010"); - noticeTasks.Add(noticeTask); - } - } - } - var noticeIds = notices.Select(i => i.ID).ToList(); - tasks = this.GetEntities(t => noticeIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - tasks.ForEach(t => t.NOTICE_STATUS = 4); + List updateNotices = new List(); + List tasks = new List(); + List noticeTasks = new List(); + List records = new List(); + List recordFiles = new List(); + List recordDetails = new List(); + List recordDetailUsers = new List(); + List recordDetailBasics = new List(); + //查通知表,检查时间到期的 + var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); + var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId)); + filter.IgnoreDataRule = true; + var baseFilter = new BaseFilter(filter.GetOrgId()); + baseFilter.IgnoreDataRule = true; + baseFilter.SelectField = new string[] { "ID", "PRODUCTION_UNIT_ID","NOTICE_CODE", "CHECK_TYPE_ID","APPLY_DEPARTMENT_ID","APPLY_USER_ID","PLANCHECKFREQUENCY","DEPARTMENT_TYPE","CHECK_TIME","CHECK_PERSON", + "Nav_CheckNoticeDetails.RISK_AREA_ID","Nav_CheckNoticeDetails.CHECK_CONTENTS_ID","Nav_CheckNoticeDetails.CHECKCONTENT","Nav_CheckNoticeDetails.CHECKPROOF","Nav_CheckNoticeDetails.CHECKSTANDARD", + "Nav_CheckNoticeFiles.IMG_FILE_ID", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailUsers.USER_ID", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailBasics.LAW_ID" }; //指定字段,包括导航属性 + Expression> expression = i => i.IS_DELETED == false && i.CHECK_TIME != null && i.CHECK_TIME.Value.Date == dtNow.Date && i.CHECK_TIME <= dtNow && (i.STATUS == PFStandardStatus.Archived || i.STATUS == PFStandardStatus.Sign); + List notices = this.GetEntities(expression, baseFilter).ToList(); + var noticeExsisIds = notices.Select(t => t.ID).ToList(); + baseFilter.SelectField = new string[] { "ID", "SECURITY_INSPECTION_NOTICE_ID" }; //指定字段,包括导航属性 + Expression> expression2 = i => i.IS_DELETED == false && i.SECURITY_INSPECTION_NOTICE_ID != null && noticeExsisIds.Contains((Guid)i.SECURITY_INSPECTION_NOTICE_ID); + List recordExsis = this.GetEntities(expression2, baseFilter).ToList(); + var recordExsisIds = recordExsis.Select(t => t.SECURITY_INSPECTION_NOTICE_ID).Distinct().ToList(); + notices = notices.Where(t => !recordExsisIds.Contains(t.ID)).ToList(); + //排班表 + //var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == DateTime.Now.Date && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); + if (notices != null && notices.Any()) + { + foreach (var item in notices) + { + var departName = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID)?.NAME; + var userTempIds = new List(); + if (item.Nav_CheckNoticeDetails != null && item.Nav_CheckNoticeDetails.Any()) + { + foreach (var detail in item.Nav_CheckNoticeDetails) + { + var tempIds = detail.Nav_CheckNoticeDetailUsers.Select(t => (Guid)t.USER_ID).ToList(); + userTempIds.AddRange(tempIds); + } + userTempIds = userTempIds.Distinct().ToList(); + } + if (userTempIds.Any()) + { + foreach (var userItem in userTempIds) + { + //触发安全检查记录表 + T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); + record.SECURITY_INSPECTION_NOTICE_ID = item.ID; + record.ORG_ID = filter.GetOrgId(); + //record.MineType = item.MineType; + record.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; + record.APPLY_DEPARTMENT_ID = item.APPLY_DEPARTMENT_ID; + record.APPLY_USER_ID = item.APPLY_USER_ID; + record.CHECK_TYPE_ID = item.CHECK_TYPE_ID; + record.PLANCHECKFREQUENCY = item.PLANCHECKFREQUENCY; + record.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; + record.CHECK_TIME = item.CHECK_TIME; + record.ISAUTO = true; + record.STATUS = PFStandardStatus.Draft; + record.RECORD_USER_ID = userItem; + record.NOTICE_CODE = item.NOTICE_CODE; + if (item.Nav_CheckNoticeFiles != null && item.Nav_CheckNoticeFiles.Any()) + { + foreach (var item2 in item.Nav_CheckNoticeFiles) + { + T_SK_SECURITY_INSPECTION_RECORD_FILE file = new T_SK_SECURITY_INSPECTION_RECORD_FILE(); + file.ORG_ID = filter.GetOrgId(); + file.SECURITY_INSPECTION_RECORD_ID = record.ID; + file.IMG_FILE_ID = item2.IMG_FILE_ID; + recordFiles.Add(file); + } + } + var userIds = new List(); + var noticeDetails = item.Nav_CheckNoticeDetails?.Where(c => c.Nav_CheckNoticeDetailUsers != null && c.Nav_CheckNoticeDetailUsers.FirstOrDefault(m => m.USER_ID == userItem)?.USER_ID == userItem).OrderBy(t => t.NUM).ToList(); + if (noticeDetails != null && noticeDetails.Any()) + { + var i = 1; + foreach (var item2 in noticeDetails) + { + T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); + detail.ORG_ID = filter.GetOrgId(); + detail.SECURITY_INSPECTION_RECORD_ID = record.ID; + detail.RISK_AREA_ID = item2.RISK_AREA_ID; + detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; + detail.CHECKCONTENT = item2.CHECKCONTENT; + detail.CHECKPROOF = item2.CHECKPROOF; + detail.CHECKSTANDARD = item2.CHECKSTANDARD; + detail.NUM = i; + detail.CHECK_RESULT = SKCheckResultEnum.None; + recordDetails.Add(detail); + if (item2.Nav_CheckNoticeDetailUsers != null && item2.Nav_CheckNoticeDetailUsers.Any()) + { + foreach (var item3 in item2.Nav_CheckNoticeDetailUsers) + { + T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); + user.ORG_ID = filter.GetOrgId(); + user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; + user.USER_ID = item3.USER_ID; + if (item3.USER_ID == userItem) + { + user.ISMAINCHECK = true; + } + else + { + user.ISCHECK = true; + user.CHECKTIME = DateTime.Now; + } + userIds.Add((Guid)user.USER_ID); + recordDetailUsers.Add(user); + } + //item2.Nav_CheckNoticeDetailUsers = null; + } + if (item2.Nav_CheckNoticeDetailBasics != null && item2.Nav_CheckNoticeDetailBasics.Any()) + { + foreach (var item3 in item2.Nav_CheckNoticeDetailBasics) + { + T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC basic = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC(); + basic.ORG_ID = filter.GetOrgId(); + basic.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; + basic.LAW_ID = item3.LAW_ID; + recordDetailBasics.Add(basic); + } + //item2.Nav_CheckNoticeDetailBasics = null; + } + i++; + } + } + var userNames = users.Where(t => userIds.Contains(t.ID)).Select(m => m.NAME).Distinct().ToList(); + record.CHECK_PERSON = string.Join(",", userNames); + records.Add(record); + var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, userItem, users.FirstOrDefault(t => t.ID == userItem)?.NAME, DateTime.Now, DateTime.Now.AddHours(48), (int)FMNoticeTypeEnum.消息, "SK010"); + noticeTasks.Add(noticeTask); + } + } + } + var noticeIds = notices.Select(i => i.ID).ToList(); + tasks = this.GetEntities(t => noticeIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + tasks.ForEach(t => t.NOTICE_STATUS = 4); var newFilter = new BaseFilter(filter.GetOrgId()); newFilter.IgnoreDataRule = true; updateNotices = this.GetEntities(t => noticeIds.Contains(t.ID) && t.STATUS == PFStandardStatus.Sign, newFilter).ToList(); - updateNotices.ForEach(t => t.STATUS = PFStandardStatus.Close); - //var sourceIds = tasks.Select(i => i.SOURCE_DATA_ID).ToList(); - //notices.ForEach(m => { - // m.Nav_CheckNoticeDetails = null; - // m.Nav_CheckNoticeFiles = null; - //}); - //notices.Where(t => sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Close); - //notices.Where(t => !sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Archived); - } + updateNotices.ForEach(t => t.STATUS = PFStandardStatus.Close); + //var sourceIds = tasks.Select(i => i.SOURCE_DATA_ID).ToList(); + //notices.ForEach(m => { + // m.Nav_CheckNoticeDetails = null; + // m.Nav_CheckNoticeFiles = null; + //}); + //notices.Where(t => sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Close); + //notices.Where(t => !sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Archived); + } else { var newFilter = new BaseFilter(filter.GetOrgId()); newFilter.IgnoreDataRule = true; updateNotices = this.GetEntities(t => recordExsisIds.Contains(t.ID) && t.STATUS == PFStandardStatus.Sign, newFilter).ToList(); updateNotices.ForEach(t => t.STATUS = PFStandardStatus.Close); - } - UnifiedCommit(() => + } + UnifiedCommit(() => { if (updateNotices != null && updateNotices.Any()) - BantchSaveEntityNoCommit(updateNotices); - //if (notices != null && notices.Any()) - // BantchSaveEntityNoCommit(notices); - if (tasks != null && tasks.Any()) - BantchSaveEntityNoCommit(tasks); - if (noticeTasks != null && noticeTasks.Any()) - BantchSaveEntityNoCommit(noticeTasks); - if (records != null && records.Any()) - BantchSaveEntityNoCommit(records); - if (recordFiles != null && recordFiles.Any()) - BantchSaveEntityNoCommit(recordFiles); - if (recordDetails != null && recordDetails.Any()) - BantchSaveEntityNoCommit(recordDetails); - if (recordDetailUsers != null && recordDetailUsers.Any()) - BantchSaveEntityNoCommit(recordDetailUsers); - if (recordDetailBasics != null && recordDetailBasics.Any()) - BantchSaveEntityNoCommit(recordDetailBasics); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - /// - /// 安全检查记录检查时间第二天12点未处理的自动转为已办 - /// - /// - /// - [HttpPost, Route("CloseSafeCheckRecord")] - public JsonActionResult CloseSafeCheckRecord([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var dtNow = DateTime.Now; - var year = dtNow.Year; - var month = dtNow.Month; - var day = dtNow.Day; - var week = dtNow.DayOfWeek; - filter.IgnoreDataRule = true; - //查记录表,检查时间第二天自动转为已办 + BantchSaveEntityNoCommit(updateNotices); + //if (notices != null && notices.Any()) + // BantchSaveEntityNoCommit(notices); + if (tasks != null && tasks.Any()) + BantchSaveEntityNoCommit(tasks); + if (noticeTasks != null && noticeTasks.Any()) + BantchSaveEntityNoCommit(noticeTasks); + if (records != null && records.Any()) + BantchSaveEntityNoCommit(records); + if (recordFiles != null && recordFiles.Any()) + BantchSaveEntityNoCommit(recordFiles); + if (recordDetails != null && recordDetails.Any()) + BantchSaveEntityNoCommit(recordDetails); + if (recordDetailUsers != null && recordDetailUsers.Any()) + BantchSaveEntityNoCommit(recordDetailUsers); + if (recordDetailBasics != null && recordDetailBasics.Any()) + BantchSaveEntityNoCommit(recordDetailBasics); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + /// + /// 安全检查记录检查时间第二天12点未处理的自动转为已办 + /// + /// + /// + [HttpPost, Route("CloseSafeCheckRecord")] + public JsonActionResult CloseSafeCheckRecord([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var dtNow = DateTime.Now; + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + filter.IgnoreDataRule = true; + //查记录表,检查时间第二天自动转为已办 List tasks = new List(); List noticeTasks = new List(); List summarys = new List(); @@ -803,17 +803,17 @@ namespace APT.PP.WebApi.Controllers.Api List summaryDetails = new List(); List summaryDetailUsers = new List(); List summaryDetailBasics = new List(); - List summaryDetailFiles = new List(); - var baseFilter = new BaseFilter(filter.GetOrgId()); - baseFilter.IgnoreDataRule = true; - //baseFilter.SelectField = new string[] { "ID", "MineType", "CHECK_TYPE_ID","APPLY_DEPARTMENT_ID","APPLY_USER_ID","PLANCHECKFREQUENCY","DEPARTMENT_TYPE","CHECK_TIME","CHECK_PERSON", - // "SECURITY_INSPECTION_NOTICE_ID","STATUS","TYPE_ID", "Nav_CheckRecordDetails.SECURITY_INSPECTION_RECORD_ID","Nav_CheckRecordDetails.CHECK_RESULT","Nav_CheckRecordDetails.CHECK_QUESTION_ID", - // "Nav_CheckRecordDetails.HIDDEN_DESCRIPTION","Nav_CheckRecordDetails.HIDDEN_LEVEL","Nav_CheckRecordDetails.HIDDEN_PLACE","Nav_CheckRecordDetails.MARK", - // "Nav_CheckRecordDetails.RISK_AREA_ID","Nav_CheckRecordDetails.CHECK_CONTENTS_ID","Nav_CheckRecordDetails.CHECKCONTENT","Nav_CheckRecordDetails.CHECKPROOF","Nav_CheckRecordDetails.CHECKSTANDARD", + List summaryDetailFiles = new List(); + var baseFilter = new BaseFilter(filter.GetOrgId()); + baseFilter.IgnoreDataRule = true; + //baseFilter.SelectField = new string[] { "ID", "MineType", "CHECK_TYPE_ID","APPLY_DEPARTMENT_ID","APPLY_USER_ID","PLANCHECKFREQUENCY","DEPARTMENT_TYPE","CHECK_TIME","CHECK_PERSON", + // "SECURITY_INSPECTION_NOTICE_ID","STATUS","TYPE_ID", "Nav_CheckRecordDetails.SECURITY_INSPECTION_RECORD_ID","Nav_CheckRecordDetails.CHECK_RESULT","Nav_CheckRecordDetails.CHECK_QUESTION_ID", + // "Nav_CheckRecordDetails.HIDDEN_DESCRIPTION","Nav_CheckRecordDetails.HIDDEN_LEVEL","Nav_CheckRecordDetails.HIDDEN_PLACE","Nav_CheckRecordDetails.MARK", + // "Nav_CheckRecordDetails.RISK_AREA_ID","Nav_CheckRecordDetails.CHECK_CONTENTS_ID","Nav_CheckRecordDetails.CHECKCONTENT","Nav_CheckRecordDetails.CHECKPROOF","Nav_CheckRecordDetails.CHECKSTANDARD", // "Nav_CheckRecordFiles.IMG_FILE_ID","Nav_CheckRecordFiles.SECURITY_INSPECTION_RECORD_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailFiles.IMG_FILE_ID", - // "Nav_CheckRecordDetails.Nav_CheckRecordDetailFiles.SECURITY_INSPECTION_RECORD_DETAIL_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.USER_ID", - // "Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.ISMAINCHECK","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.CHECKTIME","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.ISCHECK", - // "Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.SECURITY_INSPECTION_RECORD_DETAIL_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailBasics.SECURITY_INSPECTION_RECORD_DETAIL_ID", + // "Nav_CheckRecordDetails.Nav_CheckRecordDetailFiles.SECURITY_INSPECTION_RECORD_DETAIL_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.USER_ID", + // "Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.ISMAINCHECK","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.CHECKTIME","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.ISCHECK", + // "Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.SECURITY_INSPECTION_RECORD_DETAIL_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailBasics.SECURITY_INSPECTION_RECORD_DETAIL_ID", // "Nav_CheckRecordDetails.Nav_CheckRecordDetailBasics.LAW_ID" }; //指定字段,包括导航属性 var notices = GetEntities(i => i.CHECK_TIME.Value.AddDays(2).Date == dtNow.Date && i.CHECK_TIME.Value.AddDays(2).Hour == dtNow.Hour && i.Nav_CheckType != null && !i.Nav_CheckType.NAME.Contains("岗位排查") && (i.STATUS == PFStandardStatus.Archived || i.STATUS == PFStandardStatus.Sign || i.STATUS == PFStandardStatus.Close), baseFilter); var noticeIds = notices.Select(t => t.ID).ToList(); @@ -950,10 +950,10 @@ namespace APT.PP.WebApi.Controllers.Api noticeTasks.Add(noticeTask); } } - } - UnifiedCommit(() => - { - if (records != null && records.Any()) + } + UnifiedCommit(() => + { + if (records != null && records.Any()) BantchSaveEntityNoCommit(records); if (summarys != null && summarys.Any()) BantchSaveEntityNoCommit(summarys); @@ -966,299 +966,273 @@ namespace APT.PP.WebApi.Controllers.Api if (summaryDetailBasics != null && summaryDetailBasics.Any()) BantchSaveEntityNoCommit(summaryDetailBasics); if (summaryDetailFiles != null && summaryDetailFiles.Any()) - BantchSaveEntityNoCommit(summaryDetailFiles); - if (tasks != null && tasks.Any()) + BantchSaveEntityNoCommit(summaryDetailFiles); + if (tasks != null && tasks.Any()) BantchSaveEntityNoCommit(tasks); if (noticeTasks != null && noticeTasks.Any()) - BantchSaveEntityNoCommit(noticeTasks); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 触发安全风险辨识与评估计划 - /// - /// - /// - [HttpPost, Route("RiskEvaluationPlan")] - public JsonActionResult RiskEvaluationPlan([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var dtNow = DateTime.Now; - var year = dtNow.Year; - var month = dtNow.Month; - var day = dtNow.Day; - var week = dtNow.DayOfWeek; - List setList = new List(); - //查配置表,有配才执行 - var timeSets = GetEntities(i => i.SET_TYPE == SKSetTypeEnum.RiskEvaluationPlan && i.ENABLE_STATUS == 0 && i.RUNSETTIME.Value.Hour == DateTime.Now.Hour, new BaseFilter(filter.OrgId)).ToList(); - if (timeSets != null && timeSets.Any()) - { - foreach (var set in timeSets) - { - switch (set.PLANCHECKFREQUENCY) - { - case SKPLANCHECKFREQUENCYEnum.Year: - if (set.MONTH == month && set.DATA == day) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Year); - } - break; - case SKPLANCHECKFREQUENCYEnum.HalfYear: - if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.HalfYear); - } - break; - case SKPLANCHECKFREQUENCYEnum.Date: - setList.Add(SKPLANCHECKFREQUENCYEnum.Date); - break; - //case SKPLANCHECKFREQUENCYEnum.Class: - // setList.Add(SKPLANCHECKFREQUENCYEnum.Class); - // break; - case SKPLANCHECKFREQUENCYEnum.Week: - if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Week); - } - break; - case SKPLANCHECKFREQUENCYEnum.Month: - if (set.DATA == day) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Month); - } - break; - case SKPLANCHECKFREQUENCYEnum.Quarter: - if (set.MONTH == 1) - { - if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); - } - } - if (set.MONTH == 2) - { - if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); - } - } - if (set.MONTH == 3) - { - if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day) - { - setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); - } - } - break; - default: - break; - } - } - } - List deppartList = new List(); - List notices = new List(); - List plans = new List(); - List planDetails = new List(); - List planDetailUsers = new List(); - var userInfos = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_ApproveRole"); - var userInfo = userInfos.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员"); - if (userInfo == null) - { - userInfo = userInfos.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人"); - } - if (userInfo != null) - { - DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.JobSite, filter.OrgId.Value, DateTime.Now, null, null); - if (setList != null && setList.Any()) - { - var departMentTemps = this.GetEntities(t => t.ENABLE_STATUS == 0 && t.CATEGORY == FMCATEGORY.ACTURE, new BaseFilter(filter.OrgId)).ToList(); - var topDeparts = departMentTemps.Where(t => t.DEPARTMENT_TYPE == 5 && t.PARENT_ID == null).OrderBy(t => t.NUM).ToList(); - deppartList.AddRange(topDeparts); - //var departMents = GetSons(departMentTemps, topDepart.ID).OrderBy(t => t.PARENT_ID).ThenBy(t => t.NUM); - var comDeparts = departMentTemps.Where(t => t.DEPARTMENT_TYPE == 5 && t.PARENT_ID != null).OrderBy(t => t.NUM).ToList(); - //deppartList.AddRange(comDeparts); - foreach (var cm in comDeparts) - { - deppartList.Add(cm); - var bmDepart = departMentTemps.Where(t => t.PARENT_ID == cm.ID).OrderBy(t => t.NUM).ToList(); - if (bmDepart.Any()) - { - foreach (var bm in bmDepart) - { - deppartList.Add(bm); - var cjDepart = departMentTemps.Where(t => t.PARENT_ID == bm.ID).OrderBy(t => t.NUM).ToList(); - if (cjDepart.Any()) + BantchSaveEntityNoCommit(noticeTasks); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 触发安全风险辨识与评估计划 + /// + /// + /// + [HttpPost, Route("RiskEvaluationPlan")] + public JsonActionResult RiskEvaluationPlan([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var dtNow = DateTime.Now; + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + List setList = new List(); + //查配置表,有配才执行 + var timeSets = GetEntities(i => i.SET_TYPE == SKSetTypeEnum.RiskEvaluationPlan && i.ENABLE_STATUS == 0 && i.RUNSETTIME.Value.Hour == DateTime.Now.Hour, new BaseFilter(filter.OrgId)).ToList(); + if (timeSets != null && timeSets.Any()) + { + foreach (var set in timeSets) + { + switch (set.PLANCHECKFREQUENCY) + { + case SKPLANCHECKFREQUENCYEnum.Year: + if (set.MONTH == month && set.DATA == day) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Year); + } + break; + case SKPLANCHECKFREQUENCYEnum.HalfYear: + if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.HalfYear); + } + break; + case SKPLANCHECKFREQUENCYEnum.Date: + setList.Add(SKPLANCHECKFREQUENCYEnum.Date); + break; + //case SKPLANCHECKFREQUENCYEnum.Class: + // setList.Add(SKPLANCHECKFREQUENCYEnum.Class); + // break; + case SKPLANCHECKFREQUENCYEnum.Week: + if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Week); + } + break; + case SKPLANCHECKFREQUENCYEnum.Month: + if (set.DATA == day) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Month); + } + break; + case SKPLANCHECKFREQUENCYEnum.Quarter: + if (set.MONTH == 1) + { + if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day) { - foreach (var cj in cjDepart) + setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); + } + } + if (set.MONTH == 2) + { + if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); + } + } + if (set.MONTH == 3) + { + if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day) + { + setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); + } + } + break; + default: + break; + } + } + } + List deppartList = new List(); + List notices = new List(); + List plans = new List(); + List planDetails = new List(); + List planDetailUsers = new List(); + var userInfos = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_ApproveRole"); + var userInfo = userInfos.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员"); + if (userInfo == null) + { + userInfo = userInfos.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人"); + } + if (userInfo != null) + { + DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.JobSite, filter.OrgId.Value, DateTime.Now, null, null); + if (setList != null && setList.Any()) + { + // 加载所有启用的部门(包含实际组织和虚拟组织),虚拟组织作为中间层级用于递归遍历 + var allDeparts = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + // 递归遍历整棵树:虚拟组织只参与遍历不加入结果,实际组织才加入 deppartList + // 从 parentId=null 开始,根节点也会被正确处理(是实际组织就加入,是虚拟组织就跳过但继续向下) + CollectActualDeparts(allDeparts, null, deppartList); + // 去重 + deppartList = deppartList.GroupBy(t => t.ID).Select(g => g.First()).ToList(); + foreach (var set in setList) + { + T_SK_IDENTIFY_EVALUATION_PLAN plan = new T_SK_IDENTIFY_EVALUATION_PLAN(); + plan.ORG_ID = filter.OrgId; + plan.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; + plan.APPLY_USER_ID = userInfo.ID; + plan.YEAR = DateTime.Now.Year.ToString(); + //plan.START_DATE = DateTime.Now; + //plan.END_DATE = dtEnd; + plan.ISAUTO = true; + plans.Add(plan); + if (deppartList.Any()) + { + int i = 1; + foreach (var item in deppartList) + { + var userFirst = userInfos.FirstOrDefault(t => t.DEPARTMENT_ID == item.ID); + if (userFirst != null) + { + T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL detail = new T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.IDENTIFY_EVALUATION_PLAN_ID = plan.ID; + detail.DEPARTMENT_ID = item.ID; + detail.NUM = i; + var users = userInfos.Where(t => t.DEPARTMENT_ID == item.ID).ToList(); + if (users.Any()) { - deppartList.Add(cj); - var bzDepart = departMentTemps.Where(t => t.PARENT_ID == cj.ID).OrderBy(t => t.NUM).ToList(); - if (bzDepart.Any()) + var userNames = users.Select(t => t.NAME).ToList(); + detail.USERS = string.Join(",", userNames); + foreach (var item2 in users) { - deppartList.AddRange(bzDepart); + T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL_USER user = new T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL_USER(); + user.ORG_ID = filter.OrgId; + user.USER_ID = item2.ID; + user.IDENTIFY_EVALUATION_PLAN_DETAIL_ID = detail.ID; + planDetailUsers.Add(user); } - } - } - } - } - } - var departTempIds = deppartList.Select(t => t.ID).ToList(); - var bmDeparts = departMentTemps.Where(t => t.DEPARTMENT_TYPE == 10 && !departTempIds.Contains(t.ID)).ToList(); - foreach (var bm in bmDeparts) - { - deppartList.Add(bm); - var cjDepart = departMentTemps.Where(t => t.PARENT_ID == bm.ID).OrderBy(t => t.NUM).ToList(); - if (cjDepart.Any()) - { - foreach (var cj in cjDepart) - { - deppartList.Add(cj); - var bzDepart = departMentTemps.Where(t => t.PARENT_ID == cj.ID).OrderBy(t => t.NUM).ToList(); - if (bzDepart.Any()) - { - deppartList.AddRange(bzDepart); - } - } - } - } - foreach (var set in setList) - { - T_SK_IDENTIFY_EVALUATION_PLAN plan = new T_SK_IDENTIFY_EVALUATION_PLAN(); - plan.ORG_ID = filter.OrgId; - plan.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; - plan.APPLY_USER_ID = userInfo.ID; - plan.YEAR = DateTime.Now.Year.ToString(); - //plan.START_DATE = DateTime.Now; - //plan.END_DATE = dtEnd; - plan.ISAUTO = true; - plans.Add(plan); - if (deppartList.Any()) - { - int i = 1; - foreach (var item in deppartList) - { - var userFirst = userInfos.FirstOrDefault(t => t.DEPARTMENT_ID == item.ID); - if (userFirst != null) - { - T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL detail = new T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.IDENTIFY_EVALUATION_PLAN_ID = plan.ID; - detail.DEPARTMENT_ID = item.ID; - detail.NUM = i; - var users = userInfos.Where(t => t.DEPARTMENT_ID == item.ID).ToList(); - if (users.Any()) - { - var userNames = users.Select(t => t.NAME).ToList(); - detail.USERS = string.Join(",", userNames); - foreach (var item2 in users) - { - T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL_USER user = new T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL_USER(); - user.ORG_ID = filter.OrgId; - user.USER_ID = item2.ID; - user.IDENTIFY_EVALUATION_PLAN_DETAIL_ID = detail.ID; - planDetailUsers.Add(user); - } - } - planDetails.Add(detail); - i++; - } - } - } - var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识与评估计划" + DateTime.Now.Month.PadLeft(2,'0')+ DateTime.Now.Day.PadLeft(2, '0'), plan.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "SK031"); - notices.Add(noticeTask); - } - } - } - UnifiedCommit(() => - { - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - if (plans != null && plans.Any()) - BantchSaveEntityNoCommit(plans); - if (planDetails != null && planDetails.Any()) - BantchSaveEntityNoCommit(planDetails); - if (planDetailUsers != null && planDetailUsers.Any()) - BantchSaveEntityNoCommit(planDetailUsers); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - public List GetSons(List list, Guid Fid) - { - var query = list.Where(p => p.ID == Fid).OrderBy(t => t.NUM).ToList(); - var list2 = query.Concat(GetSonList(list, Fid)).ToList(); - return list2; - } - - public List GetSonList(List list, Guid Fid) - { - var query = list.Where(p => p.PARENT_ID == Fid).OrderBy(t => t.NUM).ToList(); - return query.ToList().Concat(query.ToList().SelectMany(t => GetSonList(list, t.ID))).ToList(); - } - - /// - /// 补触发安全风险辨识表 - /// - /// - /// - [HttpPost, Route("RiskEvaluationAdd")] - public JsonActionResult RiskEvaluationAdd([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var dtNow = DateTime.Now; - var year = dtNow.Year; - var month = dtNow.Month; - var day = dtNow.Day; - var week = dtNow.DayOfWeek; - List notices = new List(); - List identitys = new List(); - List files = new List(); - List details = new List(); - var plan = this.GetEntity(t => t.STATUS == PFStandardStatus.Archived, "Nav_Details.Nav_DetailUsers"); - filter.IgnoreDataRule = true; - Expression> expression = t => t.IDENTIFY_EVALUATION_PLAN_ID == plan.ID; - List oldidentitys = this.GetEntities(expression, filter).ToList(); - var applyUserIds = oldidentitys.Select(t => t.APPLY_USER_ID).Distinct().ToList(); - //var plans = this.GetEntities(t => t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived, new BaseFilter(filter.OrgId), "Nav_Details.Nav_DetailUsers"); - if (plan != null) - { - var libraryPosts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); - var libraryPostDetails = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); - var librarys = this.GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); - var detailss = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); - var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Person"); - var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); - //var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId)).ToList(); - //var schedulingIds = shiftClassList.Select(t => t.ID).ToList(); - //var shiftClassDetailList = this.GetEntities(s => schedulingIds.Contains(s.DEPARTMENT_SCHEDULING_ID), new BaseFilter(filter.OrgId)).ToList(); - //var personIds = shiftClassDetailList.Select(t => t.PERSON_ID).Distinct().ToList(); - //var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); - //var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); - //var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); + } + planDetails.Add(detail); + i++; + } + } + } + var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识与评估计划" + DateTime.Now.Month.PadLeft(2,'0')+ DateTime.Now.Day.PadLeft(2, '0'), plan.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "SK031"); + notices.Add(noticeTask); + } + } + } + UnifiedCommit(() => + { + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + if (plans != null && plans.Any()) + BantchSaveEntityNoCommit(plans); + if (planDetails != null && planDetails.Any()) + BantchSaveEntityNoCommit(planDetails); + if (planDetailUsers != null && planDetailUsers.Any()) + BantchSaveEntityNoCommit(planDetailUsers); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + public List GetSons(List list, Guid Fid) + { + var query = list.Where(p => p.ID == Fid).OrderBy(t => t.NUM).ToList(); + var list2 = query.Concat(GetSonList(list, Fid)).ToList(); + return list2; + } + + public List GetSonList(List list, Guid Fid) + { + var query = list.Where(p => p.PARENT_ID == Fid).OrderBy(t => t.NUM).ToList(); + return query.ToList().Concat(query.ToList().SelectMany(t => GetSonList(list, t.ID))).ToList(); + } + + /// + /// 递归收集实际组织部门:虚拟组织跳过但继续向下遍历,实际组织加入结果集 + /// + private void CollectActualDeparts(List allDeparts, Guid? parentId, List result) + { + var children = allDeparts.Where(t => t.PARENT_ID == parentId).OrderBy(t => t.NUM).ToList(); + foreach (var child in children) + { + if (child.CATEGORY == FMCATEGORY.ACTURE) + { + result.Add(child); + } + // 无论虚拟还是实际,都继续向下递归,确保虚拟组织下的实际组织也能被找到 + CollectActualDeparts(allDeparts, child.ID, result); + } + } + + /// + /// 补触发安全风险辨识表 + /// + /// + /// + [HttpPost, Route("RiskEvaluationAdd")] + public JsonActionResult RiskEvaluationAdd([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var dtNow = DateTime.Now; + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + List notices = new List(); + List identitys = new List(); + List files = new List(); + List details = new List(); + var plan = this.GetEntity(t => t.STATUS == PFStandardStatus.Archived, "Nav_Details.Nav_DetailUsers"); + filter.IgnoreDataRule = true; + Expression> expression = t => t.IDENTIFY_EVALUATION_PLAN_ID == plan.ID; + List oldidentitys = this.GetEntities(expression, filter).ToList(); + var applyUserIds = oldidentitys.Select(t => t.APPLY_USER_ID).Distinct().ToList(); + //var plans = this.GetEntities(t => t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived, new BaseFilter(filter.OrgId), "Nav_Details.Nav_DetailUsers"); + if (plan != null) + { + var libraryPosts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); + var libraryPostDetails = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); + var librarys = this.GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); + var detailss = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Person"); + var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); + //var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId)).ToList(); + //var schedulingIds = shiftClassList.Select(t => t.ID).ToList(); + //var shiftClassDetailList = this.GetEntities(s => schedulingIds.Contains(s.DEPARTMENT_SCHEDULING_ID), new BaseFilter(filter.OrgId)).ToList(); + //var personIds = shiftClassDetailList.Select(t => t.PERSON_ID).Distinct().ToList(); + //var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); + //var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); + //var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); var requre = this.GetEntity(t => !t.IS_DELETED); if (plan != null && plan.Nav_Details != null && plan.Nav_Details.Any()) @@ -1366,87 +1340,87 @@ namespace APT.PP.WebApi.Controllers.Api } } - } - UnifiedCommit(() => - { - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - if (identitys != null && identitys.Any()) - BantchSaveEntityNoCommit(identitys); - if (files != null && files.Any()) - BantchSaveEntityNoCommit(files); - if (details != null && details.Any()) - BantchSaveEntityNoCommit(details); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - /// - /// 触发安全风险辨识表 - /// - /// - /// - [HttpPost, Route("RiskEvaluation")] - public JsonActionResult RiskEvaluation([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { + } + UnifiedCommit(() => + { + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + if (identitys != null && identitys.Any()) + BantchSaveEntityNoCommit(identitys); + if (files != null && files.Any()) + BantchSaveEntityNoCommit(files); + if (details != null && details.Any()) + BantchSaveEntityNoCommit(details); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + /// + /// 触发安全风险辨识表 + /// + /// + /// + [HttpPost, Route("RiskEvaluation")] + public JsonActionResult RiskEvaluation([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { var dtNow = DateTime.Now; if (filter.Parameter1 != null) { dtNow = DateTime.Parse(filter.Parameter1); - } - var year = dtNow.Year; - var month = dtNow.Month; - var day = dtNow.Day; - var week = dtNow.DayOfWeek; - List notices = new List(); - List identitys = new List(); + } + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + List notices = new List(); + List identitys = new List(); List details = new List(); List requires = new List(); - List mesList = new List(); - filter.IgnoreDataRule = true; - Expression> expression = t => t.IS_DELETED == false && t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived; - List plans = this.GetEntities(expression, filter, new string[] { "Nav_Details.Nav_DetailUsers", "Nav_Requires" }).ToList(); - //var plans = this.GetEntities(t => t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived, new BaseFilter(filter.OrgId), "Nav_Details.Nav_DetailUsers"); - if (plans != null && plans.Any()) - { - var libraryPosts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); - var libraryPostDetails = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); - var librarys = this.GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); - var detailss = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); - var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Person"); - var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); - //var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId)).ToList(); - //var schedulingIds = shiftClassList.Select(t => t.ID).ToList(); - //var shiftClassDetailList = this.GetEntities(s => schedulingIds.Contains(s.DEPARTMENT_SCHEDULING_ID), new BaseFilter(filter.OrgId)).ToList(); - //var personIds = shiftClassDetailList.Select(t => t.PERSON_ID).Distinct().ToList(); - //var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); - //var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); - //var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); - var requre = this.GetEntity(t => !t.IS_DELETED); - foreach (var plan in plans) - { - if (plan != null && plan.Nav_Details != null && plan.Nav_Details.Any()) - { - foreach (var item in plan.Nav_Details) - { - if (item.Nav_DetailUsers != null && item.Nav_DetailUsers.Any()) - { - foreach (var item2 in item.Nav_DetailUsers) - { - var user = users.FirstOrDefault(t => t.ID == item2.USER_ID); - if (user != null) + List mesList = new List(); + filter.IgnoreDataRule = true; + Expression> expression = t => t.IS_DELETED == false && t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived; + List plans = this.GetEntities(expression, filter, new string[] { "Nav_Details.Nav_DetailUsers", "Nav_Requires" }).ToList(); + //var plans = this.GetEntities(t => t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived, new BaseFilter(filter.OrgId), "Nav_Details.Nav_DetailUsers"); + if (plans != null && plans.Any()) + { + var libraryPosts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); + var libraryPostDetails = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); + var librarys = this.GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); + var detailss = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Person"); + var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); + //var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId)).ToList(); + //var schedulingIds = shiftClassList.Select(t => t.ID).ToList(); + //var shiftClassDetailList = this.GetEntities(s => schedulingIds.Contains(s.DEPARTMENT_SCHEDULING_ID), new BaseFilter(filter.OrgId)).ToList(); + //var personIds = shiftClassDetailList.Select(t => t.PERSON_ID).Distinct().ToList(); + //var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); + //var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); + //var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); + var requre = this.GetEntity(t => !t.IS_DELETED); + foreach (var plan in plans) + { + if (plan != null && plan.Nav_Details != null && plan.Nav_Details.Any()) + { + foreach (var item in plan.Nav_Details) + { + if (item.Nav_DetailUsers != null && item.Nav_DetailUsers.Any()) + { + foreach (var item2 in item.Nav_DetailUsers) + { + var user = users.FirstOrDefault(t => t.ID == item2.USER_ID); + if (user != null) { //var userDepart = departs.FirstOrDefault(t => t.ID == user.DEPARTMENT_ID); //if (userDepart.DEPARTMENT_TYPE == 20) @@ -1588,7 +1562,7 @@ namespace APT.PP.WebApi.Controllers.Api mes.ORG_ID = library.ORG_ID; mes.RISK_IDENTIFY_DETAIL_ID = ideDetail.ID; mes.NUM = detais.NUM; - mes.MEASURE = detais.MEASURES_NAME; + mes.MEASURE = (detais.MEASURES_NAME ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","); mesList.Add(mes); var temp = (detais.NUM == null || detais.NUM == 0) ? "1" : detais.NUM + "、" + detais.MEASURES_NAME; ideDetail.MEASURE = ideDetail.MEASURE + temp; @@ -1605,158 +1579,157 @@ namespace APT.PP.WebApi.Controllers.Api endtime = Convert.ToDateTime(plan.END_DATE.ToString().ToString().Replace("0:00:00", "23:59:59")); } var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识表" + DateTime.Now.Month.PadLeft(2,'0') + DateTime.Now.Day.PadLeft(2, '0'), ide.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK033"); - notices.Add(noticeTask); - //} - } - } - } - } - plan.ISSEND = true; - } - } - } - UnifiedCommit(() => - { - if (plans != null && plans.Any()) - BantchSaveEntityNoCommit(plans); - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - if (identitys != null && identitys.Any()) + notices.Add(noticeTask); + //} + } + } + } + } + plan.ISSEND = true; + } + } + } + UnifiedCommit(() => + { + if (plans != null && plans.Any()) + BantchSaveEntityNoCommit(plans); + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + if (identitys != null && identitys.Any()) BantchSaveEntityNoCommit(identitys); - if (requires != null && requires.Any()) - BantchSaveEntityNoCommit(requires); - if (details != null && details.Any()) + if (requires != null && requires.Any()) + BantchSaveEntityNoCommit(requires); + if (details != null && details.Any()) BantchSaveEntityNoCommit(details); - if (mesList != null && mesList.Any()) - BantchSaveEntityNoCommit(mesList); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - /// - /// 《安全风险辨识与评估计划》的辨识结束时间后未完成的《风险辨识表》系统默认提交归档,待办转已办,状态未“未完成” - /// - /// - /// - [HttpPost, Route("CloseRiskIdentify")] - public JsonActionResult CloseRiskIdentify([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { + if (mesList != null && mesList.Any()) + BantchSaveEntityNoCommit(mesList); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + /// + /// 《安全风险辨识与评估计划》的辨识结束时间后未完成的《风险辨识表》系统默认提交归档,待办转已办,状态未“未完成” + /// + /// + /// + [HttpPost, Route("CloseRiskIdentify")] + public JsonActionResult CloseRiskIdentify([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { var dtNow = DateTime.Now; if (filter.Parameter1 != null) { dtNow = DateTime.Parse(filter.Parameter1); - } - var year = dtNow.Year; - var month = dtNow.Month; - var day = dtNow.Day; - var week = dtNow.DayOfWeek; - filter.IgnoreDataRule = true; - List notices = new List(); - List tasks = new List(); - List identitys = new List(); - List results = new List(); + } + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + filter.IgnoreDataRule = true; + List notices = new List(); + List tasks = new List(); + List identitys = new List(); + List results = new List(); List resultDetails = new List(); List resultRequires = new List(); List resultDetailMes = new List(); List resultDetailPosts = new List(); - List resultDetailPostDets = new List(); - var requre = this.GetEntity(t => !t.IS_DELETED); - var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_ApproveRole", "Nav_Person"); - var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); - var userPosts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); - var baseFilter = new BaseFilter(filter.GetOrgId()); - baseFilter.IgnoreDataRule = true; - baseFilter.SelectField = new string[] { "ID", "START_DATE", "END_DATE" }; //指定字段,包括导航属性 - Expression> expression = i => i.END_DATE.Value.Date == dtNow.Date && i.STATUS == PFStandardStatus.Archived; - List planTemps = this.GetEntities(expression, baseFilter, "Nav_Requires").ToList(); - var planIds = planTemps.Select(t => t.ID).ToList(); - var newFilter = new BaseFilter(filter.GetOrgId()); + List resultDetailPostDets = new List(); + var requre = this.GetEntity(t => !t.IS_DELETED); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_ApproveRole", "Nav_Person"); + var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); + var userPosts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); + var baseFilter = new BaseFilter(filter.GetOrgId()); + baseFilter.IgnoreDataRule = true; + Expression> expression = i => i.END_DATE.Value.Date == dtNow.Date && i.STATUS == PFStandardStatus.Archived; + List planTemps = this.GetEntities(expression, baseFilter, "Nav_Requires").ToList(); + 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> expressionTemp = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID); - List identityResults = this.GetEntities(expressionTemp, newFilter).ToList(); - Expression> newexpression = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID); - List identityTemps = this.GetEntities(newexpression, newFilter).ToList(); - identitys = identityTemps.Where(t => t.STATUS != PFStandardStatus.Archived && t.STATUS != PFStandardStatus.Close).ToList(); - var identityPlanIds = identityTemps.Select(t => t.IDENTIFY_EVALUATION_PLAN_ID).Distinct().ToList(); - planIds = planIds.Where(t => identityPlanIds.Contains(t)).Distinct().ToList(); - //plans = planTemps.Where(t => identityPlanIds.Contains(t.ID)).ToList(); - var identityIds = identitys.Select(i => i.ID).ToList(); - var approvIds = this.GetEntities(t => identityIds.Contains(t.DATA_ID), new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList(); - tasks = this.GetEntities(t => (identityIds.Contains((Guid)t.SOURCE_DATA_ID) || approvIds.Contains((Guid)t.SOURCE_DATA_ID)) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - var identityTempIds = identityTemps.Select(t => t.ID).ToList(); + 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.GetEntities(expressionTemp, newFilter).ToList(); + Expression> newexpression = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID); + List identityTemps = this.GetEntities(newexpression, newFilter).ToList(); + identitys = identityTemps.Where(t => t.STATUS != PFStandardStatus.Archived && t.STATUS != PFStandardStatus.Close).ToList(); + var identityPlanIds = identityTemps.Select(t => t.IDENTIFY_EVALUATION_PLAN_ID).Distinct().ToList(); + planIds = planIds.Where(t => identityPlanIds.Contains(t)).Distinct().ToList(); + //plans = planTemps.Where(t => identityPlanIds.Contains(t.ID)).ToList(); + var identityIds = identitys.Select(i => i.ID).ToList(); + var approvIds = this.GetEntities(t => identityIds.Contains(t.DATA_ID), new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList(); + tasks = this.GetEntities(t => (identityIds.Contains((Guid)t.SOURCE_DATA_ID) || approvIds.Contains((Guid)t.SOURCE_DATA_ID)) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + var identityTempIds = identityTemps.Select(t => t.ID).ToList(); var details = GetEntities(i => identityTempIds.Contains(i.RISK_IDENTIFY_ID), new BaseFilter(filter.OrgId)).ToList(); - var identityDetailIds = details.Select(t => t.ID).ToList(); + var identityDetailIds = details.Select(t => t.ID).ToList(); var identityDetailMes = GetEntities(i => identityDetailIds.Contains(i.RISK_IDENTIFY_DETAIL_ID), new BaseFilter(filter.OrgId)).ToList(); var libIds = details.Select(t => t.ENTERPRISE_LIBRARY_ID).ToList(); var libPosts = GetEntities(i => libIds.Contains(i.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)).ToList(); - var libPostIds = libPosts.Select(t => t.ID).ToList(); - var libPostDetails = GetEntities(i => libPostIds.Contains(i.ENTERPRISE_LIBRARY_POST_ID), new BaseFilter(filter.OrgId)).ToList(); - if (planIds != null && planIds.Any() && dtNow.Hour >= 23)//&& dtNow.Hour >= 16 && dtNow.Hour <= 20 - { - //plans.ForEach(t => t.STATUS = PFStandardStatus.Close); - identitys.ForEach(m => { m.STATUS = PFStandardStatus.Close;}); - tasks.ForEach(t => { t.NOTICE_STATUS = 4; t.SOURCE_FORMCODE = "SK033_SHOWPRINT"; }); - foreach (var plan in planIds) + var libPostIds = libPosts.Select(t => t.ID).ToList(); + var libPostDetails = GetEntities(i => libPostIds.Contains(i.ENTERPRISE_LIBRARY_POST_ID), new BaseFilter(filter.OrgId)).ToList(); + if (planIds != null && planIds.Any() && dtNow.Hour >= 23)//&& dtNow.Hour >= 16 && dtNow.Hour <= 20 + { + //plans.ForEach(t => t.STATUS = PFStandardStatus.Close); + identitys.ForEach(m => { m.STATUS = PFStandardStatus.Close;}); + tasks.ForEach(t => { t.NOTICE_STATUS = 4; t.SOURCE_FORMCODE = "SK033_SHOWPRINT"; }); + foreach (var plan in planIds) { - var planTemp = planTemps.FirstOrDefault(t => t.ID == plan); - 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(); + var planTemp = planTemps.FirstOrDefault(t => t.ID == plan); + 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 = departListIds.Where(t=> applyDepIds.Contains(t)).Distinct().ToList(); - //职能口统一汇总给安环部安全员 - if (departListIds.Any()) - { - var user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")); - if (user == null) - { - user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部负责人")); - } - if (user == null) - { - user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("总经理")); - } - if (user != null) - { - //判断是否已触发过 - var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.Yes); - if (exsisRecird == null) - { - var ideIds = ides.Where(m => departListIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.ID).ToList(); - var deTemp = ides.FirstOrDefault(t => departListIds.Contains((Guid)t.APPLY_DEPARTMENT_ID)); - T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT(); - 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_EVALUATION_PLAN_ID = plan; - result.YEAR = DateTime.Now.Year.ToString(); - result.ISAUTO = true; - result.ISCOMPANY = SKIsStoreEnum.Yes; - result.CONTENTS = deTemp?.CONTENTS; - result.START_DATE = planTemp.START_DATE; - result.END_DATE = planTemp.END_DATE; - result.REQUIRE_ID = requre?.ID; + departListIds = departListIds.Where(t=> applyDepIds.Contains(t)).Distinct().ToList(); + //职能口统一汇总给安环部安全员 + if (departListIds.Any()) + { + var user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")); + if (user == null) + { + user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部负责人")); + } + if (user == null) + { + user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("总经理")); + } + if (user != null) + { + //判断是否已触发过 + var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.Yes); + if (exsisRecird == null) + { + var ideIds = ides.Where(m => departListIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.ID).ToList(); + var deTemp = ides.FirstOrDefault(t => departListIds.Contains((Guid)t.APPLY_DEPARTMENT_ID)); + T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT(); + 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_EVALUATION_PLAN_ID = plan; + result.YEAR = DateTime.Now.Year.ToString(); + result.ISAUTO = true; + result.ISCOMPANY = SKIsStoreEnum.Yes; + result.CONTENTS = deTemp?.CONTENTS; + result.START_DATE = planTemp.START_DATE; + result.END_DATE = planTemp.END_DATE; + result.REQUIRE_ID = requre?.ID; results.Add(result); if (planTemp != null && planTemp.Nav_Requires != null && planTemp.Nav_Requires.Any()) { @@ -1768,13 +1741,13 @@ namespace APT.PP.WebApi.Controllers.Api re.REQUIRE_ID = itemReq.REQUIRE_ID; resultRequires.Add(re); } - } + } var list = details.Where(t => ideIds.Contains(t.RISK_IDENTIFY_ID)).ToList(); //汇总去重 - var detailListYes = list.GroupBy(m => new { m.AREA_ID, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_DESCRIPTION, m.TYPE_ID, m.ENABLE_STATUS }).Select(g => g.FirstOrDefault()).ToList(); - if (detailListYes.Any()) - { - foreach (var item in detailListYes) + var detailListYes = list.GroupBy(m => new { m.AREA_ID, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_DESCRIPTION, m.TYPE_ID, m.ENABLE_STATUS, m.MARK }).Select(g => g.FirstOrDefault()).ToList(); + if (detailListYes.Any()) + { + foreach (var item in detailListYes) { T_SK_RISK_IDENTIFY_RESULT_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_DETAIL(); ideDetail.ORG_ID = filter.OrgId; @@ -1790,8 +1763,9 @@ namespace APT.PP.WebApi.Controllers.Api //ideDetail.MEASURE = item.MEASURE; //ideDetail.EMERGENCY = item.EMERGENCY; ideDetail.ENABLE_STATUS = item.ENABLE_STATUS; + ideDetail.MARK = item.MARK; //汇总去重 - var temp = list.Where(m => m.AREA_ID == item.AREA_ID && m.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && m.RISK_NAME == item.RISK_NAME && m.RISK_DESCRIPTION == item.RISK_DESCRIPTION && m.TYPE_ID == item.TYPE_ID && m.ENABLE_STATUS == item.ENABLE_STATUS).ToList(); + var temp = list.Where(m => m.AREA_ID == item.AREA_ID && m.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && m.RISK_NAME == item.RISK_NAME && m.RISK_DESCRIPTION == item.RISK_DESCRIPTION && m.TYPE_ID == item.TYPE_ID && m.ENABLE_STATUS == item.ENABLE_STATUS && m.MARK == item.MARK).ToList(); //管控措施 var identifyDetailIds = temp.Select(t => t.ID).ToList(); var mesTemps = identityDetailMes.Where(t => identifyDetailIds.Contains(t.RISK_IDENTIFY_DETAIL_ID)).OrderBy(n=>n.NUM).Select(m=>m.MEASURE).Distinct().ToList(); @@ -1804,15 +1778,15 @@ namespace APT.PP.WebApi.Controllers.Api mes.ORG_ID = filter.OrgId; mes.RISK_IDENTIFY_RESULT_DETAIL_ID = ideDetail.ID; mes.NUM = i; - mes.MEASURE = mm; + mes.MEASURE = (mm ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","); resultDetailMes.Add(mes); - var mtemp = i + "、" + mm; + var mtemp = i + "、" + mm + ";"; ideDetail.MEASURE = ideDetail.MEASURE + mtemp; i++; - } - } - //应急处置 - ideDetail.EMERGENCY = temp.FirstOrDefault().EMERGENCY; + } + } + //应急处置 + ideDetail.EMERGENCY = temp.FirstOrDefault().EMERGENCY; //var emergeTemps = temp.OrderBy(t => t.NUM).Select(m => m.EMERGENCY).Distinct().ToList(); //if (emergeTemps != null && emergeTemps.Any()) //{ @@ -1822,29 +1796,29 @@ namespace APT.PP.WebApi.Controllers.Api // var mtemp = i + "、" + mm +";"; // ideDetail.EMERGENCY = ideDetail.EMERGENCY + mm; // i++; - // } + // } //} //辨识部门 var identifyIds = temp.Select(t => t.RISK_IDENTIFY_ID).ToList(); var departIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_DEPARTMENT_ID).Distinct().ToList(); - var userIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_USER_ID).Distinct().ToList(); - if (departIdss.Any()) - { - var departTemps = departs.Where(t => departIdss.Contains(t.ID)).OrderBy(m=>m.DEPARTMENT_TYPE).ToList(); - if (departTemps.Any()) - { - var i = 1; - foreach (var ite in departTemps) - { - T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST depart = new T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST(); - depart.ORG_ID = ite.ORG_ID; - depart.DEPARTMENT_ID = ite.ID; - depart.RISK_IDENTIFY_RESULT_DETAIL_ID = ideDetail.ID; - depart.DEPARTMENT_TYPE = (SKDepartmentTypeEnum)ite.DEPARTMENT_TYPE; - depart.NUM = i; - resultDetailPosts.Add(depart); - var postIds = users.Where(t => t.DEPARTMENT_ID != null && t.DEPARTMENT_ID == ite.ID && userIdss.Contains(t.ID) && t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(m=>m.Nav_Person?.POST_ID).Distinct().ToList(); - if (postIds.Any()) + var userIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_USER_ID).Distinct().ToList(); + if (departIdss.Any()) + { + var departTemps = departs.Where(t => departIdss.Contains(t.ID)).OrderBy(m=>m.DEPARTMENT_TYPE).ToList(); + if (departTemps.Any()) + { + var i = 1; + foreach (var ite in departTemps) + { + T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST depart = new T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST(); + depart.ORG_ID = ite.ORG_ID; + depart.DEPARTMENT_ID = ite.ID; + depart.RISK_IDENTIFY_RESULT_DETAIL_ID = ideDetail.ID; + depart.DEPARTMENT_TYPE = (SKDepartmentTypeEnum)ite.DEPARTMENT_TYPE; + depart.NUM = i; + resultDetailPosts.Add(depart); + var postIds = users.Where(t => t.DEPARTMENT_ID != null && t.DEPARTMENT_ID == ite.ID && userIdss.Contains(t.ID) && t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(m=>m.Nav_Person?.POST_ID).Distinct().ToList(); + if (postIds.Any()) { foreach (var poId in postIds) { @@ -1853,13 +1827,13 @@ namespace APT.PP.WebApi.Controllers.Api poDet.RISK_IDENTIFY_DETAIL_RESULT_POST_ID = depart.ID; poDet.POST_ID = poId; resultDetailPostDets.Add(poDet); - } - } - i++; - } - //var departTypes = departTemps.Select(t => t.DEPARTMENT_TYPE).Distinct().ToList(); - //var typeList = ""; var nameList = ""; var postList = ""; - //int j = 1; + } + } + i++; + } + //var departTypes = departTemps.Select(t => t.DEPARTMENT_TYPE).Distinct().ToList(); + //var typeList = ""; var nameList = ""; var postList = ""; + //int j = 1; //foreach (var type in departTypes) //{ // var typeTemp = j + "、" + Enum.GetName(typeof(FMDepartmentType), type); @@ -1871,47 +1845,47 @@ namespace APT.PP.WebApi.Controllers.Api // var postTempIds = users.Where(t => departTempIds.Contains((Guid)t.DEPARTMENT_ID) && t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).Distinct().ToList(); // var postTemps = userPosts.Where(t => postTempIds.Contains(t.ID)).Select(m => m.NAME).Distinct().ToList(); // var postTemp = j + "、" + string.Join(",", postTemps); - // postList = postList + postTemp; - // j++; - //} - //ideDetail.DEPARTMENT_TYPE = typeList; + // postList = postList + postTemp; + // j++; + //} + //ideDetail.DEPARTMENT_TYPE = typeList; //ideDetail.IDENTIFY_DEPARTMENT = nameList; - //ideDetail.IDENTIFY_POST = postList; - } - } - - resultDetails.Add(ideDetail); - } - } - var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(职能口)", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK035"); - notices.Add(notice); - } - } - } - //非职能口 + //ideDetail.IDENTIFY_POST = postList; + } + } + + resultDetails.Add(ideDetail); + } + } + var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(职能口)", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK035"); + notices.Add(notice); + } + } + } + //非职能口 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()) - { - //部门级给部门安全员 - var departClass = departs.Where(t => departIds.Contains(t.ID) && (t.DEPARTMENT_TYPE == 10 || t.DEPARTMENT_TYPE == 5)).ToList(); - if (departClass.Any()) - { - var tempIds = departClass.Select(t => t.ID).ToList(); - if (tempIds.Any()) - { - //循环每个部门 - foreach (var de in tempIds) - { - var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); - if (user == null) + departIds = departIds.Where(t => applyDepIds.Contains(t)).Distinct().ToList(); + if (departIds.Any()) + { + //部门级给部门安全员 + var departClass = departs.Where(t => departIds.Contains(t.ID) && (t.DEPARTMENT_TYPE == 10 || t.DEPARTMENT_TYPE == 5)).ToList(); + if (departClass.Any()) + { + var tempIds = departClass.Select(t => t.ID).ToList(); + if (tempIds.Any()) + { + //循环每个部门 + foreach (var de in tempIds) + { + var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); + if (user == null) { //负责人 var departUser = departs.FirstOrDefault(t => t.ID == de); if (departUser != null && departUser.USER_ID != null) { user = users.FirstOrDefault(t => t.ID == departUser.USER_ID); - } + } else { //安全总监 @@ -1921,28 +1895,28 @@ namespace APT.PP.WebApi.Controllers.Api //找总经理 user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("总经理")); } - } - } - if (user != null) - { - //判断是否已触发过 - var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.No); - if (exsisRecird == null) - { - var deTemp = ides.FirstOrDefault(t => t.APPLY_DEPARTMENT_ID == de); - T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT(); - 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_EVALUATION_PLAN_ID = plan; - result.YEAR = DateTime.Now.Year.ToString(); - result.ISAUTO = true; - result.ISCOMPANY = SKIsStoreEnum.No; - result.CONTENTS = deTemp.CONTENTS; - result.START_DATE = planTemp.START_DATE; - result.END_DATE = planTemp.END_DATE; - result.REQUIRE_ID = requre?.ID; + } + } + if (user != null) + { + //判断是否已触发过 + var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.No); + if (exsisRecird == null) + { + var deTemp = ides.FirstOrDefault(t => t.APPLY_DEPARTMENT_ID == de); + T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT(); + 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_EVALUATION_PLAN_ID = plan; + result.YEAR = DateTime.Now.Year.ToString(); + result.ISAUTO = true; + result.ISCOMPANY = SKIsStoreEnum.No; + result.CONTENTS = deTemp.CONTENTS; + result.START_DATE = planTemp.START_DATE; + result.END_DATE = planTemp.END_DATE; + result.REQUIRE_ID = requre?.ID; results.Add(result); if (planTemp != null && planTemp.Nav_Requires != null && planTemp.Nav_Requires.Any()) @@ -1955,15 +1929,15 @@ namespace APT.PP.WebApi.Controllers.Api re.REQUIRE_ID = itemReq.REQUIRE_ID; resultRequires.Add(re); } - } - //只汇总部门级所有人的明细 - var ideIds = ides.Where(m => m.APPLY_DEPARTMENT_ID == de).Select(t => t.ID).ToList(); + } + //只汇总部门级所有人的明细 + var ideIds = ides.Where(m => m.APPLY_DEPARTMENT_ID == de).Select(t => t.ID).ToList(); var list = details.Where(t => ideIds.Contains(t.RISK_IDENTIFY_ID)).ToList(); //汇总去重 - var detailListYes = list.GroupBy(m => new { m.AREA_ID, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_DESCRIPTION, m.TYPE_ID, m.ENABLE_STATUS }).Select(g => g.FirstOrDefault()).ToList(); - if (detailListYes.Any()) - { - foreach (var item in detailListYes) + var detailListYes = list.GroupBy(m => new { m.AREA_ID, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_DESCRIPTION, m.TYPE_ID, m.ENABLE_STATUS, m.MARK }).Select(g => g.FirstOrDefault()).ToList(); + if (detailListYes.Any()) + { + foreach (var item in detailListYes) { T_SK_RISK_IDENTIFY_RESULT_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_DETAIL(); ideDetail.ORG_ID = filter.OrgId; @@ -1979,8 +1953,9 @@ namespace APT.PP.WebApi.Controllers.Api //ideDetail.MEASURE = item.MEASURE; //ideDetail.EMERGENCY = item.EMERGENCY; ideDetail.ENABLE_STATUS = item.ENABLE_STATUS; + ideDetail.MARK = item.MARK; //汇总去重 - var temp = list.Where(m => m.AREA_ID == item.AREA_ID && m.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && m.RISK_NAME == item.RISK_NAME && m.RISK_DESCRIPTION == item.RISK_DESCRIPTION && m.TYPE_ID == item.TYPE_ID && m.ENABLE_STATUS == item.ENABLE_STATUS).ToList(); + var temp = list.Where(m => m.AREA_ID == item.AREA_ID && m.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && m.RISK_NAME == item.RISK_NAME && m.RISK_DESCRIPTION == item.RISK_DESCRIPTION && m.TYPE_ID == item.TYPE_ID && m.ENABLE_STATUS == item.ENABLE_STATUS && m.MARK == item.MARK).ToList(); //管控措施 var identifyDetailIds = temp.Select(t => t.ID).ToList(); var mesTemps = identityDetailMes.Where(t => identifyDetailIds.Contains(t.RISK_IDENTIFY_DETAIL_ID)).OrderBy(n => n.NUM).Select(m => m.MEASURE).Distinct().ToList(); @@ -1993,9 +1968,9 @@ namespace APT.PP.WebApi.Controllers.Api mes.ORG_ID = filter.OrgId; mes.RISK_IDENTIFY_RESULT_DETAIL_ID = ideDetail.ID; mes.NUM = i; - mes.MEASURE = mm; + mes.MEASURE = (mm ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","); resultDetailMes.Add(mes); - var mtemp = i + "、" + mm; + var mtemp = i + "、" + mm + ";"; ideDetail.MEASURE = ideDetail.MEASURE + mtemp; i++; } @@ -2067,23 +2042,23 @@ namespace APT.PP.WebApi.Controllers.Api //ideDetail.IDENTIFY_DEPARTMENT = nameList; //ideDetail.IDENTIFY_POST = postList; } - } - resultDetails.Add(ideDetail); - } - } - var param = departs.FirstOrDefault(t => t.ID == de)?.NAME; - if (string.IsNullOrEmpty(param)) - { - param = "部门级"; - } - var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(" + param + ")", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK035"); - notices.Add(notice); - } - } - } - } - } - //车间级和班组级汇总给车间安全员 + } + resultDetails.Add(ideDetail); + } + } + var param = departs.FirstOrDefault(t => t.ID == de)?.NAME; + if (string.IsNullOrEmpty(param)) + { + param = "部门级"; + } + var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(" + param + ")", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK035"); + notices.Add(notice); + } + } + } + } + } + //车间级和班组级汇总给车间安全员 var shopClass = departs.Where(t => departIds.Contains(t.ID) && t.DEPARTMENT_TYPE == 15).ToList(); var shopIds = shopClass.Select(t=>t.ID).ToList(); //可能只有班组,获取所有班组的车间 @@ -2092,18 +2067,18 @@ namespace APT.PP.WebApi.Controllers.Api { var classIds = classDept.Select(t => t.ID).ToList(); var tempShopIds = departs.Where(t => classIds.Contains(t.ID) && t.PARENT_ID!=null).Select(m=>(Guid)m.PARENT_ID).ToList(); - shopIds.AddRange(tempShopIds); - } - shopIds = shopIds.Distinct().ToList(); - //var classTempInfos = departs.Where(t => t.PARENT_ID != null && shopIds.Contains((Guid)t.PARENT_ID) && t.DEPARTMENT_TYPE == 20).ToList(); - if (shopIds.Any()) - { - //每个车间汇总班组和车间 - foreach (var de in shopIds) - { - //车间 - var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); - if (user == null) + shopIds.AddRange(tempShopIds); + } + shopIds = shopIds.Distinct().ToList(); + //var classTempInfos = departs.Where(t => t.PARENT_ID != null && shopIds.Contains((Guid)t.PARENT_ID) && t.DEPARTMENT_TYPE == 20).ToList(); + if (shopIds.Any()) + { + //每个车间汇总班组和车间 + foreach (var de in shopIds) + { + //车间 + var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); + if (user == null) { //负责人 //var parentId = departs.FirstOrDefault(t => t.ID == de)?.PARENT_ID; @@ -2111,8 +2086,8 @@ namespace APT.PP.WebApi.Controllers.Api if (departUser != null && departUser.USER_ID!=null) { user = users.FirstOrDefault(t => t.ID == departUser.USER_ID); - } - } + } + } //当前层级安全员和负责人都找不到,找一次上级安全员和负责人 if (user == null) { @@ -2144,33 +2119,33 @@ namespace APT.PP.WebApi.Controllers.Api } } } - } - if (user != null) - { - //判断是否已触发过 - var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.No); - if (exsisRecird == null) - { - var classIds = departs.Where(t => t.PARENT_ID == de).Select(t => t.ID).ToList(); - //departListIds.AddRange(classIds); - var deTemp = ides.FirstOrDefault(t => t.APPLY_DEPARTMENT_ID == de); + } + if (user != null) + { + //判断是否已触发过 + var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.No); + if (exsisRecird == null) + { + var classIds = departs.Where(t => t.PARENT_ID == de).Select(t => t.ID).ToList(); + //departListIds.AddRange(classIds); + var deTemp = ides.FirstOrDefault(t => t.APPLY_DEPARTMENT_ID == de); if (deTemp == null) { - deTemp = ides.FirstOrDefault(t => t.APPLY_DEPARTMENT_ID!=null &&classIds.Contains((Guid)t.APPLY_DEPARTMENT_ID)); - } - T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT(); - 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_EVALUATION_PLAN_ID = plan; - result.YEAR = DateTime.Now.Year.ToString(); - result.ISAUTO = true; - result.ISCOMPANY = SKIsStoreEnum.No; - result.CONTENTS = deTemp?.CONTENTS; - result.START_DATE = planTemp?.START_DATE; - result.END_DATE = planTemp?.END_DATE; - result.REQUIRE_ID = requre?.ID; + deTemp = ides.FirstOrDefault(t => t.APPLY_DEPARTMENT_ID!=null &&classIds.Contains((Guid)t.APPLY_DEPARTMENT_ID)); + } + T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT(); + 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_EVALUATION_PLAN_ID = plan; + result.YEAR = DateTime.Now.Year.ToString(); + result.ISAUTO = true; + result.ISCOMPANY = SKIsStoreEnum.No; + result.CONTENTS = deTemp?.CONTENTS; + result.START_DATE = planTemp?.START_DATE; + result.END_DATE = planTemp?.END_DATE; + result.REQUIRE_ID = requre?.ID; results.Add(result); if (planTemp != null && planTemp.Nav_Requires != null && planTemp.Nav_Requires.Any()) { @@ -2182,14 +2157,14 @@ namespace APT.PP.WebApi.Controllers.Api re.REQUIRE_ID = itemReq.REQUIRE_ID; resultRequires.Add(re); } - } - var ideIds = ides.Where(m => m.APPLY_DEPARTMENT_ID == de || classIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.ID).ToList(); + } + var ideIds = ides.Where(m => m.APPLY_DEPARTMENT_ID == de || classIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.ID).ToList(); var list = details.Where(t => ideIds.Contains(t.RISK_IDENTIFY_ID)).ToList(); //汇总去重 - var detailListYes = list.GroupBy(m => new { m.AREA_ID, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_DESCRIPTION, m.TYPE_ID, m.ENABLE_STATUS }).Select(g => g.FirstOrDefault()).ToList(); - if (detailListYes.Any()) - { - foreach (var item in detailListYes) + var detailListYes = list.GroupBy(m => new { m.AREA_ID, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_DESCRIPTION, m.TYPE_ID, m.ENABLE_STATUS, m.MARK }).Select(g => g.FirstOrDefault()).ToList(); + if (detailListYes.Any()) + { + foreach (var item in detailListYes) { T_SK_RISK_IDENTIFY_RESULT_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_DETAIL(); ideDetail.ORG_ID = filter.OrgId; @@ -2205,8 +2180,9 @@ namespace APT.PP.WebApi.Controllers.Api //ideDetail.MEASURE = item.MEASURE; //ideDetail.EMERGENCY = item.EMERGENCY; ideDetail.ENABLE_STATUS = item.ENABLE_STATUS; + ideDetail.MARK = item.MARK; //汇总去重 - var temp = list.Where(m => m.AREA_ID == item.AREA_ID && m.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && m.RISK_NAME == item.RISK_NAME && m.RISK_DESCRIPTION == item.RISK_DESCRIPTION && m.TYPE_ID == item.TYPE_ID && m.ENABLE_STATUS == item.ENABLE_STATUS).ToList(); + var temp = list.Where(m => m.AREA_ID == item.AREA_ID && m.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && m.RISK_NAME == item.RISK_NAME && m.RISK_DESCRIPTION == item.RISK_DESCRIPTION && m.TYPE_ID == item.TYPE_ID && m.ENABLE_STATUS == item.ENABLE_STATUS && m.MARK == item.MARK).ToList(); //管控措施 var identifyDetailIds = temp.Select(t => t.ID).ToList(); var mesTemps = identityDetailMes.Where(t => identifyDetailIds.Contains(t.RISK_IDENTIFY_DETAIL_ID)).OrderBy(n => n.NUM).Select(m => m.MEASURE).Distinct().ToList(); @@ -2219,9 +2195,9 @@ namespace APT.PP.WebApi.Controllers.Api mes.ORG_ID = filter.OrgId; mes.RISK_IDENTIFY_RESULT_DETAIL_ID = ideDetail.ID; mes.NUM = i; - mes.MEASURE = mm; + mes.MEASURE = (mm ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","); resultDetailMes.Add(mes); - var mtemp = i + "、" + mm; + var mtemp = i + "、" + mm + ";"; ideDetail.MEASURE = ideDetail.MEASURE + mtemp; i++; } @@ -2293,2966 +2269,2966 @@ namespace APT.PP.WebApi.Controllers.Api //ideDetail.IDENTIFY_DEPARTMENT = nameList; //ideDetail.IDENTIFY_POST = postList; } - } - resultDetails.Add(ideDetail); - } - } - var param = departs.FirstOrDefault(t => t.ID == de)?.NAME; - if (string.IsNullOrEmpty(param)) - { - param = "车间级"; - } - var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(" + param + ")", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK035"); - notices.Add(notice); + } + resultDetails.Add(ideDetail); + } + } + var param = departs.FirstOrDefault(t => t.ID == de)?.NAME; + if (string.IsNullOrEmpty(param)) + { + param = "车间级"; + } + var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(" + param + ")", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK035"); + notices.Add(notice); } - } - } - } - } - } - } - } - UnifiedCommit(() => - { - if (identitys != null && identitys.Any()) - BantchSaveEntityNoCommit(identitys); - if (tasks != null && tasks.Any()) - BantchSaveEntityNoCommit(tasks); - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - if (results != null && results.Any()) - BantchSaveEntityNoCommit(results); - if (resultDetails != null && resultDetails.Any()) + } + } + } + } + } + } + } + UnifiedCommit(() => + { + if (identitys != null && identitys.Any()) + BantchSaveEntityNoCommit(identitys); + if (tasks != null && tasks.Any()) + BantchSaveEntityNoCommit(tasks); + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + if (results != null && results.Any()) + BantchSaveEntityNoCommit(results); + if (resultDetails != null && resultDetails.Any()) BantchSaveEntityNoCommit(resultDetails); - if (resultRequires != null && resultRequires.Any()) + if (resultRequires != null && resultRequires.Any()) BantchSaveEntityNoCommit(resultRequires); - if (resultDetailMes != null && resultDetailMes.Any()) + if (resultDetailMes != null && resultDetailMes.Any()) BantchSaveEntityNoCommit(resultDetailMes); - if (resultDetailPosts != null && resultDetailPosts.Any()) + if (resultDetailPosts != null && resultDetailPosts.Any()) BantchSaveEntityNoCommit(resultDetailPosts); - if (resultDetailPostDets != null && resultDetailPostDets.Any()) - BantchSaveEntityNoCommit(resultDetailPostDets); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 企业库子表数据同步 - /// - /// - /// - [HttpPost, Route("LibrarySync")] - public JsonActionResult LibrarySync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List ldeparts = new List(); - List contentDeparts = new List(); - List contentPosts = new List(); - var contentBS = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var posts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); - var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var libraryIds = librarys.Select(i => i.ID).ToList(); - var libraryDetails = GetEntities(i => i.IS_DELETED == false && libraryIds.Contains(i.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)).ToList(); - var detailIds = libraryDetails.Select(i => i.ID).ToList(); - var libraryContents = GetEntities(i => i.IS_DELETED == false && detailIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId)).ToList(); - if (librarys != null && librarys.Any()) - { + if (resultDetailPostDets != null && resultDetailPostDets.Any()) + BantchSaveEntityNoCommit(resultDetailPostDets.GroupBy(p => new { p.RISK_IDENTIFY_DETAIL_RESULT_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 企业库子表数据同步 + /// + /// + /// + [HttpPost, Route("LibrarySync")] + public JsonActionResult LibrarySync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List ldeparts = new List(); + List contentDeparts = new List(); + List contentPosts = new List(); + var contentBS = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var posts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); + var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var libraryIds = librarys.Select(i => i.ID).ToList(); + var libraryDetails = GetEntities(i => i.IS_DELETED == false && libraryIds.Contains(i.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)).ToList(); + var detailIds = libraryDetails.Select(i => i.ID).ToList(); + var libraryContents = GetEntities(i => i.IS_DELETED == false && detailIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId)).ToList(); + if (librarys != null && librarys.Any()) + { foreach (var library in librarys) - { - if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险) - { - library.DEPARTMENT_TYPE = "3,0,1,2"; - } - if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险) - { - library.DEPARTMENT_TYPE = "0,1,2"; - } - if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险) - { - library.DEPARTMENT_TYPE = "1,2"; - } - if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险) - { - library.DEPARTMENT_TYPE = "2"; - } - var tempPosts = imports.Where(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION).ToList(); - if (tempPosts.Any()) - { - //foreach (var de in tempPosts) - //{ - // var checkCycle = SKPLANCHECKFREQUENCYEnum.None; - // if (!string.IsNullOrEmpty(de.CHECK_CYCLE)) - // { - // switch (de.CHECK_CYCLE) - // { - // case "每日": - // checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; - // case "每周": - // checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break; - // case "每月": - // checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break; - // case "每季度": - // checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break; - // case "每班": - // checkCycle = SKPLANCHECKFREQUENCYEnum.Class; break; - // default: - // checkCycle = SKPLANCHECKFREQUENCYEnum.None; break; - // break; - // } - // } - // if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL)) - // { - // var departList = de.CHECK_DEPARTMENT.Split(';').ToList(); - // var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); - // if (depart.Any()) - // { - // foreach (var deTemp in depart) - // { - // if (deTemp != null) - // { - // T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART(); - // dep.ORG_ID = filter.OrgId; - // dep.ENTERPRISE_LIBRARY_ID = library.ID; - // dep.DEPARTMENT_ID = deTemp.ID; - // dep.DEPARTMENT_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum.岗位级 : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; - // dep.USER_ID = deTemp.USER_ID; - // ldeparts.Add(dep); - // } - // } - // } - // } - //} - var measureTemps = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).ToList(); - if (measureTemps.Any()) - { - foreach (var temp in measureTemps) - { - var contentTemps = libraryContents.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == temp.ID).ToList(); - if (contentTemps.Any()) - { - foreach (var ctemp in contentTemps) - { - var contentDepartTemps = tempPosts.Where(t => t.MEASURES_NAME == temp.MEASURES_NAME && t.CHECK_CONTENT == ctemp.CHECK_CONTENT).ToList(); - if (contentDepartTemps.Any()) - { - foreach (var de in contentDepartTemps) - { - var checkCycle = SKPLANCHECKFREQUENCYEnum.Date; - if (!string.IsNullOrEmpty(de.CHECK_CYCLE)) - { - switch (de.CHECK_CYCLE) - { - case "每日": - checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; - case "每周": - checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break; - case "每月": - checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break; - case "每季度": - checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break; - case "每班": - checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; - default: - checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; - break; - } - } - if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL)) - { - var departList = de.CHECK_DEPARTMENT.Split(';').ToList(); - var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); - if (depart.Any()) - { - int j = 1; - foreach (var deTemp in depart) - { - if (deTemp != null) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); - dep.ORG_ID = filter.OrgId; - dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = ctemp.ID; - dep.DEPARTMENT_ID = deTemp.ID; - dep.CHECK_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum.班组级 : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; - dep.CHECK_CYCLE = checkCycle; - dep.CHECK_TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == de.CHECK_TYPE)?.ID; - dep.NUM = j; - if (dep.CHECK_TYPE == SKDepartmentTypeEnum.公司级) - { - var userTemp = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员"); - if (userTemp != null) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; - post.POST_ID = userTemp.Nav_Person?.POST_ID; - contentPosts.Add(post); - } - } - if (dep.CHECK_TYPE == SKDepartmentTypeEnum.部门级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.车间级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级) - { - var userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); - if (userTemp == null) - { - userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); - } - if (userTemp != null) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; - post.POST_ID = userTemp.Nav_Person?.POST_ID; - contentPosts.Add(post); - } - } - if (dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级 && !string.IsNullOrEmpty(de.CHECK_POST)) - { - var postLists = de.CHECK_POST.Split(';').ToList(); - var postIds = posts.Where(t => postLists.Contains(t.NAME)).Select(t => t.ID).ToList(); - //var userTemps = users.Where(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_Person != null && t.Nav_Person.POST_ID != null && postIds.Contains((Guid)t.Nav_Person.POST_ID)).Select(m=>m.Nav_Person.POST_ID).Distinct().ToList(); - if (postIds.Any()) - { - foreach (var item in postIds) - { - if (item != null) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; - post.POST_ID = item; - contentPosts.Add(post); - } - } - } - } - contentDeparts.Add(dep); - j++; - } - } - } - } - } - } - } - } - } - } - } - } - } - UnifiedCommit(() => - { - //if (librarys != null && librarys.Any()) - // BantchSaveEntityNoCommit(librarys); - //if (ldeparts != null && ldeparts.Any()) - // BantchSaveEntityNoCommit(ldeparts); - if (contentDeparts != null && contentDeparts.Any()) - BantchSaveEntityNoCommit(contentDeparts); - if (contentPosts != null && contentPosts.Any()) - BantchSaveEntityNoCommit(contentPosts); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - /// - /// 基础库子表数据同步 - /// - /// - /// - [HttpPost, Route("BasicLibrarySync")] - public JsonActionResult BasicLibrarySync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List measures = new List(); - List contents = new List(); - var contentBS = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); - var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - if (librarys != null && librarys.Any()) - { - foreach (var library in librarys) - { - if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险) - { - library.DEPARTMENT_TYPE = "3,0,1,2"; - } - if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险) - { - library.DEPARTMENT_TYPE = "0,1,2"; - } - if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险) - { - library.DEPARTMENT_TYPE = "1,2"; - } - if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险) - { - library.DEPARTMENT_TYPE = "2"; - } - var tempPosts = imports.Where(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION).ToList(); - if (tempPosts.Any()) - { - var measureTemps = tempPosts.Select(t => t.MEASURES_NAME).Distinct().ToList(); - if (measureTemps.Any()) - { - var i = 1; - foreach (var temp in measureTemps) - { - T_SK_BASIC_LIBRARY_DETAIL measure = new T_SK_BASIC_LIBRARY_DETAIL(); - measure.ORG_ID = filter.OrgId; - measure.BASIC_LIBRARY_ID = library.ID; - measure.MEASURES_NAME = temp; - measure.NUM = i; - measures.Add(measure); - var contentTemps = tempPosts.Where(t => t.MEASURES_NAME == temp).Select(m => m.CHECK_CONTENT).Distinct().ToList(); - if (contentTemps.Any()) - { - foreach (var ctemp in contentTemps) - { - T_SK_BASIC_LIBRARY_DETAIL_CONTENT content = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT(); - content.ORG_ID = filter.OrgId; - content.BASIC_LIBRARY_DETAIL_ID = measure.ID; - var contentFist = contentBS.FirstOrDefault(t => t.CHECKCONTENT == ctemp); - content.CHECK_CONTENT = ctemp; - content.CHECK_CONTENTS_ID = contentFist?.ID; - content.NUM = i; - contents.Add(content); - } - } - i++; - } - } - } - } - } - UnifiedCommit(() => - { - if (librarys != null && librarys.Any()) - BantchSaveEntityNoCommit(librarys); - if (measures != null && measures.Any()) - BantchSaveEntityNoCommit(measures); - if (contents != null && contents.Any()) - BantchSaveEntityNoCommit(contents); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 基础库隐患描述同步 - /// - /// - /// - [HttpPost, Route("BasicLibraryHiddenSync")] - public JsonActionResult BasicLibraryHiddenSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List hiddens = new List(); - var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - if (contents != null && contents.Any()) - { - foreach (var content in contents) - { - T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN measure = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN(); - measure.ORG_ID = filter.OrgId; - measure.BASIC_LIBRARY_DETAIL_CONTENT_ID = content.ID; - measure.HIDDEN_LEVEL = SKHiddenLevel.General; - measure.NUM = content.NUM; - if (content.CHECK_CONTENT.Contains("是否未")) - { - measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "").Replace("?", "。"); - measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否未", "").Replace("?", "。"); - } - if (content.CHECK_CONTENT.Contains("是否不")) - { - measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "").Replace("?", "。"); - measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否不", "").Replace("?", ""); - } - if (content.CHECK_CONTENT.Contains("是否")) - { - measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "未").Replace("?", "。"); - measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否", "").Replace("?", "。"); - } - hiddens.Add(measure); - } - } - UnifiedCommit(() => - { - if (hiddens != null && hiddens.Any()) - BantchSaveEntityNoCommit(hiddens); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 企业库辨识岗位同步 - /// - /// - /// - [HttpPost, Route("LibraryPostSync")] - public JsonActionResult LibraryPostSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List posts = new List(); - List postDetails = new List(); - var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var libraryDetails = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var libraryContents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var departs = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_DetailPosts").ToList(); - if (librarys != null && librarys.Any()) - { - foreach (var library in librarys) - { - var detailIds = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).Select(t => t.ID).ToList(); - var contentId = libraryContents.FirstOrDefault(t => detailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID))?.ID; - var departList = departs.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == contentId).ToList(); - if (departList.Any()) - { - foreach (var depart in departList) - { - T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_ID = library.ID; - post.DEPARTMENT_ID = depart.DEPARTMENT_ID; - if (depart.Nav_DetailPosts != null && depart.Nav_DetailPosts.Any()) - { - foreach (var postTemp in depart.Nav_DetailPosts) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; - detail.POST_ID = postTemp.POST_ID; - postDetails.Add(detail); - } - } - posts.Add(post); - } - } - } - } - UnifiedCommit(() => - { - if (posts != null && posts.Any()) - BantchSaveEntityNoCommit(posts); - if (postDetails != null && postDetails.Any()) - BantchSaveEntityNoCommit(postDetails); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 企业库管控层级子表数据同步 - /// - /// - /// - [HttpPost, Route("LibraryDepartSync")] - public JsonActionResult LibraryDepartSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List ldeparts = new List(); - var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); - var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - if (librarys != null && librarys.Any()) - { - foreach (var library in librarys) - { - var tempPosts = imports.FirstOrDefault(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION); - if (tempPosts != null) - { - var departList = tempPosts.DEPARTMENT_NAME.Split(";").Distinct().ToList(); - var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); - if (depart.Any()) - { - foreach (var temp in depart) - { - if (temp != null) - { - T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART(); - dep.ORG_ID = filter.OrgId; - dep.ENTERPRISE_LIBRARY_ID = library.ID; - dep.DEPARTMENT_ID = temp.ID; - dep.DEPARTMENT_TYPE = (SKDepartmentTypeEnum)temp.DEPARTMENT_TYPE; - dep.USER_ID = temp.USER_ID; - ldeparts.Add(dep); - } - } - } - } - } - } - UnifiedCommit(() => - { - if (librarys != null && librarys.Any()) - BantchSaveEntityNoCommit(librarys); - if (ldeparts != null && ldeparts.Any()) - BantchSaveEntityNoCommit(ldeparts); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 企业库子表顺序调整 - /// - /// - /// - [HttpPost, Route("LibraryNumSync")] - public JsonActionResult LibraryNumSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var libraryDetails = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var contentDeparts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var hiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - if (librarys != null && librarys.Any()) - { - foreach (var library in librarys) - { - var details = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).ToList(); - if (details.Any()) - { - var i = 1; - foreach (var detail in details) - { - detail.NUM = i; - i++; - var contentList = contents.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == detail.ID).ToList(); - if (contentList.Any()) - { - var j = 1; - foreach (var content in contentList) - { - content.NUM = j; - j++; - var departList = contentDeparts.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == content.ID).ToList(); - if (departList.Any()) - { - var k = 1; - foreach (var depart in departList) - { - depart.NUM = k; - k++; - } - } - var hiddenList = hiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == content.ID).ToList(); - if (hiddenList.Any()) - { - var k = 1; - foreach (var hidden in hiddenList) - { - hidden.NUM = k; - k++; - } - } - } - } - } - } - } - } - UnifiedCommit(() => - { - if (libraryDetails != null && libraryDetails.Any()) - BantchUpdateEntityNoCommit(libraryDetails, "NUM"); - if (contents != null && contents.Any()) - BantchUpdateEntityNoCommit(contents, "NUM"); - if (contentDeparts != null && contentDeparts.Any()) - BantchUpdateEntityNoCommit(contentDeparts, "NUM"); - if (hiddens != null && hiddens.Any()) - BantchUpdateEntityNoCommit(hiddens, "NUM"); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 企业库辨识岗位同步 - /// - /// - /// - [HttpPost, Route("LibraryPostNewSync")] - public JsonActionResult LibraryPostNewSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List posts = new List(); - List postLists = new List(); - List postDetails = new List(); - List postDetailLists = new List(); - var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - var postInfos = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var libraryImports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - if (libraryImports != null && libraryImports.Any()) - { - foreach (var library in libraryImports) - { - var depart = departs.FirstOrDefault(t => t.NAME == library.DEPARTMENT_NAME); - var postInfo = postInfos.FirstOrDefault(t => t.NAME == library.POST_NAME); - if (!string.IsNullOrEmpty(library.RISK_NAME1)) - { - var nameList = library.RISK_NAME1.Split("\n").ToList(); - if (nameList != null && nameList.Any()) - { - foreach (var name in nameList) - { - var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME1 && t.RISK_NAME == name); - if (libraryFirst != null && depart != null) - { - T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; - post.DEPARTMENT_ID = depart.ID; - posts.Add(post); - if (postInfo != null) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; - detail.POST_ID = postInfo.ID; - detail.Nav_LibraryPost = post; - postDetails.Add(detail); - } - } - } - } - } - if (!string.IsNullOrEmpty(library.RISK_NAME2)) - { - var nameList = library.RISK_NAME2.Split("\n").ToList(); - if (nameList != null && nameList.Any()) - { - foreach (var name in nameList) - { - var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME2 && t.RISK_NAME == name); - if (libraryFirst != null && depart != null) - { - T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; - post.DEPARTMENT_ID = depart.ID; - posts.Add(post); - if (postInfo != null) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; - detail.POST_ID = postInfo.ID; - detail.Nav_LibraryPost = post; - postDetails.Add(detail); - } - } - } - } - } - if (!string.IsNullOrEmpty(library.RISK_NAME3)) - { - var nameList = library.RISK_NAME3.Split("\n").ToList(); - if (nameList != null && nameList.Any()) - { - foreach (var name in nameList) - { - var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME3 && t.RISK_NAME == name); - if (libraryFirst != null && depart != null) - { - T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; - post.DEPARTMENT_ID = depart.ID; - posts.Add(post); - if (postInfo != null) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; - detail.POST_ID = postInfo.ID; - detail.Nav_LibraryPost = post; - postDetails.Add(detail); - } - } - } - } - } - if (!string.IsNullOrEmpty(library.RISK_NAME4)) - { - var nameList = library.RISK_NAME4.Split("\n").ToList(); - if (nameList != null && nameList.Any()) - { - foreach (var name in nameList) - { - var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME4 && t.RISK_NAME == name); - if (libraryFirst != null && depart != null) - { - T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; - post.DEPARTMENT_ID = depart.ID; - posts.Add(post); - if (postInfo != null) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; - detail.POST_ID = postInfo.ID; - detail.Nav_LibraryPost = post; - postDetails.Add(detail); - } - } - } - } - } - if (!string.IsNullOrEmpty(library.RISK_NAME5)) - { - var nameList = library.RISK_NAME5.Split("\n").ToList(); - if (nameList != null && nameList.Any()) - { - foreach (var name in nameList) - { - var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME5 && t.RISK_NAME == name); - if (libraryFirst != null && depart != null) - { - T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; - post.DEPARTMENT_ID = depart.ID; - posts.Add(post); - if (postInfo != null) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; - detail.POST_ID = postInfo.ID; - detail.Nav_LibraryPost = post; - postDetails.Add(detail); - } - } - } - } - } - if (!string.IsNullOrEmpty(library.RISK_NAME6)) - { - var nameList = library.RISK_NAME6.Split("\n").ToList(); - if (nameList != null && nameList.Any()) - { - foreach (var name in nameList) - { - var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME6 && t.RISK_NAME == name); - if (libraryFirst != null && depart != null) - { - T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; - post.DEPARTMENT_ID = depart.ID; - posts.Add(post); - if (postInfo != null) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; - detail.POST_ID = postInfo.ID; - detail.Nav_LibraryPost = post; - postDetails.Add(detail); - } - } - } - } - } - } - } - if (posts.Any()) - { - var temps = posts.GroupBy(t => new { t.ENTERPRISE_LIBRARY_ID, t.DEPARTMENT_ID }).Select(m => m.FirstOrDefault()).ToList(); - if (temps.Any()) - { - foreach (var item in temps) - { - if (item != null) - { - T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID; - post.DEPARTMENT_ID = item.DEPARTMENT_ID; - postLists.Add(post); - var details = postDetails.Where(t => t.Nav_LibraryPost != null && t.Nav_LibraryPost.DEPARTMENT_ID == item.DEPARTMENT_ID && t.Nav_LibraryPost.ENTERPRISE_LIBRARY_ID == item.ENTERPRISE_LIBRARY_ID).Select(m => m.POST_ID).Distinct().ToList(); - if (details != null && details.Any()) - { - foreach (var xx in details) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; - detail.POST_ID = xx; - postDetailLists.Add(detail); - } - } - } - } - } - } - UnifiedCommit(() => - { - if (postLists != null && postLists.Any()) - BantchSaveEntityNoCommit(postLists); - if (postDetailLists != null && postDetailLists.Any()) - BantchSaveEntityNoCommit(postDetailLists); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 辨识区域同步 - /// - /// - /// - [HttpPost, Route("RiskSync")] - public JsonActionResult RiskSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List posts = new List(); - var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var areaList = librarys.Select(t => t.AREA_NAME).Distinct().ToList(); - if (areaList != null && areaList.Any()) - { - foreach (var area in areaList) - { - T_SK_RISK_AREA post = new T_SK_RISK_AREA(); - post.ORG_ID = filter.OrgId; - post.NAME = area; - posts.Add(post); - } - } - UnifiedCommit(() => - { - if (posts != null && posts.Any()) - BantchSaveEntityNoCommit(posts); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - /// - /// 检查内容同步 - /// - /// - /// - [HttpPost, Route("ContentSync")] - public JsonActionResult ContentSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List posts = new List(); - List details = new List(); - var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var contentIds = contents.Select(t => t.ID).ToList(); - var hiddens = GetEntities(i => contentIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(filter.OrgId)).ToList(); - var contentNames = contents.Select(t => t.CHECK_CONTENT).Distinct().ToList(); - if (contentNames != null && contentNames.Any()) - { - foreach (var area in contentNames) - { - T_SK_CHECK_CONTENTS post = new T_SK_CHECK_CONTENTS(); - post.ORG_ID = filter.OrgId; - post.CHECKCONTENT = area; - posts.Add(post); - var id = contents.FirstOrDefault(t => t.CHECK_CONTENT == area).ID; - var hiddenList = hiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == id).ToList(); - if (hiddenList != null && hiddenList.Any()) - { - foreach (var hid in hiddenList) - { - T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); - hi.ORG_ID = filter.OrgId; - hi.CHECK_CONTENTS_ID = post.ID; - hi.DESCREPTION = hid.HIDDEN_DESCRIPTION; - hi.QUESTION_LEVEL = hid.HIDDEN_LEVEL; - hi.DEMAND = hid.RECTIFICATION_MEASURES; - details.Add(hi); - } - } - } - } - UnifiedCommit(() => - { - if (posts != null && posts.Any()) - BantchSaveEntityNoCommit(posts); - if (details != null && details.Any()) - BantchSaveEntityNoCommit(details); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 触发安全检查通知 - /// - /// - /// - [HttpPost, Route("SafeCheckNoticeNew")] - public JsonActionResult SafeCheckNoticeNew([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var dtNow = DateTime.Now; - var year = dtNow.Year; - var month = dtNow.Month; - var day = dtNow.Day; - var week = dtNow.DayOfWeek; - List setList = new List(); - //查配置表,有配才执行 - var timeSets = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea", "Nav_CheckType").ToList(); - if (timeSets != null && timeSets.Any()) - { - foreach (var set in timeSets) - { - switch (set.CHECK_CYCLE) - { - case SKPLANCHECKFREQUENCYEnum.Year: - if (set.MONTH == month && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - break; - case SKPLANCHECKFREQUENCYEnum.HalfYear: - if (((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - break; - case SKPLANCHECKFREQUENCYEnum.Date: - setList.Add(set); + { + if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险) + { + library.DEPARTMENT_TYPE = "3,0,1,2"; + } + if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险) + { + library.DEPARTMENT_TYPE = "0,1,2"; + } + if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险) + { + library.DEPARTMENT_TYPE = "1,2"; + } + if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险) + { + library.DEPARTMENT_TYPE = "2"; + } + var tempPosts = imports.Where(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION).ToList(); + if (tempPosts.Any()) + { + //foreach (var de in tempPosts) + //{ + // var checkCycle = SKPLANCHECKFREQUENCYEnum.None; + // if (!string.IsNullOrEmpty(de.CHECK_CYCLE)) + // { + // switch (de.CHECK_CYCLE) + // { + // case "每日": + // checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; + // case "每周": + // checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break; + // case "每月": + // checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break; + // case "每季度": + // checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break; + // case "每班": + // checkCycle = SKPLANCHECKFREQUENCYEnum.Class; break; + // default: + // checkCycle = SKPLANCHECKFREQUENCYEnum.None; break; + // break; + // } + // } + // if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL)) + // { + // var departList = de.CHECK_DEPARTMENT.Split(';').ToList(); + // var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); + // if (depart.Any()) + // { + // foreach (var deTemp in depart) + // { + // if (deTemp != null) + // { + // T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART(); + // dep.ORG_ID = filter.OrgId; + // dep.ENTERPRISE_LIBRARY_ID = library.ID; + // dep.DEPARTMENT_ID = deTemp.ID; + // dep.DEPARTMENT_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum.岗位级 : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; + // dep.USER_ID = deTemp.USER_ID; + // ldeparts.Add(dep); + // } + // } + // } + // } + //} + var measureTemps = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).ToList(); + if (measureTemps.Any()) + { + foreach (var temp in measureTemps) + { + var contentTemps = libraryContents.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == temp.ID).ToList(); + if (contentTemps.Any()) + { + foreach (var ctemp in contentTemps) + { + var contentDepartTemps = tempPosts.Where(t => t.MEASURES_NAME == temp.MEASURES_NAME && t.CHECK_CONTENT == ctemp.CHECK_CONTENT).ToList(); + if (contentDepartTemps.Any()) + { + foreach (var de in contentDepartTemps) + { + var checkCycle = SKPLANCHECKFREQUENCYEnum.Date; + if (!string.IsNullOrEmpty(de.CHECK_CYCLE)) + { + switch (de.CHECK_CYCLE) + { + case "每日": + checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; + case "每周": + checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break; + case "每月": + checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break; + case "每季度": + checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break; + case "每班": + checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; + default: + checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; + break; + } + } + if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL)) + { + var departList = de.CHECK_DEPARTMENT.Split(';').ToList(); + var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); + if (depart.Any()) + { + int j = 1; + foreach (var deTemp in depart) + { + if (deTemp != null) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); + dep.ORG_ID = filter.OrgId; + dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = ctemp.ID; + dep.DEPARTMENT_ID = deTemp.ID; + dep.CHECK_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum.班组级 : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; + dep.CHECK_CYCLE = checkCycle; + dep.CHECK_TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == de.CHECK_TYPE)?.ID; + dep.NUM = j; + if (dep.CHECK_TYPE == SKDepartmentTypeEnum.公司级) + { + var userTemp = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员"); + if (userTemp != null) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; + post.POST_ID = userTemp.Nav_Person?.POST_ID; + contentPosts.Add(post); + } + } + if (dep.CHECK_TYPE == SKDepartmentTypeEnum.部门级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.车间级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级) + { + var userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); + if (userTemp == null) + { + userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); + } + if (userTemp != null) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; + post.POST_ID = userTemp.Nav_Person?.POST_ID; + contentPosts.Add(post); + } + } + if (dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级 && !string.IsNullOrEmpty(de.CHECK_POST)) + { + var postLists = de.CHECK_POST.Split(';').ToList(); + var postIds = posts.Where(t => postLists.Contains(t.NAME)).Select(t => t.ID).ToList(); + //var userTemps = users.Where(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_Person != null && t.Nav_Person.POST_ID != null && postIds.Contains((Guid)t.Nav_Person.POST_ID)).Select(m=>m.Nav_Person.POST_ID).Distinct().ToList(); + if (postIds.Any()) + { + foreach (var item in postIds) + { + if (item != null) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; + post.POST_ID = item; + contentPosts.Add(post); + } + } + } + } + contentDeparts.Add(dep); + j++; + } + } + } + } + } + } + } + } + } + } + } + } + } + UnifiedCommit(() => + { + //if (librarys != null && librarys.Any()) + // BantchSaveEntityNoCommit(librarys); + //if (ldeparts != null && ldeparts.Any()) + // BantchSaveEntityNoCommit(ldeparts); + if (contentDeparts != null && contentDeparts.Any()) + BantchSaveEntityNoCommit(contentDeparts); + if (contentPosts != null && contentPosts.Any()) + BantchSaveEntityNoCommit(contentPosts); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + /// + /// 基础库子表数据同步 + /// + /// + /// + [HttpPost, Route("BasicLibrarySync")] + public JsonActionResult BasicLibrarySync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List measures = new List(); + List contents = new List(); + var contentBS = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); + var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + if (librarys != null && librarys.Any()) + { + foreach (var library in librarys) + { + if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险) + { + library.DEPARTMENT_TYPE = "3,0,1,2"; + } + if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险) + { + library.DEPARTMENT_TYPE = "0,1,2"; + } + if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险) + { + library.DEPARTMENT_TYPE = "1,2"; + } + if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险) + { + library.DEPARTMENT_TYPE = "2"; + } + var tempPosts = imports.Where(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION).ToList(); + if (tempPosts.Any()) + { + var measureTemps = tempPosts.Select(t => t.MEASURES_NAME).Distinct().ToList(); + if (measureTemps.Any()) + { + var i = 1; + foreach (var temp in measureTemps) + { + T_SK_BASIC_LIBRARY_DETAIL measure = new T_SK_BASIC_LIBRARY_DETAIL(); + measure.ORG_ID = filter.OrgId; + measure.BASIC_LIBRARY_ID = library.ID; + measure.MEASURES_NAME = temp; + measure.NUM = i; + measures.Add(measure); + var contentTemps = tempPosts.Where(t => t.MEASURES_NAME == temp).Select(m => m.CHECK_CONTENT).Distinct().ToList(); + if (contentTemps.Any()) + { + foreach (var ctemp in contentTemps) + { + T_SK_BASIC_LIBRARY_DETAIL_CONTENT content = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT(); + content.ORG_ID = filter.OrgId; + content.BASIC_LIBRARY_DETAIL_ID = measure.ID; + var contentFist = contentBS.FirstOrDefault(t => t.CHECKCONTENT == ctemp); + content.CHECK_CONTENT = ctemp; + content.CHECK_CONTENTS_ID = contentFist?.ID; + content.NUM = i; + contents.Add(content); + } + } + i++; + } + } + } + } + } + UnifiedCommit(() => + { + if (librarys != null && librarys.Any()) + BantchSaveEntityNoCommit(librarys); + if (measures != null && measures.Any()) + BantchSaveEntityNoCommit(measures); + if (contents != null && contents.Any()) + BantchSaveEntityNoCommit(contents); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 基础库隐患描述同步 + /// + /// + /// + [HttpPost, Route("BasicLibraryHiddenSync")] + public JsonActionResult BasicLibraryHiddenSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List hiddens = new List(); + var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + if (contents != null && contents.Any()) + { + foreach (var content in contents) + { + T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN measure = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN(); + measure.ORG_ID = filter.OrgId; + measure.BASIC_LIBRARY_DETAIL_CONTENT_ID = content.ID; + measure.HIDDEN_LEVEL = SKHiddenLevel.General; + measure.NUM = content.NUM; + if (content.CHECK_CONTENT.Contains("是否未")) + { + measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "").Replace("?", "。"); + measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否未", "").Replace("?", "。"); + } + if (content.CHECK_CONTENT.Contains("是否不")) + { + measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "").Replace("?", "。"); + measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否不", "").Replace("?", ""); + } + if (content.CHECK_CONTENT.Contains("是否")) + { + measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "未").Replace("?", "。"); + measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否", "").Replace("?", "。"); + } + hiddens.Add(measure); + } + } + UnifiedCommit(() => + { + if (hiddens != null && hiddens.Any()) + BantchSaveEntityNoCommit(hiddens); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 企业库辨识岗位同步 + /// + /// + /// + [HttpPost, Route("LibraryPostSync")] + public JsonActionResult LibraryPostSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List posts = new List(); + List postDetails = new List(); + var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var libraryDetails = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var libraryContents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var departs = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_DetailPosts").ToList(); + if (librarys != null && librarys.Any()) + { + foreach (var library in librarys) + { + var detailIds = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).Select(t => t.ID).ToList(); + var contentId = libraryContents.FirstOrDefault(t => detailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID))?.ID; + var departList = departs.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == contentId).ToList(); + if (departList.Any()) + { + foreach (var depart in departList) + { + T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_ID = library.ID; + post.DEPARTMENT_ID = depart.DEPARTMENT_ID; + if (depart.Nav_DetailPosts != null && depart.Nav_DetailPosts.Any()) + { + foreach (var postTemp in depart.Nav_DetailPosts) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; + detail.POST_ID = postTemp.POST_ID; + postDetails.Add(detail); + } + } + posts.Add(post); + } + } + } + } + UnifiedCommit(() => + { + if (posts != null && posts.Any()) + BantchSaveEntityNoCommit(posts); + if (postDetails != null && postDetails.Any()) + BantchSaveEntityNoCommit(postDetails); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 企业库管控层级子表数据同步 + /// + /// + /// + [HttpPost, Route("LibraryDepartSync")] + public JsonActionResult LibraryDepartSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List ldeparts = new List(); + var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); + var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + if (librarys != null && librarys.Any()) + { + foreach (var library in librarys) + { + var tempPosts = imports.FirstOrDefault(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION); + if (tempPosts != null) + { + var departList = tempPosts.DEPARTMENT_NAME.Split(";").Distinct().ToList(); + var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); + if (depart.Any()) + { + foreach (var temp in depart) + { + if (temp != null) + { + T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART(); + dep.ORG_ID = filter.OrgId; + dep.ENTERPRISE_LIBRARY_ID = library.ID; + dep.DEPARTMENT_ID = temp.ID; + dep.DEPARTMENT_TYPE = (SKDepartmentTypeEnum)temp.DEPARTMENT_TYPE; + dep.USER_ID = temp.USER_ID; + ldeparts.Add(dep); + } + } + } + } + } + } + UnifiedCommit(() => + { + if (librarys != null && librarys.Any()) + BantchSaveEntityNoCommit(librarys); + if (ldeparts != null && ldeparts.Any()) + BantchSaveEntityNoCommit(ldeparts); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 企业库子表顺序调整 + /// + /// + /// + [HttpPost, Route("LibraryNumSync")] + public JsonActionResult LibraryNumSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var libraryDetails = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var contentDeparts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var hiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + if (librarys != null && librarys.Any()) + { + foreach (var library in librarys) + { + var details = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).ToList(); + if (details.Any()) + { + var i = 1; + foreach (var detail in details) + { + detail.NUM = i; + i++; + var contentList = contents.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == detail.ID).ToList(); + if (contentList.Any()) + { + var j = 1; + foreach (var content in contentList) + { + content.NUM = j; + j++; + var departList = contentDeparts.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == content.ID).ToList(); + if (departList.Any()) + { + var k = 1; + foreach (var depart in departList) + { + depart.NUM = k; + k++; + } + } + var hiddenList = hiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == content.ID).ToList(); + if (hiddenList.Any()) + { + var k = 1; + foreach (var hidden in hiddenList) + { + hidden.NUM = k; + k++; + } + } + } + } + } + } + } + } + UnifiedCommit(() => + { + if (libraryDetails != null && libraryDetails.Any()) + BantchUpdateEntityNoCommit(libraryDetails, "NUM"); + if (contents != null && contents.Any()) + BantchUpdateEntityNoCommit(contents, "NUM"); + if (contentDeparts != null && contentDeparts.Any()) + BantchUpdateEntityNoCommit(contentDeparts, "NUM"); + if (hiddens != null && hiddens.Any()) + BantchUpdateEntityNoCommit(hiddens, "NUM"); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 企业库辨识岗位同步 + /// + /// + /// + [HttpPost, Route("LibraryPostNewSync")] + public JsonActionResult LibraryPostNewSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List posts = new List(); + List postLists = new List(); + List postDetails = new List(); + List postDetailLists = new List(); + var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + var postInfos = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var libraryImports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + if (libraryImports != null && libraryImports.Any()) + { + foreach (var library in libraryImports) + { + var depart = departs.FirstOrDefault(t => t.NAME == library.DEPARTMENT_NAME); + var postInfo = postInfos.FirstOrDefault(t => t.NAME == library.POST_NAME); + if (!string.IsNullOrEmpty(library.RISK_NAME1)) + { + var nameList = library.RISK_NAME1.Split("\n").ToList(); + if (nameList != null && nameList.Any()) + { + foreach (var name in nameList) + { + var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME1 && t.RISK_NAME == name); + if (libraryFirst != null && depart != null) + { + T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; + post.DEPARTMENT_ID = depart.ID; + posts.Add(post); + if (postInfo != null) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; + detail.POST_ID = postInfo.ID; + detail.Nav_LibraryPost = post; + postDetails.Add(detail); + } + } + } + } + } + if (!string.IsNullOrEmpty(library.RISK_NAME2)) + { + var nameList = library.RISK_NAME2.Split("\n").ToList(); + if (nameList != null && nameList.Any()) + { + foreach (var name in nameList) + { + var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME2 && t.RISK_NAME == name); + if (libraryFirst != null && depart != null) + { + T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; + post.DEPARTMENT_ID = depart.ID; + posts.Add(post); + if (postInfo != null) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; + detail.POST_ID = postInfo.ID; + detail.Nav_LibraryPost = post; + postDetails.Add(detail); + } + } + } + } + } + if (!string.IsNullOrEmpty(library.RISK_NAME3)) + { + var nameList = library.RISK_NAME3.Split("\n").ToList(); + if (nameList != null && nameList.Any()) + { + foreach (var name in nameList) + { + var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME3 && t.RISK_NAME == name); + if (libraryFirst != null && depart != null) + { + T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; + post.DEPARTMENT_ID = depart.ID; + posts.Add(post); + if (postInfo != null) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; + detail.POST_ID = postInfo.ID; + detail.Nav_LibraryPost = post; + postDetails.Add(detail); + } + } + } + } + } + if (!string.IsNullOrEmpty(library.RISK_NAME4)) + { + var nameList = library.RISK_NAME4.Split("\n").ToList(); + if (nameList != null && nameList.Any()) + { + foreach (var name in nameList) + { + var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME4 && t.RISK_NAME == name); + if (libraryFirst != null && depart != null) + { + T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; + post.DEPARTMENT_ID = depart.ID; + posts.Add(post); + if (postInfo != null) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; + detail.POST_ID = postInfo.ID; + detail.Nav_LibraryPost = post; + postDetails.Add(detail); + } + } + } + } + } + if (!string.IsNullOrEmpty(library.RISK_NAME5)) + { + var nameList = library.RISK_NAME5.Split("\n").ToList(); + if (nameList != null && nameList.Any()) + { + foreach (var name in nameList) + { + var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME5 && t.RISK_NAME == name); + if (libraryFirst != null && depart != null) + { + T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; + post.DEPARTMENT_ID = depart.ID; + posts.Add(post); + if (postInfo != null) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; + detail.POST_ID = postInfo.ID; + detail.Nav_LibraryPost = post; + postDetails.Add(detail); + } + } + } + } + } + if (!string.IsNullOrEmpty(library.RISK_NAME6)) + { + var nameList = library.RISK_NAME6.Split("\n").ToList(); + if (nameList != null && nameList.Any()) + { + foreach (var name in nameList) + { + var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME6 && t.RISK_NAME == name); + if (libraryFirst != null && depart != null) + { + T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; + post.DEPARTMENT_ID = depart.ID; + posts.Add(post); + if (postInfo != null) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; + detail.POST_ID = postInfo.ID; + detail.Nav_LibraryPost = post; + postDetails.Add(detail); + } + } + } + } + } + } + } + if (posts.Any()) + { + var temps = posts.GroupBy(t => new { t.ENTERPRISE_LIBRARY_ID, t.DEPARTMENT_ID }).Select(m => m.FirstOrDefault()).ToList(); + if (temps.Any()) + { + foreach (var item in temps) + { + if (item != null) + { + T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID; + post.DEPARTMENT_ID = item.DEPARTMENT_ID; + postLists.Add(post); + var details = postDetails.Where(t => t.Nav_LibraryPost != null && t.Nav_LibraryPost.DEPARTMENT_ID == item.DEPARTMENT_ID && t.Nav_LibraryPost.ENTERPRISE_LIBRARY_ID == item.ENTERPRISE_LIBRARY_ID).Select(m => m.POST_ID).Distinct().ToList(); + if (details != null && details.Any()) + { + foreach (var xx in details) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; + detail.POST_ID = xx; + postDetailLists.Add(detail); + } + } + } + } + } + } + UnifiedCommit(() => + { + if (postLists != null && postLists.Any()) + BantchSaveEntityNoCommit(postLists); + if (postDetailLists != null && postDetailLists.Any()) + BantchSaveEntityNoCommit(postDetailLists); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 辨识区域同步 + /// + /// + /// + [HttpPost, Route("RiskSync")] + public JsonActionResult RiskSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List posts = new List(); + var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var areaList = librarys.Select(t => t.AREA_NAME).Distinct().ToList(); + if (areaList != null && areaList.Any()) + { + foreach (var area in areaList) + { + T_SK_RISK_AREA post = new T_SK_RISK_AREA(); + post.ORG_ID = filter.OrgId; + post.NAME = area; + posts.Add(post); + } + } + UnifiedCommit(() => + { + if (posts != null && posts.Any()) + BantchSaveEntityNoCommit(posts); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + /// + /// 检查内容同步 + /// + /// + /// + [HttpPost, Route("ContentSync")] + public JsonActionResult ContentSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List posts = new List(); + List details = new List(); + var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var contentIds = contents.Select(t => t.ID).ToList(); + var hiddens = GetEntities(i => contentIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(filter.OrgId)).ToList(); + var contentNames = contents.Select(t => t.CHECK_CONTENT).Distinct().ToList(); + if (contentNames != null && contentNames.Any()) + { + foreach (var area in contentNames) + { + T_SK_CHECK_CONTENTS post = new T_SK_CHECK_CONTENTS(); + post.ORG_ID = filter.OrgId; + post.CHECKCONTENT = area; + posts.Add(post); + var id = contents.FirstOrDefault(t => t.CHECK_CONTENT == area).ID; + var hiddenList = hiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == id).ToList(); + if (hiddenList != null && hiddenList.Any()) + { + foreach (var hid in hiddenList) + { + T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); + hi.ORG_ID = filter.OrgId; + hi.CHECK_CONTENTS_ID = post.ID; + hi.DESCREPTION = hid.HIDDEN_DESCRIPTION; + hi.QUESTION_LEVEL = hid.HIDDEN_LEVEL; + hi.DEMAND = hid.RECTIFICATION_MEASURES; + details.Add(hi); + } + } + } + } + UnifiedCommit(() => + { + if (posts != null && posts.Any()) + BantchSaveEntityNoCommit(posts); + if (details != null && details.Any()) + BantchSaveEntityNoCommit(details); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 触发安全检查通知 + /// + /// + /// + [HttpPost, Route("SafeCheckNoticeNew")] + public JsonActionResult SafeCheckNoticeNew([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var dtNow = DateTime.Now; + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + List setList = new List(); + //查配置表,有配才执行 + var timeSets = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea", "Nav_CheckType").ToList(); + if (timeSets != null && timeSets.Any()) + { + foreach (var set in timeSets) + { + switch (set.CHECK_CYCLE) + { + case SKPLANCHECKFREQUENCYEnum.Year: + if (set.MONTH == month && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.HalfYear: + if (((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.Date: + setList.Add(set); break; //case SKPLANCHECKFREQUENCYEnum.Class: // setList.Add(set); - break; - case SKPLANCHECKFREQUENCYEnum.Week: - if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - break; - case SKPLANCHECKFREQUENCYEnum.Month: - if (set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - break; - case SKPLANCHECKFREQUENCYEnum.Quarter: - if (set.MONTH == 1) - { - if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - } - if (set.MONTH == 2) - { - if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - } - if (set.MONTH == 3) - { - if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - } - break; - default: - break; - } - } - } - List notices = new List(); - List safeNotices = new List(); - List safeDetialNotices = new List(); - //List records = new List(); - //List recordDetails = new List(); - //List recordDetailUsers = new List(); - if (setList != null && setList.Any()) - { - var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); - var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); - var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); - var checkCycles = setList.Select(t => t.CHECK_CYCLE).Distinct().ToList(); - var checkTypeIds = setList.Select(t => t.CHECK_TYPE_ID).Distinct().ToList(); - var checkTypeEnums = setList.Select(t => t.CHECK_TYPE).Distinct().ToList(); - var libraryDeparts = this.GetEntities(t => checkCycles.Contains(t.CHECK_CYCLE) && checkTypeIds.Contains(t.CHECK_TYPE_ID) && checkTypeEnums.Contains(t.CHECK_TYPE), new BaseFilter(filter.OrgId)); - var ldepartIds = libraryDeparts.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); - var libraryContents = this.GetEntities(t => ldepartIds.Contains(t.ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail").OrderBy(t => t.Nav_LibraryDetail?.NUM).ThenBy(m => m.NUM); - var detailsIds = libraryContents.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_ID).Distinct().ToList(); - var libraryDetails = this.GetEntities(t => detailsIds.Contains(t.ID), new BaseFilter(filter.OrgId)); - var libraryIds = libraryDetails.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); - var librarys = this.GetEntities(t => libraryIds.Contains(t.ID), new BaseFilter(filter.OrgId)); - if (libraryContents != null && libraryContents.Any()) - { - foreach (var content in libraryContents) - { - var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID); - var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); - content.MineType = libraryTemp.MineType; - content.AREA_ID = libraryTemp.AREA_ID; - } - } - //if (libraryDeparts != null && libraryDeparts.Any()) - //{ - // foreach (var depart in libraryDeparts) - // { - // var departTemp = libraryContents.FirstOrDefault(t => t.ID == depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID); - // var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == departTemp.ENTERPRISE_LIBRARY_DETAIL_ID); - // var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); - // depart.MineType = libraryTemp.MineType; - // } - //} - DateTime dt = DateTime.Now; - if (filter.Parameter1 != null) - { - dt = DateTime.Parse(filter.Parameter1); - } - DateTime minTime = dt.AddMinutes(0); - DateTime maxTime = dt.AddMinutes(60); - var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); - var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); - var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); - var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); - var personIds = new List(); - if (shiftClassList != null && shiftClassList.Any()) - { - foreach (var item in shiftClassList) - { - if (item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any()) - { - var ids = item.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).Distinct().ToList(); - personIds.AddRange(ids); - } - } - } - var baseFilter = new BaseFilter(filter.GetOrgId()); - baseFilter.IgnoreDataRule = true; - baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; //指定字段,包括导航属性 - //Expression> expression = i => i.IS_DELETED == false && i.CREATE_TIME.Value.Date == dt.Date; - //List noticeExsiss = this.GetEntities(expression, baseFilter).ToList(); - foreach (var item in setList) - { - List userIds = new List(); - List mineTypes = new List(); - var departTemps = departs.ToList(); - //先查给谁 - if (item.USER_ID_SEND != null) - { - //特别指定的人 - userIds.Add((Guid)item.USER_ID_SEND); - } + break; + case SKPLANCHECKFREQUENCYEnum.Week: + if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.Month: + if (set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.Quarter: + if (set.MONTH == 1) + { + if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + } + if (set.MONTH == 2) + { + if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + } + if (set.MONTH == 3) + { + if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + } + break; + default: + break; + } + } + } + List notices = new List(); + List safeNotices = new List(); + List safeDetialNotices = new List(); + //List records = new List(); + //List recordDetails = new List(); + //List recordDetailUsers = new List(); + if (setList != null && setList.Any()) + { + var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); + var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); + var checkCycles = setList.Select(t => t.CHECK_CYCLE).Distinct().ToList(); + var checkTypeIds = setList.Select(t => t.CHECK_TYPE_ID).Distinct().ToList(); + var checkTypeEnums = setList.Select(t => t.CHECK_TYPE).Distinct().ToList(); + var libraryDeparts = this.GetEntities(t => checkCycles.Contains(t.CHECK_CYCLE) && checkTypeIds.Contains(t.CHECK_TYPE_ID) && checkTypeEnums.Contains(t.CHECK_TYPE), new BaseFilter(filter.OrgId)); + var ldepartIds = libraryDeparts.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); + var libraryContents = this.GetEntities(t => ldepartIds.Contains(t.ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail").OrderBy(t => t.Nav_LibraryDetail?.NUM).ThenBy(m => m.NUM); + var detailsIds = libraryContents.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_ID).Distinct().ToList(); + var libraryDetails = this.GetEntities(t => detailsIds.Contains(t.ID), new BaseFilter(filter.OrgId)); + var libraryIds = libraryDetails.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var librarys = this.GetEntities(t => libraryIds.Contains(t.ID), new BaseFilter(filter.OrgId)); + if (libraryContents != null && libraryContents.Any()) + { + foreach (var content in libraryContents) + { + var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID); + var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); + content.MineType = libraryTemp.MineType; + content.AREA_ID = libraryTemp.AREA_ID; + } + } + //if (libraryDeparts != null && libraryDeparts.Any()) + //{ + // foreach (var depart in libraryDeparts) + // { + // var departTemp = libraryContents.FirstOrDefault(t => t.ID == depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID); + // var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == departTemp.ENTERPRISE_LIBRARY_DETAIL_ID); + // var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); + // depart.MineType = libraryTemp.MineType; + // } + //} + DateTime dt = DateTime.Now; + if (filter.Parameter1 != null) + { + dt = DateTime.Parse(filter.Parameter1); + } + DateTime minTime = dt.AddMinutes(0); + DateTime maxTime = dt.AddMinutes(60); + var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); + var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); + var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); + var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); + var personIds = new List(); + if (shiftClassList != null && shiftClassList.Any()) + { + foreach (var item in shiftClassList) + { + if (item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any()) + { + var ids = item.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).Distinct().ToList(); + personIds.AddRange(ids); + } + } + } + var baseFilter = new BaseFilter(filter.GetOrgId()); + baseFilter.IgnoreDataRule = true; + baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; //指定字段,包括导航属性 + //Expression> expression = i => i.IS_DELETED == false && i.CREATE_TIME.Value.Date == dt.Date; + //List noticeExsiss = this.GetEntities(expression, baseFilter).ToList(); + foreach (var item in setList) + { + List userIds = new List(); + List mineTypes = new List(); + var departTemps = departs.ToList(); + //先查给谁 + if (item.USER_ID_SEND != null) + { + //特别指定的人 + userIds.Add((Guid)item.USER_ID_SEND); + } else - { - if (item.MineType != SKProductionUnit.All) - { - //非全公司,过滤生产单元 - departTemps = departTemps.Where(t => t.MineType == (int)item.MineType).ToList(); - } - //if (item.CHECK_TYPE != SKDepartmentTypeEnum.岗位级) - { - //非岗位级,过滤部门层级 - departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == (int)item.CHECK_TYPE).ToList(); - } - //else - //{ - // //岗位级默认班组 - // departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == 20); - //} - //if (item.Nav_ListSetDepObject != null && item.Nav_ListSetDepObject.Any()) - //{ - // //检查部门范围过滤 - // var departIds = item.Nav_ListSetDepObject.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); - // departTemps = departTemps.Where(t => departIds.Contains(t.ID)); - //} - if (item.Nav_ListDepOut != null && item.Nav_ListDepOut.Any()) - { - //排除组织过滤 - var departIds = item.Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); - departTemps = departTemps.Where(t => !departIds.Contains(t.ID)).ToList(); - } - if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Head) - { - //发给负责人 - var userTempIds = departTemps.Where(m => m.USER_ID != null).Select(t => (Guid)t.USER_ID).Distinct().ToList(); - userIds.AddRange(userTempIds); - } - if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Hon) - { - //发给安全员 - var departIds = departTemps.Select(t => t.ID).ToList(); - var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")).Select(m => m.ID).ToList(); - userIds.AddRange(userTempIds); - } - if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.SafeHon) - { - //发给安环部安全员 - var departIds = departTemps.Select(t => t.ID).ToList(); - var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")).Select(m => m.ID).ToList(); - userIds.AddRange(userTempIds); - } - if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.ClassMonitor) - { - //发给班长 - var userTempIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20 && m.USER_ID != null).Select(t => (Guid)t.USER_ID).ToList(); - userIds.AddRange(userTempIds); - } - //if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Post) - //{ - // //发给岗位工 - // var departIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20).Select(t => t.ID).ToList(); - // var userTempIds = users.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)&& t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID)).Select(m => m.ID).ToList(); - // userIds.AddRange(userTempIds); - //} - } - if (userIds.Any()) - { - //var areaIds = item.Nav_ListArea.Select(t => t.AREA_ID).Distinct().ToList(); - foreach (var id in userIds) - { - var userInfo = users.FirstOrDefault(t => t.ID == id); - if (userInfo != null) - { - var departInfo = departs.FirstOrDefault(t => t.ID == userInfo.DEPARTMENT_ID); - if (departInfo.MineType == 0) - { - var minetypes = new List { SKProductionUnit.MineChoose, SKProductionUnit.Mine, SKProductionUnit.Minelast }; - foreach (var type in minetypes) - { - //三张安全检查通知表 - //var ex = noticeExsiss.FirstOrDefault(t => t.MineType == type && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.CHECK_TYPE); - //if (ex == null) - { - T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); - safeNotice.ORG_ID = filter.OrgId; - safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; - safeNotice.APPLY_USER_ID = userInfo.ID; - safeNotice.MineType = type; - safeNotice.CHECK_TYPE_ID = item.CHECK_TYPE_ID; - safeNotice.PLANCHECKFREQUENCY = item.CHECK_CYCLE; - safeNotice.DEPARTMENT_TYPE = item.CHECK_TYPE; - safeNotice.STATUS = PFStandardStatus.Draft; - safeNotice.ISAUTO = true; - safeNotices.Add(safeNotice); - var contentIds = libraryDeparts.Where(t => t.CHECK_CYCLE == item.CHECK_CYCLE && t.CHECK_TYPE == item.CHECK_TYPE && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); - var content = libraryContents.Where(t => contentIds.Contains(t.ID) && t.MineType == type).ToList(); - //if (item.MineType != 0) - //{ - // content = libraryContents.Where(t => t.MineType == item.MineType).ToList(); - //} - //if (areaIds != null && areaIds.Any()) - //{ - // content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList(); - //} - if (content != null && content.Any()) - { - foreach (var item2 in content) - { - var i = 1; - var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); - if (repeat == null) - { - T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; - detail.RISK_AREA_ID = item2.AREA_ID; - detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; - detail.CHECKCONTENT = item2.CHECK_CONTENT; - detail.CHECKPROOF = item2.CHECK_BASIC; - detail.CHECKSTANDARD = item2.CHECK_STANDARD; - detail.NUM = i; - safeDetialNotices.Add(detail); - i++; - } - } - } - var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); - var endtime = DateTime.Now.AddHours(24); - if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week) - { - endtime = DateTime.Now.AddDays(7); - } - if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month) - { - endtime = DateTime.Now.AddMonths(1); - } - if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear) - { - endtime = DateTime.Now.AddMonths(6); - } - if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year) - { - endtime = DateTime.Now.AddMonths(12); - } - if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter) - { - endtime = DateTime.Now.AddMonths(3); - } - var checkType = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID); - var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CHECK_TYPE.GetDescription() + checkType?.NAME + date + item.Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); - notices.Add(notice); - } - } - } - else - { - //一个人一张安全检查通知表 - //var ex = noticeExsiss.FirstOrDefault(t => t.MineType == (SKProductionUnit)departInfo.MineType && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.CHECK_TYPE && t.CREATE_TIME.Value.Date == dt.Date); - //if (ex == null) - { - T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); - safeNotice.ORG_ID = filter.OrgId; - safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; - safeNotice.APPLY_USER_ID = userInfo.ID; - safeNotice.MineType = (SKProductionUnit)departInfo.MineType; - safeNotice.CHECK_TYPE_ID = item.CHECK_TYPE_ID; - safeNotice.PLANCHECKFREQUENCY = item.CHECK_CYCLE; - safeNotice.DEPARTMENT_TYPE = item.CHECK_TYPE; - safeNotice.STATUS = PFStandardStatus.Draft; - safeNotice.ISAUTO = true; - safeNotices.Add(safeNotice); - var contentIds = libraryDeparts.Where(t => t.CHECK_CYCLE == item.CHECK_CYCLE && t.CHECK_TYPE == item.CHECK_TYPE && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); - var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList(); - //if (item.MineType != 0) - //{ - // content = libraryContents.Where(t => t.MineType == item.MineType).ToList(); - //} - //if (areaIds != null && areaIds.Any()) - //{ - // content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList(); - //} - if (content != null && content.Any()) - { - foreach (var item2 in content) - { - var i = 1; - var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); - if (repeat == null) - { - T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; - detail.RISK_AREA_ID = item2.AREA_ID; - detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; - detail.CHECKCONTENT = item2.CHECK_CONTENT; - detail.CHECKPROOF = item2.CHECK_BASIC; - detail.CHECKSTANDARD = item2.CHECK_STANDARD; - detail.NUM = i; - safeDetialNotices.Add(detail); - i++; - } - } - } - var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); - var endtime = DateTime.Now.AddHours(24); - if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week) - { - endtime = DateTime.Now.AddDays(7); - } - if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month) - { - endtime = DateTime.Now.AddMonths(1); - } - if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear) - { - endtime = DateTime.Now.AddMonths(6); - } - if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year) - { - endtime = DateTime.Now.AddMonths(12); - } - if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter) - { - endtime = DateTime.Now.AddMonths(3); - } - var checkType = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID); - var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CHECK_TYPE.GetDescription() + checkType?.NAME + date + item.Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); - notices.Add(notice); - } - } - } - } - } - } - } - UnifiedCommit(() => - { - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - if (safeNotices != null && safeNotices.Any()) - BantchSaveEntityNoCommit(safeNotices); - if (safeDetialNotices != null && safeDetialNotices.Any()) - BantchSaveEntityNoCommit(safeDetialNotices); - //if (records != null && records.Any()) - // BantchSaveEntityNoCommit(records); - //if (recordDetails != null && recordDetails.Any()) - // BantchSaveEntityNoCommit(recordDetails); - //if (recordDetailUsers != null && recordDetailUsers.Any()) - // BantchSaveEntityNoCommit(recordDetailUsers); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - /// - /// 每个月一号检查用户列表的岗位,在企业库的辨识岗位中是否存在,不存在的触发今日提醒给对应层级的安全员,没有安全员找负责人 - /// - /// - /// - [HttpPost, Route("UserPostSync")] - public JsonActionResult UserPostSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List contentPostIds = new List(); - List notices = new List(); - var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); - var userPosts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var postIds = users.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(t => t.Nav_Person.POST_ID).Distinct().ToList(); - var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_PostDetails").ToList(); - if (contents != null && contents.Any()) - { - foreach (var content in contents) - { - if (content.Nav_PostDetails != null && content.Nav_PostDetails.Any()) - { - var postTempIds = content.Nav_PostDetails.Where(m => m.POST_ID != null).Select(t => (Guid)t.POST_ID).Distinct().ToList(); - contentPostIds.AddRange(postTempIds); - } - } - } - contentPostIds = contentPostIds.Where(t => t != null).Distinct().ToList(); - var tempIds = postIds.Where(t => t.Value != null && !contentPostIds.Contains(t.Value)).Distinct().ToList(); - var userTemps = users.Where(t => t.Nav_Person != null && tempIds.Contains(t.Nav_Person.POST_ID)).ToList(); - var departIds = userTemps.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); - if (departIds.Any() && DateTime.Now.Day == 1) - { - foreach (var depart in departIds) - { - var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); - if (user == null) - { - user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); - } - if (user != null) - { - var userPostTempIds = userTemps.Where(t => t.DEPARTMENT_ID == depart).Select(m => m.Nav_Person.POST_ID).Distinct().ToList(); - var userPostNames = userPosts.Where(t => userPostTempIds.Contains(t.ID)).Select(m => m.NAME).Distinct().ToList(); - var postNames = string.Join("。", userPostNames); - var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("请到知识库-双重预防机制库-企业库,维护岗位(" + postNames + ")的风险信息!", user.ID, user.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(10), (int)FMNoticeTypeEnum.今日提醒, "PF135"); - notices.Add(sendNotice); - } - } - } - UnifiedCommit(() => - { - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 企业库数据同步 - /// - /// - /// - [HttpPost, Route("LibraryMainSync")] - public JsonActionResult LibraryMainSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List librarys = new List(); - List ldeparts = new List(); - List lposts = new List(); - List lpostDetails = new List(); - List libraryDetails = new List(); - List contents = new List(); - List contentDeparts = new List(); - List contentPosts = new List(); - List contentHiddens = new List(); - List contentBasics = new List(); - var areaList = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var contentBS = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var posts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var laws = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); - var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var importMeasures = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var importHiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var importPosts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - if (imports != null && imports.Any()) - { - var a = 1; - foreach (var import in imports) - { - T_SK_ENTERPRISE_LIBRARY lib = new T_SK_ENTERPRISE_LIBRARY(); - lib.ORG_ID = import.ORG_ID; - lib.MINE_NAME = import.MineType; - lib.NUM = a; - if (!string.IsNullOrEmpty(import.MineType)) - { - switch (import.MineType) - { - case "全公司": - lib.MineType = 0; - break; - case "露天矿": - lib.MineType = (SKProductionUnit)30; - break; - case "选矿厂": - lib.MineType = (SKProductionUnit)10; - break; - case "尾矿库": - lib.MineType = (SKProductionUnit)20; - break; - case "职能口": - lib.MineType = (SKProductionUnit)31; - break; - case "非金属": - lib.MineType = (SKProductionUnit)32; - break; - case "地下矿": - lib.MineType = (SKProductionUnit)40; - break; - default: - lib.MineType = 0; - break; - } - } - lib.AREA_NAME = import.AREA_NAME; - lib.AREA_ID = areaList.FirstOrDefault(t => t.NAME == import.AREA_NAME)?.ID; - lib.RISK_NAME = import.RISK_NAME; - lib.RISK_DESCRIPTION = import.RISK_DESCRIPTION; - lib.TYPE_NAME = import.TYPE_NAME; - lib.TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == import.TYPE_NAME)?.ID; - lib.EVALUATE_L = decimal.Parse(import.EVALUATE_L); - lib.EVALUATE_E = decimal.Parse(import.EVALUATE_E); - lib.EVALUATE_C = decimal.Parse(import.EVALUATE_C); - lib.EVALUATE_SCORE = decimal.Parse(import.EVALUATE_SCORE); - if (lib.EVALUATE_SCORE > 320) - { - lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.重大风险; - } - else if (lib.EVALUATE_SCORE >= 160 && lib.EVALUATE_SCORE < 320) - { - lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.较大风险; - } - else if (lib.EVALUATE_SCORE >= 70 && lib.EVALUATE_SCORE < 160) - { - lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.一般风险; - } + { + if (item.MineType != SKProductionUnit.All) + { + //非全公司,过滤生产单元 + departTemps = departTemps.Where(t => t.MineType == (int)item.MineType).ToList(); + } + //if (item.CHECK_TYPE != SKDepartmentTypeEnum.岗位级) + { + //非岗位级,过滤部门层级 + departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == (int)item.CHECK_TYPE).ToList(); + } + //else + //{ + // //岗位级默认班组 + // departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == 20); + //} + //if (item.Nav_ListSetDepObject != null && item.Nav_ListSetDepObject.Any()) + //{ + // //检查部门范围过滤 + // var departIds = item.Nav_ListSetDepObject.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); + // departTemps = departTemps.Where(t => departIds.Contains(t.ID)); + //} + if (item.Nav_ListDepOut != null && item.Nav_ListDepOut.Any()) + { + //排除组织过滤 + var departIds = item.Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); + departTemps = departTemps.Where(t => !departIds.Contains(t.ID)).ToList(); + } + if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Head) + { + //发给负责人 + var userTempIds = departTemps.Where(m => m.USER_ID != null).Select(t => (Guid)t.USER_ID).Distinct().ToList(); + userIds.AddRange(userTempIds); + } + if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Hon) + { + //发给安全员 + var departIds = departTemps.Select(t => t.ID).ToList(); + var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")).Select(m => m.ID).ToList(); + userIds.AddRange(userTempIds); + } + if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.SafeHon) + { + //发给安环部安全员 + var departIds = departTemps.Select(t => t.ID).ToList(); + var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")).Select(m => m.ID).ToList(); + userIds.AddRange(userTempIds); + } + if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.ClassMonitor) + { + //发给班长 + var userTempIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20 && m.USER_ID != null).Select(t => (Guid)t.USER_ID).ToList(); + userIds.AddRange(userTempIds); + } + //if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Post) + //{ + // //发给岗位工 + // var departIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20).Select(t => t.ID).ToList(); + // var userTempIds = users.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)&& t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID)).Select(m => m.ID).ToList(); + // userIds.AddRange(userTempIds); + //} + } + if (userIds.Any()) + { + //var areaIds = item.Nav_ListArea.Select(t => t.AREA_ID).Distinct().ToList(); + foreach (var id in userIds) + { + var userInfo = users.FirstOrDefault(t => t.ID == id); + if (userInfo != null) + { + var departInfo = departs.FirstOrDefault(t => t.ID == userInfo.DEPARTMENT_ID); + if (departInfo.MineType == 0) + { + var minetypes = new List { SKProductionUnit.MineChoose, SKProductionUnit.Mine, SKProductionUnit.Minelast }; + foreach (var type in minetypes) + { + //三张安全检查通知表 + //var ex = noticeExsiss.FirstOrDefault(t => t.MineType == type && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.CHECK_TYPE); + //if (ex == null) + { + T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); + safeNotice.ORG_ID = filter.OrgId; + safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; + safeNotice.APPLY_USER_ID = userInfo.ID; + safeNotice.MineType = type; + safeNotice.CHECK_TYPE_ID = item.CHECK_TYPE_ID; + safeNotice.PLANCHECKFREQUENCY = item.CHECK_CYCLE; + safeNotice.DEPARTMENT_TYPE = item.CHECK_TYPE; + safeNotice.STATUS = PFStandardStatus.Draft; + safeNotice.ISAUTO = true; + safeNotices.Add(safeNotice); + var contentIds = libraryDeparts.Where(t => t.CHECK_CYCLE == item.CHECK_CYCLE && t.CHECK_TYPE == item.CHECK_TYPE && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); + var content = libraryContents.Where(t => contentIds.Contains(t.ID) && t.MineType == type).ToList(); + //if (item.MineType != 0) + //{ + // content = libraryContents.Where(t => t.MineType == item.MineType).ToList(); + //} + //if (areaIds != null && areaIds.Any()) + //{ + // content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList(); + //} + if (content != null && content.Any()) + { + foreach (var item2 in content) + { + var i = 1; + var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); + if (repeat == null) + { + T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; + detail.RISK_AREA_ID = item2.AREA_ID; + detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; + detail.CHECKCONTENT = item2.CHECK_CONTENT; + detail.CHECKPROOF = item2.CHECK_BASIC; + detail.CHECKSTANDARD = item2.CHECK_STANDARD; + detail.NUM = i; + safeDetialNotices.Add(detail); + i++; + } + } + } + var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); + var endtime = DateTime.Now.AddHours(24); + if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week) + { + endtime = DateTime.Now.AddDays(7); + } + if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month) + { + endtime = DateTime.Now.AddMonths(1); + } + if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear) + { + endtime = DateTime.Now.AddMonths(6); + } + if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year) + { + endtime = DateTime.Now.AddMonths(12); + } + if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter) + { + endtime = DateTime.Now.AddMonths(3); + } + var checkType = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID); + var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CHECK_TYPE.GetDescription() + checkType?.NAME + date + item.Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); + notices.Add(notice); + } + } + } + else + { + //一个人一张安全检查通知表 + //var ex = noticeExsiss.FirstOrDefault(t => t.MineType == (SKProductionUnit)departInfo.MineType && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.CHECK_TYPE && t.CREATE_TIME.Value.Date == dt.Date); + //if (ex == null) + { + T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); + safeNotice.ORG_ID = filter.OrgId; + safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; + safeNotice.APPLY_USER_ID = userInfo.ID; + safeNotice.MineType = (SKProductionUnit)departInfo.MineType; + safeNotice.CHECK_TYPE_ID = item.CHECK_TYPE_ID; + safeNotice.PLANCHECKFREQUENCY = item.CHECK_CYCLE; + safeNotice.DEPARTMENT_TYPE = item.CHECK_TYPE; + safeNotice.STATUS = PFStandardStatus.Draft; + safeNotice.ISAUTO = true; + safeNotices.Add(safeNotice); + var contentIds = libraryDeparts.Where(t => t.CHECK_CYCLE == item.CHECK_CYCLE && t.CHECK_TYPE == item.CHECK_TYPE && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); + var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList(); + //if (item.MineType != 0) + //{ + // content = libraryContents.Where(t => t.MineType == item.MineType).ToList(); + //} + //if (areaIds != null && areaIds.Any()) + //{ + // content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList(); + //} + if (content != null && content.Any()) + { + foreach (var item2 in content) + { + var i = 1; + var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); + if (repeat == null) + { + T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; + detail.RISK_AREA_ID = item2.AREA_ID; + detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; + detail.CHECKCONTENT = item2.CHECK_CONTENT; + detail.CHECKPROOF = item2.CHECK_BASIC; + detail.CHECKSTANDARD = item2.CHECK_STANDARD; + detail.NUM = i; + safeDetialNotices.Add(detail); + i++; + } + } + } + var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); + var endtime = DateTime.Now.AddHours(24); + if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week) + { + endtime = DateTime.Now.AddDays(7); + } + if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month) + { + endtime = DateTime.Now.AddMonths(1); + } + if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear) + { + endtime = DateTime.Now.AddMonths(6); + } + if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year) + { + endtime = DateTime.Now.AddMonths(12); + } + if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter) + { + endtime = DateTime.Now.AddMonths(3); + } + var checkType = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID); + var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CHECK_TYPE.GetDescription() + checkType?.NAME + date + item.Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); + notices.Add(notice); + } + } + } + } + } + } + } + UnifiedCommit(() => + { + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + if (safeNotices != null && safeNotices.Any()) + BantchSaveEntityNoCommit(safeNotices); + if (safeDetialNotices != null && safeDetialNotices.Any()) + BantchSaveEntityNoCommit(safeDetialNotices); + //if (records != null && records.Any()) + // BantchSaveEntityNoCommit(records); + //if (recordDetails != null && recordDetails.Any()) + // BantchSaveEntityNoCommit(recordDetails); + //if (recordDetailUsers != null && recordDetailUsers.Any()) + // BantchSaveEntityNoCommit(recordDetailUsers); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + /// + /// 每个月一号检查用户列表的岗位,在企业库的辨识岗位中是否存在,不存在的触发今日提醒给对应层级的安全员,没有安全员找负责人 + /// + /// + /// + [HttpPost, Route("UserPostSync")] + public JsonActionResult UserPostSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List contentPostIds = new List(); + List notices = new List(); + var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); + var userPosts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var postIds = users.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(t => t.Nav_Person.POST_ID).Distinct().ToList(); + var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_PostDetails").ToList(); + if (contents != null && contents.Any()) + { + foreach (var content in contents) + { + if (content.Nav_PostDetails != null && content.Nav_PostDetails.Any()) + { + var postTempIds = content.Nav_PostDetails.Where(m => m.POST_ID != null).Select(t => (Guid)t.POST_ID).Distinct().ToList(); + contentPostIds.AddRange(postTempIds); + } + } + } + contentPostIds = contentPostIds.Where(t => t != null).Distinct().ToList(); + var tempIds = postIds.Where(t => t.Value != null && !contentPostIds.Contains(t.Value)).Distinct().ToList(); + var userTemps = users.Where(t => t.Nav_Person != null && tempIds.Contains(t.Nav_Person.POST_ID)).ToList(); + var departIds = userTemps.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); + if (departIds.Any() && DateTime.Now.Day == 1) + { + foreach (var depart in departIds) + { + var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); + if (user == null) + { + user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); + } + if (user != null) + { + var userPostTempIds = userTemps.Where(t => t.DEPARTMENT_ID == depart).Select(m => m.Nav_Person.POST_ID).Distinct().ToList(); + var userPostNames = userPosts.Where(t => userPostTempIds.Contains(t.ID)).Select(m => m.NAME).Distinct().ToList(); + var postNames = string.Join("。", userPostNames); + var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("请到知识库-双重预防机制库-企业库,维护岗位(" + postNames + ")的风险信息!", user.ID, user.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(10), (int)FMNoticeTypeEnum.今日提醒, "PF135"); + notices.Add(sendNotice); + } + } + } + UnifiedCommit(() => + { + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 企业库数据同步 + /// + /// + /// + [HttpPost, Route("LibraryMainSync")] + public JsonActionResult LibraryMainSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List librarys = new List(); + List ldeparts = new List(); + List lposts = new List(); + List lpostDetails = new List(); + List libraryDetails = new List(); + List contents = new List(); + List contentDeparts = new List(); + List contentPosts = new List(); + List contentHiddens = new List(); + List contentBasics = new List(); + var areaList = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var contentBS = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var posts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var laws = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); + var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var importMeasures = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var importHiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var importPosts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + if (imports != null && imports.Any()) + { + var a = 1; + foreach (var import in imports) + { + T_SK_ENTERPRISE_LIBRARY lib = new T_SK_ENTERPRISE_LIBRARY(); + lib.ORG_ID = import.ORG_ID; + lib.MINE_NAME = import.MineType; + lib.NUM = a; + if (!string.IsNullOrEmpty(import.MineType)) + { + switch (import.MineType) + { + case "全公司": + lib.MineType = 0; + break; + case "露天矿": + lib.MineType = (SKProductionUnit)30; + break; + case "选矿厂": + lib.MineType = (SKProductionUnit)10; + break; + case "尾矿库": + lib.MineType = (SKProductionUnit)20; + break; + case "职能口": + lib.MineType = (SKProductionUnit)31; + break; + case "非金属": + lib.MineType = (SKProductionUnit)32; + break; + case "地下矿": + lib.MineType = (SKProductionUnit)40; + break; + default: + lib.MineType = 0; + break; + } + } + lib.AREA_NAME = import.AREA_NAME; + lib.AREA_ID = areaList.FirstOrDefault(t => t.NAME == import.AREA_NAME)?.ID; + lib.RISK_NAME = import.RISK_NAME; + lib.RISK_DESCRIPTION = import.RISK_DESCRIPTION; + lib.TYPE_NAME = import.TYPE_NAME; + lib.TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == import.TYPE_NAME)?.ID; + lib.EVALUATE_L = decimal.Parse(import.EVALUATE_L); + lib.EVALUATE_E = decimal.Parse(import.EVALUATE_E); + lib.EVALUATE_C = decimal.Parse(import.EVALUATE_C); + lib.EVALUATE_SCORE = decimal.Parse(import.EVALUATE_SCORE); + if (lib.EVALUATE_SCORE > 320) + { + lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.重大风险; + } + else if (lib.EVALUATE_SCORE >= 160 && lib.EVALUATE_SCORE < 320) + { + lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.较大风险; + } + else if (lib.EVALUATE_SCORE >= 70 && lib.EVALUATE_SCORE < 160) + { + lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.一般风险; + } else - { - lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.低风险; - } - if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险) - { - lib.DEPARTMENT_TYPE = "3,0,1,2"; - } - if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险) - { - lib.DEPARTMENT_TYPE = "0,1,2"; - } - if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险) - { - lib.DEPARTMENT_TYPE = "1,2"; - } - if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险) - { - lib.DEPARTMENT_TYPE = "2"; - } - lib.EMERGENCY = import.EMERGENCY; - librarys.Add(lib); - if (!string.IsNullOrEmpty(import.DEPARTMENT_NAME)) - { - var departList = import.DEPARTMENT_NAME.Split(';').ToList(); - var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); - if (depart.Any()) - { - foreach (var deTemp in depart) - { - if (deTemp != null) - { - T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART(); - dep.ORG_ID = filter.OrgId; - dep.ENTERPRISE_LIBRARY_ID = lib.ID; - dep.DEPARTMENT_ID = deTemp.ID; - dep.DEPARTMENT_TYPE = (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; - dep.USER_ID = deTemp.USER_ID; - ldeparts.Add(dep); - } - } - } - } - var importPostTemps = importPosts.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION).ToList(); - if (importPostTemps.Any()) - { - foreach (var de in importPostTemps) - { - if (!string.IsNullOrEmpty(de.DEPARTMENT_NAME) && !string.IsNullOrEmpty(de.POST_NAME)) - { - T_SK_ENTERPRISE_LIBRARY_POST dep = new T_SK_ENTERPRISE_LIBRARY_POST(); - dep.ORG_ID = filter.OrgId; - dep.ENTERPRISE_LIBRARY_ID = lib.ID; - dep.DEPARTMENT_ID = departs.FirstOrDefault(t => t.NAME == de.DEPARTMENT_NAME)?.ID; - lposts.Add(dep); - if (!string.IsNullOrEmpty(de.POST_NAME)) - { - var postList = de.POST_NAME.Split(';').ToList(); - var depart = posts.Where(t => postList.Contains(t.NAME)).ToList(); - if (depart.Any()) - { - foreach (var deTemp in depart) - { - if (deTemp != null) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL dep2 = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - dep2.ORG_ID = filter.OrgId; - dep2.ENTERPRISE_LIBRARY_POST_ID = dep.ID; - dep2.POST_ID = deTemp.ID; - lpostDetails.Add(dep2); - } - } - } - } - } - } - } - var importMeasureTemps = importMeasures.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION).ToList(); - if (importMeasureTemps.Any()) - { - var temps = importMeasureTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY }).Select(m => m.FirstOrDefault()).ToList(); - if (temps.Any()) - { - var i = 1; - foreach (var item in temps) - { - if (item != null) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL post = new T_SK_ENTERPRISE_LIBRARY_DETAIL(); - post.ORG_ID = filter.OrgId; - post.ENTERPRISE_LIBRARY_ID = lib.ID; - post.MEASURES_NAME = item.MEASURES_NAME; - post.NUM = i; - libraryDetails.Add(post); - var detailTemps = importMeasureTemps.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.EMERGENCY == item.EMERGENCY).ToList(); - var details = detailTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY, t.CHECK_CONTENT, t.CHECK_BASIC, t.CHECK_STANDARD }).Select(m => m.FirstOrDefault()).ToList(); - if (details != null && details.Any()) - { - var j = 1; - foreach (var xx in details) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT detail = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_DETAIL_ID = post.ID; - detail.CHECK_BASIC = xx.CHECK_BASIC; - detail.CHECK_STANDARD = xx.CHECK_STANDARD; - detail.CHECK_CONTENT = xx.CHECK_CONTENT; - detail.NUM = j; - detail.CHECK_CONTENTS_ID = contentBS.FirstOrDefault(t => t.CHECKCONTENT == xx.CHECK_CONTENT)?.ID; - contents.Add(detail); - j++; - if (!string.IsNullOrEmpty(xx.CHECK_BASIC)) - { - var postList = xx.CHECK_BASIC.Split(';').ToList(); - var depart = laws.Where(t => postList.Contains(t.NAME)).ToList(); - if (depart.Any()) - { - foreach (var deTemp in depart) - { - if (deTemp != null) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC dep2 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC(); - dep2.ORG_ID = filter.OrgId; - dep2.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID; - dep2.LAW_ID = deTemp.ID; - contentBasics.Add(dep2); - } - } - } - } - var hiddenTemps = importHiddens.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.CHECK_CONTENT == item.CHECK_CONTENT).ToList(); - var hiddens = hiddenTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.CHECK_CONTENT, t.HIDDEN_DESCRIPTION, t.HIDDEN_LEVEL, t.HIDDEN_RECITIFY }).Select(m => m.FirstOrDefault()).ToList(); - if (hiddens != null && hiddens.Any()) - { - var d = 1; - foreach (var de in hiddens) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN(); - dep.ORG_ID = filter.OrgId; - dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID; - dep.HIDDEN_DESCRIPTION = de.HIDDEN_DESCRIPTION; - dep.HIDDEN_LEVEL = de.HIDDEN_LEVEL == "重大" ? SKHiddenLevel.Major : SKHiddenLevel.General; - dep.RECTIFICATION_MEASURES = de.HIDDEN_RECITIFY; - dep.NUM = d; - contentHiddens.Add(dep); - d++; - } - } - var levelTemps = detailTemps.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.EMERGENCY == item.EMERGENCY && t.CHECK_CONTENT == item.CHECK_CONTENT && t.CHECK_BASIC == item.CHECK_BASIC && t.CHECK_STANDARD == item.CHECK_STANDARD).ToList(); - var levels = levelTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY, t.CHECK_CONTENT, t.CHECK_BASIC, t.CHECK_STANDARD, t.CHECK_DEPARTMENT, t.CHECK_LEVEL, t.CHECK_POST, t.CHECK_TYPE, t.CHECK_OBJECT, t.CHECK_CYCLE }).Select(m => m.FirstOrDefault()).ToList(); - if (levels != null && levels.Any()) - { - foreach (var de in levels) - { - var checkCycle = SKPLANCHECKFREQUENCYEnum.Date; - if (!string.IsNullOrEmpty(de.CHECK_CYCLE)) - { - switch (de.CHECK_CYCLE) - { - case "每日": - checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; - case "每周": - checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break; - case "每月": - checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break; - case "每季度": - checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break; - case "每班": - checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; - default: - checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; - break; - } - } - if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL)) - { - var departList = de.CHECK_DEPARTMENT.Split(';').ToList(); - var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); - if (depart.Any()) - { - int c = 1; - foreach (var deTemp in depart) - { - if (deTemp != null) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); - dep.ORG_ID = filter.OrgId; - dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID; - dep.DEPARTMENT_ID = deTemp.ID; - dep.CHECK_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum.班组级 : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; - dep.CHECK_CYCLE = checkCycle; - dep.CHECK_TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == de.CHECK_TYPE)?.ID; - dep.NUM = c; - if (dep.CHECK_TYPE == SKDepartmentTypeEnum.公司级) - { - var userTemp = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员"); - if (userTemp != null) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post1 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); - post1.ORG_ID = filter.OrgId; - post1.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; - post1.POST_ID = userTemp.Nav_Person?.POST_ID; - contentPosts.Add(post1); - } - } - if (dep.CHECK_TYPE == SKDepartmentTypeEnum.部门级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.车间级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级) - { - var userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); - if (userTemp == null) - { - userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); - } - if (userTemp != null) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post2 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); - post2.ORG_ID = filter.OrgId; - post2.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; - post2.POST_ID = userTemp.Nav_Person?.POST_ID; + { + lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.低风险; + } + if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险) + { + lib.DEPARTMENT_TYPE = "3,0,1,2"; + } + if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险) + { + lib.DEPARTMENT_TYPE = "0,1,2"; + } + if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险) + { + lib.DEPARTMENT_TYPE = "1,2"; + } + if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险) + { + lib.DEPARTMENT_TYPE = "2"; + } + lib.EMERGENCY = import.EMERGENCY; + librarys.Add(lib); + if (!string.IsNullOrEmpty(import.DEPARTMENT_NAME)) + { + var departList = import.DEPARTMENT_NAME.Split(';').ToList(); + var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); + if (depart.Any()) + { + foreach (var deTemp in depart) + { + if (deTemp != null) + { + T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART(); + dep.ORG_ID = filter.OrgId; + dep.ENTERPRISE_LIBRARY_ID = lib.ID; + dep.DEPARTMENT_ID = deTemp.ID; + dep.DEPARTMENT_TYPE = (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; + dep.USER_ID = deTemp.USER_ID; + ldeparts.Add(dep); + } + } + } + } + var importPostTemps = importPosts.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION).ToList(); + if (importPostTemps.Any()) + { + foreach (var de in importPostTemps) + { + if (!string.IsNullOrEmpty(de.DEPARTMENT_NAME) && !string.IsNullOrEmpty(de.POST_NAME)) + { + T_SK_ENTERPRISE_LIBRARY_POST dep = new T_SK_ENTERPRISE_LIBRARY_POST(); + dep.ORG_ID = filter.OrgId; + dep.ENTERPRISE_LIBRARY_ID = lib.ID; + dep.DEPARTMENT_ID = departs.FirstOrDefault(t => t.NAME == de.DEPARTMENT_NAME)?.ID; + lposts.Add(dep); + if (!string.IsNullOrEmpty(de.POST_NAME)) + { + var postList = de.POST_NAME.Split(';').ToList(); + var depart = posts.Where(t => postList.Contains(t.NAME)).ToList(); + if (depart.Any()) + { + foreach (var deTemp in depart) + { + if (deTemp != null) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL dep2 = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + dep2.ORG_ID = filter.OrgId; + dep2.ENTERPRISE_LIBRARY_POST_ID = dep.ID; + dep2.POST_ID = deTemp.ID; + lpostDetails.Add(dep2); + } + } + } + } + } + } + } + var importMeasureTemps = importMeasures.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION).ToList(); + if (importMeasureTemps.Any()) + { + var temps = importMeasureTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY }).Select(m => m.FirstOrDefault()).ToList(); + if (temps.Any()) + { + var i = 1; + foreach (var item in temps) + { + if (item != null) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL post = new T_SK_ENTERPRISE_LIBRARY_DETAIL(); + post.ORG_ID = filter.OrgId; + post.ENTERPRISE_LIBRARY_ID = lib.ID; + post.MEASURES_NAME = item.MEASURES_NAME; + post.NUM = i; + libraryDetails.Add(post); + var detailTemps = importMeasureTemps.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.EMERGENCY == item.EMERGENCY).ToList(); + var details = detailTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY, t.CHECK_CONTENT, t.CHECK_BASIC, t.CHECK_STANDARD }).Select(m => m.FirstOrDefault()).ToList(); + if (details != null && details.Any()) + { + var j = 1; + foreach (var xx in details) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT detail = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_DETAIL_ID = post.ID; + detail.CHECK_BASIC = xx.CHECK_BASIC; + detail.CHECK_STANDARD = xx.CHECK_STANDARD; + detail.CHECK_CONTENT = xx.CHECK_CONTENT; + detail.NUM = j; + detail.CHECK_CONTENTS_ID = contentBS.FirstOrDefault(t => t.CHECKCONTENT == xx.CHECK_CONTENT)?.ID; + contents.Add(detail); + j++; + if (!string.IsNullOrEmpty(xx.CHECK_BASIC)) + { + var postList = xx.CHECK_BASIC.Split(';').ToList(); + var depart = laws.Where(t => postList.Contains(t.NAME)).ToList(); + if (depart.Any()) + { + foreach (var deTemp in depart) + { + if (deTemp != null) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC dep2 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC(); + dep2.ORG_ID = filter.OrgId; + dep2.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID; + dep2.LAW_ID = deTemp.ID; + contentBasics.Add(dep2); + } + } + } + } + var hiddenTemps = importHiddens.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.CHECK_CONTENT == item.CHECK_CONTENT).ToList(); + var hiddens = hiddenTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.CHECK_CONTENT, t.HIDDEN_DESCRIPTION, t.HIDDEN_LEVEL, t.HIDDEN_RECITIFY }).Select(m => m.FirstOrDefault()).ToList(); + if (hiddens != null && hiddens.Any()) + { + var d = 1; + foreach (var de in hiddens) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN(); + dep.ORG_ID = filter.OrgId; + dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID; + dep.HIDDEN_DESCRIPTION = de.HIDDEN_DESCRIPTION; + dep.HIDDEN_LEVEL = de.HIDDEN_LEVEL == "重大" ? SKHiddenLevel.Major : SKHiddenLevel.General; + dep.RECTIFICATION_MEASURES = de.HIDDEN_RECITIFY; + dep.NUM = d; + contentHiddens.Add(dep); + d++; + } + } + var levelTemps = detailTemps.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.EMERGENCY == item.EMERGENCY && t.CHECK_CONTENT == item.CHECK_CONTENT && t.CHECK_BASIC == item.CHECK_BASIC && t.CHECK_STANDARD == item.CHECK_STANDARD).ToList(); + var levels = levelTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY, t.CHECK_CONTENT, t.CHECK_BASIC, t.CHECK_STANDARD, t.CHECK_DEPARTMENT, t.CHECK_LEVEL, t.CHECK_POST, t.CHECK_TYPE, t.CHECK_OBJECT, t.CHECK_CYCLE }).Select(m => m.FirstOrDefault()).ToList(); + if (levels != null && levels.Any()) + { + foreach (var de in levels) + { + var checkCycle = SKPLANCHECKFREQUENCYEnum.Date; + if (!string.IsNullOrEmpty(de.CHECK_CYCLE)) + { + switch (de.CHECK_CYCLE) + { + case "每日": + checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; + case "每周": + checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break; + case "每月": + checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break; + case "每季度": + checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break; + case "每班": + checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; + default: + checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; + break; + } + } + if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL)) + { + var departList = de.CHECK_DEPARTMENT.Split(';').ToList(); + var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); + if (depart.Any()) + { + int c = 1; + foreach (var deTemp in depart) + { + if (deTemp != null) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); + dep.ORG_ID = filter.OrgId; + dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID; + dep.DEPARTMENT_ID = deTemp.ID; + dep.CHECK_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum.班组级 : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; + dep.CHECK_CYCLE = checkCycle; + dep.CHECK_TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == de.CHECK_TYPE)?.ID; + dep.NUM = c; + if (dep.CHECK_TYPE == SKDepartmentTypeEnum.公司级) + { + var userTemp = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员"); + if (userTemp != null) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post1 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); + post1.ORG_ID = filter.OrgId; + post1.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; + post1.POST_ID = userTemp.Nav_Person?.POST_ID; + contentPosts.Add(post1); + } + } + if (dep.CHECK_TYPE == SKDepartmentTypeEnum.部门级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.车间级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级) + { + var userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); + if (userTemp == null) + { + userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); + } + if (userTemp != null) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post2 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); + post2.ORG_ID = filter.OrgId; + post2.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; + post2.POST_ID = userTemp.Nav_Person?.POST_ID; contentPosts.Add(post2); - } - } - if (dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级 && !string.IsNullOrEmpty(de.CHECK_POST)) - { - var postLists = de.CHECK_POST.Split(';').ToList(); - var postIds = posts.Where(t => postLists.Contains(t.NAME)).Select(t => t.ID).ToList(); - //var userTemps = users.Where(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_Person != null && t.Nav_Person.POST_ID != null && postIds.Contains((Guid)t.Nav_Person.POST_ID)).Select(m=>m.Nav_Person.POST_ID).Distinct().ToList(); - if (postIds.Any()) - { - foreach (var itemTemp in postIds) - { - if (itemTemp != null) - { - T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post3 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); - post3.ORG_ID = filter.OrgId; - post3.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; - post3.POST_ID = itemTemp; - contentPosts.Add(post3); - } - } - } - } - contentDeparts.Add(dep); - j++; - } - } - } - } - } - } - } - } - i++; - } - } - } - } - a++; - } - } - UnifiedCommit(() => - { - if (librarys != null && librarys.Any()) - BantchSaveEntityNoCommit(librarys); - if (ldeparts != null && ldeparts.Any()) - BantchSaveEntityNoCommit(ldeparts); - if (lposts != null && lposts.Any()) - BantchSaveEntityNoCommit(lposts); - if (lpostDetails != null && lpostDetails.Any()) - BantchSaveEntityNoCommit(lpostDetails); - if (libraryDetails != null && libraryDetails.Any()) - BantchSaveEntityNoCommit(libraryDetails); - if (contents != null && contents.Any()) - BantchSaveEntityNoCommit(contents); - if (contentHiddens != null && contentHiddens.Any()) - BantchSaveEntityNoCommit(contentHiddens); - if (contentBasics != null && contentBasics.Any()) - BantchSaveEntityNoCommit(contentBasics); - if (contentDeparts != null && contentDeparts.Any()) - BantchSaveEntityNoCommit(contentDeparts); - if (contentPosts != null && contentPosts.Any()) - BantchSaveEntityNoCommit(contentPosts); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 风险名称同步 - /// - /// - /// - [HttpPost, Route("RiskNameSync")] - public JsonActionResult RiskNameSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List posts = new List(); - var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var areaList = librarys.Select(t => t.RISK_NAME).Distinct().ToList(); - if (areaList != null && areaList.Any()) - { - foreach (var area in areaList) - { - T_SK_RISK_NAME post = new T_SK_RISK_NAME(); - post.ORG_ID = filter.OrgId; - post.NAME = area; - posts.Add(post); - } - } - UnifiedCommit(() => - { - if (posts != null && posts.Any()) - BantchSaveEntityNoCommit(posts); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 基础库、企业库风险名称同步 - /// - /// - /// - [HttpPost, Route("LibraryRiskNameSync")] - public JsonActionResult LibraryRiskNameSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var riskNames = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var libraryBasics = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - if (librarys != null && librarys.Any()) - { - foreach (var item in librarys) - { - var name = riskNames.FirstOrDefault(t => t.NAME == item.RISK_NAME); - if (name != null) - { - item.RISK_NAME_ID = name.ID; - } - } - } - if (libraryBasics != null && libraryBasics.Any()) - { - foreach (var item in libraryBasics) - { - var name = riskNames.FirstOrDefault(t => t.NAME == item.RISK_NAME); - if (name != null) - { - item.RISK_NAME_ID = name.ID; - } - } - } - UnifiedCommit(() => - { - if (librarys != null && librarys.Any()) - BantchSaveEntityNoCommit(librarys); - if (libraryBasics != null && libraryBasics.Any()) - BantchSaveEntityNoCommit(libraryBasics); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 岗位排查清单触发,每班上班前一小时触发,上班后四小时内处理完毕 - /// - /// - /// - [HttpPost, Route("PostContentSync")] - public JsonActionResult PostContentSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var dt = DateTime.Now; - //DateTime minTime = dt.AddMinutes(0); - //DateTime maxTime = dt.AddMinutes(60); - if (filter.Parameter1 != null) - { - dt = DateTime.Parse(filter.Parameter1); - } - List notices = new List(); - List records = new List(); - List recordDetails = new List(); - List recordDetailUsers = new List(); - List recordBasics = new List(); - var checkType = this.GetEntity(t => t.NAME == "岗位排查"); - var timeSets = GetEntities(i => i.ENABLE_STATUS == 0 && i.CHECK_TYPE_ID == checkType.ID, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea").ToList(); - List departIds = new List(); - if (timeSets.Any()) - { - foreach (var item in timeSets) - { - if (item.Nav_ListDepOut != null && item.Nav_ListDepOut.Any()) - { - var ids = item.Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).ToList(); - departIds.AddRange(ids); - } - } - } - DateTime minTime = dt.AddMinutes(0); - DateTime maxTime = dt.AddMinutes(60); - var teamInfos = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); - var teamIds = teamInfos.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)).Select(t => t.ID).Distinct().ToList(); - var classFilter = new BaseFilter(filter.GetOrgId()); - classFilter.SelectField = new string[] { "TEAM_ID", "DEPARTMENT_ID", "Nav_DepartmentSchedulingDetail.Nav_Person.POST_ID", "Nav_DepartmentSchedulingDetail.Nav_Person.Nav_User.ID", "Nav_DepartmentSchedulingDetail.Nav_Person.Nav_User.NAME", "START_TIME", "END_TIME" }; - var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, classFilter).ToList(); - //var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null && !teamIds.Contains((Guid)s.TEAM_ID), classFilter).ToList(); - var teamIdTemps = shiftClassList.Where(s => !teamIds.Contains((Guid)s.TEAM_ID)).Select(t => t.TEAM_ID).ToList(); - var teamDepartIds = teamInfos.Where(t => teamIdTemps.Contains(t.ID)).Select(m => m.DEPARTMENT_ID).Distinct().ToList(); - var checkSets = GetEntities(i => teamDepartIds.Contains(i.DEPARTMENT_ID), new BaseFilter(filter.OrgId), "Nav_CheckSetContents.Nav_ContentsAreas", "Nav_CheckSetContents.Nav_ContentsHiddens", "Nav_CheckSetContents.Nav_ContentsBasics").ToList(); - if (shiftClassList.Any()) - { - foreach (var item in shiftClassList) - { - var team = teamInfos.FirstOrDefault(t => t.ID == item.TEAM_ID); - if (team != null && item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any()) - { - foreach (var item2 in item.Nav_DepartmentSchedulingDetail) - { - var set = checkSets.FirstOrDefault(t => t.DEPARTMENT_ID == team.DEPARTMENT_ID && t.POST_ID == item2.Nav_Person?.POST_ID); - if (set != null && set.Nav_CheckSetContents != null && set.Nav_CheckSetContents.Any()) - { - T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); - record.ORG_ID = filter.OrgId; - record.ID = Guid.NewGuid(); - record.MineType = set.MineType; - record.APPLY_USER_ID = item2.Nav_Person.Nav_User.ID; - record.APPLY_DEPARTMENT_ID = team.DEPARTMENT_ID; - record.PLANCHECKFREQUENCY = SKPLANCHECKFREQUENCYEnum.Date; - record.DEPARTMENT_TYPE = SKDepartmentTypeEnum.班组级; - record.CHECK_TYPE_ID = checkType?.ID; - record.CHECK_TIME = item.START_TIME; - record.RECORD_USER_ID = item2.Nav_Person.Nav_User.ID; - record.CHECK_PERSON = item2.Nav_Person.Nav_User.NAME; - records.Add(record); - var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel(team.NAME + item2.Nav_Person?.Nav_Post?.NAME + "岗位排查表", record.ID, filter.GetOrgId(), (Guid)record.APPLY_USER_ID, item2.Nav_Person.Nav_User.NAME, item.START_TIME, item.END_TIME, (int)FMNoticeTypeEnum.消息, "SK010"); - notices.Add(noticeTask); - var temps = new List(); - if (set.Nav_CheckSetContents != null && set.Nav_CheckSetContents.Any()) - { - foreach (var content in set.Nav_CheckSetContents) - { - if (content.Nav_ContentsAreas.Any()) - { - foreach (var area in content.Nav_ContentsAreas) - { - T_SK_CHECK_SET_CONTENTS temp = new T_SK_CHECK_SET_CONTENTS(); - temp = content; - temp.AREA_ID = area.AREA_ID; - temps.Add(temp); - } - } - } - } - if (temps.Any()) - { - foreach (var content in temps) - { - T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ID = Guid.NewGuid(); - detail.SECURITY_INSPECTION_RECORD_ID = record.ID; - detail.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; - detail.CHECKCONTENT = content.CHECK_CONTENT; - detail.CHECKSTANDARD = content.CHECK_STANDARD; - detail.RISK_AREA_ID = content.AREA_ID; - recordDetails.Add(detail); - T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); - user.ORG_ID = filter.OrgId; - user.ID = Guid.NewGuid(); - user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; - user.USER_ID = record.APPLY_USER_ID; - user.ISMAINCHECK = true; - recordDetailUsers.Add(user); - if (content.Nav_ContentsBasics.Any()) - { - foreach (var basic in content.Nav_ContentsBasics) - { - T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC ba = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC(); - ba.ORG_ID = filter.OrgId; - ba.ID = Guid.NewGuid(); - ba.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; - ba.LAW_ID = basic.LAW_ID; - recordBasics.Add(ba); - } - } - } - } - } - } - } - } - } - UnifiedCommit(() => - { - if (records != null && records.Any()) - BantchSaveEntityNoCommit(records); - if (recordDetails != null && recordDetails.Any()) - BantchSaveEntityNoCommit(recordDetails); - if (recordDetailUsers != null && recordDetailUsers.Any()) - BantchSaveEntityNoCommit(recordDetailUsers); - if (recordBasics != null && recordBasics.Any()) - BantchSaveEntityNoCommit(recordBasics); - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 检查内容更新 - /// - /// - /// - [HttpPost, Route("ContentSyncNew")] - public JsonActionResult ContentSyncNew([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List posts = new List(); - List details = new List(); - //var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - //var contentIds = contents.Select(t => t.ID).ToList(); - //var hiddens = GetEntities(i => contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList(); - //var contentTempIds = hiddens.Select(t => t.CHECK_CONTENTS_ID).Distinct().ToList(); - //var contentNames = contents.Where(t=> !contentTempIds.Contains(t.ID)).ToList(); - //if (contentNames != null && contentNames.Any()) - //{ - // foreach (var area in contentNames) - // { - // T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); - // hi.ORG_ID = filter.OrgId; - // hi.CHECK_CONTENTS_ID = area.ID; - // hi.DESCREPTION = area.CHECKCONTENT.Replace("是否","未"); - // hi.QUESTION_LEVEL = SKHiddenLevel.General; - // hi.DEMAND = area.CHECKCONTENT.Replace("是否", "应"); - // details.Add(hi); - // } - //} - //var setContents = GetEntities(i => i.CHECK_CONTENTS_ID == null, new BaseFilter(filter.OrgId)).ToList(); - //var setContentIds = setContents.Select(t => t.ID).ToList(); - //var setHiddens = GetEntities(i => setContentIds.Contains((Guid)i.CHECK_CONTENTS_SET_ID), new BaseFilter(filter.OrgId)).ToList(); - //if (setContents != null && setContents.Any()) - //{ - // foreach (var area in setContents) - // { - // T_SK_CHECK_CONTENTS post = new T_SK_CHECK_CONTENTS(); - // post.ORG_ID = filter.OrgId; - // post.CHECKCONTENT = area.CHECK_CONTENT; - // posts.Add(post); - // var hiddenList = setHiddens.Where(t => t.CHECK_CONTENTS_SET_ID == area.ID).ToList(); - // if (hiddenList != null && hiddenList.Any()) - // { - // foreach (var hid in hiddenList) - // { - // T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); - // hi.ORG_ID = filter.OrgId; - // hi.CHECK_CONTENTS_ID = post.ID; - // hi.DESCREPTION = hid.HIDDEN_DESCRIPTION; - // hi.QUESTION_LEVEL = hid.HIDDEN_LEVEL; - // hi.DEMAND = hid.RECTIFICATION_MEASURES; - // details.Add(hi); - // } - // } - // } - //} - var setHiddens = GetEntities(i => i.CHECK_QUESTION_ID == null, new BaseFilter(filter.OrgId)).ToList(); - var setContentIds = setHiddens.Select(t => t.CHECK_CONTENTS_SET_ID).Distinct().ToList(); - var setContents = GetEntities(i => setContentIds.Contains(i.ID), new BaseFilter(filter.OrgId)).ToList(); - var contentIds = setContents.Select(t => t.CHECK_CONTENTS_ID).Distinct().ToList(); - var contents = GetEntities(i => contentIds.Contains(i.ID), new BaseFilter(filter.OrgId)).ToList(); - var hiddens = GetEntities(i => contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList(); - if (setHiddens != null && setHiddens.Any()) - { - foreach (var area in setHiddens) - { - var content = setContents.FirstOrDefault(t => t.ID == area.CHECK_CONTENTS_SET_ID); - if (content != null) - { - T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); - hi.ORG_ID = filter.OrgId; - hi.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; - hi.DESCREPTION = area.HIDDEN_DESCRIPTION; - hi.QUESTION_LEVEL = area.HIDDEN_LEVEL; - hi.DEMAND = area.RECTIFICATION_MEASURES; - details.Add(hi); - } - } - } - UnifiedCommit(() => - { - if (posts != null && posts.Any()) - BantchSaveEntityNoCommit(posts); - if (details != null && details.Any()) - BantchSaveEntityNoCommit(details); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - - /// - /// 风险辨识明细表更新(职能部) - /// - /// - /// - [HttpPost, Route("RiskIdentityZN")] - public JsonActionResult RiskIdentityZN([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List posts = new List(); - List postDetails = new List(); - var departments = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_User").ToList(); - var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person").ToList(); - List departName = new List { "矿山部", "选矿部", "非金属资源部", "设备能源部" }; - var idList = new List(); - var allIdList = new List(); - var depaerts = departments.Where(t => departName.Contains(t.NAME)).ToList(); - if (depaerts.Any()) - { - foreach (var item in depaerts) - { - allIdList.Add(item.ID); - var depatIds = departments.Where(t => t.PARENT_ID == item.ID).Select(m => m.ID).ToList(); - if (depatIds.Any()) - { - //车间 - idList.AddRange(depatIds); - //所有 - allIdList.AddRange(depatIds); - } - } - } - if (idList.Any()) - { - //取班组 - var depatIds = departments.Where(t => t.PARENT_ID != null && idList.Contains((Guid)t.PARENT_ID)).Select(m => m.ID).ToList(); - if (depatIds.Any()) - { - allIdList.AddRange(depatIds); - } - } - if (allIdList.Any()) - { - //排除这四个部门,其他归属职能部 - departments = departments.Where(t => !allIdList.Contains(t.ID)).ToList(); - } - var departIds = departments.Select(t => t.ID).ToList(); - var userIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID)).Select(m => m.ID).ToList(); - var wfm = users.FirstOrDefault(t => t.NAME == "王福铭"); - var baseFilter = new BaseFilter(filter.GetOrgId()); - baseFilter.IgnoreDataRule = true; - baseFilter.SelectField = new string[] { "ID" }; //指定字段,包括导航属性 - var identity = this.GetEntity(t => t.APPLY_USER_ID == wfm.ID); - var identityDetail = this.GetEntities(t => t.RISK_IDENTIFY_ID == identity.ID, new BaseFilter(identity.ORG_ID)); - var minetype = identityDetail.Select(t => t.MineType).Distinct().ToList(); - var areaId = identityDetail.Select(t => t.AREA_ID).Distinct().ToList(); - var typeId = identityDetail.Select(t => t.TYPE_ID).Distinct().ToList(); - var riskName = identityDetail.Select(t => t.RISK_NAME).Distinct().ToList(); - var librarys = this.GetEntities(t => minetype.Contains(t.MineType) && areaId.Contains(t.AREA_ID) && typeId.Contains(t.TYPE_ID) && riskName.Contains(t.RISK_NAME), new BaseFilter(filter.OrgId)); - var libraryIds = librarys.Select(t => t.ID).ToList(); - var libraryIdentity = this.GetEntities(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId), "Nav_PostDetails"); - if (libraryIds != null && libraryIds.Any()) - { - foreach (var iden in libraryIds) - { - foreach (var depart in departIds) - { - var postIds = users.Where(t => t.DEPARTMENT_ID == depart && t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).Distinct().ToList(); - var identityPost = libraryIdentity.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_ID == iden && t.DEPARTMENT_ID == depart); - if (identityPost == null) - { - T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); - post.ORG_ID = filter.OrgId; - post.DEPARTMENT_ID = depart; - post.ENTERPRISE_LIBRARY_ID = iden; - posts.Add(post); - if (postIds != null && postIds.Any()) - { - foreach (var po in postIds) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; - detail.POST_ID = po; - postDetails.Add(detail); - } - } - } - else - { - foreach (var po in postIds) - { - var exsist = identityPost.Nav_PostDetails == null ? null : identityPost.Nav_PostDetails.FirstOrDefault(t => t.POST_ID == po && t.ENTERPRISE_LIBRARY_POST_ID == identityPost.ID); - if (exsist != null) - { - T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.ENTERPRISE_LIBRARY_POST_ID = identityPost.ID; - detail.POST_ID = po; - postDetails.Add(detail); - } - } - } - } - } - } - //Expression> expression = i => i.IS_DELETED == false && i.APPLY_USER_ID !=null && userIds.Contains((Guid)i.APPLY_USER_ID) && i.APPLY_USER_ID != wfm.ID; - //List riskIdetitys = this.GetEntities(expression, baseFilter).ToList(); - //var riskIdentityIds = riskIdetitys.Select(t => t.ID).ToList(); - //var identityDetails = GetEntities(i => riskIdentityIds.Contains(i.RISK_IDENTIFY_ID), new BaseFilter(filter.OrgId)).ToList(); - //var deleteIds = identityDetails.Select(t => t.ID).ToList(); - //if (riskIdentityIds != null && riskIdentityIds.Any()) - //{ - // foreach (var iden in riskIdentityIds) - // { - // if (identityDetail != null && identityDetail.Any()) - // { - // foreach (var detail in identityDetail) - // { - // T_SK_RISK_IDENTIFY_DETAIL hi = new T_SK_RISK_IDENTIFY_DETAIL(); - // hi.ORG_ID = filter.OrgId; - // hi.RISK_IDENTIFY_ID = iden; - // hi.MineType = detail.MineType; - // hi.AREA_ID = detail.AREA_ID; - // hi.NUM = detail.NUM; - // hi.RISK_NAME = detail.RISK_NAME; - // hi.RISK_DESCRIPTION = detail.RISK_DESCRIPTION; - // hi.RISK_NAME_ID = detail.RISK_NAME_ID; - // hi.TYPE_ID = detail.TYPE_ID; - // hi.MEASURE = detail.MEASURE; - // hi.EMERGENCY = detail.EMERGENCY; - // identDetails.Add(hi); - // } - - // } - // } - //} - UnifiedCommit(() => - { - if (posts != null && posts.Any()) - BantchSaveEntityNoCommit(posts); - if (postDetails != null && postDetails.Any()) - BantchSaveEntityNoCommit(postDetails); - //if (deleteIds != null && deleteIds.Any()) - // BantchDeleteEntityNoCommit(deleteIds); - //if (identDetails != null && identDetails.Any()) - // BantchSaveEntityNoCommit(identDetails); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - /// - /// 检查内容表更新生产单元和检查区域 - /// - /// - /// - [HttpPost, Route("ContentAreaUpdate")] - public JsonActionResult ContentAreaUpdate([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var contents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); - var contentIds = contents.Select(t => t.ID).ToList(); - var libraryContents = this.GetEntities(t => t.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)t.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail.Nav_Library.Nav_Area"); - if (libraryContents.Any()) - { - foreach (var con in libraryContents) - { - con.AREA_ID = con.Nav_LibraryDetail?.Nav_Library?.AREA_ID; - con.Nav_Area = con.Nav_LibraryDetail?.Nav_Library?.Nav_Area; - con.MineType = con.Nav_LibraryDetail != null && con.Nav_LibraryDetail.Nav_Library != null ? con.Nav_LibraryDetail.Nav_Library.MineType : SKProductionUnit.Mine; - } - } - if (contents.Any()) - { - foreach (var con in contents) - { - var item = libraryContents.Where(t => t.CHECK_CONTENTS_ID == con.ID).ToList(); - if (item.Count() == 1) - { - con.AREA_ID = item.FirstOrDefault().AREA_ID; - con.MineType = item.FirstOrDefault().MineType; - } - if (item.Count() > 1) - { - var areas = item.Select(t => t.Nav_Area.NAME).Distinct().ToList(); - con.CHECK_STANDARD = string.Join(",", areas); - } - } - } - UnifiedCommit(() => - { - if (contents != null && contents.Any()) - BantchSaveEntityNoCommit(contents); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 检查内容表更新生产单元和检查区域 - /// - /// - /// - [HttpPost, Route("ContentAreaUpdateNew")] - public JsonActionResult ContentAreaUpdateNew([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var contents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); - var contentIds = contents.Select(t => t.ID).ToList(); - var libraryContents = this.GetEntities(t => t.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)t.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId), "Nav_CheckSet", "Nav_ContentsAreas.Nav_Area"); - if (contents.Any()) - { - foreach (var con in contents) - { - var item = libraryContents.Where(t => t.CHECK_CONTENTS_ID == con.ID).ToList(); - if (item.Count() == 1) - { - con.AREA_ID = item.FirstOrDefault().Nav_ContentsAreas?.FirstOrDefault()?.AREA_ID; - con.MineType = item.FirstOrDefault().Nav_CheckSet?.MineType; - } - if (item.Count() > 1) - { - var areaList = new List(); - foreach (var area in item) - { - foreach (var ar in area.Nav_ContentsAreas) - { - areaList.Add(ar.Nav_Area.NAME); - } - } - var areas = areaList.Distinct().ToList(); - if (areas.Count() == 1) - { - con.AREA_ID = item.FirstOrDefault().Nav_ContentsAreas?.FirstOrDefault()?.AREA_ID; - } - else - { - con.CHECK_STANDARD = string.Join(",", areas); - } - con.MineType = item.FirstOrDefault().Nav_CheckSet?.MineType; - } - } - } - UnifiedCommit(() => - { - if (contents != null && contents.Any()) - BantchSaveEntityNoCommit(contents); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - - /// - /// 基础库隐患描述更新 - /// - /// - /// - [HttpPost, Route("ContentHiddenSync")] - public JsonActionResult ContentHiddenSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - List details = new List(); - var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var hiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var contentIds = contents.Select(t => t.ID).ToList(); - var detailContents = GetEntities(i => i.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList(); - if (detailContents != null && detailContents.Any()) - { - foreach (var detail in detailContents) - { - var quests = hiddens.Where(t => t.CHECK_CONTENTS_ID == detail.CHECK_CONTENTS_ID).ToList(); - if (quests != null && quests.Any()) - { - foreach (var item in quests) - { - T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN hi = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN(); - hi.ORG_ID = filter.OrgId; - hi.BASIC_LIBRARY_DETAIL_CONTENT_ID = detail.ID; - hi.CHECK_QUESTION_ID = item.ID; - hi.HIDDEN_DESCRIPTION = item.DESCREPTION; - hi.HIDDEN_LEVEL = item.QUESTION_LEVEL; - hi.RECTIFICATION_MEASURES = item.DEMAND; - hi.NUM = item.NUM; - details.Add(hi); - } - } - } - } - UnifiedCommit(() => - { - if (details != null && details.Any()) - BantchSaveEntityNoCommit(details); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 触发安全检查通知(豫鹭) - /// - /// - /// - [HttpPost, Route("SafeCheckNoticeYL")] - public JsonActionResult SafeCheckNoticeYL([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - var dtNow = DateTime.Now; - var year = dtNow.Year; - var month = dtNow.Month; - var day = dtNow.Day; - var week = dtNow.DayOfWeek; - List setList = new List(); - //查配置表,有配才执行 - var timeSets = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea", "Nav_CheckType").ToList(); - if (timeSets != null && timeSets.Any()) - { - foreach (var set in timeSets) - { - switch (set.CHECK_CYCLE) - { - case SKPLANCHECKFREQUENCYEnum.Year: - if (set.MONTH == month && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - break; - case SKPLANCHECKFREQUENCYEnum.HalfYear: - if (((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - break; - case SKPLANCHECKFREQUENCYEnum.Date: - setList.Add(set); + } + } + if (dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级 && !string.IsNullOrEmpty(de.CHECK_POST)) + { + var postLists = de.CHECK_POST.Split(';').ToList(); + var postIds = posts.Where(t => postLists.Contains(t.NAME)).Select(t => t.ID).ToList(); + //var userTemps = users.Where(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_Person != null && t.Nav_Person.POST_ID != null && postIds.Contains((Guid)t.Nav_Person.POST_ID)).Select(m=>m.Nav_Person.POST_ID).Distinct().ToList(); + if (postIds.Any()) + { + foreach (var itemTemp in postIds) + { + if (itemTemp != null) + { + T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post3 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); + post3.ORG_ID = filter.OrgId; + post3.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; + post3.POST_ID = itemTemp; + contentPosts.Add(post3); + } + } + } + } + contentDeparts.Add(dep); + j++; + } + } + } + } + } + } + } + } + i++; + } + } + } + } + a++; + } + } + UnifiedCommit(() => + { + if (librarys != null && librarys.Any()) + BantchSaveEntityNoCommit(librarys); + if (ldeparts != null && ldeparts.Any()) + BantchSaveEntityNoCommit(ldeparts); + if (lposts != null && lposts.Any()) + BantchSaveEntityNoCommit(lposts); + if (lpostDetails != null && lpostDetails.Any()) + BantchSaveEntityNoCommit(lpostDetails); + if (libraryDetails != null && libraryDetails.Any()) + BantchSaveEntityNoCommit(libraryDetails); + if (contents != null && contents.Any()) + BantchSaveEntityNoCommit(contents); + if (contentHiddens != null && contentHiddens.Any()) + BantchSaveEntityNoCommit(contentHiddens); + if (contentBasics != null && contentBasics.Any()) + BantchSaveEntityNoCommit(contentBasics); + if (contentDeparts != null && contentDeparts.Any()) + BantchSaveEntityNoCommit(contentDeparts); + if (contentPosts != null && contentPosts.Any()) + BantchSaveEntityNoCommit(contentPosts); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 风险名称同步 + /// + /// + /// + [HttpPost, Route("RiskNameSync")] + public JsonActionResult RiskNameSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List posts = new List(); + var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var areaList = librarys.Select(t => t.RISK_NAME).Distinct().ToList(); + if (areaList != null && areaList.Any()) + { + foreach (var area in areaList) + { + T_SK_RISK_NAME post = new T_SK_RISK_NAME(); + post.ORG_ID = filter.OrgId; + post.NAME = area; + posts.Add(post); + } + } + UnifiedCommit(() => + { + if (posts != null && posts.Any()) + BantchSaveEntityNoCommit(posts); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 基础库、企业库风险名称同步 + /// + /// + /// + [HttpPost, Route("LibraryRiskNameSync")] + public JsonActionResult LibraryRiskNameSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var riskNames = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var libraryBasics = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + if (librarys != null && librarys.Any()) + { + foreach (var item in librarys) + { + var name = riskNames.FirstOrDefault(t => t.NAME == item.RISK_NAME); + if (name != null) + { + item.RISK_NAME_ID = name.ID; + } + } + } + if (libraryBasics != null && libraryBasics.Any()) + { + foreach (var item in libraryBasics) + { + var name = riskNames.FirstOrDefault(t => t.NAME == item.RISK_NAME); + if (name != null) + { + item.RISK_NAME_ID = name.ID; + } + } + } + UnifiedCommit(() => + { + if (librarys != null && librarys.Any()) + BantchSaveEntityNoCommit(librarys); + if (libraryBasics != null && libraryBasics.Any()) + BantchSaveEntityNoCommit(libraryBasics); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 岗位排查清单触发,每班上班前一小时触发,上班后四小时内处理完毕 + /// + /// + /// + [HttpPost, Route("PostContentSync")] + public JsonActionResult PostContentSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var dt = DateTime.Now; + //DateTime minTime = dt.AddMinutes(0); + //DateTime maxTime = dt.AddMinutes(60); + if (filter.Parameter1 != null) + { + dt = DateTime.Parse(filter.Parameter1); + } + List notices = new List(); + List records = new List(); + List recordDetails = new List(); + List recordDetailUsers = new List(); + List recordBasics = new List(); + var checkType = this.GetEntity(t => t.NAME == "岗位排查"); + var timeSets = GetEntities(i => i.ENABLE_STATUS == 0 && i.CHECK_TYPE_ID == checkType.ID, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea").ToList(); + List departIds = new List(); + if (timeSets.Any()) + { + foreach (var item in timeSets) + { + if (item.Nav_ListDepOut != null && item.Nav_ListDepOut.Any()) + { + var ids = item.Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).ToList(); + departIds.AddRange(ids); + } + } + } + DateTime minTime = dt.AddMinutes(0); + DateTime maxTime = dt.AddMinutes(60); + var teamInfos = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); + var teamIds = teamInfos.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)).Select(t => t.ID).Distinct().ToList(); + var classFilter = new BaseFilter(filter.GetOrgId()); + classFilter.SelectField = new string[] { "TEAM_ID", "DEPARTMENT_ID", "Nav_DepartmentSchedulingDetail.Nav_Person.POST_ID", "Nav_DepartmentSchedulingDetail.Nav_Person.Nav_User.ID", "Nav_DepartmentSchedulingDetail.Nav_Person.Nav_User.NAME", "START_TIME", "END_TIME" }; + var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, classFilter).ToList(); + //var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null && !teamIds.Contains((Guid)s.TEAM_ID), classFilter).ToList(); + var teamIdTemps = shiftClassList.Where(s => !teamIds.Contains((Guid)s.TEAM_ID)).Select(t => t.TEAM_ID).ToList(); + var teamDepartIds = teamInfos.Where(t => teamIdTemps.Contains(t.ID)).Select(m => m.DEPARTMENT_ID).Distinct().ToList(); + var checkSets = GetEntities(i => teamDepartIds.Contains(i.DEPARTMENT_ID), new BaseFilter(filter.OrgId), "Nav_CheckSetContents.Nav_ContentsAreas", "Nav_CheckSetContents.Nav_ContentsHiddens", "Nav_CheckSetContents.Nav_ContentsBasics").ToList(); + if (shiftClassList.Any()) + { + foreach (var item in shiftClassList) + { + var team = teamInfos.FirstOrDefault(t => t.ID == item.TEAM_ID); + if (team != null && item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any()) + { + foreach (var item2 in item.Nav_DepartmentSchedulingDetail) + { + var set = checkSets.FirstOrDefault(t => t.DEPARTMENT_ID == team.DEPARTMENT_ID && t.POST_ID == item2.Nav_Person?.POST_ID); + if (set != null && set.Nav_CheckSetContents != null && set.Nav_CheckSetContents.Any()) + { + T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); + record.ORG_ID = filter.OrgId; + record.ID = Guid.NewGuid(); + record.MineType = set.MineType; + record.APPLY_USER_ID = item2.Nav_Person.Nav_User.ID; + record.APPLY_DEPARTMENT_ID = team.DEPARTMENT_ID; + record.PLANCHECKFREQUENCY = SKPLANCHECKFREQUENCYEnum.Date; + record.DEPARTMENT_TYPE = SKDepartmentTypeEnum.班组级; + record.CHECK_TYPE_ID = checkType?.ID; + record.CHECK_TIME = item.START_TIME; + record.RECORD_USER_ID = item2.Nav_Person.Nav_User.ID; + record.CHECK_PERSON = item2.Nav_Person.Nav_User.NAME; + records.Add(record); + var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel(team.NAME + item2.Nav_Person?.Nav_Post?.NAME + "岗位排查表", record.ID, filter.GetOrgId(), (Guid)record.APPLY_USER_ID, item2.Nav_Person.Nav_User.NAME, item.START_TIME, item.END_TIME, (int)FMNoticeTypeEnum.消息, "SK010"); + notices.Add(noticeTask); + var temps = new List(); + if (set.Nav_CheckSetContents != null && set.Nav_CheckSetContents.Any()) + { + foreach (var content in set.Nav_CheckSetContents) + { + if (content.Nav_ContentsAreas.Any()) + { + foreach (var area in content.Nav_ContentsAreas) + { + T_SK_CHECK_SET_CONTENTS temp = new T_SK_CHECK_SET_CONTENTS(); + temp = content; + temp.AREA_ID = area.AREA_ID; + temps.Add(temp); + } + } + } + } + if (temps.Any()) + { + foreach (var content in temps) + { + T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ID = Guid.NewGuid(); + detail.SECURITY_INSPECTION_RECORD_ID = record.ID; + detail.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; + detail.CHECKCONTENT = content.CHECK_CONTENT; + detail.CHECKSTANDARD = content.CHECK_STANDARD; + detail.RISK_AREA_ID = content.AREA_ID; + recordDetails.Add(detail); + T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); + user.ORG_ID = filter.OrgId; + user.ID = Guid.NewGuid(); + user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; + user.USER_ID = record.APPLY_USER_ID; + user.ISMAINCHECK = true; + recordDetailUsers.Add(user); + if (content.Nav_ContentsBasics.Any()) + { + foreach (var basic in content.Nav_ContentsBasics) + { + T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC ba = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC(); + ba.ORG_ID = filter.OrgId; + ba.ID = Guid.NewGuid(); + ba.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; + ba.LAW_ID = basic.LAW_ID; + recordBasics.Add(ba); + } + } + } + } + } + } + } + } + } + UnifiedCommit(() => + { + if (records != null && records.Any()) + BantchSaveEntityNoCommit(records); + if (recordDetails != null && recordDetails.Any()) + BantchSaveEntityNoCommit(recordDetails); + if (recordDetailUsers != null && recordDetailUsers.Any()) + BantchSaveEntityNoCommit(recordDetailUsers); + if (recordBasics != null && recordBasics.Any()) + BantchSaveEntityNoCommit(recordBasics); + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 检查内容更新 + /// + /// + /// + [HttpPost, Route("ContentSyncNew")] + public JsonActionResult ContentSyncNew([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List posts = new List(); + List details = new List(); + //var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + //var contentIds = contents.Select(t => t.ID).ToList(); + //var hiddens = GetEntities(i => contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList(); + //var contentTempIds = hiddens.Select(t => t.CHECK_CONTENTS_ID).Distinct().ToList(); + //var contentNames = contents.Where(t=> !contentTempIds.Contains(t.ID)).ToList(); + //if (contentNames != null && contentNames.Any()) + //{ + // foreach (var area in contentNames) + // { + // T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); + // hi.ORG_ID = filter.OrgId; + // hi.CHECK_CONTENTS_ID = area.ID; + // hi.DESCREPTION = area.CHECKCONTENT.Replace("是否","未"); + // hi.QUESTION_LEVEL = SKHiddenLevel.General; + // hi.DEMAND = area.CHECKCONTENT.Replace("是否", "应"); + // details.Add(hi); + // } + //} + //var setContents = GetEntities(i => i.CHECK_CONTENTS_ID == null, new BaseFilter(filter.OrgId)).ToList(); + //var setContentIds = setContents.Select(t => t.ID).ToList(); + //var setHiddens = GetEntities(i => setContentIds.Contains((Guid)i.CHECK_CONTENTS_SET_ID), new BaseFilter(filter.OrgId)).ToList(); + //if (setContents != null && setContents.Any()) + //{ + // foreach (var area in setContents) + // { + // T_SK_CHECK_CONTENTS post = new T_SK_CHECK_CONTENTS(); + // post.ORG_ID = filter.OrgId; + // post.CHECKCONTENT = area.CHECK_CONTENT; + // posts.Add(post); + // var hiddenList = setHiddens.Where(t => t.CHECK_CONTENTS_SET_ID == area.ID).ToList(); + // if (hiddenList != null && hiddenList.Any()) + // { + // foreach (var hid in hiddenList) + // { + // T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); + // hi.ORG_ID = filter.OrgId; + // hi.CHECK_CONTENTS_ID = post.ID; + // hi.DESCREPTION = hid.HIDDEN_DESCRIPTION; + // hi.QUESTION_LEVEL = hid.HIDDEN_LEVEL; + // hi.DEMAND = hid.RECTIFICATION_MEASURES; + // details.Add(hi); + // } + // } + // } + //} + var setHiddens = GetEntities(i => i.CHECK_QUESTION_ID == null, new BaseFilter(filter.OrgId)).ToList(); + var setContentIds = setHiddens.Select(t => t.CHECK_CONTENTS_SET_ID).Distinct().ToList(); + var setContents = GetEntities(i => setContentIds.Contains(i.ID), new BaseFilter(filter.OrgId)).ToList(); + var contentIds = setContents.Select(t => t.CHECK_CONTENTS_ID).Distinct().ToList(); + var contents = GetEntities(i => contentIds.Contains(i.ID), new BaseFilter(filter.OrgId)).ToList(); + var hiddens = GetEntities(i => contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList(); + if (setHiddens != null && setHiddens.Any()) + { + foreach (var area in setHiddens) + { + var content = setContents.FirstOrDefault(t => t.ID == area.CHECK_CONTENTS_SET_ID); + if (content != null) + { + T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); + hi.ORG_ID = filter.OrgId; + hi.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; + hi.DESCREPTION = area.HIDDEN_DESCRIPTION; + hi.QUESTION_LEVEL = area.HIDDEN_LEVEL; + hi.DEMAND = area.RECTIFICATION_MEASURES; + details.Add(hi); + } + } + } + UnifiedCommit(() => + { + if (posts != null && posts.Any()) + BantchSaveEntityNoCommit(posts); + if (details != null && details.Any()) + BantchSaveEntityNoCommit(details); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + + /// + /// 风险辨识明细表更新(职能部) + /// + /// + /// + [HttpPost, Route("RiskIdentityZN")] + public JsonActionResult RiskIdentityZN([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List posts = new List(); + List postDetails = new List(); + var departments = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_User").ToList(); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person").ToList(); + List departName = new List { "矿山部", "选矿部", "非金属资源部", "设备能源部" }; + var idList = new List(); + var allIdList = new List(); + var depaerts = departments.Where(t => departName.Contains(t.NAME)).ToList(); + if (depaerts.Any()) + { + foreach (var item in depaerts) + { + allIdList.Add(item.ID); + var depatIds = departments.Where(t => t.PARENT_ID == item.ID).Select(m => m.ID).ToList(); + if (depatIds.Any()) + { + //车间 + idList.AddRange(depatIds); + //所有 + allIdList.AddRange(depatIds); + } + } + } + if (idList.Any()) + { + //取班组 + var depatIds = departments.Where(t => t.PARENT_ID != null && idList.Contains((Guid)t.PARENT_ID)).Select(m => m.ID).ToList(); + if (depatIds.Any()) + { + allIdList.AddRange(depatIds); + } + } + if (allIdList.Any()) + { + //排除这四个部门,其他归属职能部 + departments = departments.Where(t => !allIdList.Contains(t.ID)).ToList(); + } + var departIds = departments.Select(t => t.ID).ToList(); + var userIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID)).Select(m => m.ID).ToList(); + var wfm = users.FirstOrDefault(t => t.NAME == "王福铭"); + var baseFilter = new BaseFilter(filter.GetOrgId()); + baseFilter.IgnoreDataRule = true; + baseFilter.SelectField = new string[] { "ID" }; //指定字段,包括导航属性 + var identity = this.GetEntity(t => t.APPLY_USER_ID == wfm.ID); + var identityDetail = this.GetEntities(t => t.RISK_IDENTIFY_ID == identity.ID, new BaseFilter(identity.ORG_ID)); + var minetype = identityDetail.Select(t => t.MineType).Distinct().ToList(); + var areaId = identityDetail.Select(t => t.AREA_ID).Distinct().ToList(); + var typeId = identityDetail.Select(t => t.TYPE_ID).Distinct().ToList(); + var riskName = identityDetail.Select(t => t.RISK_NAME).Distinct().ToList(); + var librarys = this.GetEntities(t => minetype.Contains(t.MineType) && areaId.Contains(t.AREA_ID) && typeId.Contains(t.TYPE_ID) && riskName.Contains(t.RISK_NAME), new BaseFilter(filter.OrgId)); + var libraryIds = librarys.Select(t => t.ID).ToList(); + var libraryIdentity = this.GetEntities(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId), "Nav_PostDetails"); + if (libraryIds != null && libraryIds.Any()) + { + foreach (var iden in libraryIds) + { + foreach (var depart in departIds) + { + var postIds = users.Where(t => t.DEPARTMENT_ID == depart && t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).Distinct().ToList(); + var identityPost = libraryIdentity.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_ID == iden && t.DEPARTMENT_ID == depart); + if (identityPost == null) + { + T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); + post.ORG_ID = filter.OrgId; + post.DEPARTMENT_ID = depart; + post.ENTERPRISE_LIBRARY_ID = iden; + posts.Add(post); + if (postIds != null && postIds.Any()) + { + foreach (var po in postIds) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; + detail.POST_ID = po; + postDetails.Add(detail); + } + } + } + else + { + foreach (var po in postIds) + { + var exsist = identityPost.Nav_PostDetails == null ? null : identityPost.Nav_PostDetails.FirstOrDefault(t => t.POST_ID == po && t.ENTERPRISE_LIBRARY_POST_ID == identityPost.ID); + if (exsist != null) + { + T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.ENTERPRISE_LIBRARY_POST_ID = identityPost.ID; + detail.POST_ID = po; + postDetails.Add(detail); + } + } + } + } + } + } + //Expression> expression = i => i.IS_DELETED == false && i.APPLY_USER_ID !=null && userIds.Contains((Guid)i.APPLY_USER_ID) && i.APPLY_USER_ID != wfm.ID; + //List riskIdetitys = this.GetEntities(expression, baseFilter).ToList(); + //var riskIdentityIds = riskIdetitys.Select(t => t.ID).ToList(); + //var identityDetails = GetEntities(i => riskIdentityIds.Contains(i.RISK_IDENTIFY_ID), new BaseFilter(filter.OrgId)).ToList(); + //var deleteIds = identityDetails.Select(t => t.ID).ToList(); + //if (riskIdentityIds != null && riskIdentityIds.Any()) + //{ + // foreach (var iden in riskIdentityIds) + // { + // if (identityDetail != null && identityDetail.Any()) + // { + // foreach (var detail in identityDetail) + // { + // T_SK_RISK_IDENTIFY_DETAIL hi = new T_SK_RISK_IDENTIFY_DETAIL(); + // hi.ORG_ID = filter.OrgId; + // hi.RISK_IDENTIFY_ID = iden; + // hi.MineType = detail.MineType; + // hi.AREA_ID = detail.AREA_ID; + // hi.NUM = detail.NUM; + // hi.RISK_NAME = detail.RISK_NAME; + // hi.RISK_DESCRIPTION = detail.RISK_DESCRIPTION; + // hi.RISK_NAME_ID = detail.RISK_NAME_ID; + // hi.TYPE_ID = detail.TYPE_ID; + // hi.MEASURE = detail.MEASURE; + // hi.EMERGENCY = detail.EMERGENCY; + // identDetails.Add(hi); + // } + + // } + // } + //} + UnifiedCommit(() => + { + if (posts != null && posts.Any()) + BantchSaveEntityNoCommit(posts); + if (postDetails != null && postDetails.Any()) + BantchSaveEntityNoCommit(postDetails); + //if (deleteIds != null && deleteIds.Any()) + // BantchDeleteEntityNoCommit(deleteIds); + //if (identDetails != null && identDetails.Any()) + // BantchSaveEntityNoCommit(identDetails); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + /// + /// 检查内容表更新生产单元和检查区域 + /// + /// + /// + [HttpPost, Route("ContentAreaUpdate")] + public JsonActionResult ContentAreaUpdate([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var contents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); + var contentIds = contents.Select(t => t.ID).ToList(); + var libraryContents = this.GetEntities(t => t.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)t.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail.Nav_Library.Nav_Area"); + if (libraryContents.Any()) + { + foreach (var con in libraryContents) + { + con.AREA_ID = con.Nav_LibraryDetail?.Nav_Library?.AREA_ID; + con.Nav_Area = con.Nav_LibraryDetail?.Nav_Library?.Nav_Area; + con.MineType = con.Nav_LibraryDetail != null && con.Nav_LibraryDetail.Nav_Library != null ? con.Nav_LibraryDetail.Nav_Library.MineType : SKProductionUnit.Mine; + } + } + if (contents.Any()) + { + foreach (var con in contents) + { + var item = libraryContents.Where(t => t.CHECK_CONTENTS_ID == con.ID).ToList(); + if (item.Count() == 1) + { + con.AREA_ID = item.FirstOrDefault().AREA_ID; + con.MineType = item.FirstOrDefault().MineType; + } + if (item.Count() > 1) + { + var areas = item.Select(t => t.Nav_Area.NAME).Distinct().ToList(); + con.CHECK_STANDARD = string.Join(",", areas); + } + } + } + UnifiedCommit(() => + { + if (contents != null && contents.Any()) + BantchSaveEntityNoCommit(contents); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 检查内容表更新生产单元和检查区域 + /// + /// + /// + [HttpPost, Route("ContentAreaUpdateNew")] + public JsonActionResult ContentAreaUpdateNew([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var contents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); + var contentIds = contents.Select(t => t.ID).ToList(); + var libraryContents = this.GetEntities(t => t.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)t.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId), "Nav_CheckSet", "Nav_ContentsAreas.Nav_Area"); + if (contents.Any()) + { + foreach (var con in contents) + { + var item = libraryContents.Where(t => t.CHECK_CONTENTS_ID == con.ID).ToList(); + if (item.Count() == 1) + { + con.AREA_ID = item.FirstOrDefault().Nav_ContentsAreas?.FirstOrDefault()?.AREA_ID; + con.MineType = item.FirstOrDefault().Nav_CheckSet?.MineType; + } + if (item.Count() > 1) + { + var areaList = new List(); + foreach (var area in item) + { + foreach (var ar in area.Nav_ContentsAreas) + { + areaList.Add(ar.Nav_Area.NAME); + } + } + var areas = areaList.Distinct().ToList(); + if (areas.Count() == 1) + { + con.AREA_ID = item.FirstOrDefault().Nav_ContentsAreas?.FirstOrDefault()?.AREA_ID; + } + else + { + con.CHECK_STANDARD = string.Join(",", areas); + } + con.MineType = item.FirstOrDefault().Nav_CheckSet?.MineType; + } + } + } + UnifiedCommit(() => + { + if (contents != null && contents.Any()) + BantchSaveEntityNoCommit(contents); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + + /// + /// 基础库隐患描述更新 + /// + /// + /// + [HttpPost, Route("ContentHiddenSync")] + public JsonActionResult ContentHiddenSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + List details = new List(); + var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var hiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var contentIds = contents.Select(t => t.ID).ToList(); + var detailContents = GetEntities(i => i.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList(); + if (detailContents != null && detailContents.Any()) + { + foreach (var detail in detailContents) + { + var quests = hiddens.Where(t => t.CHECK_CONTENTS_ID == detail.CHECK_CONTENTS_ID).ToList(); + if (quests != null && quests.Any()) + { + foreach (var item in quests) + { + T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN hi = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN(); + hi.ORG_ID = filter.OrgId; + hi.BASIC_LIBRARY_DETAIL_CONTENT_ID = detail.ID; + hi.CHECK_QUESTION_ID = item.ID; + hi.HIDDEN_DESCRIPTION = item.DESCREPTION; + hi.HIDDEN_LEVEL = item.QUESTION_LEVEL; + hi.RECTIFICATION_MEASURES = item.DEMAND; + hi.NUM = item.NUM; + details.Add(hi); + } + } + } + } + UnifiedCommit(() => + { + if (details != null && details.Any()) + BantchSaveEntityNoCommit(details); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 触发安全检查通知(豫鹭) + /// + /// + /// + [HttpPost, Route("SafeCheckNoticeYL")] + public JsonActionResult SafeCheckNoticeYL([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var dtNow = DateTime.Now; + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + List setList = new List(); + //查配置表,有配才执行 + var timeSets = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea", "Nav_CheckType").ToList(); + if (timeSets != null && timeSets.Any()) + { + foreach (var set in timeSets) + { + switch (set.CHECK_CYCLE) + { + case SKPLANCHECKFREQUENCYEnum.Year: + if (set.MONTH == month && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.HalfYear: + if (((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.Date: + setList.Add(set); break; //case SKPLANCHECKFREQUENCYEnum.Class: // setList.Add(set); - break; - case SKPLANCHECKFREQUENCYEnum.Week: - if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - break; - case SKPLANCHECKFREQUENCYEnum.Month: - if (set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - break; - case SKPLANCHECKFREQUENCYEnum.Quarter: - if (set.MONTH == 1) - { - if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - } - if (set.MONTH == 2) - { - if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - } - if (set.MONTH == 3) - { - if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) - { - setList.Add(set); - } - } - break; - default: - break; - } - } - } - List notices = new List(); - List safeNotices = new List(); - List safeDetialNotices = new List(); - //List records = new List(); - //List recordDetails = new List(); - //List recordDetailUsers = new List(); - var baseFilter = new BaseFilter(filter.GetOrgId()); - baseFilter.IgnoreDataRule = true; + break; + case SKPLANCHECKFREQUENCYEnum.Week: + if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.Month: + if (set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.Quarter: + if (set.MONTH == 1) + { + if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + } + if (set.MONTH == 2) + { + if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + } + if (set.MONTH == 3) + { + if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) + { + setList.Add(set); + } + } + break; + default: + break; + } + } + } + List notices = new List(); + List safeNotices = new List(); + List safeDetialNotices = new List(); + //List records = new List(); + //List recordDetails = new List(); + //List recordDetailUsers = new List(); + var baseFilter = new BaseFilter(filter.GetOrgId()); + baseFilter.IgnoreDataRule = true; baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; //指定字段,包括导航属性 - if (setList != null && setList.Any()) - { - var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); - var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); - var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); - DateTime dt = DateTime.Now; - if (filter.Parameter1 != null) - { - dt = DateTime.Parse(filter.Parameter1); - } - Expression> expression = i => i.IS_DELETED == false && i.CREATE_TIME.Value.Date == dt.Date; - List noticeExsiss = this.GetEntities(expression, baseFilter).ToList(); - DateTime minTime = dt.AddMinutes(0); - DateTime maxTime = dt.AddMinutes(60); - var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); - var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); - var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); - var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); - //var personIds = new List(); - //if (shiftClassList != null && shiftClassList.Any()) - //{ - // foreach (var item in shiftClassList) - // { - // if (item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any()) - // { - // var ids = item.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).Distinct().ToList(); - // personIds.AddRange(ids); - // } - // } - //} - var libPosts = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_Department"); - var libDepartIds = libPosts.Select(t => t.DEPARTMENT_ID).Distinct(); - var librarys = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); - var libraryIds = librarys.Select(t => t.ID).ToList(); - var libraryDetails = this.GetEntities(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)); - var detailsIds = libraryDetails.Select(t => t.ID).ToList(); - var libraryContents = this.GetEntities(t => detailsIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail").OrderBy(t => t.Nav_LibraryDetail?.NUM).ThenBy(m => m.NUM); - if (libraryContents != null && libraryContents.Any()) - { - foreach (var content in libraryContents) - { - var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID); - var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); - content.MineType = libraryTemp.MineType; - content.AREA_ID = libraryTemp.AREA_ID; - } - } - var groupSets = setList.GroupBy(t => new { t.CHECK_CYCLE, t.CHECK_TYPE_ID, t.CHECK_TYPE }).ToList(); - foreach (var item in groupSets) - { - List userIds = new List(); - List mineTypes = new List(); - //取配置的辨识部门,没配的不触发 - var departTemps = departs.Where(t => libDepartIds.Contains(t.ID)).ToList(); - //先查给谁 - if (item.FirstOrDefault().USER_ID_SEND != null) - { - //特别指定的人 - userIds.Add((Guid)item.FirstOrDefault().USER_ID_SEND); - } - else - { - //if (item.FirstOrDefault().CHECK_TYPE != SKDepartmentTypeEnum.岗位级) - //{ - // //非岗位级,过滤部门层级 - // departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == (int)item.CHECK_TYPE).ToList(); - //} - //else - //{ - // //岗位级默认班组 - // departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == 20); - //} - //if (item.Nav_ListSetDepObject != null && item.Nav_ListSetDepObject.Any()) - //{ - // //检查部门范围过滤 - // var departIds = item.Nav_ListSetDepObject.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); - // departTemps = departTemps.Where(t => departIds.Contains(t.ID)); - //} - if (item.FirstOrDefault().Nav_ListDepOut != null && item.FirstOrDefault().Nav_ListDepOut.Any()) - { - //排除组织过滤 - var departIds = item.FirstOrDefault().Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); - departTemps = departTemps.Where(t => !departIds.Contains(t.ID)).ToList(); - } - if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Head) - { - //发给负责人 - var userTempIds = departTemps.Where(m => m.USER_ID != null).Select(t => (Guid)t.USER_ID).Distinct().ToList(); - userIds.AddRange(userTempIds); - } - if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Hon) - { - //发给安全员 - var departIds = departTemps.Select(t => t.ID).ToList(); - var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")).Select(m => m.ID).ToList(); - userIds.AddRange(userTempIds); - } - if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.SafeHon) - { - //发给安环部安全员 - var departIds = departTemps.Select(t => t.ID).ToList(); - var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")).Select(m => m.ID).ToList(); - userIds.AddRange(userTempIds); - } - if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.ClassMonitor) - { - //发给班长 - var userTempIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20 && m.USER_ID != null).Select(t => (Guid)t.USER_ID).ToList(); - userIds.AddRange(userTempIds); - } - //if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Post) - //{ - // //发给岗位工 - // var departIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20).Select(t => t.ID).ToList(); - // var userTempIds = users.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)&& t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID)).Select(m => m.ID).ToList(); - // userIds.AddRange(userTempIds); - //} - } - if (userIds.Any()) - { - //var areaIds = item.Nav_ListArea.Select(t => t.AREA_ID).Distinct().ToList(); - foreach (var id in userIds) - { - var userInfo = users.FirstOrDefault(t => t.ID == id); - if (userInfo != null) - { - var departInfo = departs.FirstOrDefault(t => t.ID == userInfo.DEPARTMENT_ID); - - { - //一个人一张安全检查通知表 - var ex = noticeExsiss.FirstOrDefault(t => t.CHECK_TYPE_ID == item.Key.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.Key.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.Key.CHECK_TYPE && t.CREATE_TIME.Value.Date == dt.Date); - if (ex == null) - { - T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); - safeNotice.ORG_ID = filter.OrgId; - safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; - safeNotice.APPLY_USER_ID = userInfo.ID; - safeNotice.MineType = (SKProductionUnit)departInfo.MineType; - safeNotice.CHECK_TYPE_ID = item.Key.CHECK_TYPE_ID; - safeNotice.PLANCHECKFREQUENCY = item.Key.CHECK_CYCLE; - safeNotice.DEPARTMENT_TYPE = item.Key.CHECK_TYPE; - safeNotice.STATUS = PFStandardStatus.Draft; - safeNotice.ISAUTO = true; - safeNotices.Add(safeNotice); - var libIds = libPosts.Where(t => t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); - var libDetailIds = libraryDetails.Where(t => libIds.Contains(t.ENTERPRISE_LIBRARY_ID)).Select(m => m.ID).ToList(); - var content = libraryContents.Where(t => libDetailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID)).ToList(); - //if (item.MineType != 0) - //{ - // content = libraryContents.Where(t => t.MineType == item.MineType).ToList(); - //} - //if (areaIds != null && areaIds.Any()) - //{ - // content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList(); - //} - if (content != null && content.Any()) - { - foreach (var item2 in content) - { - var i = 1; - var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); - if (repeat == null) - { - T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); - detail.ORG_ID = filter.OrgId; - detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; - detail.RISK_AREA_ID = item2.AREA_ID; - detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; - detail.CHECKCONTENT = item2.CHECK_CONTENT; - detail.CHECKPROOF = item2.CHECK_BASIC; - detail.CHECKSTANDARD = item2.CHECK_STANDARD; - detail.NUM = i; - safeDetialNotices.Add(detail); - i++; - } - } - } - var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); - var endtime = DateTime.Now.AddHours(24); - if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week) - { - endtime = DateTime.Now.AddDays(7); - } - if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month) - { - endtime = DateTime.Now.AddMonths(1); - } - if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear) - { - endtime = DateTime.Now.AddMonths(6); - } - if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year) - { - endtime = DateTime.Now.AddMonths(12); - } - if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter) - { - endtime = DateTime.Now.AddMonths(3); - } - var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.Key.CHECK_TYPE.GetDescription() + "安全检查通知" + date + item.FirstOrDefault().Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); - notices.Add(notice); - } - } - } - } - } - } - } - UnifiedCommit(() => - { - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - if (safeNotices != null && safeNotices.Any()) - BantchSaveEntityNoCommit(safeNotices); - if (safeDetialNotices != null && safeDetialNotices.Any()) - BantchSaveEntityNoCommit(safeDetialNotices); - //if (records != null && records.Any()) - // BantchSaveEntityNoCommit(records); - //if (recordDetails != null && recordDetails.Any()) - // BantchSaveEntityNoCommit(recordDetails); - //if (recordDetailUsers != null && recordDetailUsers.Any()) - // BantchSaveEntityNoCommit(recordDetailUsers); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - - /// - /// 检查类型更新 - /// - /// - /// - [HttpPost, Route("CheckTypeSync")] - public JsonActionResult CheckTypeSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { - //List details = new List(); - var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var hiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); - var detailContents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_DetailContent.Nav_LibraryDetail.Nav_Library", "Nav_CheckType").ToList(); - if (detailContents != null && detailContents.Any()) - { - foreach (var detail in detailContents) - { - var minetype = detail?.Nav_DetailContent?.Nav_LibraryDetail?.Nav_Library?.MineType; - var itemType = detail?.Nav_CheckType?.NAME; - var firstType = checkTypes.FirstOrDefault(t => t.MineType == minetype && t.NAME == itemType); - if (firstType != null) - { - detail.CHECK_TYPE_ID = firstType.ID; - } - } - } - UnifiedCommit(() => - { - if (detailContents != null && detailContents.Any()) - BantchSaveEntityNoCommit(detailContents); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - + if (setList != null && setList.Any()) + { + var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); + var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); + var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); + DateTime dt = DateTime.Now; + if (filter.Parameter1 != null) + { + dt = DateTime.Parse(filter.Parameter1); + } + Expression> expression = i => i.IS_DELETED == false && i.CREATE_TIME.Value.Date == dt.Date; + List noticeExsiss = this.GetEntities(expression, baseFilter).ToList(); + DateTime minTime = dt.AddMinutes(0); + DateTime maxTime = dt.AddMinutes(60); + var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); + var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); + var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); + var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); + //var personIds = new List(); + //if (shiftClassList != null && shiftClassList.Any()) + //{ + // foreach (var item in shiftClassList) + // { + // if (item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any()) + // { + // var ids = item.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).Distinct().ToList(); + // personIds.AddRange(ids); + // } + // } + //} + var libPosts = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_Department"); + var libDepartIds = libPosts.Select(t => t.DEPARTMENT_ID).Distinct(); + var librarys = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); + var libraryIds = librarys.Select(t => t.ID).ToList(); + var libraryDetails = this.GetEntities(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)); + var detailsIds = libraryDetails.Select(t => t.ID).ToList(); + var libraryContents = this.GetEntities(t => detailsIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail").OrderBy(t => t.Nav_LibraryDetail?.NUM).ThenBy(m => m.NUM); + if (libraryContents != null && libraryContents.Any()) + { + foreach (var content in libraryContents) + { + var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID); + var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); + content.MineType = libraryTemp.MineType; + content.AREA_ID = libraryTemp.AREA_ID; + } + } + var groupSets = setList.GroupBy(t => new { t.CHECK_CYCLE, t.CHECK_TYPE_ID, t.CHECK_TYPE }).ToList(); + foreach (var item in groupSets) + { + List userIds = new List(); + List mineTypes = new List(); + //取配置的辨识部门,没配的不触发 + var departTemps = departs.Where(t => libDepartIds.Contains(t.ID)).ToList(); + //先查给谁 + if (item.FirstOrDefault().USER_ID_SEND != null) + { + //特别指定的人 + userIds.Add((Guid)item.FirstOrDefault().USER_ID_SEND); + } + else + { + //if (item.FirstOrDefault().CHECK_TYPE != SKDepartmentTypeEnum.岗位级) + //{ + // //非岗位级,过滤部门层级 + // departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == (int)item.CHECK_TYPE).ToList(); + //} + //else + //{ + // //岗位级默认班组 + // departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == 20); + //} + //if (item.Nav_ListSetDepObject != null && item.Nav_ListSetDepObject.Any()) + //{ + // //检查部门范围过滤 + // var departIds = item.Nav_ListSetDepObject.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); + // departTemps = departTemps.Where(t => departIds.Contains(t.ID)); + //} + if (item.FirstOrDefault().Nav_ListDepOut != null && item.FirstOrDefault().Nav_ListDepOut.Any()) + { + //排除组织过滤 + var departIds = item.FirstOrDefault().Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); + departTemps = departTemps.Where(t => !departIds.Contains(t.ID)).ToList(); + } + if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Head) + { + //发给负责人 + var userTempIds = departTemps.Where(m => m.USER_ID != null).Select(t => (Guid)t.USER_ID).Distinct().ToList(); + userIds.AddRange(userTempIds); + } + if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Hon) + { + //发给安全员 + var departIds = departTemps.Select(t => t.ID).ToList(); + var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")).Select(m => m.ID).ToList(); + userIds.AddRange(userTempIds); + } + if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.SafeHon) + { + //发给安环部安全员 + var departIds = departTemps.Select(t => t.ID).ToList(); + var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")).Select(m => m.ID).ToList(); + userIds.AddRange(userTempIds); + } + if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.ClassMonitor) + { + //发给班长 + var userTempIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20 && m.USER_ID != null).Select(t => (Guid)t.USER_ID).ToList(); + userIds.AddRange(userTempIds); + } + //if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Post) + //{ + // //发给岗位工 + // var departIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20).Select(t => t.ID).ToList(); + // var userTempIds = users.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)&& t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID)).Select(m => m.ID).ToList(); + // userIds.AddRange(userTempIds); + //} + } + if (userIds.Any()) + { + //var areaIds = item.Nav_ListArea.Select(t => t.AREA_ID).Distinct().ToList(); + foreach (var id in userIds) + { + var userInfo = users.FirstOrDefault(t => t.ID == id); + if (userInfo != null) + { + var departInfo = departs.FirstOrDefault(t => t.ID == userInfo.DEPARTMENT_ID); + + { + //一个人一张安全检查通知表 + var ex = noticeExsiss.FirstOrDefault(t => t.CHECK_TYPE_ID == item.Key.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.Key.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.Key.CHECK_TYPE && t.CREATE_TIME.Value.Date == dt.Date); + if (ex == null) + { + T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); + safeNotice.ORG_ID = filter.OrgId; + safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; + safeNotice.APPLY_USER_ID = userInfo.ID; + safeNotice.MineType = (SKProductionUnit)departInfo.MineType; + safeNotice.CHECK_TYPE_ID = item.Key.CHECK_TYPE_ID; + safeNotice.PLANCHECKFREQUENCY = item.Key.CHECK_CYCLE; + safeNotice.DEPARTMENT_TYPE = item.Key.CHECK_TYPE; + safeNotice.STATUS = PFStandardStatus.Draft; + safeNotice.ISAUTO = true; + safeNotices.Add(safeNotice); + var libIds = libPosts.Where(t => t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var libDetailIds = libraryDetails.Where(t => libIds.Contains(t.ENTERPRISE_LIBRARY_ID)).Select(m => m.ID).ToList(); + var content = libraryContents.Where(t => libDetailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID)).ToList(); + //if (item.MineType != 0) + //{ + // content = libraryContents.Where(t => t.MineType == item.MineType).ToList(); + //} + //if (areaIds != null && areaIds.Any()) + //{ + // content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList(); + //} + if (content != null && content.Any()) + { + foreach (var item2 in content) + { + var i = 1; + var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); + if (repeat == null) + { + T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); + detail.ORG_ID = filter.OrgId; + detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; + detail.RISK_AREA_ID = item2.AREA_ID; + detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; + detail.CHECKCONTENT = item2.CHECK_CONTENT; + detail.CHECKPROOF = item2.CHECK_BASIC; + detail.CHECKSTANDARD = item2.CHECK_STANDARD; + detail.NUM = i; + safeDetialNotices.Add(detail); + i++; + } + } + } + var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); + var endtime = DateTime.Now.AddHours(24); + if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week) + { + endtime = DateTime.Now.AddDays(7); + } + if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month) + { + endtime = DateTime.Now.AddMonths(1); + } + if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear) + { + endtime = DateTime.Now.AddMonths(6); + } + if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year) + { + endtime = DateTime.Now.AddMonths(12); + } + if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter) + { + endtime = DateTime.Now.AddMonths(3); + } + var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.Key.CHECK_TYPE.GetDescription() + "安全检查通知" + date + item.FirstOrDefault().Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); + notices.Add(notice); + } + } + } + } + } + } + } + UnifiedCommit(() => + { + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + if (safeNotices != null && safeNotices.Any()) + BantchSaveEntityNoCommit(safeNotices); + if (safeDetialNotices != null && safeDetialNotices.Any()) + BantchSaveEntityNoCommit(safeDetialNotices); + //if (records != null && records.Any()) + // BantchSaveEntityNoCommit(records); + //if (recordDetails != null && recordDetails.Any()) + // BantchSaveEntityNoCommit(recordDetails); + //if (recordDetailUsers != null && recordDetailUsers.Any()) + // BantchSaveEntityNoCommit(recordDetailUsers); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + + /// + /// 检查类型更新 + /// + /// + /// + [HttpPost, Route("CheckTypeSync")] + public JsonActionResult CheckTypeSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + //List details = new List(); + var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var hiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); + var detailContents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_DetailContent.Nav_LibraryDetail.Nav_Library", "Nav_CheckType").ToList(); + if (detailContents != null && detailContents.Any()) + { + foreach (var detail in detailContents) + { + var minetype = detail?.Nav_DetailContent?.Nav_LibraryDetail?.Nav_Library?.MineType; + var itemType = detail?.Nav_CheckType?.NAME; + var firstType = checkTypes.FirstOrDefault(t => t.MineType == minetype && t.NAME == itemType); + if (firstType != null) + { + detail.CHECK_TYPE_ID = firstType.ID; + } + } + } + UnifiedCommit(() => + { + if (detailContents != null && detailContents.Any()) + BantchSaveEntityNoCommit(detailContents); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + /// /// 触发安全检查通知(最新版) /// @@ -5823,46 +5799,46 @@ namespace APT.PP.WebApi.Controllers.Api return true; }); } - /// - /// 检查类型更新 - /// - /// - /// - [HttpPost, Route("BasicLibraryNewSync")] - public JsonActionResult BasicLibraryNewSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try + /// + /// 检查类型更新 + /// + /// + /// + [HttpPost, Route("BasicLibraryNewSync")] + public JsonActionResult BasicLibraryNewSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try { var oldUnit = ""; var newUnit = ""; - if (filter.Parameter1 != null && filter.Parameter1.Contains("|")) + if (filter.Parameter1 != null && filter.Parameter1.Contains("|")) { - var param = filter.Parameter1.Split("|"); - oldUnit = param[0]; - newUnit = param[1]; + var param = filter.Parameter1.Split("|"); + oldUnit = param[0]; + newUnit = param[1]; } else throw new Exception("参数必须填写,例如:地下矿|选矿厂"); var oldUnitId = this.GetEntity(t => t.NAME == oldUnit)?.ID; var newUnitId = this.GetEntity(t => t.NAME == newUnit)?.ID; - List libs = new List(); - List measures = new List(); + List libs = new List(); + List measures = new List(); List contents = new List(); - List hiddens = new List(); + List hiddens = new List(); var librarys = GetEntities(i => i.IS_DELETED == false && i.PRODUCTION_UNIT_ID == oldUnitId, new BaseFilter(filter.OrgId)).ToList(); var libraryIds = librarys.Select(t => t.ID).ToList(); var libraryDetails = GetEntities(i => i.IS_DELETED == false && libraryIds.Contains(i.BASIC_LIBRARY_ID), new BaseFilter(filter.OrgId)).ToList(); var libraryDetailIds = libraryDetails.Select(t => t.ID).ToList(); var libraryContents = GetEntities(i => i.IS_DELETED == false && libraryDetailIds.Contains(i.BASIC_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId)).ToList(); - var libraryContentIds = libraryContents.Select(t => t.ID).ToList(); - var libraryHiddens = GetEntities(i => i.IS_DELETED == false && libraryContentIds.Contains(i.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(filter.OrgId)).ToList(); - if (librarys != null && librarys.Any()) - { - foreach (var entity in librarys) - { + var libraryContentIds = libraryContents.Select(t => t.ID).ToList(); + var libraryHiddens = GetEntities(i => i.IS_DELETED == false && libraryContentIds.Contains(i.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(filter.OrgId)).ToList(); + if (librarys != null && librarys.Any()) + { + foreach (var entity in librarys) + { T_SK_BASIC_LIBRARY enterpriseLib = new T_SK_BASIC_LIBRARY(); enterpriseLib.ORG_ID = entity.ORG_ID; enterpriseLib.PRODUCTION_UNIT_ID = newUnitId; @@ -5884,29 +5860,29 @@ namespace APT.PP.WebApi.Controllers.Api enterpriseLib.NUM = entity.NUM; enterpriseLib.EMERGENCY = entity.EMERGENCY; libs.Add(enterpriseLib); - var measureTemps = libraryDetails.Where(t=>t.BASIC_LIBRARY_ID == entity.ID).ToList(); - if (measureTemps.Any()) - { - foreach (var temp in measureTemps) - { - T_SK_BASIC_LIBRARY_DETAIL measure = new T_SK_BASIC_LIBRARY_DETAIL(); - measure.ORG_ID = filter.OrgId; - measure.BASIC_LIBRARY_ID = enterpriseLib.ID; - measure.MEASURES_NAME = temp.MEASURES_NAME; - measure.NUM = temp.NUM; - measures.Add(measure); - var contentTemps = libraryContents.Where(t => t.BASIC_LIBRARY_DETAIL_ID == temp.ID).ToList(); - if (contentTemps.Any()) - { - foreach (var ctemp in contentTemps) - { - T_SK_BASIC_LIBRARY_DETAIL_CONTENT content = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT(); - content.ORG_ID = filter.OrgId; - content.BASIC_LIBRARY_DETAIL_ID = measure.ID; - content.CHECK_CONTENT = ctemp.CHECK_CONTENT; - content.CHECK_CONTENTS_ID = ctemp.CHECK_CONTENTS_ID; - content.NUM = ctemp.NUM; - contents.Add(content); + var measureTemps = libraryDetails.Where(t=>t.BASIC_LIBRARY_ID == entity.ID).ToList(); + if (measureTemps.Any()) + { + foreach (var temp in measureTemps) + { + T_SK_BASIC_LIBRARY_DETAIL measure = new T_SK_BASIC_LIBRARY_DETAIL(); + measure.ORG_ID = filter.OrgId; + measure.BASIC_LIBRARY_ID = enterpriseLib.ID; + measure.MEASURES_NAME = temp.MEASURES_NAME; + measure.NUM = temp.NUM; + measures.Add(measure); + var contentTemps = libraryContents.Where(t => t.BASIC_LIBRARY_DETAIL_ID == temp.ID).ToList(); + if (contentTemps.Any()) + { + foreach (var ctemp in contentTemps) + { + T_SK_BASIC_LIBRARY_DETAIL_CONTENT content = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT(); + content.ORG_ID = filter.OrgId; + content.BASIC_LIBRARY_DETAIL_ID = measure.ID; + content.CHECK_CONTENT = ctemp.CHECK_CONTENT; + content.CHECK_CONTENTS_ID = ctemp.CHECK_CONTENTS_ID; + content.NUM = ctemp.NUM; + contents.Add(content); var hiddenTemps = libraryHiddens.Where(t => t.BASIC_LIBRARY_DETAIL_CONTENT_ID == ctemp.ID).ToList(); if (hiddenTemps.Any()) { @@ -5924,47 +5900,47 @@ namespace APT.PP.WebApi.Controllers.Api } } - } - } - } - } - - } - } - UnifiedCommit(() => - { - if (libs != null && libs.Any()) - BantchSaveEntityNoCommit(libs); - if (measures != null && measures.Any()) - BantchSaveEntityNoCommit(measures); - if (contents != null && contents.Any()) + } + } + } + } + + } + } + UnifiedCommit(() => + { + if (libs != null && libs.Any()) + BantchSaveEntityNoCommit(libs); + if (measures != null && measures.Any()) + BantchSaveEntityNoCommit(measures); + if (contents != null && contents.Any()) BantchSaveEntityNoCommit(contents); - if (hiddens != null && hiddens.Any()) - BantchSaveEntityNoCommit(hiddens); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); + if (hiddens != null && hiddens.Any()) + BantchSaveEntityNoCommit(hiddens); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); } - /// - /// 系统管理-检查清单。自动触发检查通知 - /// - /// - /// - [HttpPost, Route("CheckSetSync")] - public JsonActionResult CheckSetSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try + /// + /// 系统管理-检查清单。自动触发检查通知 + /// + /// + /// + [HttpPost, Route("CheckSetSync")] + public JsonActionResult CheckSetSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try { var dtNow = DateTime.Now; var year = dtNow.Year; @@ -6042,28 +6018,28 @@ namespace APT.PP.WebApi.Controllers.Api if (filter.Parameter1 != null) { dt = DateTime.Parse(filter.Parameter1); - } - var checkTypes = GetEntities(i => !i.IS_DELETED, new BaseFilter(filter.OrgId)).ToList(); + } + var checkTypes = GetEntities(i => !i.IS_DELETED, new BaseFilter(filter.OrgId)).ToList(); List notices = new List(); List details = new List(); - List tasks = new List(); + List tasks = new List(); var checkSets = GetEntities(i => i.IS_AUTO == true, new BaseFilter(filter.OrgId)).ToList(); var checkSetIds = checkSets.Select(t => t.ID).ToList(); - var checkSetUsers= GetEntities(i => checkSetIds.Contains(i.CHECK_SET_ID), new BaseFilter(filter.OrgId)).ToList(); + var checkSetUsers= GetEntities(i => checkSetIds.Contains(i.CHECK_SET_ID), new BaseFilter(filter.OrgId)).ToList(); var contents = GetEntities(i => checkSetIds.Contains(i.CHECK_SET_ID), new BaseFilter(filter.OrgId)).ToList(); - var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - if (checkSets != null && checkSets.Any()) + var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + if (checkSets != null && checkSets.Any()) { var baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; baseFilter.SelectField = new string[] { "PRODUCTION_UNIT_ID", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE", "CREATE_TIME" }; //指定字段,包括导航属性 Expression> expression = i => i.IS_DELETED == false && (i.CREATE_TIME.Value.Date == DateTime.Now.Date || i.CREATE_TIME.Value.Date == DateTime.Now.AddDays(-1).Date); - List noticeExsiss = this.GetEntities(expression, baseFilter).ToList(); - foreach (var set in checkSets) - { - var setUserIds = checkSetUsers.Where(t => t.CHECK_SET_ID == set.ID).Select(m => m.USER_ID).Distinct().ToList(); - var timeSet = setList.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == set.PRODUCTION_UNIT_ID && t.CHECK_CYCLE == set.CHECK_CYCLE); - var sendUsers = users.Where(t => setUserIds.Contains(t.ID)).ToList(); + List noticeExsiss = this.GetEntities(expression, baseFilter).ToList(); + foreach (var set in checkSets) + { + var setUserIds = checkSetUsers.Where(t => t.CHECK_SET_ID == set.ID).Select(m => m.USER_ID).Distinct().ToList(); + var timeSet = setList.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == set.PRODUCTION_UNIT_ID && t.CHECK_CYCLE == set.CHECK_CYCLE); + var sendUsers = users.Where(t => setUserIds.Contains(t.ID)).ToList(); if (sendUsers != null && sendUsers.Any() && timeSet != null && timeSet.CHECKTIME.Value.Hour == dt.Hour) { var j = 1; @@ -6123,32 +6099,32 @@ namespace APT.PP.WebApi.Controllers.Api } var checkType = checkTypes.FirstOrDefault(t => t.ID == set.CHECK_TYPE_ID); var task = NotificationTaskService.InsertUserNoticeTaskModel(set.CHECK_CYCLE.GetDescription() + checkType?.NAME + date, notice.ID, set.ORG_ID, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); - tasks.Add(task); - j++; - } - } - } - } - } - UnifiedCommit(() => - { - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - if (details != null && details.Any()) + tasks.Add(task); + j++; + } + } + } + } + } + UnifiedCommit(() => + { + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + if (details != null && details.Any()) BantchSaveEntityNoCommit(details); - if (tasks != null && tasks.Any()) - BantchSaveEntityNoCommit(tasks); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); + if (tasks != null && tasks.Any()) + BantchSaveEntityNoCommit(tasks); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); } /// /// 定时更新系统管理下面的检查清单 @@ -6887,89 +6863,89 @@ namespace APT.PP.WebApi.Controllers.Api return true; }); } - /// - /// 岗位风险辨识结束时间到,提醒本人及上级领导 - /// - /// - /// - [HttpPost, Route("IdentifyNoticeSync")] - public JsonActionResult IdentifyNoticeSync([FromBody] KeywordFilter filter) - { - return SafeExecute(() => - { - try - { + /// + /// 岗位风险辨识结束时间到,提醒本人及上级领导 + /// + /// + /// + [HttpPost, Route("IdentifyNoticeSync")] + public JsonActionResult IdentifyNoticeSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { var dt = DateTime.Now; if (filter.Parameter1 != null) { dt = DateTime.Parse(filter.Parameter1); - } + } List userIds = new List(); - List userLeaderIds = new List(); - List notices = new List(); + List userLeaderIds = new List(); + List notices = new List(); var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - var identifys = GetEntities(i => i.END_DATE <= dt, new BaseFilter(filter.OrgId)).ToList(); - var idetifyIds = identifys.Select(t => t.ID).ToList(); + var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + var identifys = GetEntities(i => i.END_DATE <= dt, new BaseFilter(filter.OrgId)).ToList(); + var idetifyIds = identifys.Select(t => t.ID).ToList(); var tasks=this.GetEntities(i => i.SOURCE_DATA_ID!=null &&idetifyIds.Contains((Guid)i.SOURCE_DATA_ID) && i.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); - userIds = tasks.Select(t => t.USER_ID).Distinct().ToList(); - if (userIds != null && userIds.Any()) - { - //找负责人 - foreach (var user in userIds) + userIds = tasks.Select(t => t.USER_ID).Distinct().ToList(); + if (userIds != null && userIds.Any()) + { + //找负责人 + foreach (var user in userIds) { var userDepartId = users.FirstOrDefault(t => t.ID == user)?.DEPARTMENT_ID; - var departUserId = departs.FirstOrDefault(t=>t.ID == userDepartId)?.USER_ID; + var departUserId = departs.FirstOrDefault(t=>t.ID == userDepartId)?.USER_ID; if (departUserId != null) { - userLeaderIds.Add((Guid)departUserId); - } - } - } - userIds = userIds.Where(t => t != null).Distinct().ToList(); - userLeaderIds = userLeaderIds.Where(t => t != null).Distinct().ToList(); - if (userIds!=null && userIds.Any() && dt.Hour == 8)//跑批设置每小时执行,每天8点触发一次 - { - foreach (var id in userIds) - { - var user = users.FirstOrDefault(t => t.ID == id); - if (user != null) - { - var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("你的岗位风险辨识表结束时间已到,请及时到待办处理!", user.ID, user.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(1), (int)FMNoticeTypeEnum.今日提醒, "PF135"); - notices.Add(sendNotice); - } - } + userLeaderIds.Add((Guid)departUserId); + } + } } - if (userLeaderIds != null && userLeaderIds.Any() && dt.Hour == 8)//跑批设置每小时执行,每天8点触发一次 - { - foreach (var id in userIds) - { - var user = users.FirstOrDefault(t => t.ID == id); - if (user != null) - { - //查出他组织下的没做的人 - var userList = users.Where(t => t.DEPARTMENT_ID == user.DEPARTMENT_ID && userIds.Contains(t.ID)).Select(m=>m.NAME).ToList(); - var userNames = string.Join(",", userList); - var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("你组织下的成员"+ userNames + ",岗位风险辨识表已到期仍未处理,请及时提醒成员到待办处理!", user.ID, user.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(1), (int)FMNoticeTypeEnum.今日提醒, "PF135"); - notices.Add(sendNotice); - } - } - } - UnifiedCommit(() => - { - if (notices != null && notices.Any()) - BantchSaveEntityNoCommit(notices); - }); - } - catch (Exception ex) - { - if (!string.IsNullOrEmpty(ex.StackTrace)) - throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); - else - throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); - } - return true; - }); - } - } -} + userIds = userIds.Where(t => t != null).Distinct().ToList(); + userLeaderIds = userLeaderIds.Where(t => t != null).Distinct().ToList(); + if (userIds!=null && userIds.Any() && dt.Hour == 8)//跑批设置每小时执行,每天8点触发一次 + { + foreach (var id in userIds) + { + var user = users.FirstOrDefault(t => t.ID == id); + if (user != null) + { + var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("你的岗位风险辨识表结束时间已到,请及时到待办处理!", user.ID, user.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(1), (int)FMNoticeTypeEnum.今日提醒, "PF135"); + notices.Add(sendNotice); + } + } + } + if (userLeaderIds != null && userLeaderIds.Any() && dt.Hour == 8)//跑批设置每小时执行,每天8点触发一次 + { + foreach (var id in userIds) + { + var user = users.FirstOrDefault(t => t.ID == id); + if (user != null) + { + //查出他组织下的没做的人 + var userList = users.Where(t => t.DEPARTMENT_ID == user.DEPARTMENT_ID && userIds.Contains(t.ID)).Select(m=>m.NAME).ToList(); + var userNames = string.Join(",", userList); + var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("你组织下的成员"+ userNames + ",岗位风险辨识表已到期仍未处理,请及时提醒成员到待办处理!", user.ID, user.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(1), (int)FMNoticeTypeEnum.今日提醒, "PF135"); + notices.Add(sendNotice); + } + } + } + UnifiedCommit(() => + { + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + }); + } + catch (Exception ex) + { + if (!string.IsNullOrEmpty(ex.StackTrace)) + throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); + else + throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); + } + return true; + }); + } + } +} diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationController.cs index 494c2ef..db9ebbe 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationController.cs @@ -1,4 +1,4 @@ -using APT.BaseData.Domain.Entities; +using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.Enums.PF; @@ -48,7 +48,7 @@ namespace APT.SK.WebApi.Controllers.Api if (entity.APPLY_DEPARTMENT_ID == null) entity.APPLY_DEPARTMENT_ID = departId; if (entity.IDENTIFY_EVALUATION_PLAN_ID == null) - entity.APPLY_DEPARTMENT_ID = this.GetEntity(t => t.START_DATE.Value.Date == entity.START_DATE.Value.Date && t.STATUS == PFStandardStatus.Archived && t.ISSEND == true)?.ID; + entity.IDENTIFY_EVALUATION_PLAN_ID = this.GetEntity(t => t.START_DATE.Value.Date == entity.START_DATE.Value.Date && t.STATUS == PFStandardStatus.Archived && t.ISSEND == true)?.ID; var details = entity.Nav_Details; entity.Nav_Details = null; var requires = entity.Nav_Requires; @@ -131,6 +131,7 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var item in details.Where(t => !t.IS_DELETED)) { T_SK_RISK_EVALUATION_DETAIL de = new T_SK_RISK_EVALUATION_DETAIL(); + de.ID = item.ID == Guid.Empty ? Guid.NewGuid() : item.ID; de.ORG_ID = entity.ORG_ID; de.RISK_EVALUATION_ID = entity.ID; de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; @@ -160,12 +161,14 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var mm in item.Nav_DetailMeasures.Where(t => !t.IS_DELETED)) { T_SK_RISK_EVALUATION_DETAIL_MEASURE item2 = new T_SK_RISK_EVALUATION_DETAIL_MEASURE(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; item2.RISK_EVALUATION_DETAIL_ID = de.ID; item2.NUM = mm.NUM; item2.MEASURES_NAME = mm.MEASURES_NAME; measureList.Add(item2); - var temp = (item2.NUM == null || item2.NUM == 0) ? "1" : item2.NUM + "、" + item2.MEASURES_NAME + Environment.NewLine; + var num = (item2.NUM == null || item2.NUM == 0) ? 1 : item2.NUM.Value; + var temp = num + "、" + item2.MEASURES_NAME + Environment.NewLine; de.MEASURE = de.MEASURE + temp; } } @@ -176,6 +179,7 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var mm in item.Nav_DetailDeparts.Where(t => !t.IS_DELETED)) { T_SK_RISK_EVALUATION_DETAIL_DEPART item2 = new T_SK_RISK_EVALUATION_DETAIL_DEPART(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; item2.RISK_EVALUATION_DETAIL_ID = de.ID; item2.DEPARTMENT_TYPE = mm.DEPARTMENT_TYPE; @@ -189,15 +193,17 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var mm in item.Nav_DetailPosts.Where(t => !t.IS_DELETED)) { T_SK_RISK_EVALUATION_DETAIL_POST item2 = new T_SK_RISK_EVALUATION_DETAIL_POST(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; item2.RISK_EVALUATION_DETAIL_ID = de.ID; item2.DEPARTMENT_ID = mm.DEPARTMENT_ID; postList.Add(item2); if (mm.Nav_PostDetails != null && mm.Nav_PostDetails.Any()) { - foreach (var nn in mm.Nav_PostDetails.Where(t => !t.IS_DELETED)) + foreach (var nn in mm.Nav_PostDetails.Where(t => !t.IS_DELETED).DistinctBy(t => t.POST_ID)) { T_SK_RISK_EVALUATION_DETAIL_POST_DETAIL item3 = new T_SK_RISK_EVALUATION_DETAIL_POST_DETAIL(); + item3.ID = nn.ID == Guid.Empty ? Guid.NewGuid() : nn.ID; item3.ORG_ID = entity.ORG_ID; item3.RISK_EVALUATION_DETAIL_POST_ID = item2.ID; item3.POST_ID = nn.POST_ID; @@ -303,7 +309,7 @@ namespace APT.SK.WebApi.Controllers.Api if (postList != null && postList.Any()) BantchSaveEntityNoCommit(postList); if (postDetList != null && postDetList.Any()) - BantchSaveEntityNoCommit(postDetList); + BantchSaveEntityNoCommit(postDetList.GroupBy(p => new { p.RISK_EVALUATION_DETAIL_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); }, null, null, null, null, null, "SK039_SHOWPRINT", null, "安全风险评估表审批"); return true; } @@ -334,7 +340,7 @@ namespace APT.SK.WebApi.Controllers.Api if (postList != null && postList.Any()) BantchSaveEntityNoCommit(postList); if (postDetList != null && postDetList.Any()) - BantchSaveEntityNoCommit(postDetList); + BantchSaveEntityNoCommit(postDetList.GroupBy(p => new { p.RISK_EVALUATION_DETAIL_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); }); return true; }); diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationSummaryController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationSummaryController.cs index f7e268d..4ece903 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationSummaryController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskEvaluationSummaryController.cs @@ -1,4 +1,4 @@ -using APT.BaseData.Domain.Entities.FM; +using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.Enums; @@ -44,7 +44,7 @@ namespace APT.SK.WebApi.Controllers.Api if (entity.APPLY_DEPARTMENT_ID == null) entity.APPLY_DEPARTMENT_ID = departId; if (entity.IDENTIFY_EVALUATION_PLAN_ID == null) - entity.APPLY_DEPARTMENT_ID = this.GetEntity(t => t.START_DATE.Value.Date == entity.START_DATE.Value.Date && t.STATUS == PFStandardStatus.Archived && t.ISSEND == true)?.ID; + entity.IDENTIFY_EVALUATION_PLAN_ID = this.GetEntity(t => t.START_DATE.Value.Date == entity.START_DATE.Value.Date && t.STATUS == PFStandardStatus.Archived && t.ISSEND == true)?.ID; var details = entity.Nav_Details; entity.Nav_Details = null; var requires = entity.Nav_Requires; @@ -73,6 +73,7 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var item in details.Where(t => !t.IS_DELETED)) { T_SK_RISK_EVALUATION_SUMMARY_DETAIL de = new T_SK_RISK_EVALUATION_SUMMARY_DETAIL(); + de.ID = item.ID == Guid.Empty ? Guid.NewGuid() : item.ID; de.ORG_ID = entity.ORG_ID; de.RISK_EVALUATION_SUMMARY_ID = entity.ID; de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; @@ -98,12 +99,14 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var mm in item.Nav_DetailMeasures.Where(t => !t.IS_DELETED)) { T_SK_RISK_EVALUATION_SUMMARY_DETAIL_MEASURE item2 = new T_SK_RISK_EVALUATION_SUMMARY_DETAIL_MEASURE(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; item2.RISK_EVALUATION_SUMMARY_DETAIL_ID = de.ID; item2.NUM = mm.NUM; item2.MEASURES_NAME = mm.MEASURES_NAME; measureList.Add(item2); - var temp = (item2.NUM == null || item2.NUM == 0) ? "1" : item2.NUM + "、" + item2.MEASURES_NAME + Environment.NewLine; + var num = (item2.NUM == null || item2.NUM == 0) ? 1 : item2.NUM.Value; + var temp = num + "、" + item2.MEASURES_NAME + Environment.NewLine; de.MEASURE = de.MEASURE + temp; } } @@ -114,6 +117,7 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var mm in item.Nav_DetailDeparts.Where(t => !t.IS_DELETED)) { T_SK_RISK_EVALUATION_SUMMARY_DETAIL_DEPART item2 = new T_SK_RISK_EVALUATION_SUMMARY_DETAIL_DEPART(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; item2.RISK_EVALUATION_SUMMARY_DETAIL_ID = de.ID; item2.DEPARTMENT_TYPE = mm.DEPARTMENT_TYPE; @@ -127,15 +131,17 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var mm in item.Nav_DetailPosts.Where(t => !t.IS_DELETED)) { T_SK_RISK_EVALUATION_SUMMARY_DETAIL_POST item2 = new T_SK_RISK_EVALUATION_SUMMARY_DETAIL_POST(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; item2.RISK_EVALUATION_SUMMARY_DETAIL_ID = de.ID; item2.DEPARTMENT_ID = mm.DEPARTMENT_ID; postList.Add(item2); if (mm.Nav_PostDetails != null && mm.Nav_PostDetails.Any()) { - foreach (var nn in mm.Nav_PostDetails.Where(t => !t.IS_DELETED)) + foreach (var nn in mm.Nav_PostDetails.Where(t => !t.IS_DELETED).DistinctBy(t => t.POST_ID)) { T_SK_RISK_EVALUATION_SUMMARY_DETAIL_POST_DETAIL item3 = new T_SK_RISK_EVALUATION_SUMMARY_DETAIL_POST_DETAIL(); + item3.ID = nn.ID == Guid.Empty ? Guid.NewGuid() : nn.ID; item3.ORG_ID = entity.ORG_ID; item3.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID = item2.ID; item3.POST_ID = nn.POST_ID; @@ -179,7 +185,7 @@ namespace APT.SK.WebApi.Controllers.Api MFlowPermitService.InsertApprove(serialCode[0], "SK041", "", entity.ID, "SK041_SHOWPRINT", entity.TaskID, true, () => { if (deleteMeasureIds != null && deleteMeasureIds.Any()) - this.BantchDeleteEntityNoCommit(deleteMeasureIds); + this.BantchDeleteEntityNoCommit(deleteMeasureIds); if (deleteDepartIds != null && deleteDepartIds.Any()) this.BantchDeleteEntityNoCommit(deleteDepartIds); if (deletePostDetailIds != null && deletePostDetailIds.Any()) @@ -203,14 +209,14 @@ namespace APT.SK.WebApi.Controllers.Api if (postList != null && postList.Any()) BantchSaveEntityNoCommit(postList); if (postDetList != null && postDetList.Any()) - BantchSaveEntityNoCommit(postDetList); + BantchSaveEntityNoCommit(postDetList.GroupBy(p => new { p.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); }, null, null, null, null, null, "SK041_SHOWPRINT", null, "安全风险评估汇总表审批"); return true; } this.UnifiedCommit(() => { if (deleteMeasureIds != null && deleteMeasureIds.Any()) - this.BantchDeleteEntityNoCommit(deleteMeasureIds); + this.BantchDeleteEntityNoCommit(deleteMeasureIds); if (deleteDepartIds != null && deleteDepartIds.Any()) this.BantchDeleteEntityNoCommit(deleteDepartIds); if (deletePostDetailIds != null && deletePostDetailIds.Any()) @@ -234,7 +240,7 @@ namespace APT.SK.WebApi.Controllers.Api if (postList != null && postList.Any()) BantchSaveEntityNoCommit(postList); if (postDetList != null && postDetList.Any()) - BantchSaveEntityNoCommit(postDetList); + BantchSaveEntityNoCommit(postDetList.GroupBy(p => new { p.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); }); return true; }); diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyController.cs index 951af43..d7b547a 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyController.cs @@ -1,4 +1,4 @@ -using APT.BaseData.Domain.IServices.FM; +using APT.BaseData.Domain.IServices.FM; using APT.BaseData.Domain.IServices; using APT.MS.Domain.Entities.SK; using APT.Utility; @@ -49,15 +49,15 @@ namespace APT.SK.WebApi.Controllers.Api if (entity.IDENTIFY_EVALUATION_PLAN_ID == null) entity.APPLY_DEPARTMENT_ID = this.GetEntity(t => t.START_DATE.Value.Date == entity.START_DATE.Value.Date && t.STATUS == PFStandardStatus.Archived && t.ISSEND == true)?.ID; var details = entity.Nav_Details; - entity.Nav_Details = null; + entity.Nav_Details = null; var requires = entity.Nav_Requires; entity.Nav_Requires = null; var files = entity.Nav_Files; - entity.Nav_Files = null; + entity.Nav_Files = null; entity.ApplyDepartmentName = this.GetEntity(t => t.ID == departId).NAME; entity.ApplyPostName = this.GetEntity(t => t.ID == userId, "Nav_Person.Nav_Post")?.Nav_Person?.Nav_Post?.NAME; List deleteMeasureIds = new List(); - List deleteDetailIds = new List(); + List deleteDetailIds = new List(); List detailList = new List(); List measureList = new List(); //更新标识字段 @@ -65,64 +65,72 @@ namespace APT.SK.WebApi.Controllers.Api if (record != null && record.Nav_Details != null && record.Nav_Details.Any() && details != null && details.Any()) { deleteDetailIds = record.Nav_Details.Select(t => t.ID).ToList(); - var detailMes = this.GetEntities(t => deleteDetailIds.Contains(t.RISK_IDENTIFY_DETAIL_ID), new BaseFilter(entity.ORG_ID)).ToList(); + var detailMes = this.GetEntities(t => deleteDetailIds.Contains(t.RISK_IDENTIFY_DETAIL_ID), new BaseFilter(entity.ORG_ID)).ToList(); deleteMeasureIds = detailMes.Select(t => t.ID).ToList(); foreach (var item in details) { - if (item.MARK == SKMarkEnum.Auto) - { - //&& t.RISK_DESCRIPTION == item.RISK_DESCRIPTION && t.EMERGENCY == item.EMERGENCY && t.ENABLE_STATUS == item.ENABLE_STATUS - var temp = record.Nav_Details.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && t.AREA_ID == item.AREA_ID && t.TYPE_ID == item.TYPE_ID && t.RISK_NAME == item.RISK_NAME); - if (temp == null) - { - item.MARK = SKMarkEnum.Update; - } - //if (item.Nav_DetailMeasures != null && item.Nav_DetailMeasures.Any()) - //{ - // foreach (var mes in item.Nav_DetailMeasures) - // { - // var newMes = detailMes.FirstOrDefault(t => t.MEASURE == mes.MEASURE && t.RISK_IDENTIFY_DETAIL_ID == item.ID); - // if (newMes == null && item.MARK != SKMarkEnum.Add) - // { - // item.MARK = SKMarkEnum.Update; - // } - // } - //} + if (item.MARK == SKMarkEnum.Auto) + { + //&& t.RISK_DESCRIPTION == item.RISK_DESCRIPTION && t.EMERGENCY == item.EMERGENCY && t.ENABLE_STATUS == item.ENABLE_STATUS + var temp = record.Nav_Details.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && t.AREA_ID == item.AREA_ID && t.TYPE_ID == item.TYPE_ID && t.RISK_NAME == item.RISK_NAME); + if (temp == null) + { + item.MARK = SKMarkEnum.Update; + } + //if (item.Nav_DetailMeasures != null && item.Nav_DetailMeasures.Any()) + //{ + // foreach (var mes in item.Nav_DetailMeasures) + // { + // var newMes = detailMes.FirstOrDefault(t => t.MEASURE == mes.MEASURE && t.RISK_IDENTIFY_DETAIL_ID == item.ID); + // if (newMes == null && item.MARK != SKMarkEnum.Add) + // { + // item.MARK = SKMarkEnum.Update; + // } + // } + //} } } } if (details != null && details.Any()) { foreach (var item in details.Where(t => !t.IS_DELETED)) - { + { T_SK_RISK_IDENTIFY_DETAIL de = new T_SK_RISK_IDENTIFY_DETAIL(); + de.ID = item.ID == Guid.Empty ? Guid.NewGuid() : item.ID; de.ORG_ID = entity.ORG_ID; de.RISK_IDENTIFY_ID = entity.ID; de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; - de.AREA_ID = item.AREA_ID; - de.RISK_NAME = item.RISK_NAME; - de.RISK_DESCRIPTION = item.RISK_DESCRIPTION; - de.TYPE_ID = item.TYPE_ID; - de.ENABLE_STATUS = item.ENABLE_STATUS; - de.MARK = item.MARK; - de.EMERGENCY = item.EMERGENCY; - de.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID; - //de.MEASURE = item.MEASURE; + de.AREA_ID = item.AREA_ID; + de.RISK_NAME = item.RISK_NAME; + de.RISK_DESCRIPTION = item.RISK_DESCRIPTION; + de.TYPE_ID = item.TYPE_ID; + de.ENABLE_STATUS = item.ENABLE_STATUS; + de.MARK = item.MARK; + de.EMERGENCY = item.EMERGENCY; + de.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID; if (item.Nav_DetailMeasures != null && item.Nav_DetailMeasures.Any()) { foreach (var mm in item.Nav_DetailMeasures.Where(t => !t.IS_DELETED)) { T_SK_RISK_IDENTIFY_DETAIL_MEASURE item2 = new T_SK_RISK_IDENTIFY_DETAIL_MEASURE(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; - item2.RISK_IDENTIFY_DETAIL_ID = de.ID; - item2.MEASURE = mm.MEASURE; + item2.RISK_IDENTIFY_DETAIL_ID = de.ID; + item2.MEASURE = (mm.MEASURE ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","); item2.NUM = mm.NUM; - measureList.Add(item2); - var temp = (item2.NUM == null || item2.NUM == 0) ? "1" : item2.NUM + "、" + item2.MEASURE + Environment.NewLine; + item2.EMERGENCY = mm.EMERGENCY; + measureList.Add(item2); + var num = (item2.NUM == null || item2.NUM == 0) ? 1 : item2.NUM.Value; + var temp = num + "、" + item2.MEASURE + Environment.NewLine; de.MEASURE = de.MEASURE + temp; } } - item.Nav_DetailMeasures = null; + else + { + // 兜底:如果前端没传 Nav_DetailMeasures,但传了 MEASURE 字符串,直接用 + de.MEASURE = item.MEASURE; + } + item.Nav_DetailMeasures = null; detailList.Add(de); } } @@ -134,7 +142,7 @@ namespace APT.SK.WebApi.Controllers.Api item.RISK_IDENTIFY_ID = entity.ID; item.Nav_ImgFile = null; } - } + } if (requires != null && requires.Any()) { foreach (var item in requires.Where(t => !t.IS_DELETED)) @@ -172,8 +180,8 @@ namespace APT.SK.WebApi.Controllers.Api if (detailList != null && detailList.Any()) BantchSaveEntityNoCommit(detailList); if (files != null && files.Any()) - BantchSaveEntityNoCommit(files); - if (requires != null && requires.Any()) + BantchSaveEntityNoCommit(files); + if (requires != null && requires.Any()) BantchSaveEntityNoCommit(requires); if (measureList != null && measureList.Any()) BantchSaveEntityNoCommit(measureList); @@ -191,8 +199,8 @@ namespace APT.SK.WebApi.Controllers.Api if (detailList != null && detailList.Any()) BantchSaveEntityNoCommit(detailList); if (files != null && files.Any()) - BantchSaveEntityNoCommit(files); - if (requires != null && requires.Any()) + BantchSaveEntityNoCommit(files); + if (requires != null && requires.Any()) BantchSaveEntityNoCommit(requires); if (measureList != null && measureList.Any()) BantchSaveEntityNoCommit(measureList); @@ -249,14 +257,14 @@ namespace APT.SK.WebApi.Controllers.Api if (result != null) { var details = this.GetEntities(t => t.RISK_IDENTIFY_ID == result.ID, filter, "Nav_Area", "Nav_Type", "Nav_RiskName", "Nav_ProductionUnit", "Nav_DetailMeasures"); - result.Nav_Details = details.OrderBy(m => m.PRODUCTION_UNIT_ID).ThenBy(t => t.AREA_ID).ThenBy(x => x.TYPE_ID).ToList(); - foreach (var d in result.Nav_Details) - { + result.Nav_Details = details.OrderBy(m => m.PRODUCTION_UNIT_ID).ThenBy(t => t.AREA_ID).ThenBy(x => x.TYPE_ID).ToList(); + foreach (var d in result.Nav_Details) + { d.Nav_DetailMeasures = d.Nav_DetailMeasures.OrderBy(m => m.NUM).ToList(); - //foreach (var m in d.Nav_DetailMeasures) - //{ - // var temp = (m.NUM == null || m.NUM == 0) ? "1" : m.NUM + "、" + m.MEASURE + ";"; - // d.MEASURE = d.MEASURE + temp; + //foreach (var m in d.Nav_DetailMeasures) + //{ + // var temp = (m.NUM == null || m.NUM == 0) ? "1" : m.NUM + "、" + m.MEASURE + ";"; + // d.MEASURE = d.MEASURE + temp; //} } if (result.STATUS == PFStandardStatus.Rejected) diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyResultController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyResultController.cs index 1b7e3cc..5d4614b 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyResultController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyResultController.cs @@ -1,4 +1,4 @@ -using APT.BaseData.Domain.Entities; +using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.Enums.PF; @@ -48,7 +48,7 @@ namespace APT.SK.WebApi.Controllers.Api if (entity.APPLY_DEPARTMENT_ID == null) entity.APPLY_DEPARTMENT_ID = departId; if (entity.IDENTIFY_EVALUATION_PLAN_ID == null) - entity.APPLY_DEPARTMENT_ID = this.GetEntity(t => t.ID == entity.IDENTIFY_ID)?.IDENTIFY_EVALUATION_PLAN_ID; + entity.IDENTIFY_EVALUATION_PLAN_ID = this.GetEntity(t => t.ID == entity.IDENTIFY_ID)?.IDENTIFY_EVALUATION_PLAN_ID; var details = entity.Nav_Details; entity.Nav_Details = null; var requires = entity.Nav_Requires; @@ -129,34 +129,37 @@ namespace APT.SK.WebApi.Controllers.Api if (details != null && details.Any()) { foreach (var item in details.Where(t => !t.IS_DELETED)) - { + { T_SK_RISK_IDENTIFY_RESULT_DETAIL de = new T_SK_RISK_IDENTIFY_RESULT_DETAIL(); + de.ID = item.ID == Guid.Empty ? Guid.NewGuid() : item.ID; de.ORG_ID = entity.ORG_ID; de.RISK_IDENTIFY_RESULT_ID = entity.ID; de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; - de.AREA_ID = item.AREA_ID; - de.RISK_NAME = item.RISK_NAME; - de.RISK_DESCRIPTION = item.RISK_DESCRIPTION; - de.TYPE_ID = item.TYPE_ID; - de.ENABLE_STATUS = item.ENABLE_STATUS; - de.MARK = item.MARK; - de.EMERGENCY = item.EMERGENCY; - de.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID; - //de.MEASURE = item.MEASURE; - de.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; - de.IDENTIFY_DEPARTMENT = item.IDENTIFY_DEPARTMENT; + de.AREA_ID = item.AREA_ID; + de.RISK_NAME = item.RISK_NAME; + de.RISK_DESCRIPTION = item.RISK_DESCRIPTION; + de.TYPE_ID = item.TYPE_ID; + de.ENABLE_STATUS = item.ENABLE_STATUS; + de.MARK = item.MARK; + de.EMERGENCY = item.EMERGENCY; + de.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID; + //de.MEASURE = item.MEASURE; + de.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; + de.IDENTIFY_DEPARTMENT = item.IDENTIFY_DEPARTMENT; de.IDENTIFY_POST = item.IDENTIFY_POST; if (item.Nav_DetailMeasures != null && item.Nav_DetailMeasures.Any()) { foreach (var mm in item.Nav_DetailMeasures.Where(t => !t.IS_DELETED)) { T_SK_RISK_IDENTIFY_DETAIL_RESULT_MEASURE item2 = new T_SK_RISK_IDENTIFY_DETAIL_RESULT_MEASURE(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; item2.RISK_IDENTIFY_RESULT_DETAIL_ID = de.ID; item2.NUM = mm.NUM; - item2.MEASURE = mm.MEASURE; - measureList.Add(item2); - var temp = (item2.NUM == null || item2.NUM == 0) ? "1" : item2.NUM + "、" + item2.MEASURE + Environment.NewLine; + item2.MEASURE = (mm.MEASURE ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","); + measureList.Add(item2); + var num = (item2.NUM == null || item2.NUM == 0) ? 1 : item2.NUM.Value; + var temp = num + "、" + item2.MEASURE + ";"; de.MEASURE = de.MEASURE + temp; } } @@ -167,9 +170,10 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var mm in item.Nav_DetailDeparts.Where(t => !t.IS_DELETED)) { T_SK_RISK_IDENTIFY_DETAIL_RESULT_DEPART item2 = new T_SK_RISK_IDENTIFY_DETAIL_RESULT_DEPART(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; - item2.RISK_IDENTIFY_RESULT_DETAIL_ID = de.ID; - item2.DEPARTMENT_TYPE = mm.DEPARTMENT_TYPE; + item2.RISK_IDENTIFY_RESULT_DETAIL_ID = de.ID; + item2.DEPARTMENT_TYPE = mm.DEPARTMENT_TYPE; item2.DEPARTMENT_ID = mm.DEPARTMENT_ID; departList.Add(item2); } @@ -180,21 +184,23 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var mm in item.Nav_DetailPosts.Where(t => !t.IS_DELETED)) { T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST item2 = new T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; - item2.RISK_IDENTIFY_RESULT_DETAIL_ID = de.ID; + item2.RISK_IDENTIFY_RESULT_DETAIL_ID = de.ID; item2.DEPARTMENT_TYPE = mm.DEPARTMENT_TYPE; item2.DEPARTMENT_ID = mm.DEPARTMENT_ID; postList.Add(item2); - if (mm.Nav_ResultPostDets != null && mm.Nav_ResultPostDets.Any()) - { - foreach (var nn in mm.Nav_ResultPostDets.Where(t => !t.IS_DELETED)) - { - T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST_DETAIL item3 = new T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST_DETAIL(); - item3.ORG_ID = entity.ORG_ID; - item3.RISK_IDENTIFY_DETAIL_RESULT_POST_ID = item2.ID; - item3.POST_ID = nn.POST_ID; - postDetailList.Add(item3); - } + if (mm.Nav_ResultPostDets != null && mm.Nav_ResultPostDets.Any()) + { + foreach (var nn in mm.Nav_ResultPostDets.Where(t => !t.IS_DELETED).DistinctBy(t => t.POST_ID)) + { + T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST_DETAIL item3 = new T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST_DETAIL(); + item3.ID = nn.ID == Guid.Empty ? Guid.NewGuid() : nn.ID; + item3.ORG_ID = entity.ORG_ID; + item3.RISK_IDENTIFY_DETAIL_RESULT_POST_ID = item2.ID; + item3.POST_ID = nn.POST_ID; + postDetailList.Add(item3); + } } } } @@ -263,7 +269,7 @@ namespace APT.SK.WebApi.Controllers.Api if (postList != null && postList.Any()) BantchSaveEntityNoCommit(postList); if (postDetailList != null && postDetailList.Any()) - BantchSaveEntityNoCommit(postDetailList); + BantchSaveEntityNoCommit(postDetailList.GroupBy(p => new { p.RISK_IDENTIFY_DETAIL_RESULT_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); }, null, null, null, null, null, "SK035_SHOWPRINT", null, "安全风险辨识结果表审批"); return true; } @@ -294,7 +300,7 @@ namespace APT.SK.WebApi.Controllers.Api if (postList != null && postList.Any()) BantchSaveEntityNoCommit(postList); if (postDetailList != null && postDetailList.Any()) - BantchSaveEntityNoCommit(postDetailList); + BantchSaveEntityNoCommit(postDetailList.GroupBy(p => new { p.RISK_IDENTIFY_DETAIL_RESULT_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); }); return true; }); diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyResultSummaryController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyResultSummaryController.cs index 7546f43..5f01982 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyResultSummaryController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/RiskIdentifyResultSummaryController.cs @@ -1,4 +1,4 @@ -using APT.BaseData.Domain.Entities; +using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.Enums.PF; @@ -45,7 +45,7 @@ namespace APT.SK.WebApi.Controllers.Api if (entity.APPLY_DEPARTMENT_ID == null) entity.APPLY_DEPARTMENT_ID = departId; if (entity.IDENTIFY_EVALUATION_PLAN_ID == null) - entity.APPLY_DEPARTMENT_ID = this.GetEntity(t => t.ID == entity.IDENTIFY_RESULT_ID)?.IDENTIFY_EVALUATION_PLAN_ID; + entity.IDENTIFY_EVALUATION_PLAN_ID = this.GetEntity(t => t.ID == entity.IDENTIFY_RESULT_ID)?.IDENTIFY_EVALUATION_PLAN_ID; var details = entity.Nav_Details; entity.Nav_Details = null; var requires = entity.Nav_Requires; @@ -72,34 +72,37 @@ namespace APT.SK.WebApi.Controllers.Api deletePostIds = this.GetEntities(t => detailIds.Contains(t.IDENTIFY_RESULT_SUMMARY_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); deletePostDetailIds = this.GetEntities(t => deletePostIds.Contains(t.IDENTIFY_RESULT_SUMMARY_POST_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); foreach (var item in details.Where(t => !t.IS_DELETED)) - { + { T_SK_RISK_IDENTIFY_RESULT_SUMMARY_DETAIL de = new T_SK_RISK_IDENTIFY_RESULT_SUMMARY_DETAIL(); + de.ID = item.ID == Guid.Empty ? Guid.NewGuid() : item.ID; de.ORG_ID = entity.ORG_ID; de.IDENTIFY_RESULT_SUMMARY_ID = entity.ID; de.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; - de.AREA_ID = item.AREA_ID; - de.RISK_NAME = item.RISK_NAME; - de.RISK_DESCRIPTION = item.RISK_DESCRIPTION; - de.TYPE_ID = item.TYPE_ID; - de.ENABLE_STATUS = item.ENABLE_STATUS; - de.MARK = item.MARK; - de.EMERGENCY = item.EMERGENCY; - de.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID; - //de.MEASURE = item.MEASURE; - de.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; - de.IDENTIFY_DEPARTMENT = item.IDENTIFY_DEPARTMENT; + de.AREA_ID = item.AREA_ID; + de.RISK_NAME = item.RISK_NAME; + de.RISK_DESCRIPTION = item.RISK_DESCRIPTION; + de.TYPE_ID = item.TYPE_ID; + de.ENABLE_STATUS = item.ENABLE_STATUS; + de.MARK = item.MARK; + de.EMERGENCY = item.EMERGENCY; + de.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID; + //de.MEASURE = item.MEASURE; + de.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; + de.IDENTIFY_DEPARTMENT = item.IDENTIFY_DEPARTMENT; de.IDENTIFY_POST = item.IDENTIFY_POST; if (item.Nav_DetailMeasures != null && item.Nav_DetailMeasures.Any()) { foreach (var mm in item.Nav_DetailMeasures.Where(t => !t.IS_DELETED)) { T_SK_RISK_IDENTIFY_RESULT_SUMMARY_MEASURE item2 = new T_SK_RISK_IDENTIFY_RESULT_SUMMARY_MEASURE(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; - item2.IDENTIFY_RESULT_SUMMARY_DETAIL_ID = de.ID; + item2.IDENTIFY_RESULT_SUMMARY_DETAIL_ID = de.ID; item2.NUM = mm.NUM; - item2.MEASURE = mm.MEASURE; - measureList.Add(item2); - var temp = (item2.NUM == null || item2.NUM == 0) ? "1" : item2.NUM + "、" + item2.MEASURE + Environment.NewLine; + item2.MEASURE = (mm.MEASURE ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","); + measureList.Add(item2); + var num = (item2.NUM == null || item2.NUM == 0) ? 1 : item2.NUM.Value; + var temp = num + "、" + item2.MEASURE + ";"; de.MEASURE = de.MEASURE + temp; } } @@ -110,9 +113,10 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var mm in item.Nav_DetailDeparts.Where(t => !t.IS_DELETED)) { T_SK_RISK_IDENTIFY_RESULT_SUMMARY_DEPART item2 = new T_SK_RISK_IDENTIFY_RESULT_SUMMARY_DEPART(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; - item2.IDENTIFY_RESULT_SUMMARY_DETAIL_ID = de.ID; - item2.DEPARTMENT_TYPE = mm.DEPARTMENT_TYPE; + item2.IDENTIFY_RESULT_SUMMARY_DETAIL_ID = de.ID; + item2.DEPARTMENT_TYPE = mm.DEPARTMENT_TYPE; item2.DEPARTMENT_ID = mm.DEPARTMENT_ID; departList.Add(item2); } @@ -123,21 +127,23 @@ namespace APT.SK.WebApi.Controllers.Api foreach (var mm in item.Nav_DetailPosts.Where(t => !t.IS_DELETED)) { T_SK_RISK_IDENTIFY_RESULT_SUMMARY_POST item2 = new T_SK_RISK_IDENTIFY_RESULT_SUMMARY_POST(); + item2.ID = mm.ID == Guid.Empty ? Guid.NewGuid() : mm.ID; item2.ORG_ID = entity.ORG_ID; - item2.IDENTIFY_RESULT_SUMMARY_DETAIL_ID = de.ID; - item2.DEPARTMENT_TYPE = mm.DEPARTMENT_TYPE; + item2.IDENTIFY_RESULT_SUMMARY_DETAIL_ID = de.ID; + item2.DEPARTMENT_TYPE = mm.DEPARTMENT_TYPE; item2.DEPARTMENT_ID = mm.DEPARTMENT_ID; - postList.Add(item2); - if (mm.Nav_SumPostDets != null && mm.Nav_SumPostDets.Any()) - { - foreach (var nn in mm.Nav_SumPostDets.Where(t => !t.IS_DELETED)) - { - T_SK_RISK_IDENTIFY_RESULT_SUMMARY_POST_DETAIL item3 = new T_SK_RISK_IDENTIFY_RESULT_SUMMARY_POST_DETAIL(); - item3.ORG_ID = entity.ORG_ID; - item3.IDENTIFY_RESULT_SUMMARY_POST_ID = item2.ID; - item3.POST_ID = nn.POST_ID; - postDetailList.Add(item3); - } + postList.Add(item2); + if (mm.Nav_SumPostDets != null && mm.Nav_SumPostDets.Any()) + { + foreach (var nn in mm.Nav_SumPostDets.Where(t => !t.IS_DELETED)) + { + T_SK_RISK_IDENTIFY_RESULT_SUMMARY_POST_DETAIL item3 = new T_SK_RISK_IDENTIFY_RESULT_SUMMARY_POST_DETAIL(); + item3.ID = nn.ID == Guid.Empty ? Guid.NewGuid() : nn.ID; + item3.ORG_ID = entity.ORG_ID; + item3.IDENTIFY_RESULT_SUMMARY_POST_ID = item2.ID; + item3.POST_ID = nn.POST_ID; + postDetailList.Add(item3); + } } } } @@ -178,7 +184,7 @@ namespace APT.SK.WebApi.Controllers.Api if (deleteMeasureIds != null && deleteMeasureIds.Any()) this.BantchDeleteEntityNoCommit(deleteMeasureIds); if (deleteDepartIds != null && deleteDepartIds.Any()) - this.BantchDeleteEntityNoCommit(deleteDepartIds); + this.BantchDeleteEntityNoCommit(deleteDepartIds); if (deletePostDetailIds != null && deletePostDetailIds.Any()) this.BantchDeleteEntityNoCommit(deletePostDetailIds); if (deletePostIds != null && deletePostIds.Any()) @@ -200,7 +206,7 @@ namespace APT.SK.WebApi.Controllers.Api if (postList != null && postList.Any()) BantchSaveEntityNoCommit(postList); if (postDetailList != null && postDetailList.Any()) - BantchSaveEntityNoCommit(postDetailList); + BantchSaveEntityNoCommit(postDetailList.GroupBy(p => new { p.IDENTIFY_RESULT_SUMMARY_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); }, null, null, null, null, null, "SK037_SHOWPRINT", null, "安全风险辨识结果汇总表审批"); return true; } @@ -209,7 +215,7 @@ namespace APT.SK.WebApi.Controllers.Api if (deleteMeasureIds != null && deleteMeasureIds.Any()) this.BantchDeleteEntityNoCommit(deleteMeasureIds); if (deleteDepartIds != null && deleteDepartIds.Any()) - this.BantchDeleteEntityNoCommit(deleteDepartIds); + this.BantchDeleteEntityNoCommit(deleteDepartIds); if (deletePostDetailIds != null && deletePostDetailIds.Any()) this.BantchDeleteEntityNoCommit(deletePostDetailIds); if (deletePostIds != null && deletePostIds.Any()) @@ -231,7 +237,7 @@ namespace APT.SK.WebApi.Controllers.Api if (postList != null && postList.Any()) BantchSaveEntityNoCommit(postList); if (postDetailList != null && postDetailList.Any()) - BantchSaveEntityNoCommit(postDetailList); + BantchSaveEntityNoCommit(postDetailList.GroupBy(p => new { p.IDENTIFY_RESULT_SUMMARY_POST_ID, p.POST_ID }).Select(g => g.First()).ToList()); }); return true; });