diff --git a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs index df4d446..4ba0df9 100644 --- a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs +++ b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs @@ -15,9 +15,11 @@ using APT.MS.Domain.Entities.HM; using APT.MS.Domain.Entities.PF; using APT.MS.Domain.Entities.SC.SC; using APT.MS.Domain.Enums; +using Google.Protobuf.Collections; using InfluxData.Net.InfluxDb.Models.Responses; using MySqlX.XDevAPI.Common; using NPOI.SS.Formula.Functions; +using Org.BouncyCastle.Ocsp; using Org.BouncyCastle.Utilities; using System; using System.Collections.Generic; @@ -5317,7 +5319,7 @@ namespace APT.BaseData.Services.DomainServices /// private bool PersonalApprove(string id) { - var entity = GetEntity(id); + var entity = GetEntity(id, new string[] { "Nav_Details.Nav_Areas", "Nav_Details.Nav_Identifyings" }); entity.STATUS = FOPreMeetingStatusEnum.归档; T_HM_NOTICE_RELEASE model = new T_HM_NOTICE_RELEASE(); List noticefiles = new List(); @@ -5391,6 +5393,217 @@ namespace APT.BaseData.Services.DomainServices sendUser = (Guid)GetEntity(t => t.NAME == "综合部").USER_ID; sendUserName = GetEntity(sendUser.ToString()).NAME; } + else + { + Guid depId = Guid.Empty; + List risks = new List(); + List listRiskArea = new List(); + List listRiskIdentifyings = new List(); + List listRiskDetails = new List(); + List hazards = new List(); + List listHazardDetails = new List(); + List listHazardIdentifyings = new List(); + List listHazardArea = new List(); + List taskUsers = new List(); + List sendNoticeList = null; + var departmentFilter = new BaseFilter(orgId); + var userIds = entity.Nav_Details.Where(t => t.IS_DELETED == false).Select(t => t.CHARGE_USER_ID); + var users = GetEntities(t => userIds.Contains(t.ID) || t.APPROVE_ROLE_ID != null, new BaseFilter(entity.ORG_ID)); + var depts = GetEntities(t => t.IS_DELETED == false, new BaseFilter(entity.ORG_ID)); + var riskDetails = entity.Nav_Details.Where(t => t.IS_DELETED == false && t.RISK_TYPE == HMRiskTypeEnmu.危险源辨识); + var hazardDetails = entity.Nav_Details.Where(t => t.IS_DELETED == false && t.RISK_TYPE == HMRiskTypeEnmu.职业危害辨识); + var noticeTitles = new List(); + var noticeUserIds = new List(); + var noticeUserNames = new List(); + var noticeDataIds = new List(); + var noticeFormCodes = new List(); + SystemCodeFilter riskCode = new SystemCodeFilter + { + CodeType = (int)PFCodeRuleType.风险辨识任务编号, + Count = riskDetails.Count(), + OrgId = entity.ORG_ID + }; + var riskCodes = CodeRuleService.NewGenSerial(riskCode); + var riskCodeList = riskCodes.Split(new char[] { ',' }); + SystemCodeFilter hazardCode = new SystemCodeFilter + { + CodeType = (int)PFCodeRuleType.风险辨识任务编号, + Count = hazardDetails.Count(), + OrgId = entity.ORG_ID + }; + var hazardCodes = CodeRuleService.NewGenSerial(hazardCode); + var hazardCodeList = hazardCodes.Split(new char[] { ',' }); + int riskIndex = 0; + foreach (var riskDetail in riskDetails) + { + T_HM_RISK_TASK riskTask = new T_HM_RISK_TASK(); + riskTask.ID = Guid.NewGuid(); + var user = users.FirstOrDefault(t => t.ID == riskDetail.CHARGE_USER_ID); + if (user != null) + riskTask.INITIATING_DEPARTMENT = user.DEPARTMENT_ID; + riskTask.CODE = riskCodeList[riskIndex]; + riskIndex++; + riskTask.START_TIME = (DateTime)riskDetail.START_TIME; + riskTask.END_TIME = (DateTime)riskDetail.END_TIME; + riskTask.LEVEL = riskDetail.LEVEL; + riskTask.ORG_ID = riskDetail.ORG_ID; + riskTask.LIABLE_USER_ID = riskDetail.CHARGE_USER_ID; + riskTask.REQUEST_ID = GetEntity(t => true).ID; + riskTask.PLAN_ID = entity.ID; + if (riskDetail.Nav_Areas.Where(t => t.IS_DELETED == false).Any()) + { + var levels = riskDetail.LEVEL.Split("_").Where(t => t != ""); + var Nav_Areas = riskDetail.Nav_Areas.Where(t => t.IS_DELETED == false); + foreach (var Area in Nav_Areas) + { + T_HM_RISK_TASK_AREA area = new T_HM_RISK_TASK_AREA(); + area.ORG_ID = entity.ORG_ID; + area.AREA_ID = Area.AREA_ID; + area.TASK_ID = riskTask.ID; + listRiskArea.Add(area); + foreach (var level in levels) + { + var sendUsers = GetEntities(t => t.AREA_ID == Area.AREA_ID && t.Nav_DepartmentLiable.IS_DELETED == false && t.DEPARTMENT_LIABLE_ID != null && t.LEVEL == (FMDepartmentType)int.Parse(level), new BaseFilter(entity.ORG_ID)).Select(t => new { t.DEPARTMENT_LIABLE_ID }).Distinct(); + if (sendUsers.Any()) + { + T_HM_RISK_TASK_DETAIL taskDetail = new T_HM_RISK_TASK_DETAIL(); + taskDetail.ORG_ID = riskDetail.ORG_ID; + taskDetail.AREA_ID = Area.AREA_ID; + taskDetail.LEVEL = (FMDepartmentType)int.Parse(level); + taskDetail.TASK_ID = riskTask.ID; + taskDetail.ID = Guid.NewGuid(); + var record_user = Guid.Empty; + var index = 0; + foreach (var sendUserItem in sendUsers) + { + T_HM_RISK_TASK_USER taskUser = new T_HM_RISK_TASK_USER(); + taskUser.TASK_DETAIL_ID = taskDetail.ID; + depId = (Guid)sendUserItem.DEPARTMENT_LIABLE_ID; + var depChargeUser = depts.FirstOrDefault(t => t.ID == depId); + if (depChargeUser.USER_ID == null) + { + throw new Exception(depChargeUser.NAME + "在组织架构中未找到负责人!"); + } + taskUser.USER_ID = (Guid)depChargeUser.USER_ID; + var taskUsersCount = taskUsers.Count(t => t.TASK_DETAIL_ID == taskDetail.ID && t.USER_ID == taskUser.USER_ID);//查询是否有插入避免豫鹭有重复人员添加 + if (taskUsersCount == 0) + { + taskUser.ORG_ID = entity.ORG_ID; + taskUser.ROW_NO = index; + if (index == 0) + { + record_user = taskUser.USER_ID; + } + index++; + taskUsers.Add(taskUser); + } + } + taskDetail.RECORD_USER_ID = record_user; + taskDetail.DEAL_STATUS = (int)FOUserShiftStatusEnum.待处理; + listRiskDetails.Add(taskDetail); + } + } + + } + + riskDetail.Nav_Identifyings.ForEach(t => + { + T_HM_RISK_TASK_IDENTIFYING identifying = new T_HM_RISK_TASK_IDENTIFYING(); + identifying.ORG_ID = entity.ORG_ID; + identifying.IDENTIFYING_ID = t.IDENTIFYING_ID; + identifying.TASK_ID = riskTask.ID; + listRiskIdentifyings.Add(identifying); + + }); + } + noticeTitles.Add("危险源辨识任务"); + noticeDataIds.Add(riskTask.ID); + noticeUserIds.Add((Guid)riskDetail.CHARGE_USER_ID); + noticeUserNames.Add(user.NAME); + noticeFormCodes.Add("HM062"); + risks.Add(riskTask); + } + int hazardIndex = 0; + foreach (var hazardDetail in hazardDetails) + { + T_HM_HAZARD_TASK hazardTask = new T_HM_HAZARD_TASK(); + hazardTask.ID = Guid.NewGuid(); + var user = users.FirstOrDefault(t => t.ID == hazardDetail.CHARGE_USER_ID); + if (user != null) + hazardTask.INITIATING_DEPARTMENT = user.DEPARTMENT_ID; + hazardTask.CODE = hazardCodeList[hazardIndex]; + hazardTask.START_TIME = (DateTime)hazardDetail.START_TIME; + hazardTask.END_TIME = (DateTime)hazardDetail.END_TIME; + hazardTask.LEVEL = "0"; + hazardTask.ORG_ID = entity.ORG_ID; + hazardTask.LIABLE_USER_ID = hazardDetail.CHARGE_USER_ID; + hazardTask.PLAN_ID = entity.ID; + hazardDetail.Nav_Areas.ForEach(t => + { + T_HM_HAZARD_TASK_AREA area = new T_HM_HAZARD_TASK_AREA(); + area.ORG_ID = entity.ORG_ID; + area.AREA_ID = t.AREA_ID; + area.TASK_ID = hazardTask.ID; + listHazardArea.Add(area); + T_HM_HAZARD_TASK_DETAIL taskDetail = new T_HM_HAZARD_TASK_DETAIL(); + taskDetail.ORG_ID = entity.ORG_ID; + taskDetail.AREA_ID = t.AREA_ID; + taskDetail.TASK_ID = hazardTask.ID; + taskDetail.RECORD_USER_ID = null; + taskDetail.DEAL_STATUS = (int)FOUserShiftStatusEnum.待处理; + listHazardDetails.Add(taskDetail); + }); + + if (hazardDetail.Nav_Identifyings != null && hazardDetail.Nav_Identifyings.Any()) + { + hazardDetail.Nav_Identifyings.ForEach(t => + { + T_HM_HAZARD_TASK_IDENTIFYING identifying = new T_HM_HAZARD_TASK_IDENTIFYING(); + identifying.ORG_ID = entity.ORG_ID; + identifying.IDENTIFYING_ID = t.IDENTIFYING_ID; + identifying.TASK_ID = hazardTask.ID; + listHazardIdentifyings.Add(identifying); + }); + } + noticeTitles.Add("职业危害辨识任务"); + noticeDataIds.Add(hazardTask.ID); + noticeUserIds.Add((Guid)hazardDetail.CHARGE_USER_ID); + noticeUserNames.Add(user.NAME); + noticeFormCodes.Add("HM102"); + hazards.Add(hazardTask); + } + sendNoticeList = NotificationTaskService.InsertUserNoticeTaskModels(noticeTitles, noticeDataIds, entity.ORG_ID, noticeUserIds, noticeUserNames, DateTime.Now, DateTime.Parse(DateTime.Now.AddDays(1).ToShortDateString() + " 23:59:59"), (int)FMNoticeTypeEnum.消息, noticeFormCodes); + this.UnifiedCommit(() => + { + if (entity != null) + UpdateEntityNoCommit(entity); + if (files != null && files.Any()) + BantchSaveEntityNoCommit(files); + if (entity != null) + UpdateEntityNoCommit(entity); //保存主表 + if (risks.Any()) + BantchAddEntityNoCommit(risks); + if (listRiskArea.Any()) + BantchAddEntityNoCommit(listRiskArea); + if (listRiskIdentifyings.Any()) + BantchAddEntityNoCommit(listRiskIdentifyings); + if (listRiskDetails.Any()) + BantchAddEntityNoCommit(listRiskDetails); + if (hazards.Any()) + BantchAddEntityNoCommit(hazards); + if (listHazardArea.Any()) + BantchAddEntityNoCommit(listHazardArea); + if (listHazardIdentifyings.Any()) + BantchAddEntityNoCommit(listHazardIdentifyings); + if (listHazardDetails.Any()) + BantchAddEntityNoCommit(listHazardDetails); + if (taskUsers.Any()) + BantchAddEntityNoCommit(taskUsers); + if (sendNoticeList != null && sendNoticeList.Any()) + BantchAddEntityNoCommit(sendNoticeList); + }); + return true; + } model.RELEASE_USER_ID = sendUser; NotificationTaskService.SendNotificationTask("风险评价计划发布", model.ID, orgId, sendUser, sendUserName, DateTime.Now, DateTime.Parse(DateTime.Now.AddDays(5).ToShortDateString() + " 23:59:59"), (int)FMNoticeTypeEnum.审批, "HM002", () => diff --git a/APT.MicroApi/APT.HM.WebApi/Controllers/Api/NoticeReleaseController.cs b/APT.MicroApi/APT.HM.WebApi/Controllers/Api/NoticeReleaseController.cs index e74b940..1f48b6b 100644 --- a/APT.MicroApi/APT.HM.WebApi/Controllers/Api/NoticeReleaseController.cs +++ b/APT.MicroApi/APT.HM.WebApi/Controllers/Api/NoticeReleaseController.cs @@ -51,7 +51,6 @@ namespace APT.HM.WebApi.Controllers.Api entity.RELEAS_DEPARTMENT_ID = user.DEPARTMENT_ID; } List sendNotices = null; - T_FM_NOTIFICATION_TASK sendChargeNotice = null; T_FM_NOTIFICATION_TASK finishNotice = null; Guid depId = Guid.Empty; Guid approveRoldId = Guid.Empty; @@ -268,8 +267,6 @@ namespace APT.HM.WebApi.Controllers.Api BantchAddEntityNoCommit(sendNotices); if (finishNotice != null) UpdateEntityNoCommit(finishNotice); - if (sendChargeNotice != null) - UpdateEntityNoCommit(sendChargeNotice); if (entity != null) UpdateEntityNoCommit(entity); //保存主表 if (risks.Any()) diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/HMController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/HMController.cs index 93fd6a6..23ad27c 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/HMController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/HMController.cs @@ -222,7 +222,7 @@ namespace APT.PP.WebApi.Controllers.Api.PP { throw new Exception("未找到安环部负责人!"); } - NotificationTaskService.SendNotificationTask(DateTime.Now.Year.ToString() + "年度风险评价计划", plan.ID, filter.GetOrgId(), UserID, UserName, DateTime.Now, DateTime.Parse(DateTime.Now.AddDays(5).ToShortDateString() + " 23:59:59"), 0, "HM043", () => + NotificationTaskService.SendNotificationTask(DateTime.Now.Year.ToString() + isRun.Cycle.GetDescription() +"风险评价计划", plan.ID, filter.GetOrgId(), UserID, UserName, DateTime.Now, DateTime.Parse(DateTime.Now.AddMonths(1).ToShortDateString() + " 23:59:59"), 0, "HM043", () => { AddEntityNoCommit(plan); UpdateEntityNoCommit(isRun, "START_TIME");