using AlibabaCloud.OpenApiClient.Models; 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.BS; using APT.BaseData.Domain.IServices.FM; using APT.BaseData.Services.Services.FM; using APT.Infrastructure.Api; using APT.Infrastructure.Core; using APT.MS.Data.Mapping; using APT.MS.Domain.Entities.BS; using APT.MS.Domain.Entities.DM; using APT.MS.Domain.Entities.FO; using APT.MS.Domain.Entities.HM; using APT.MS.Domain.Entities.LR; using APT.MS.Domain.Entities.PF; using APT.MS.Domain.Entities.SC; using APT.MS.Domain.Entities.SC.DM; using APT.MS.Domain.Entities.SC.PE; using APT.MS.Domain.Entities.SC.PR; using APT.MS.Domain.Entities.SC.PT; using APT.MS.Domain.Entities.SC.SC; using APT.MS.Domain.Entities.SK; using APT.MS.Domain.Entities.TL; using APT.MS.Domain.Entities.WB; using APT.MS.Domain.Enums; using APT.MS.Domain.Enums.SK; using APT.Utility; using Autofac.Core; using InfluxData.Net.InfluxDb.Models.Responses; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.Extensions.DependencyModel; using MySqlX.XDevAPI.Common; using Newtonsoft.Json; using NPOI.POIFS.Properties; using NPOI.SS.Formula.Functions; using Org.BouncyCastle.Utilities; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Linq; using System.Linq.Expressions; using System.Numerics; using System.Reflection; using System.Security.Cryptography; using static Google.Protobuf.WireFormat; using static IdentityModel.OidcConstants; namespace APT.BaseData.Services.DomainServices { /// /// 审批流回调 /// 代码规范 每个模块的代码 写在对应 代码块中 /// 多添加一个审批流回调 1、写方法 2、完善 CallBack 方法 /// 原有的api继续提供 审批调用 /// public class PFApproveCallBackService : CommonService, IPFApproveCallBackService { IPFCodeRuleService CodeRuleService { get; set; } IFMNotificationTaskService NotificationTaskService { get; set; } IPFSysLogService SysLogService { get; set; } IPFApproveCallBackMTService PFApproveCallBackMTService { get; set; } IPFApproveCallBackSEService PFApproveCallBackSEService { get; set; } IFMDepartmentService DepartmentService { get; set; } IBSSafeCheckService SafeCheckService { get; set; } //IFMFlowPermitService MFlowPermitService { get; set; } public PFApproveCallBackService(IRepository repository, IPFCodeRuleService codeRuleService, IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IPFApproveCallBackMTService pFApproveCallBackMTService, IPFApproveCallBackSEService pFApproveCallBackSEService, IFMDepartmentService departmentService, IBSSafeCheckService safeCheckService) : base(repository) { CodeRuleService = codeRuleService; NotificationTaskService = notificationTaskService; SysLogService = sysLogService; PFApproveCallBackMTService = pFApproveCallBackMTService; PFApproveCallBackSEService = pFApproveCallBackSEService; DepartmentService = departmentService; SafeCheckService = safeCheckService; //MFlowPermitService = mFlowPermitService; } public string RejectContent(Guid id) { var result = string.Empty; var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; var newFilter = new BaseFilter(orgId); newFilter.SelectField = new List { "Nav_ApproveDetails" }; var approveInfo = this.GetEntities(t => t.DATA_ID == id, newFilter).OrderByDescending(m => m.CREATE_TIME).FirstOrDefault(); if (approveInfo != null && approveInfo.Nav_ApproveDetails.Any()) { var detail = approveInfo.Nav_ApproveDetails.FirstOrDefault(t => t.NODE_APPROVE_STATUS == 20); if (detail != null) { var userInfo = this.GetEntity(t => t.ID == detail.APPROVE_USER_ID && t.ENABLE_STATUS == 0); result = userInfo?.NAME + "驳回,内容:" + detail.CONTEXT; } } return result; } /// /// 添加审批流 /// /// /// /// public bool CallBack(string CALLBACK_INTERFACE, string DATA_ID) { bool result = false; if (!string.IsNullOrEmpty(CALLBACK_INTERFACE)) { switch (CALLBACK_INTERFACE) { case "HM/HMEvaluationPlan/PersonalApprove": result = PersonalApprove(DATA_ID); break; case "HM/HMRiskTask/PersonalApprove": result = PersonalApprove_HMRiskTask(DATA_ID); break; case "HM/HMRiskRecord/PersonalApprove": result = PersonalApprove_HMRiskRecord(DATA_ID); break; case "HM/HMHazardTask/PersonalApprove": result = PersonalApprove_HMHazardTask(DATA_ID); break; case "HM/HMHazardRecord/PersonalApprove": result = PersonalApprove_HMHazardRecord(DATA_ID); break; case "HM/HMEvaluateResult/PersonalApprove1": result = PersonalApprove1(DATA_ID); break; case "HM/HMEvaluateResult/PersonalApprove2": result = PersonalApprove2(DATA_ID); break; case "BS/BSRiskSubmit/DealEnd": result = DealEnd(DATA_ID); break; case "BS/BSRiskSubmit/Notice": result = Notice(DATA_ID); break; case "BS/BSRiskSubmitContentTemp/ApproveBackBS048": result = ApproveBackBS048(DATA_ID); break; case "BS/BSRiskSubmitDelayApply/DealEnd": result = DealEnd_BS_DelayApply(DATA_ID); break; case "BS/BSSafeCheck/CheckAuditEnd": result = CheckAuditEnd(DATA_ID); break; case "BS/BSSafeCheck/CheckPlanAuditEnd": result = CheckPlanAuditEnd(DATA_ID); break; case "FO/FOCrucialLicenseJob/BackUpdate": result = BackUpdate(DATA_ID); break; case "FO/FOCrucialLicenseJobOutsource/BackUpdate": result = BackUpdate_FOCrucialLicenseJobOutsource(DATA_ID); break; case "HM/HMCrucialTaskAnalysis/BackUpdate": result = BackUpdate_HMCrucialTaskAnalysis(DATA_ID); break; case "HM/HMJobtaskIdentify/BackUpdate": result = BackUpdate_HMJobtaskIdentify(DATA_ID); break; case "HM/HMLicenseAnalysis/BackUpdate": result = BackUpdate_HMLicenseAnalysis(DATA_ID); break; case "HM/HMOperationTaskDistinguishAnalyze/BackUpdate": result = BackUpdate_HMOperationTaskDistinguishAnalyze(DATA_ID); break; case "HM/HMOrdinaryTaskAnalysis/BackUpdate": result = BackUpdate_HMOrdinaryTaskAnalysis(DATA_ID); break; case "SC/SCMTMeeting/MeetingNoticeBack"://会议通知回调 result = PFApproveCallBackMTService.MeetingNoticeBack(DATA_ID); break; case "SC/SCMtMeetingMinutes/MeetingMinutesBack"://会议纪要回调 result = PFApproveCallBackMTService.MeetingMinutesBack(DATA_ID); break; case "SE/SEDepTrainPlan/departmentTrainPlanAgree"://安全教育模块部门培训计划通过 result = PFApproveCallBackSEService.departmentTrainPlanAgree(DATA_ID); break; case "SE/SEYearTrainPlan/yearTrainPlanAgree"://安全教育模块年度培训计划通过 result = PFApproveCallBackSEService.yearTrainPlanAgree(DATA_ID); break; case "OG/OGApproveRewardPunishmentReport/approveAndRewardAgree"://认可与奖励 result = PFApproveCallBackSEService.approveAndRewardAgree(DATA_ID); break; case "OG/OGSafePdtAssessPlanCheck/BackUpdate"://责任制考核方案审核 result = PFApproveCallBackSEService.safePdtAssessPlanCheck(DATA_ID); break; case "PT/PTIndicatorFormulation/BackUpdate"://方针与目标管理 result = BackUpdate_PTIndicatorFormulation(DATA_ID); break; case "PT/PTIndicatorFormulationDepartment/BackUpdate"://方针与目标管理 result = BackUpdate_PTIndicatorFormulationDepartment(DATA_ID); break; case "PT/PTIndicatorFormulationDepartment/BackUpdateYL"://方针与目标管理 result = BackUpdate_PTIndicatorFormulationDepartmentYL(DATA_ID); break; case "TI/TISafePdtCostRecord/RecordBack"://安全生产费用使用记录回调 result = PFApproveCallBackMTService.RecordBack(DATA_ID); break; case "AE/AEAccidentEventReport/EventBack"://安全生产费用使用记录回调 result = PFApproveCallBackMTService.EventBack(DATA_ID); break; case "AE/AEInvestigationRecord/LeaderCheck"://勘察记录组长审批完成后回调 result = PFApproveCallBackMTService.LeaderCheck(DATA_ID); break; case "AE/AEAccidentEventSurveyResult/EventResultBack"://事故事件调查结果审批回调 result = PFApproveCallBackMTService.EventResultBack(DATA_ID); break; case "PT/PTAssessmentPlanAudit/BackUpdate"://方针与目标管理 result = BackUpdate_PTAssessmentPlanAudit(DATA_ID); break; case "PT/PTAssessmentPlanAudit/BackUpdateYL"://方针与目标管理 result = BackUpdate_PTAssessmentPlanAuditYL(DATA_ID); break; case "PT/PTMonitorAssessment/BackUpdate"://方针与目标管理 result = BackUpdate_PTMonitorAssessment(DATA_ID); break; case "PE/PECorrectivePreventive/BackUpdate"://绩效测量与评估 result = BackUpdate_PECorrectivePreventive(DATA_ID); break; case "PE/PECorrectivePreventiveProcess/BackUpdate"://绩效测量与评估 result = BackUpdate_PECorrectivePreventiveProcess(DATA_ID); break; case "PE/PECorrectivePreventiveEvaluation/BackUpdate"://绩效测量与评估 result = BackUpdate_PECorrectivePreventiveEvaluation(DATA_ID); break; case "PE/PESafetyMonitorPlan/BackUpdate"://绩效测量与评估 result = BackUpdate_PESafetyMonitorPlan(DATA_ID); break; case "PE/PESafetyMonitorRecord/BackUpdate"://绩效测量与评估 result = BackUpdate_PESafetyMonitorRecord(DATA_ID); break; case "PE/PESafetyEvaluationRecord/BackUpdate"://绩效测量与评估 result = BackUpdate_PESafetyEvaluationRecord(DATA_ID); break; case "SC/SCStandardCreate/BackUpdate"://绩效测量与评估 result = BackUpdate_SCStandardCreate(DATA_ID); break; case "PR/PRDesignDocumentReview/BackUpdate"://绩效测量与评估 result = BackUpdate_PRDesignDocumentReview(DATA_ID); break; case "PR/PRLandslideRollstoneMonitor/BackUpdate"://绩效测量与评估 result = BackUpdate_PRLandslideRollstoneMonitor(DATA_ID); break; case "PR/PRExternalAssistanceApplication/BackUpdate"://绩效测量与评估 result = BackUpdate_PRExternalAssistanceApplication(DATA_ID); break; case "PR/PRExternalAcceptanceRecord/BackUpdate"://绩效测量与评估 result = BackUpdate_PRExternalAcceptanceRecord(DATA_ID); break; case "PR/PRMapProcessRecord/BackUpdate": result = BackUpdate_PRMapProcessRecord(DATA_ID); break; case "PR/PRSurveyRecord/BackUpdate": result = BackUpdate_PRSurveyRecord(DATA_ID); break; case "PR/PRChangeTaskImplement/BackUpdate": result = BackUpdate_PRChangeTaskImplement(DATA_ID); break; case "DM/DMDetectionInspectionRecord/BackUpdate": result = BackUpdate_DMDetectionInspectionRecord(DATA_ID); break; case "DM/DMDeviceApply/BackUpdate": result = BackUpdate_DMDeviceApply(DATA_ID); break; case "DM/DMDeviceScrap/BackUpdate": result = BackUpdate_DMDeviceScrap(DATA_ID); break; case "DM/DMDeviceIssue/BackUpdate": result = BackUpdate_DMDeviceIssue(DATA_ID); break; case "DM/DMDeviceCheck/BackUpdate": result = BackUpdate_DMDeviceCheck(DATA_ID); break; case "DM/DMDeviceRepair/BackUpdate": result = BackUpdate_DMDeviceRepair(DATA_ID); break; case "FO/FOJobEventRecord/BackUpdate": result = BackUpdate_FOJobEventRecord(DATA_ID); break; case "PE/PESafetyEvaluationPlan/BackUpdate": result = BackUpdate_PESafetyEvaluationPlan(DATA_ID); break; #region 职业卫生 case "OH/OHHealthExamPlan/PlanMasterBack"://绩效测量与评估 result = PFApproveCallBackMTService.PlanMasterBack(DATA_ID); break; #endregion #region 应急管理 case "CM/CMRspEstimate/EstimateBack"://绩效测量与评估 result = PFApproveCallBackMTService.EstimateBack(DATA_ID); break; case "CM/CMDrillPlan/DrillPlanEnd"://绩效测量与评估 result = PFApproveCallBackMTService.DrillPlanEnd(DATA_ID); break; case "CM/CMDrillPlan/DrillRecordEnd"://应急演练活动记录表 result = PFApproveCallBackMTService.DrillRecordEnd(DATA_ID); break; #endregion #region 机电管理 case "DM/DMDeviceMaintenanceCheck/Audit"://设备设施 维保 result = PFApproveCallBackMTService.Audit(DATA_ID); break; #endregion default: SysLogService.AddLog(APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, PFSysLogTypeEnum.CommonApproveCallBack, "PF119", "审批流回调方法未完善", "PFApproveCallBackService=>CallBack: " + CALLBACK_INTERFACE, DATA_ID); break; } } return result; } /// /// 添加审批流 (默认审批直接回调这个方法) /// /// /// /// public bool CallBack(string CALLBACK_INTERFACE, List listDATA_ID) { bool result = false; if (!string.IsNullOrEmpty(CALLBACK_INTERFACE)) { switch (CALLBACK_INTERFACE) { case "BS/BSRiskSubmit/DealEnd": for (int i = 0; i < listDATA_ID.Count; i++) { DealEnd(listDATA_ID[i]); } break; case "BS/BSRiskSubmit/Notice": for (int i = 0; i < listDATA_ID.Count; i++) { Notice(listDATA_ID[i]); } break; case "BS/BSRiskSubmitContentTemp/ApproveBackBS048": for (int i = 0; i < listDATA_ID.Count; i++) { ApproveBackBS048(listDATA_ID[i]); } break; case "BS/BSRiskSubmitDelayApply/DealEnd": for (int i = 0; i < listDATA_ID.Count; i++) { DealEnd_BS_DelayApply(listDATA_ID[i]); } break; case "BS/BSSafeCheck/CheckAuditEnd": for (int i = 0; i < listDATA_ID.Count; i++) { CheckAuditEnd(listDATA_ID[i]); } break; case "BS/BSSafeCheck/CheckPlanAuditEnd": for (int i = 0; i < listDATA_ID.Count; i++) { CheckPlanAuditEnd(listDATA_ID[i]); } break; case "FO/FOCrucialLicenseJob/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate(listDATA_ID[i]); } break; case "FO/FOCrucialLicenseJobOutsource/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_FOCrucialLicenseJobOutsource(listDATA_ID[i]); } break; case "HM/HMCrucialTaskAnalysis/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_HMCrucialTaskAnalysis(listDATA_ID[i]); } break; case "HM/HMEvaluateResult/PersonalApprove1": for (int i = 0; i < listDATA_ID.Count; i++) { PersonalApprove1(listDATA_ID[i]); } break; case "HM/HMEvaluateResult/PersonalApprove2": for (int i = 0; i < listDATA_ID.Count; i++) { PersonalApprove2(listDATA_ID[i]); } break; case "HM/HMEvaluationPlan/PersonalApprove": for (int i = 0; i < listDATA_ID.Count; i++) { PersonalApprove(listDATA_ID[i]); } break; case "HM/HMHazardRecord/PersonalApprove": for (int i = 0; i < listDATA_ID.Count; i++) { PersonalApprove_HMHazardRecord(listDATA_ID[i]); } break; case "HM/HMHazardTask/PersonalApprove": for (int i = 0; i < listDATA_ID.Count; i++) { PersonalApprove_HMHazardTask(listDATA_ID[i]); } break; case "HM/HMJobtaskIdentify/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_HMJobtaskIdentify(listDATA_ID[i]); } break; case "HM/HMLicenseAnalysis/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_HMLicenseAnalysis(listDATA_ID[i]); } break; case "HM/HMOperationTaskDistinguishAnalyze/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_HMOperationTaskDistinguishAnalyze(listDATA_ID[i]); } break; case "HM/HMOrdinaryTaskAnalysis/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_HMOrdinaryTaskAnalysis(listDATA_ID[i]); } break; case "HM/HMRiskRecord/PersonalApprove": for (int i = 0; i < listDATA_ID.Count; i++) { PersonalApprove_HMRiskRecord(listDATA_ID[i]); } break; case "HM/HMRiskTask/PersonalApprove": for (int i = 0; i < listDATA_ID.Count; i++) { PersonalApprove_HMRiskTask(listDATA_ID[i]); } break; case "SC/SCMTMeeting/MeetingNoticeBack"://会议通知回调 for (int i = 0; i < listDATA_ID.Count; i++) { PFApproveCallBackMTService.MeetingNoticeBack(listDATA_ID[i]); } break; case "SC/SCMtMeetingMinutes/MeetingMinutesBack"://会议纪要回调 for (int i = 0; i < listDATA_ID.Count; i++) { PFApproveCallBackMTService.MeetingMinutesBack(listDATA_ID[i]); } break; case "TI/TISafePdtCostRecord/RecordBack"://安全生产费用使用记录回调 for (int i = 0; i < listDATA_ID.Count; i++) { PFApproveCallBackMTService.RecordBack(listDATA_ID[i]); } break; case "AE/AEAccidentEventReport/EventBack"://安全生产费用使用记录回调 for (int i = 0; i < listDATA_ID.Count; i++) { PFApproveCallBackMTService.EventBack(listDATA_ID[i]); } break; case "AE/AEInvestigationRecord/LeaderCheck"://勘察记录组长审批完成后回调 for (int i = 0; i < listDATA_ID.Count; i++) { PFApproveCallBackMTService.LeaderCheck(listDATA_ID[i]); } break; case "AE/AEAccidentEventSurveyResult/EventResultBack"://事故事件调查结果审批回调回调 for (int i = 0; i < listDATA_ID.Count; i++) { PFApproveCallBackMTService.EventResultBack(listDATA_ID[i]); } break; case "PT/PTIndicatorFormulation/BackUpdate"://方针与目标管理 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PTIndicatorFormulation(listDATA_ID[i]); } break; case "PT/PTIndicatorFormulationDepartment/BackUpdate"://方针与目标管理 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PTIndicatorFormulationDepartment(listDATA_ID[i]); } break; case "PT/PTAssessmentPlanAudit/BackUpdate"://方针与目标管理 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PTAssessmentPlanAudit(listDATA_ID[i]); } break; case "PT/PTMonitorAssessment/BackUpdate"://方针与目标管理 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PTMonitorAssessment(listDATA_ID[i]); } break; case "PE/PECorrectivePreventive/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PECorrectivePreventive(listDATA_ID[i]); } break; case "PE/PECorrectivePreventiveProcess/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PECorrectivePreventiveProcess(listDATA_ID[i]); } break; case "PE/PECorrectivePreventiveEvaluation/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PECorrectivePreventiveEvaluation(listDATA_ID[i]); } break; case "PE/PESafetyMonitorPlan/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PESafetyMonitorPlan(listDATA_ID[i]); } break; case "PE/PESafetyMonitorRecord/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PESafetyMonitorRecord(listDATA_ID[i]); } break; case "PE/PESafetyEvaluationRecord/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PESafetyEvaluationRecord(listDATA_ID[i]); } break; case "SC/SCStandardCreate/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_SCStandardCreate(listDATA_ID[i]); } break; case "PR/PRDesignDocumentReview/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PRDesignDocumentReview(listDATA_ID[i]); } break; case "PR/PRLandslideRollstoneMonitor/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PRLandslideRollstoneMonitor(listDATA_ID[i]); } break; case "PR/PRExternalAssistanceApplication/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PRExternalAssistanceApplication(listDATA_ID[i]); } break; case "PR/PRExternalAcceptanceRecord/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PRExternalAcceptanceRecord(listDATA_ID[i]); } break; case "PR/PRMapProcessRecord/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PRMapProcessRecord(listDATA_ID[i]); } break; case "PR/PRSurveyRecord/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PRSurveyRecord(listDATA_ID[i]); } break; case "PR/PRChangeTaskImplement/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PRChangeTaskImplement(listDATA_ID[i]); } break; case "PE/PESafetyEvaluationPlan/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PESafetyEvaluationPlan(listDATA_ID[i]); } break; case "DM/DMDetectionInspectionRecord/BackUpdate"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_DMDetectionInspectionRecord(listDATA_ID[i]); } break; case "DM/DMDeviceApply/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_DMDeviceApply(listDATA_ID[i]); } break; case "DM/DMDeviceScrap/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_DMDeviceScrap(listDATA_ID[i]); } break; case "DM/DMDeviceIssue/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_DMDeviceIssue(listDATA_ID[i]); } break; case "DM/DMDeviceCheck/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_DMDeviceCheck(listDATA_ID[i]); } break; case "DM/DMDeviceRepair/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_DMDeviceRepair(listDATA_ID[i]); } break; case "FO/FOJobEventRecord/BackUpdate": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_FOJobEventRecord(listDATA_ID[i]); } break; case "PT/PTIndicatorFormulationDepartment/BackUpdateYL": for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PTIndicatorFormulationDepartmentYL(listDATA_ID[i]); } break; case "PT/PTAssessmentPlanAudit/BackUpdateYL"://方针与目标管理 for (int i = 0; i < listDATA_ID.Count; i++) { BackUpdate_PTAssessmentPlanAuditYL(listDATA_ID[i]); } break; #region 职业卫生 case "OH/OHHealthExamPlan/PlanMasterBack"://职业卫生 体检计划 人事部经理审批 for (int i = 0; i < listDATA_ID.Count; i++) { PFApproveCallBackMTService.PlanMasterBack(listDATA_ID[i]); } break; #endregion #region 应急管理 case "CM/CMRspEstimate/EstimateBack"://绩效测量与评估 for (int i = 0; i < listDATA_ID.Count; i++) { PFApproveCallBackMTService.EstimateBack(listDATA_ID[i]); } break; case "CM/CMDrillPlan/DrillPlanEnd"://年度应急演练计划表 审批结束 for (int i = 0; i < listDATA_ID.Count; i++) { PFApproveCallBackMTService.DrillPlanEnd(listDATA_ID[i]); } break; #endregion #region 机电管理 case "DM/DMDeviceMaintenanceCheck/Audit"://设备设施 维保 for (int i = 0; i < listDATA_ID.Count; i++) { PFApproveCallBackMTService.Audit(listDATA_ID[i]); } break; #endregion default: SysLogService.AddLog(APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, PFSysLogTypeEnum.CommonApproveCallBack, "PF119", "审批流回调方法未完善", "PFApproveCallBackService=> list CallBack: " + CALLBACK_INTERFACE, String.Join(',', listDATA_ID)); break; } //判断执行回调方法 } return result; } #region BS /// /// 隐患上报 审核通过 给每个通知负责人发送通知 /// /// /// private bool Notice(string id) { //给对应通知责任人发送待办 T_BS_RISK_SUBMIT_NOTICE entity = this.GetEntity(id, new string[] { "Nav_ListRiskSubmitContent.Nav_SafeCheckDetail", "Nav_ListRiskSubmitContent.Nav_User" }); List listMainConbinAdd = new List(); List listMainConbinQuestionAdd = new List(); List listMainConbinDepAdd = new List(); //更新对应的检查问题 List listSafecheckDetail = new List(); T_BS_SAFE_CHECK safeCheck = null; T_FM_DEPARTMENT depMainCheck = null; List listDepMainCheck = new List(); int delayDays = 0; var delays = GetEntity(e => e.QUESTION_LEVEL == entity.QUESTION_LEVEL); if (delays != null) { delayDays = delays.MAX_DELAY_DAYS; } else { switch (entity.QUESTION_LEVEL) { case (int)BSQuestionLevelEnum.重大: delayDays = (int)BSDelayDaysEnum.重大; break; case (int)BSQuestionLevelEnum.A: delayDays = (int)BSDelayDaysEnum.A; break; case (int)BSQuestionLevelEnum.B: delayDays = (int)BSDelayDaysEnum.B; break; case (int)BSQuestionLevelEnum.C: delayDays = (int)BSDelayDaysEnum.C; break; case (int)BSQuestionLevelEnum.D: delayDays = (int)BSDelayDaysEnum.D; break; default: break; } } List listContent = entity.Nav_ListRiskSubmitContent; //var sysFilter = new SystemCodeFilter(); //sysFilter.CodeType = (int)PFCodeRuleType.消息通知; //sysFilter.Count = listContent.Count; //sysFilter.OrgId = entity.ORG_ID; //var codes = CodeRuleService.NewGenSerial(sysFilter); //var codeList = codes.Split(new char[] { ',' }); string[] codeList = new string[listContent.Count]; string codeTemp = "YHTZ" + DateTime.Now.ToString("yyyyMMddHHmmss"); for (int j = 0; j < listContent.Count; j++) { codeList[j] = codeTemp + j; } //T_BS_RISK_SUBMIT entityMain = this.GetEntity(entity.RISK_SUBMIT_ID.Value); T_BS_RISK_SUBMIT entityMain = null; var listContentID = listContent.Select(e => e.ID); var listConts = GetEntities(e => e.RISK_SUBMIT_ID == entity.RISK_SUBMIT_ID.Value && !listContentID.Contains(e.ID) && !e.USER_ID.HasValue && e.NOTICEDATE.HasValue);//除了这单 别的都有分配通知责任人通知时间 if (listConts == null || !listConts.Any()) { entityMain = GetEntity(entity.RISK_SUBMIT_ID.Value); entityMain.SUBMITFINISHTIME = DateTime.Now; if (!entityMain.STARTTIME.HasValue) { entityMain.STARTTIME = entityMain.CREATE_TIME; } if (entityMain.STARTTIME.HasValue || entityMain.STARTTIME.Value.AddDays(1) > entityMain.SUBMITFINISHTIME) entityMain.ISSUBMITFINISHINTTIME = true; else entityMain.ISSUBMITFINISHINTTIME = false; } List listNotice = new List(); List listNoticePerson = new List(); T_BS_RISK_SUBMIT_NOTICE_PERSON temp = null; List listDataID = new List(); List listUserID = new List(); List listUserName = new List(); List listName = new List(); int i = 0; foreach (var item in listContent) { i++; item.CODE = entity.CODE + "_" + i.ToString(); item.NAME = "隐患整改通知:" + entity.NAME; item.LastDateSystem = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")).AddDays(delayDays); item.NOTICEDATE = DateTime.Now; item.RiskContentState = (int)RiskContentState.Notice; //隐患上报 问题 通知责任人 相同 同一个通知 (后续分配整改信息) temp = listNoticePerson.FirstOrDefault(x => x.USER_ID == item.USER_ID); if (temp == null) { temp = new T_BS_RISK_SUBMIT_NOTICE_PERSON(); temp.ID = Guid.NewGuid(); temp.USER_ID = item.USER_ID.Value; temp.ORG_ID = item.ORG_ID; temp.NAME = item.NAME; temp.CODE = item.CODE; temp.RISK_SUBMIT_ID = item.RISK_SUBMIT_ID; temp.RISK_SUBMIT_NOTICE_ID = item.RISK_SUBMIT_NOTICE_ID; temp.QUESTION_LEVEL = item.QUESTION_LEVEL; listNoticePerson.Add(temp); listDataID.Add(temp.ID); listUserID.Add(temp.USER_ID); listUserName.Add(item.Nav_User.NAME); listName.Add(temp.NAME); } item.RISK_SUBMIT_NOTICE_PERSON_ID = temp.ID;//个人通知ID绑定明细 if (item.Nav_SafeCheckDetail != null) { if (item.Nav_SafeCheckDetail.CHECKRESULT.HasValue && item.Nav_SafeCheckDetail.CHECKRESULT == 30) { //添加安全检查库信息 #region MyRegion if (safeCheck == null) { safeCheck = GetEntity(item.Nav_SafeCheckDetail.SAFE_CHECK_ID); } T_BS_CHECK_QUESTION ques = new T_BS_CHECK_QUESTION(); ques.ID = Guid.NewGuid(); ques.ORG_ID = item.ORG_ID; ques.DESCREPTION = item.DESCREPTION; ques.DEMAND = item.DEMAND; ques.IS_DELETED = false; ques.ENABLE_STATUS = 0; ques.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; ques.QUESTION_LEVEL = (BSQuestionLevelEnum)(item.Nav_SafeCheckDetail.QUESTION_LEVEL.HasValue ? item.Nav_SafeCheckDetail.QUESTION_LEVEL.Value : 20); listMainConbinQuestionAdd.Add(ques); //添加隐患库 //检查问题 手动输入 没有 整改建议与措施 不能入库 T_BS_CHECK_MAIN modelAdd = new T_BS_CHECK_MAIN(); modelAdd.ID = Guid.NewGuid(); modelAdd.ISRISK = true; modelAdd.CHECKOBJECT = safeCheck.CHECKOBJECT.Value; modelAdd.CHECK_PROJECT_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_ID; modelAdd.CHECK_QUESTION_ID = ques.ID; modelAdd.CHECKCONTENT = item.CHECKCONTENT; modelAdd.CHECKPROOF = item.Nav_SafeCheckDetail.CHECKPROOF; modelAdd.QUESTION_LEVEL = item.Nav_SafeCheckDetail.QUESTION_LEVEL.HasValue ? item.Nav_SafeCheckDetail.QUESTION_LEVEL.Value : 20; if (modelAdd.QUESTION_LEVEL == 10) modelAdd.SERIOUS_RISK = 1; else modelAdd.SERIOUS_RISK = 0; modelAdd.CHECK_TYPE_ID = safeCheck.CHECK_TYPE_ID; modelAdd.CHECK_TYPE_LEVEL_ID = safeCheck.CHECK_TYPE_LEVEL_ID; modelAdd.RISK_AREA_ID = item.RISK_AREA_ID; modelAdd.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; modelAdd.NUM = 0; modelAdd.IS_DELETED = false; modelAdd.ORG_ID = item.ORG_ID; //modelAdd.FORM_ID = item.FORM_ID; modelAdd.CREATE_TIME = DateTime.Now; modelAdd.CREATER_ID = safeCheck.USERID_DOPLAN.Value; //modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; //modelAdd.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID.Value; modelAdd.CHECK_PROJECT_CATEGORY_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_CATEGORY_ID.Value; depMainCheck = listDepMainCheck.FirstOrDefault(e => e.ID == item.Nav_SafeCheckDetail.DEPARTMENT_ID); if (depMainCheck == null) { depMainCheck = GetEntity(item.Nav_SafeCheckDetail.DEPARTMENT_ID.Value); listDepMainCheck.Add(depMainCheck); } BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; //wyw1114-1 //modelAdd.DEPARTMENT_ID = item.DEPARTMENT_ID; if (item.CREATER_ID == depMainCheck.USER_ID) { if (depMainCheck.DEPARTMENT_TYPE == 2) { RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; } } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; } listMainConbinDepAdd.Add(new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelAdd.ID, ORG_ID = modelAdd.ORG_ID, DEPARTMENT_ID = item.DEPARTMENT_ID, RESPONOBJECT = RESPONOBJECT }); listMainConbinAdd.Add(modelAdd); //更新对应的检查问题 item.Nav_SafeCheckDetail.CHECK_MAIN_ID = modelAdd.ID; listSafecheckDetail.Add(item.Nav_SafeCheckDetail); #endregion } else if (!item.Nav_SafeCheckDetail.CHECK_MAIN_ID.HasValue && !item.Nav_SafeCheckDetail.CHECK_QUESTION_ID.HasValue) { #region MyRegion if (safeCheck == null) { safeCheck = GetEntity(item.Nav_SafeCheckDetail.SAFE_CHECK_ID); } //添加隐患库 //检查问题 手动输入 没有 整改建议与措施 不能入库 T_BS_CHECK_MAIN modelAdd = new T_BS_CHECK_MAIN(); modelAdd.ID = Guid.NewGuid(); modelAdd.ISRISK = true; modelAdd.CHECKOBJECT = safeCheck.CHECKOBJECT.Value; modelAdd.CHECK_PROJECT_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_ID; modelAdd.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID; modelAdd.CHECKCONTENT = item.CHECKCONTENT; modelAdd.CHECKPROOF = item.Nav_SafeCheckDetail.CHECKPROOF; modelAdd.QUESTION_LEVEL = item.Nav_SafeCheckDetail.QUESTION_LEVEL.HasValue ? item.Nav_SafeCheckDetail.QUESTION_LEVEL.Value : 20; if (modelAdd.QUESTION_LEVEL == 10) modelAdd.SERIOUS_RISK = 1; else modelAdd.SERIOUS_RISK = 0; modelAdd.CHECK_TYPE_ID = safeCheck.CHECK_TYPE_ID; modelAdd.CHECK_TYPE_LEVEL_ID = safeCheck.CHECK_TYPE_LEVEL_ID; modelAdd.RISK_AREA_ID = item.RISK_AREA_ID; modelAdd.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; modelAdd.NUM = 0; modelAdd.IS_DELETED = false; modelAdd.ORG_ID = item.ORG_ID; //modelAdd.FORM_ID = item.FORM_ID; modelAdd.CREATE_TIME = DateTime.Now; modelAdd.CREATER_ID = safeCheck.USERID_DOPLAN.Value; //modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; //modelAdd.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID.Value; modelAdd.CHECK_PROJECT_CATEGORY_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_CATEGORY_ID.Value; depMainCheck = listDepMainCheck.FirstOrDefault(e => e.ID == item.Nav_SafeCheckDetail.DEPARTMENT_ID); if (depMainCheck == null) { depMainCheck = GetEntity(item.Nav_SafeCheckDetail.DEPARTMENT_ID.Value); listDepMainCheck.Add(depMainCheck); } BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; //wyw1114-1 //modelAdd.DEPARTMENT_ID = item.DEPARTMENT_ID; if (item.CREATER_ID == depMainCheck.USER_ID) { if (depMainCheck.DEPARTMENT_TYPE == 2) { RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; } } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; } listMainConbinDepAdd.Add(new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelAdd.ID, ORG_ID = modelAdd.ORG_ID, DEPARTMENT_ID = item.DEPARTMENT_ID, RESPONOBJECT = RESPONOBJECT }); listMainConbinAdd.Add(modelAdd); //更新对应的检查问题 item.Nav_SafeCheckDetail.CHECK_MAIN_ID = modelAdd.ID; listSafecheckDetail.Add(item.Nav_SafeCheckDetail); #endregion } } #region MyRegion //if (item.Nav_SafeCheckDetail != null && !item.Nav_SafeCheckDetail.CHECK_MAIN_ID.HasValue && !item.Nav_SafeCheckDetail.CHECK_QUESTION_ID.HasValue) //{ // //组合的安全检查 完善数据库 // #region MyRegion // if (safeCheck == null) // { // safeCheck = GetEntity(item.Nav_SafeCheckDetail.SAFE_CHECK_ID); // } // //添加隐患库 // //检查问题 手动输入 没有 整改建议与措施 不能入库 // T_BS_CHECK_MAIN modelAdd = new T_BS_CHECK_MAIN(); // modelAdd.ID = Guid.NewGuid(); // modelAdd.ISRISK = true; // modelAdd.CHECKOBJECT = safeCheck.CHECKOBJECT.Value; // modelAdd.CHECK_PROJECT_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_ID; // modelAdd.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID; // modelAdd.CHECKCONTENT = item.CHECKCONTENT; // modelAdd.CHECKPROOF = item.Nav_SafeCheckDetail.CHECKPROOF; // modelAdd.QUESTION_LEVEL = item.Nav_SafeCheckDetail.QUESTION_LEVEL.HasValue ? item.Nav_SafeCheckDetail.QUESTION_LEVEL.Value : 20; // if (modelAdd.QUESTION_LEVEL == 10) // modelAdd.SERIOUS_RISK = 1; // else // modelAdd.SERIOUS_RISK = 0; // modelAdd.CHECK_TYPE_ID = safeCheck.CHECK_TYPE_ID; // modelAdd.CHECK_TYPE_LEVEL_ID = safeCheck.CHECK_TYPE_LEVEL_ID; // modelAdd.RISK_AREA_ID = item.RISK_AREA_ID; // modelAdd.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; // modelAdd.NUM = 0; // modelAdd.IS_DELETED = false; // modelAdd.ORG_ID = item.ORG_ID; // //modelAdd.FORM_ID = item.FORM_ID; // modelAdd.CREATE_TIME = DateTime.Now; // modelAdd.CREATER_ID = safeCheck.USERID_DOPLAN.Value; // //modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; // //modelAdd.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID.Value; // modelAdd.CHECK_PROJECT_CATEGORY_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_CATEGORY_ID.Value; // depMainCheck = listDepMainCheck.FirstOrDefault(e => e.ID == item.Nav_SafeCheckDetail.DEPARTMENT_ID); // if (depMainCheck == null) // { // depMainCheck = GetEntity(item.Nav_SafeCheckDetail.DEPARTMENT_ID.Value); // listDepMainCheck.Add(depMainCheck); // } // BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; // //wyw1114-1 // //modelAdd.DEPARTMENT_ID = item.DEPARTMENT_ID; // if (item.CREATER_ID == depMainCheck.USER_ID) // { // if (depMainCheck.DEPARTMENT_TYPE == 2) // { // RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; // } // else // { // RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; // } // } // else // { // RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; // } // listMainConbinDepAdd.Add(new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() // { // ID = Guid.NewGuid(), // MAIN_ID = modelAdd.ID, // ORG_ID = modelAdd.ORG_ID, // DEPARTMENT_ID = item.DEPARTMENT_ID, // RESPONOBJECT = RESPONOBJECT // }); // listMainConbinAdd.Add(modelAdd); // //更新对应的检查问题 // item.Nav_SafeCheckDetail.CHECK_MAIN_ID = modelAdd.ID; // listSafecheckDetail.Add(item.Nav_SafeCheckDetail); // #endregion //} #endregion } //更新日期 //给隐患上报隐患通知责任人 发送待办 listNotice = NotificationTaskService.InsertUserNoticeTaskModels(codeList, listName, listDataID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "BS042"); //if (listNoticePerson != null && listNoticePerson.Count > 0) //{ // foreach (var item in listNoticePerson) // { // item.Nav_User = null; // } //} UnifiedCommit(() => { if (entityMain != null)//审批结束 如果隐患上报 全部明细都审批完成 登记完成时间 UpdateEntityNoCommit(entityMain); if (listNoticePerson.Count > 0) BantchSaveEntityNoCommit(listNoticePerson); if (listContent.Count > 0) BantchUpdateEntityNoCommit(listContent); if (listNotice.Count > 0) BantchSaveEntityNoCommit(listNotice); if (listMainConbinAdd.Count > 0)//确定检查问题 添加安全检查记录 BantchSaveEntityNoCommit(listMainConbinAdd); if (listMainConbinDepAdd.Count > 0)//确定检查问题 添加安全检查记录 BantchSaveEntityNoCommit(listMainConbinDepAdd); if (listMainConbinQuestionAdd.Count > 0)//确定检查问题 添加检查问题 BantchSaveEntityNoCommit(listMainConbinQuestionAdd); if (listSafecheckDetail.Count > 0)//确定检查问题 添加安全检查记录 BantchUpdateEntityNoCommit(listSafecheckDetail); }); return true; } /// /// 隐患上报 完成 修改各种状态 完善隐患库 /// /// /// private bool DealEnd(string id) { var deal = GetEntity(id, new string[] { "Nav_Submit.Nav_ListRiskSubmitContent", "Nav_Submit.Nav_ListRiskSubmitContent.Nav_SafeCheck", "Nav_SubmitContent.Nav_SafeCheckDetail", "Nav_SubmitContent.Nav_CheckMain", "Nav_SubmitContent.Nav_Question", "Nav_SubmitContent.Nav_Contents" }); deal.DEALSITUATION = (int)DealSituation.End;//结束 T_BS_RISK_SUBMIT subModel = deal.Nav_Submit; List listContent = subModel.Nav_ListRiskSubmitContent; //如果是手动上报 都是选择检查问题 不存在隐患入库 var content = deal.Nav_SubmitContent; //deal.Nav_SubmitContent = null;//不能清空 否则RISK_SUBMIT_CONTENT_ID 会被清空 var modelNoOK = listContent.FirstOrDefault(e => e.ID != content.ID && (!e.ISBACK.HasValue || !e.ISBACK.Value) && e.RiskContentState.HasValue && e.RiskContentState != (int)RiskContentState.OK && e.RiskContentState != (int)RiskContentState.BackOK); if (modelNoOK == null) { subModel.ISORDEREND = true; } content.OKDATE = DateTime.Now; content.RiskContentState = (int)RiskContentState.OK; if (!content.LastDateUser.HasValue || content.LastDateUser.Value > content.OKDATE) content.ISFINISHINTTIME = true; else content.ISFINISHINTTIME = false; var check = content.Nav_CheckMain; //根据隐患上报中检查结果 //未发现此问题 无需隐患上报 //以问题描述一致 无需完善隐患库 //其他 手动填写 需要完善隐患库 //书写 隐患待上报 内容 发送给安环部对应的人 标准化描述 再审批流 入库 //检查问题 T_BS_CHECK_QUESTION modelQues = null; T_BS_CHECK_MAIN modelCheck = null; T_BS_CHECK_CONTENT_MAIN_DEPARTMENT mainDep = null; if (content.Nav_SafeCheckDetail == null) { if (content.CHECK_MAIN_ID.HasValue) { #region 旧版 var checkMain = GetEntity(content.CHECK_MAIN_ID.Value); if (checkMain.CHECK_TYPE_ID == subModel.CHECK_TYPE_ID && checkMain.CHECK_TYPE_LEVEL_ID == subModel.CHECK_TYPE_LEVEL_ID && checkMain.CHECK_QUESTION_ID == content.CHECK_QUESTION_ID && checkMain.RISK_AREA_ID == content.RISK_AREA_ID) { //全部都一样 } else { //手动隐患上报 //选择 检查问题 //填写检查依据、检查区域 modelCheck = new T_BS_CHECK_MAIN(); modelCheck.ID = Guid.NewGuid(); modelCheck.CHECK_QUESTION_ID = content.CHECK_QUESTION_ID; modelCheck.CHECKPROOF = content.PROOF;//检查依据 modelCheck.QUESTION_LEVEL = content.QUESTION_LEVEL; modelCheck.SERIOUS_RISK = (content.QUESTION_LEVEL == (int)BSQuestionLevelEnum.重大) ? 1 : 0; modelCheck.CHECK_TYPE_ID = subModel.CHECK_TYPE_ID; modelCheck.CHECK_TYPE_LEVEL_ID = subModel.CHECK_TYPE_LEVEL_ID; modelCheck.RISK_AREA_ID = content.RISK_AREA_ID; modelCheck.CHECKOBJECT = content.Nav_SafeCheck.CHECKOBJECT.Value; modelCheck.CHECK_PROJECT_ID = content.CHECK_PROJECT_ID; modelCheck.CHECKCONTENT = content.CHECKCONTENT; modelCheck.CHECK_PROJECT_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; modelCheck.NUM = content.CHECK_MAIN_ID != null ? content.Nav_CheckMain.NUM : 0; modelCheck.ENABLE_STATUS = (int)FMEnableStatusEnum.启用; modelCheck.IS_DELETED = false; modelCheck.ORG_ID = deal.ORG_ID; //modelCheck.ENTITY_ORG_TPYE = content.Nav_CheckMain.ENTITY_ORG_TPYE; //modelCheck.FORM_ID = content.Nav_CheckMain.FORM_ID; //modelCheck.FLOW_STATUS = content.Nav_CheckMain.FLOW_STATUS; //modelCheck.FLOW_SEND_STATUS = content.Nav_CheckMain.FLOW_SEND_STATUS; //modelCheck.FLOW_ID = content.Nav_CheckMain.FLOW_ID; modelCheck.CREATE_TIME = DateTime.Now; modelCheck.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; //modelCheck.MODIFY_TIME = content.Nav_CheckMain.MODIFY_TIME; //modelCheck.MODIFIER_ID = content.Nav_CheckMain.MODIFIER_ID; modelCheck.ISRISK = true; modelCheck.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; var dep = GetEntity(content.DEPARTMENT_ID.Value); if (dep.USER_ID == content.USER_ID) { if (dep.DEPARTMENT_TYPE == 2) { RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; } } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; } mainDep = new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelCheck.ID, ORG_ID = modelCheck.ORG_ID, DEPARTMENT_ID = content.DEPARTMENT_ID, RESPONOBJECT = RESPONOBJECT }; } #endregion } else { #region 新版 BS060 //检查内容 检查问题 整改建议与措施 modelCheck = new T_BS_CHECK_MAIN(); modelCheck.ID = Guid.NewGuid(); modelCheck.CHECK_QUESTION_ID = content.CHECK_QUESTION_ID; modelCheck.CHECKPROOF = content.PROOF;//检查依据 modelCheck.QUESTION_LEVEL = content.QUESTION_LEVEL; modelCheck.SERIOUS_RISK = (content.QUESTION_LEVEL == (int)BSQuestionLevelEnum.重大) ? 1 : 0; modelCheck.CHECK_TYPE_ID = subModel.CHECK_TYPE_ID; modelCheck.CHECK_TYPE_LEVEL_ID = subModel.CHECK_TYPE_LEVEL_ID; modelCheck.RISK_AREA_ID = content.RISK_AREA_ID; modelCheck.CHECKOBJECT = (int)content.Nav_Contents.CHECKOBJECT;//.Nav_SafeCheck.CHECKOBJECT.Value; modelCheck.CHECK_PROJECT_ID = content.CHECK_PROJECT_ID; modelCheck.CHECKCONTENT = content.CHECKCONTENT; modelCheck.CHECK_PROJECT_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; modelCheck.NUM = 1; modelCheck.ENABLE_STATUS = (int)FMEnableStatusEnum.启用; modelCheck.IS_DELETED = false; modelCheck.ORG_ID = deal.ORG_ID; modelCheck.CREATE_TIME = DateTime.Now; modelCheck.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; modelCheck.ISRISK = true; modelCheck.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; var dep = GetEntity(content.DEPARTMENT_ID.Value); if (dep.USER_ID == content.USER_ID) { if (dep.DEPARTMENT_TYPE == 2) { RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; } } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; } mainDep = new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelCheck.ID, ORG_ID = modelCheck.ORG_ID, DEPARTMENT_ID = content.DEPARTMENT_ID, RESPONOBJECT = RESPONOBJECT }; #endregion } } else if (content.Nav_SafeCheckDetail.CHECKRESULT == (int)CHECKRESULTEnum.Same) { //安全检查 如果是 与问题描述一致 也不存在此问题 //无需 完善检查问题 } else { //安全检查 结果 其他 隐患上报 隐患入库 //检查问题描述 检查依据 检查等级 是否重大隐患 根据页面数据赖 //检查区域等 根据检查问题来 //检查问题 modelQues = new T_BS_CHECK_QUESTION(); modelQues.ID = Guid.NewGuid(); modelQues.ORG_ID = deal.ORG_ID; modelQues.DESCREPTION = content.DESCREPTION;//问题描述 modelQues.DEMAND = content.Nav_Question.DEMAND;//整改建议与措施 modelQues.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; modelQues.QUESTION_LEVEL = (BSQuestionLevelEnum)content.QUESTION_LEVEL; modelCheck = new T_BS_CHECK_MAIN(); modelCheck.ID = Guid.NewGuid(); modelCheck.CHECK_QUESTION_ID = modelQues.ID; modelCheck.CHECKPROOF = content.PROOF;//检查依据 modelCheck.QUESTION_LEVEL = content.QUESTION_LEVEL; modelCheck.SERIOUS_RISK = (content.QUESTION_LEVEL == (int)BSQuestionLevelEnum.重大) ? 1 : 0; //var deal = GetEntity(id, new string[] { "Nav_Submit.Nav_ListRiskSubmitContent", "Nav_SubmitContent.Nav_SafeCheckDetail.Nav_CheckMain", "Nav_SubmitContent.Nav_Question" }); modelCheck.CHECKOBJECT = content.Nav_SafeCheck.CHECKOBJECT.Value; modelCheck.CHECK_PROJECT_ID = content.CHECK_PROJECT_ID; modelCheck.CHECKCONTENT = content.CHECKCONTENT; modelCheck.CHECK_TYPE_ID = content.Nav_SafeCheck.CHECK_TYPE_ID; modelCheck.CHECK_TYPE_LEVEL_ID = content.Nav_SafeCheck.CHECK_TYPE_LEVEL_ID; modelCheck.RISK_AREA_ID = content.RISK_AREA_ID; modelCheck.ENABLE_STATUS = (int)FMEnableStatusEnum.启用; modelCheck.NUM = content.CHECK_MAIN_ID != null ? content.Nav_CheckMain.NUM : 0; modelCheck.IS_DELETED = false; modelCheck.ORG_ID = deal.ORG_ID; //modelCheck.ENTITY_ORG_TPYE = content.Nav_CheckMain.ENTITY_ORG_TPYE; //modelCheck.FORM_ID = content.Nav_CheckMain.FORM_ID; //modelCheck.FLOW_STATUS = content.Nav_CheckMain.FLOW_STATUS; //modelCheck.FLOW_SEND_STATUS = content.Nav_CheckMain.FLOW_SEND_STATUS; //modelCheck.FLOW_ID = content.Nav_CheckMain.FLOW_ID; modelCheck.CREATE_TIME = DateTime.Now; modelCheck.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; //modelCheck.MODIFY_TIME = content.Nav_CheckMain.MODIFY_TIME; //modelCheck.MODIFIER_ID = content.Nav_CheckMain.MODIFIER_ID; modelCheck.CHECK_PROJECT_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; modelCheck.ISRISK = true; modelCheck.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; //wyw1114-1 //modelCheck.DEPARTMENT_ID = content.DEPARTMENT_ID; BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; var dep = GetEntity(content.DEPARTMENT_ID.Value); if (dep.USER_ID == content.USER_ID) { if (dep.DEPARTMENT_TYPE == 2) { RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; } } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; } mainDep = new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelCheck.ID, ORG_ID = modelCheck.ORG_ID, DEPARTMENT_ID = content.DEPARTMENT_ID, RESPONOBJECT = RESPONOBJECT }; } if (modelCheck != null && modelCheck.CHECKOBJECT == 0 && deal.Nav_Submit != null && deal.Nav_Submit.CHECKOBJECT.HasValue) { modelCheck.CHECKOBJECT = (int)deal.Nav_Submit.CHECKOBJECT.Value; } UnifiedCommit(() => { UpdateEntityNoCommit(deal);//修改状态 审批结束 if (subModel.ISORDEREND)//隐患上报单 是否完成 UpdateEntityNoCommit(subModel); UpdateEntityNoCommit(content);//隐患上报内容明细 if (modelQues != null) UpdateEntityNoCommit(modelQues); if (modelCheck != null) UpdateEntityNoCommit(modelCheck); if (mainDep != null) UpdateEntityNoCommit(mainDep); }); return true; } /// /// 隐患上报详情待入库 审批回调 /// api/BS/BSRiskSubmit/DealEnd /// /// /// private bool ApproveBackBS048(string id) { //问题ID 判断检查问题描述 整改建议与措施 //如果不完全一致 添加问题 修改问题ID //入库 Guid idGuid = new Guid(id); T_BS_RISK_SUBMIT_CONTENT_TEMP model = GetEntity(idGuid, new string[] { "Nav_CheckQuestion" }); T_BS_CHECK_QUESTION modelQ = GetEntity(e => e.DEMAND == model.DEMAND && e.DESCREPTION == model.DESCREPTION); bool isNeedInsertQuestion = false; bool isNeedInsertMain = false; if (modelQ == null) { isNeedInsertQuestion = true; //添加 问题 modelQ = new T_BS_CHECK_QUESTION(); modelQ.DEMAND = model.DEMAND; modelQ.DESCREPTION = model.DESCREPTION; modelQ.IS_DELETED = false; modelQ.ID = Guid.NewGuid(); modelQ.NUM = 0; modelQ.ORG_ID = model.ORG_ID; modelQ.ENABLE_STATUS = (int)FMEnableStatusEnum.启用; model.CHECK_QUESTION_ID = modelQ.ID; } else if (modelQ.IS_DELETED) { modelQ.IS_DELETED = false; model.CHECK_QUESTION_ID = modelQ.ID; } T_BS_CHECK_MAIN modelInsert = new T_BS_CHECK_MAIN(); if (isNeedInsertQuestion) { isNeedInsertMain = true; } else { var CheckMain = GetEntity(e => e.CHECKCONTENT == model.CHECKCONTENT && e.CHECKCONTENT == model.CHECKCONTENT && e.CHECK_QUESTION_ID == model.CHECK_QUESTION_ID); if (CheckMain == null) isNeedInsertMain = true; } if (isNeedInsertMain) { modelInsert.ID = model.ID; modelInsert.CHECKOBJECT = model.CHECKOBJECT; modelInsert.CHECK_PROJECT_ID = model.CHECK_PROJECT_ID; modelInsert.CHECK_QUESTION_ID = isNeedInsertQuestion ? modelQ.ID : model.CHECK_QUESTION_ID; //如果有添加问题 modelInsert.CHECKCONTENT = model.CHECKCONTENT; modelInsert.CHECKPROOF = model.CHECKPROOF; modelInsert.QUESTION_LEVEL = model.QUESTION_LEVEL; modelInsert.SERIOUS_RISK = model.SERIOUS_RISK; modelInsert.CHECK_TYPE_ID = model.CHECK_TYPE_ID; modelInsert.CHECK_TYPE_LEVEL_ID = model.CHECK_TYPE_LEVEL_ID; modelInsert.RISK_AREA_ID = model.RISK_AREA_ID; modelInsert.ENABLE_STATUS = (int)FMEnableStatusEnum.启用; modelInsert.NUM = 0; modelInsert.IS_DELETED = false; modelInsert.ORG_ID = model.ORG_ID; //modelInsert.ENTITY_ORG_TPYE =model. ; //modelInsert.FORM_ID =model. ; //modelInsert.FLOW_STATUS=model. ; //modelInsert.FLOW_SEND_STATUS=model. ; //modelInsert.FLOW_ID =model. ; //modelInsert.CREATE_TIME =model. ; //modelInsert.MODIFY_TIME =model. ; //modelInsert.CREATER_ID =model. ; //modelInsert.MODIFIER_ID =model. ; modelInsert.CHECK_PROJECT_PROJECT_CATEGORY_ID = model.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelInsert.ISRISK = true; } model.ISINSERT = true;//反正都入库 model.ORDERTYPE = OrderType.end; model.Nav_CheckQuestion = null; UnifiedCommit(() => { UpdateEntityNoCommit(model);//更新中间信息 if (isNeedInsertQuestion) UpdateEntityNoCommit(modelQ);//添加问题 if (isNeedInsertMain) UpdateEntityNoCommit(modelInsert);//隐患入库 }); return true; } /// /// 延期申请 完成 修改状态、最后完成时间 给验收人发送通知 /// api/BS/BSRiskSubmit/DealEnd /// /// /// private bool DealEnd_BS_DelayApply(string id) { var entity = GetEntity(id, new string[] { "Nav_ListApplyDetail.Nav_SubmitContent.Nav_UserCheck" }); entity.OPERARTETYPE = (int)OperateType.Check; //修改记录信息 状态 最后完成时间 //给验收人发送通知 var listContent = entity.Nav_ListApplyDetail; List listNotice = new List(); List listBackAll = new List(); List listRiskContent = new List(); List listBack = null; List listCheckUserID = new List(); foreach (var item in listContent) { if (item.IS_DELETED) { continue; } T_BS_RISK_SUBMIT_CONTENT subContent = item.Nav_SubmitContent; //自动生成的 if (subContent.RiskContentState == (int)RiskContentState.OKNotBack || subContent.RiskContentState == (int)RiskContentState.ReportedDelay) { BaseFilter filter = null; //如果是审批退回 //同时修改 退回自动新增的隐患上报 //审批退回 自动生成的单 状态为 【已修改落实整改人 ActualDealChange = 32】 listBack = this.GetEntities(e => e.PARENTID.HasValue && e.PARENTID.Value == subContent.ID && e.RiskContentState.HasValue && e.RiskContentState == (int)RiskContentState.ActualDealChange && e.ACTUAL_DEAL_USER_ID.HasValue && e.ACTUAL_DEAL_USER_ID.Value == subContent.ACTUAL_DEAL_USER_ID, filter, null).ToList(); if (listBack != null && listBack.Count > 0) { foreach (var item2 in listBack) { item2.LastDateUser = subContent.LastDateSystem; } listBackAll.AddRange(listBack); } } subContent.RiskContentState = (int)RiskContentState.ReportedDelay; subContent.LastDateUser = item.LastDateApply; listRiskContent.Add(subContent); item.CHCEKUSERID = subContent.CHECK_USER_ID;//指定验收人 if (!listCheckUserID.Contains(subContent.CHECK_USER_ID.Value)) { var notice = NotificationTaskService.InsertUserNoticeTaskModel("延期整改通知单:" + entity.NAME.Replace("延期申请:", ""), entity.ID, entity.ORG_ID, subContent.CHECK_USER_ID.Value, subContent.Nav_UserCheck.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "BS046_SHOWPRINT"); listNotice.Add(notice); } } //修改 model UnifiedCommit(() => { UpdateEntityNoCommit(entity);//修改状态 BantchUpdateEntityNoCommit(listContent);//修改整改落实人 BantchUpdateEntityNoCommit(listRiskContent);//修改上报详情整改期限、状态 if (listBackAll != null && listBackAll.Count > 0) BantchUpdateEntityNoCommit(listBackAll);//修改 自动生成的整改单 //if (notice != null)//发送通知 // UpdateEntityNoCommit(notice); if (listNotice.Count > 0)//发送通知 { BantchSaveEntityNoCommit(listNotice); } }); return true; } /// /// 安全检查线下完成后进入审批 审批流回调 /// /// /// private bool CheckAuditEnd(string id) { //弃用具体看 CheckAuditEndNwe var entity = GetEntity(id, new string[] { "Nav_ListSafeCheckDetail" }); if (!entity.PLAN_SET_ID.HasValue || !entity.CHECKTIME.HasValue || entity.CHECKTIME.Value.Date == DateTime.Now.Date) //同一天 { entity.ISFINISHINTTIME = true; } else { var modelPlanset = GetEntity(entity.PLAN_SET_ID.Value); if (modelPlanset == null) { entity.ISFINISHINTTIME = true; } else { DateTime dtLast = SafeCheckService.GetEndTime((BSPLANCHECKFREQUENCYEnum)modelPlanset.PLANCHECKFREQUENCY, modelPlanset.CHECKTIME);//最迟时间 if (!entity.ISFINISHINTTIME && DateTime.Now <= dtLast) { entity.ISFINISHINTTIME = true; } } } // 1、审批记录单 判断审批结果 修改安全检查表制定的单审批状态 T_PF_APPROVE modelApprove = this.GetEntity(e => e.DATA_ID == Guid.Parse(id) && e.APPROVE_CODE == "BS034_SHOWPRINT"); if (modelApprove.APPROVE_STATUS == 10) entity.STATUCHECK = (int)HMAuditStatusEnmu.归档; //已完成 else if (modelApprove.APPROVE_STATUS == 20) entity.STATUCHECK = (int)HMAuditStatusEnmu.审批驳回; //已驳回 //组合库 List listCheckMain = new List(); List listCheckMainDep = new List(); List listCheckDetail = new List(); List listUpdateMain = new List(); List checkMainChangeAll = new List();//所有被修改的检查库 var checkMainChange = entity.Nav_ListSafeCheckDetail.Where(e => e.CHECK_MAIN_ID.HasValue && e.ISMAINCHANGE); if (checkMainChange != null && checkMainChange.Any()) { List listMainID = checkMainChange.Select(e => e.CHECK_MAIN_ID.Value).ToList(); checkMainChangeAll = GetEntities(e => listMainID.Contains(e.ID), null, new string[] { "Nav_ListMainDep" }).ToList(); } List listDepMainCheck = new List(); T_FM_DEPARTMENT depMainCheck = null; T_FM_DEPARTMENT depMade = null;//制表人 所在组织 //可能和安全隐患对接 foreach (var item in entity.Nav_ListSafeCheckDetail) { if (entity.RISKSTATE == 0 && item.CHECKRESULT.HasValue && (item.CHECKRESULT.Value == 20 || item.CHECKRESULT.Value == 30)) { //检查有问题 待安全隐患上报 20 与描述一致 30 其他 entity.RISKSTATE = 10; } #region 如果 不是检查库 需要添加组合库 同时修改检查信息中的ID if ((item.CHECK_MAIN_ID == null || item.CHECK_MAIN_ID == Guid.Empty) && item.CHECKRESULT == 20 && item.QUESTION_LEVEL.HasValue) { #region 检查制定 手动添加 记录 //添加隐患库 //检查问题 手动输入 没有 整改建议与措施 不能入库 T_BS_CHECK_MAIN modelAdd = new T_BS_CHECK_MAIN(); modelAdd.ID = Guid.NewGuid(); modelAdd.ISRISK = true; modelAdd.CHECKOBJECT = entity.CHECKOBJECT.Value; modelAdd.CHECK_PROJECT_ID = item.CHECK_PROJECT_ID; //modelAdd.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID; modelAdd.CHECK_QUESTION_ID = GetEntity(e => e.SAFE_CHECK_DETAIL_ID == item.ID).SAFE_CHECK_QUESTION_ID; modelAdd.CHECKCONTENT = item.CHECKCONTENT; modelAdd.CHECKPROOF = item.CHECKPROOF; modelAdd.QUESTION_LEVEL = item.QUESTION_LEVEL.Value; if (modelAdd.QUESTION_LEVEL == 10) modelAdd.SERIOUS_RISK = 1; else modelAdd.SERIOUS_RISK = 0; modelAdd.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; modelAdd.CHECK_TYPE_LEVEL_ID = entity.CHECK_TYPE_LEVEL_ID; modelAdd.RISK_AREA_ID = item.RISK_AREA_ID; modelAdd.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; modelAdd.NUM = 0; modelAdd.IS_DELETED = false; modelAdd.ORG_ID = item.ORG_ID; //modelAdd.FORM_ID = item.FORM_ID; modelAdd.CREATE_TIME = DateTime.Now; modelAdd.CREATER_ID = entity.USERID_DOPLAN.Value; //modelAdd.DEPARTMENT_ID = item.DEPARTMENT_ID; depMainCheck = listDepMainCheck.FirstOrDefault(e => e.ID == item.DEPARTMENT_ID); if (depMainCheck == null) { depMainCheck = GetEntity(item.DEPARTMENT_ID.Value); listDepMainCheck.Add(depMainCheck); } //if (item.CREATER_ID == depMainCheck.USER_ID) //{ // if (depMainCheck.DEPARTMENT_TYPE == 2) // { // modelAdd.RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; // } // else // { // modelAdd.RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; // } //} //else //{ // modelAdd.RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; //} //modelAdd.ENTITY_ORG_TPYE = item.ENTITY_ORG_TPYE; //modelAdd.FLOW_STATUS = item.FLOW_STATUS; //modelAdd.FLOW_SEND_STATUS = item.FLOW_SEND_STATUS; //modelAdd.FLOW_ID = item.FLOW_ID; //modelAdd.MODIFY_TIME = item.MODIFY_TIME; //modelAdd.MODIFIER_ID = item.MODIFIER_ID; modelAdd.CHECK_PROJECT_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelAdd.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID; listCheckMain.Add(modelAdd);//不判断去重了,按理有就直接选择了,不会删除自己再手动选 //会写到检查信息 item.CHECK_MAIN_ID = modelAdd.ID; if (depMade == null) { depMade = GetEntity(entity.USERID_DOPLAN.Value, "Nav_Department").Nav_Department; } //组织范围 listCheckMainDep.Add(new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelAdd.ID, IS_DELETED = false, ORG_ID = modelAdd.ORG_ID, //ENTITY_ORG_TPYE = , //FORM_ID = , //FLOW_STATUS = , //FLOW_SEND_STATUS = , //FLOW_ID = , CREATE_TIME = modelAdd.CREATE_TIME, MODIFY_TIME = modelAdd.CREATE_TIME, CREATER_ID = modelAdd.CREATER_ID, MODIFIER_ID = modelAdd.CREATER_ID, DEPARTMENT_ID = depMade.ID,//制表人 所在组织 //RESPONOBJECT = modelAdd.RESPONOBJECT, }); listCheckDetail.Add(item); #endregion } else if (item.ISMAINCHANGE && item.CHECK_MAIN_ID.HasValue && checkMainChangeAll != null && checkMainChangeAll.Count > 0) { #region 安全检查 修改 添加隐患库 或者 修改 隐患库安全检查可修改的字段 修改 标志符 var main = checkMainChangeAll.FirstOrDefault(e => e.ID == item.CHECK_MAIN_ID.Value); if (main == null) continue; if (main.CHECK_PROJECT_ID != item.CHECK_PROJECT_ID || main.CHECK_PROJECT_PROJECT_CATEGORY_ID != item.CHECK_PROJECT_PROJECT_CATEGORY_ID || main.CHECKCONTENT != item.CHECKCONTENT || main.CHECKPROOF != item.CHECKPROOF || main.RISK_AREA_ID != item.RISK_AREA_ID || (item.QUESTION_LEVEL.HasValue && main.QUESTION_LEVEL != item.QUESTION_LEVEL)) { //有修改 if (!main.ISRISK) { //安全库 被修改 main.ENABLE_STATUS = 1;// FMEnableStatusEnum.禁用; listUpdateMain.Add(main); //隐患库被修改 //修改 修改的信息 更新到 库中 删除新增的库信息 T_BS_CHECK_MAIN modelMain = new T_BS_CHECK_MAIN(); modelMain.ID = Guid.NewGuid(); modelMain.CHECKOBJECT = main.CHECKOBJECT; modelMain.NUM = main.NUM; modelMain.CHECK_PROJECT_ID = item.CHECK_PROJECT_ID; modelMain.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID == null ? main.CHECK_QUESTION_ID : item.CHECK_QUESTION_ID; modelMain.CHECKCONTENT = item.CHECKCONTENT; modelMain.CHECKPROOF = item.CHECKPROOF; modelMain.QUESTION_LEVEL = item.QUESTION_LEVEL.HasValue ? item.QUESTION_LEVEL.Value : main.QUESTION_LEVEL; modelMain.SERIOUS_RISK = modelMain.QUESTION_LEVEL == 10 ? 1 : 0;// (int)item.SERIOUS_RISK; modelMain.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; modelMain.CHECK_TYPE_LEVEL_ID = entity.CHECK_TYPE_LEVEL_ID; modelMain.RISK_AREA_ID = item.RISK_AREA_ID; modelMain.ORG_ID = item.ORG_ID; modelMain.ENTITY_ORG_TPYE = item.ENTITY_ORG_TPYE; modelMain.FORM_ID = item.FORM_ID; modelMain.FLOW_STATUS = item.FLOW_STATUS; modelMain.FLOW_SEND_STATUS = item.FLOW_SEND_STATUS; modelMain.FLOW_ID = item.FLOW_ID; modelMain.CREATE_TIME = DateTime.Now; modelMain.MODIFY_TIME = DateTime.Now; modelMain.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; modelMain.MODIFIER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; modelMain.CHECK_PROJECT_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelMain.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID; modelMain.ISRISK = true; modelMain.IS_DELETED = false; modelMain.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; modelMain.CHECK_CONTENTS_ID = main.CHECK_CONTENTS_ID;//改不到检查内容 listCheckMain.Add(modelMain);//添加待添加的信息 和 手动添加的一起 foreach (var itemDe in main.Nav_ListMainDep) { listCheckMainDep.Add(new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelMain.ID, IS_DELETED = false, ORG_ID = modelMain.ORG_ID, //ENTITY_ORG_TPYE = , //FORM_ID = , //FLOW_STATUS = , //FLOW_SEND_STATUS = , //FLOW_ID = , CREATE_TIME = modelMain.CREATE_TIME, MODIFY_TIME = modelMain.CREATE_TIME, CREATER_ID = modelMain.CREATER_ID, MODIFIER_ID = modelMain.CREATER_ID, DEPARTMENT_ID = itemDe.DEPARTMENT_ID, RESPONOBJECT = itemDe.RESPONOBJECT, }); } } else { //隐患库 修改 安全检查可修改到的信息 main.MODIFIER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; main.MODIFY_TIME = DateTime.Now; main.CHECK_PROJECT_ID = item.CHECK_PROJECT_ID; main.CHECK_PROJECT_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_PROJECT_CATEGORY_ID; main.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID; main.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID; main.RISK_AREA_ID = item.RISK_AREA_ID; main.QUESTION_LEVEL = item.QUESTION_LEVEL.HasValue ? item.QUESTION_LEVEL.Value : main.QUESTION_LEVEL; main.SERIOUS_RISK = main.QUESTION_LEVEL == 10 ? 1 : 0; main.CHECKCONTENT = item.CHECKCONTENT; main.CHECKPROOF = item.CHECKPROOF; listUpdateMain.Add(main); } } else { //手动修改 并未实际修改 item.ISMAINCHANGE = false; listCheckDetail.Add(item);//实质没有修改 } #endregion } #endregion } entity.STATECHECK = STATECHECK.Archived; //给制表人发送待办 if (entity.RISKSTATE == 10 && entity.USERID_DOPLAN.HasValue) { //检查发现问题问题 走隐患上报 //最后时间是今天 DateTime dtTimeOut = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")); if (entity.Nav_User == null) entity.Nav_User = GetEntity(entity.USERID_DOPLAN.Value); //给 表单制定人 添加待办 //NotificationTaskService.SendNotificationTask("隐患待上报:" + entity.NAME, modelSub.ID, entity.ORG_ID, entity.USERID_DOPLAN.Value, entity.Nav_User.NAME, DateTime.Now, dtTimeOut, 0, "BS006", () => // { // UpdateEntityNoCommit(entity);//修改隐患 // UpdateEntity(modelSub);//添加隐患上报 // }); NotificationTaskService.SendNotificationTask("隐患待上报:" + entity.NAME.Replace("安全检查:", ""), entity.ID, entity.ORG_ID, entity.USERID_DOPLAN.Value, entity.Nav_User.NAME, DateTime.Now, dtTimeOut, 0, "BS006", () => { UpdateEntityNoCommit(entity);//修改隐患 //UpdateEntity(modelSub);//添加隐患上报 if (listCheckMain.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listCheckMain); if (listCheckMainDep.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listCheckMainDep); if (listCheckDetail != null && listCheckDetail.Any())//修改检查明细 MainID ISMAINCHANGE BantchUpdateEntityNoCommit(listCheckDetail); if (listUpdateMain != null && listUpdateMain.Any())//安全检查库修改不可用 BantchUpdateEntityNoCommit(listUpdateMain); }); } else { //检查没问题 直接结束 安全检查 this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); //保存主表 if (listCheckMain.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listCheckMain); if (listCheckMainDep.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listCheckMainDep); if (listCheckDetail != null && listCheckDetail.Any())//修改检查明细 MainID ISMAINCHANGE BantchUpdateEntityNoCommit(listCheckDetail); if (listUpdateMain != null && listUpdateMain.Any())//安全检查库修改不可用 BantchUpdateEntityNoCommit(listUpdateMain); }); } return true; } /// /// 审批流回调 /// /// /// private bool CheckPlanAuditEnd(string id) { var entity = GetEntity(id); // 1、审批记录单 判断审批结果 修改安全检查表制定的单审批状态 T_PF_APPROVE modelApprove = this.GetEntity(e => e.DATA_ID == Guid.Parse(id) && e.APPROVE_CODE == "BS032_SHOWPRINT"); entity.APPROVE_ID = modelApprove.ID; if (modelApprove.APPROVE_STATUS == 10) { //已完成 entity.STATUSPLAN = (int)HMAuditStatusEnmu.归档; } else if (modelApprove.APPROVE_STATUS == 20) { //已驳回 修改审核ID信息 和处理状态 entity.STATUSPLAN = (int)HMAuditStatusEnmu.审批驳回; this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); //保存主表 }); return true; } var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; //2、添加安全检查填写表单(配置) BS034 //3、给被安排检查的人去添加 代办事项 通知去安检 //查找所有本次安检的人员 var CheckUser = this.GetEntities(e => !e.IS_DELETED && e.SAFE_CHECK_ID == entity.ID, null, new string[] { "Nav_User" }).Select(e => e.Nav_User).Distinct(e => e.ID).ToList(); List listUserId = new List(); List listUserName = new List(); for (int i = 0; i < CheckUser.Count; i++) { listUserId.Add(CheckUser[i].ID); listUserName.Add(CheckUser[i].NAME); } //直接发送检查记录 //修改为 发送检查通知 检查人 查看后 再收到检查记录表 entity.CHECKFINISHINTTIME = DateTime.Now; if (!entity.CHECKTIME.HasValue || !entity.PLAN_SET_ID.HasValue || entity.CHECKTIME.Value.Date == DateTime.Now.Date) { entity.ISCHECKFINISHINTTIME = true; } else { var plan = GetEntity(entity.PLAN_SET_ID.Value); //查询 时间频率对应最后时间 DateTime dtEnd = SafeCheckService.GetEndTime((BSPLANCHECKFREQUENCYEnum)plan.PLANCHECKFREQUENCY, entity.CHECKTIME.Value); if (dtEnd >= DateTime.Now) entity.ISCHECKFINISHINTTIME = true; else entity.ISCHECKFINISHINTTIME = false; } if (listUserId.Count > 0) { entity.STATUCHECK = (int)HMAuditStatusEnmu.确认中;//给验收人 发送确认通知 DateTime dtTimeOut = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_SafeCheck_Make_Check, entity.ORG_ID.Value, DateTime.Now, null, entity.CHECKTIME);// entity.LIMITDATETIME //最后时间是今天 //DateTime dtTimeOut = DateTime.Now.Date.AddDays(1).AddSeconds(-1); //Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")); ////给 T_FM_NOTIFICATION_TASK 添加实体 ////只是通知,不需要表单 //NotificationTaskService.SendNotificationTask(entity.NAME, entity.ID, orgId, listUserId, listUserName, DateTime.Now, dtTimeOut, 0, "BS034", () => //{ // UpdateEntityNoCommit(entity); //}); List listUserIDDone = new List();//需要默认处理的待办 #region 制表确认 默认处理 if (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue) { listUserIDDone.Add(APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value); } if (entity.USERID_DOPLAN.HasValue) { if (!listUserIDDone.Contains(entity.USERID_DOPLAN.Value)) { listUserIDDone.Add(entity.USERID_DOPLAN.Value); } } #endregion List listUserCheck = null; if (entity.USERID_DOPLAN.HasValue && listUserId.Contains(entity.USERID_DOPLAN.Value)) { #region 旧方法 ////如果检查人员 包含 制表人 //listUserCheck = this.GetEntities(e => !e.IS_DELETED && e.SAFE_CHECK_ID == entity.ID && e.USER_ID == entity.USERID_DOPLAN.Value); //如果是主要检查人 修改为已 确认 //if (listUserCheck != null && listUserCheck.Any()) //{ // foreach (var item in listUserCheck) // { // item.SAFECHECKSTATE = (int)SAFECHECKSTATEEnum.viewDoneSign; // if (item.ISMAINCHECK) // { // item.ISCHECK = true;//检查结果确认 // item.CHECKTIME = DateTime.Now; // } // } //} #endregion #region 新方法 主要处理 默认 【制表确认】 //如果检查人员 包含 制表人 var listUserAll = this.GetEntities(e => !e.IS_DELETED && e.SAFE_CHECK_ID == entity.ID); //如果是主要检查人 修改为已 确认 foreach (var item in listUserAll) { if (item.SAFECHECKSTATE.HasValue && item.SAFECHECKSTATE == 80)//已经检查过了 待办消息默认审批通过 { listUserIDDone.Add(item.USER_ID); } } if (listUserAll != null && listUserAll.Any()) { foreach (var item in listUserAll) { //if (item.USER_ID == entity.USERID_DOPLAN.Value) if (listUserIDDone.Contains(item.USER_ID)) { if (item.SAFECHECKSTATE < (int)SAFECHECKSTATEEnum.viewDoneSign) { item.SAFECHECKSTATE = (int)SAFECHECKSTATEEnum.viewDoneSign; } //item.SAFECHECKSTATE = (int)SAFECHECKSTATEEnum.viewDoneSign; if (item.ISMAINCHECK) { item.ISCHECK = true;//检查结果确认 item.CHECKTIME = DateTime.Now; } if (listUserCheck == null) { listUserCheck = new List(); } listUserCheck.Add(item); } //else //{ // //判断处理待办 // if (item.ISCHECK && !listUserIDDone.Contains(item.USER_ID)) // { // listUserIDDone.Add(item.USER_ID); // } //} } } #endregion } //BS034_SHOWPRINT=> BS032_SHOWPRINT NotificationTaskService.SendNotificationTask((entity.NAME + "-确认"), entity.ID, orgId, listUserId, listUserName, DateTime.Now, dtTimeOut, 0, "BS032_SHOWPRINT", () => { UpdateEntityNoCommit(entity); if (listUserCheck != null && listUserCheck.Any()) { BantchSaveEntityNoCommit(listUserCheck); } }, "", listUserIDDone); } return true; } #endregion #region FO /// /// 回调函数 /// /// /// private bool BackUpdate_FOCrucialLicenseJobOutsource(string id) { //var entity = this.GetEntity(id, false, "Nav_OperationStep", "Nav_ApplyUser", "Nav_CrucialLicensePerson"); var entity = this.GetEntity(id, new string[] { "Nav_OperationStep", "Nav_ApplyUser", "Nav_CrucialLicensePerson" });// wyw entity.IS_PUBLISH = (int)FOPreMeetingStatusEnum.归档; //触发技术交底表 var tech = new T_FO_TECH_DISCLOSURE_FROM(); var techUsers = new List(); var notices = new List(); var techForm = this.GetEntity(t => t.JOB_NAME_OUTSOURCE_ID == entity.ID); if (techForm == null) { //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.技术交底表编号; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); //主表 tech.CODE = codeList[0]; tech.ORG_ID = entity.ORG_ID; tech.OPERATION_STEP_ID = entity.OPERATION_STEP_ID; tech.JOB_NAME_OUTSOURCE_ID = entity.ID; tech.JOB_LOCATION = entity.JOB_LOCATION; tech.DISCLOSURE_PERSON_ID = entity.APPLY_USER_ID; tech.IS_AUTO = (int)ISImportantEnum.是; tech.IS_OUTSOURCE = true; tech.RELATED_ID = entity.RELATED_ID; //if (entity.MONITOR_USER_ID != null) //{ // T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); // person.ORG_ID = entity.ORG_ID; // person.USER_ID = entity.MONITOR_USER_ID; // person.TECH_DISCLOSURE_FROM_ID = tech.ID; // person.CREATER_ID = entity.CREATER_ID; // techUsers.Add(person); //} if (entity.Nav_CrucialLicensePerson != null && entity.Nav_CrucialLicensePerson.Any()) { entity.Nav_CrucialLicensePerson.ForEach(t => { T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); person.ORG_ID = t.ORG_ID; person.RELATED_USER_ID = t.USER_ID; person.TECH_DISCLOSURE_FROM_ID = tech.ID; person.CREATER_ID = t.CREATER_ID; techUsers.Add(person); }); } var user = this.GetEntity(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && t.ID == entity.APPLY_USER_ID); //发消息 //DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.JobSite, entity.ORG_ID.Value, DateTime.Now, null, null); notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("安全技术交底表(外包)", tech.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, entity.JOB_DATE.Value, (int)FMNoticeTypeEnum.消息, "FO019")); } else { tech = null; techUsers = null; notices = null; } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (tech != null) this.UpdateEntityNoCommit(tech); if (techUsers != null && techUsers.Any()) this.BantchSaveEntityNoCommit(techUsers); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate(string id) { //var entity = this.GetEntity(id, false, "Nav_OperationStep", "Nav_ApplyUser", "Nav_CrucialLicensePerson"); var entity = this.GetEntity(id, new string[] { "Nav_OperationStep", "Nav_ApplyUser", "Nav_CrucialLicensePerson" });// wyw entity.IS_PUBLISH = (int)FOPreMeetingStatusEnum.签到中; //触发技术交底表 var tech = new T_FO_TECH_DISCLOSURE_FROM(); var techUsers = new List(); var notices = new List(); var techForm = this.GetEntity(t => t.JOB_NAME_ID == entity.ID); if (techForm == null) { //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.技术交底表编号; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); //主表 tech.CODE = codeList[0]; tech.ORG_ID = entity.ORG_ID; tech.OPERATION_STEP_ID = entity.OPERATION_STEP_ID; tech.JOB_NAME_ID = entity.ID; tech.JOB_LOCATION = entity.JOB_LOCATION; tech.DISCLOSURE_PERSON_ID = entity.APPLY_USER_ID; tech.IS_AUTO = (int)ISImportantEnum.是; tech.IS_OUTSOURCE = false; tech.RELATED_ID = null; if (entity.MONITOR_USER_ID != null) { T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); person.ORG_ID = entity.ORG_ID; person.USER_ID = entity.MONITOR_USER_ID; person.TECH_DISCLOSURE_FROM_ID = tech.ID; person.CREATER_ID = entity.CREATER_ID; techUsers.Add(person); } if (entity.Nav_CrucialLicensePerson != null && entity.Nav_CrucialLicensePerson.Any()) { entity.Nav_CrucialLicensePerson.ForEach(t => { T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); person.ORG_ID = t.ORG_ID; person.USER_ID = t.USER_ID; person.TECH_DISCLOSURE_FROM_ID = tech.ID; person.CREATER_ID = t.CREATER_ID; techUsers.Add(person); }); } techUsers = techUsers.Where(m => m.USER_ID != null).Distinct(t => t.USER_ID).ToList(); var userIds = entity.Nav_CrucialLicensePerson.Select(t => (Guid)t.USER_ID).Distinct().ToList(); //if (!userIds.Contains((Guid)entity.MONITOR_USER_ID)) //{ // techUsers.Where(t => t.USER_ID == entity.MONITOR_USER_ID).ForEach(m => m.DEAL_STATUS = FOUserShiftStatusEnum.已处理); //} var UserNames = new List(); var user = this.GetEntities(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && (userIds.Contains(t.ID) || t.ID == entity.APPLY_USER_ID), new BaseFilter(entity.ORG_ID)); var userFirst = user.FirstOrDefault(t => t.ID == entity.APPLY_USER_ID); foreach (var u in userIds) { var current = user.FirstOrDefault(t => t.ID == u); UserNames.Add(current?.NAME); } //DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.JobSite, entity.ORG_ID.Value, DateTime.Now, null, null); if (userFirst != null) { notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("安全技术交底表(" + entity.JOB_DATE.Value.ToShortDateString().Replace("/", "") + ")", tech.ID, entity.ORG_ID, entity.APPLY_USER_ID.Value, userFirst?.NAME, DateTime.Now, entity.JOB_DATE.Value, (int)FMNoticeTypeEnum.消息, "FO019")); } if (userIds != null && userIds.Any()) { notices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("关键作业/许可作业工作票确认(" + entity.JOB_DATE.Value.ToShortDateString().Replace("/", "") + ")", entity.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, entity.JOB_DATE.Value, (int)FMNoticeTypeEnum.消息, "FO017_SHOWPRINT")); } } else { entity.IS_PUBLISH = (int)FOPreMeetingStatusEnum.归档; tech = null; techUsers = null; notices = null; } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (tech != null) this.UpdateEntityNoCommit(tech); if (techUsers != null && techUsers.Any()) this.BantchSaveEntityNoCommit(techUsers); }); return true; } /// /// 关键许可工作票 /// /// /// private bool BackUpdateNew_FOCrucialLicenseJob(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false) { #region 审批公用 if (modelApp == null) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp.DATA_ID, new string[] { "Nav_OperationStep", "Nav_ApplyUser", "Nav_CrucialLicensePerson" });// wyw entity.IS_PUBLISH = (int)FOPreMeetingStatusEnum.签到中; //触发技术交底表 var tech = new T_FO_TECH_DISCLOSURE_FROM(); var techUsers = new List(); var notices = new List(); var techForm = this.GetEntity(t => t.JOB_NAME_ID == entity.ID); if (techForm == null) { //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.技术交底表编号; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); //主表 tech.CODE = codeList[0]; tech.ORG_ID = entity.ORG_ID; tech.OPERATION_STEP_ID = entity.OPERATION_STEP_ID; tech.JOB_NAME_ID = entity.ID; tech.JOB_LOCATION = entity.JOB_LOCATION; tech.DISCLOSURE_PERSON_ID = entity.APPLY_USER_ID; tech.IS_AUTO = (int)ISImportantEnum.是; tech.IS_OUTSOURCE = false; tech.RELATED_ID = null; if (entity.MONITOR_USER_ID != null) { T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); person.ORG_ID = entity.ORG_ID; person.USER_ID = entity.MONITOR_USER_ID; person.TECH_DISCLOSURE_FROM_ID = tech.ID; person.CREATER_ID = entity.CREATER_ID; techUsers.Add(person); } if (entity.Nav_CrucialLicensePerson != null && entity.Nav_CrucialLicensePerson.Any()) { entity.Nav_CrucialLicensePerson.ForEach(t => { T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); person.ORG_ID = t.ORG_ID; person.USER_ID = t.USER_ID; person.TECH_DISCLOSURE_FROM_ID = tech.ID; person.CREATER_ID = t.CREATER_ID; techUsers.Add(person); }); } techUsers = techUsers.Where(m => m.USER_ID != null).Distinct(t => t.USER_ID).ToList(); var userIds = entity.Nav_CrucialLicensePerson.Select(t => (Guid)t.USER_ID).Distinct().ToList(); //if (!userIds.Contains((Guid)entity.MONITOR_USER_ID)) //{ // techUsers.Where(t => t.USER_ID == entity.MONITOR_USER_ID).ForEach(m => m.DEAL_STATUS = FOUserShiftStatusEnum.已处理); //} var UserNames = new List(); var user = this.GetEntities(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && (userIds.Contains(t.ID) || t.ID == entity.APPLY_USER_ID), new BaseFilter(entity.ORG_ID)); var userFirst = user.FirstOrDefault(t => t.ID == entity.APPLY_USER_ID); foreach (var u in userIds) { var current = user.FirstOrDefault(t => t.ID == u); UserNames.Add(current?.NAME); } //DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.JobSite, entity.ORG_ID.Value, DateTime.Now, null, null); if (userFirst != null) { notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("安全技术交底表(" + entity.JOB_DATE.Value.ToShortDateString().Replace("/", "") + ")", tech.ID, entity.ORG_ID, entity.APPLY_USER_ID.Value, userFirst?.NAME, DateTime.Now, entity.JOB_DATE.Value, (int)FMNoticeTypeEnum.消息, "FO019")); } if (userIds != null && userIds.Any()) { notices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("关键作业/许可作业工作票确认(" + entity.JOB_DATE.Value.ToShortDateString().Replace("/", "") + ")", entity.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, entity.JOB_DATE.Value, (int)FMNoticeTypeEnum.消息, "FO017_SHOWPRINT")); } } else { entity.IS_PUBLISH = (int)FOPreMeetingStatusEnum.归档; tech = null; techUsers = null; notices = null; } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (tech != null) this.UpdateEntityNoCommit(tech); if (techUsers != null && techUsers.Any()) this.BantchSaveEntityNoCommit(techUsers); }); } return true; } /// /// 关键许可工作票外包 /// /// /// private bool BackUpdateNew_FOCrucialLicenseJobOutsource(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false) { #region 审批公用 if (modelApp == null) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp.DATA_ID, new string[] { "Nav_OperationStep", "Nav_ApplyUser", "Nav_CrucialLicensePerson" });// wyw entity.IS_PUBLISH = (int)FOPreMeetingStatusEnum.归档; //触发技术交底表 var tech = new T_FO_TECH_DISCLOSURE_FROM(); var techUsers = new List(); var notices = new List(); var techForm = this.GetEntity(t => t.JOB_NAME_OUTSOURCE_ID == entity.ID); if (techForm == null) { //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.技术交底表编号; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); //主表 tech.CODE = codeList[0]; tech.ORG_ID = entity.ORG_ID; tech.OPERATION_STEP_ID = entity.OPERATION_STEP_ID; tech.JOB_NAME_OUTSOURCE_ID = entity.ID; tech.JOB_LOCATION = entity.JOB_LOCATION; tech.DISCLOSURE_PERSON_ID = entity.APPLY_USER_ID; tech.IS_AUTO = (int)ISImportantEnum.是; tech.IS_OUTSOURCE = true; tech.RELATED_ID = entity.RELATED_ID; //if (entity.MONITOR_USER_ID != null) //{ // T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); // person.ORG_ID = entity.ORG_ID; // person.USER_ID = entity.MONITOR_USER_ID; // person.TECH_DISCLOSURE_FROM_ID = tech.ID; // person.CREATER_ID = entity.CREATER_ID; // techUsers.Add(person); //} if (entity.Nav_CrucialLicensePerson != null && entity.Nav_CrucialLicensePerson.Any()) { entity.Nav_CrucialLicensePerson.ForEach(t => { T_FO_TECH_DISCLOSURE_PERSON person = new T_FO_TECH_DISCLOSURE_PERSON(); person.ORG_ID = t.ORG_ID; person.RELATED_USER_ID = t.USER_ID; person.TECH_DISCLOSURE_FROM_ID = tech.ID; person.CREATER_ID = t.CREATER_ID; techUsers.Add(person); }); } //techUsers = techUsers.Distinct(t => t.USER_ID).ToList(); //var userIds = techUsers.Where(u => u.USER_ID != entity.MONITOR_USER_ID).Select(t => (Guid)t.USER_ID).ToList(); //userIds.Add((Guid)entity.APPLY_USER_ID); var UserNames = new List(); var user = this.GetEntity(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && t.ID == entity.APPLY_USER_ID); //var userFirst = user.FirstOrDefault(t => t.ID == entity.APPLY_USER_ID); //var identUserIds = userIds.Where(t => t != entity.APPLY_USER_ID).Distinct().ToList(); //foreach (var u in identUserIds) //{ // var current = user.FirstOrDefault(t => t.ID == u); // UserNames.Add(current?.NAME); //} //DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.JobSite, entity.ORG_ID.Value, DateTime.Now, null, null); if (user != null) { notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("安全技术交底表外包(" + entity.JOB_DATE.Value.ToShortDateString().Replace("/", "") + ")", tech.ID, entity.ORG_ID, entity.APPLY_USER_ID.Value, user?.NAME, DateTime.Now, entity.JOB_DATE.Value, (int)FMNoticeTypeEnum.消息, "FO019")); } //if (identUserIds != null && identUserIds.Any()) //{ // notices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("关键作业/许可作业工作票确认(" + entity.JOB_DATE.Value.ToShortDateString().Replace("/", "") + ")", entity.ID, entity.ORG_ID, identUserIds, UserNames, DateTime.Now, // entity.JOB_DATE.Value, (int)FMNoticeTypeEnum.消息, "FO017_SHOWPRINT")); //} } else { tech = null; techUsers = null; notices = null; } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (tech != null) this.UpdateEntityNoCommit(tech); if (techUsers != null && techUsers.Any()) this.BantchSaveEntityNoCommit(techUsers); }); } return true; } /// /// 一般作业活动记录 /// /// /// private bool BackUpdateNew_FOJobEventRecord(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false) { #region 审批公用 if (modelApp == null) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp.DATA_ID, "Nav_Details"); entity.FORM_STATUS = (int)FOTeamActivityState.已归档; UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); }); } return true; } #endregion #region HM && PT && PE && PR && DM #region HMR private bool BackUpdate_DMDeviceMaintenancePlan(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false) { #region 审批公用 if (modelApp == null) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp.DATA_ID); entity.STATUS_APPROVE = PFStandardStatus.Archived; UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } return true; } private bool BackUpdate_DMDeviceBasePurchase(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false) { #region 审批公用 if (modelApp == null) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp.DATA_ID); entity.STATUS = PFStandardStatus.Archived; //T_FM_NOTIFICATION_TASK sendNotice = null; ////发给采购负责人指定采购专员 //var userId = this.GetEntity(t => t.NAME == "采购部负责人")?.USER_ID; //if (userId != null) //{ // var DMUser = this.GetEntity(t => t.ID == userId && t.ENABLE_STATUS == 0); // if (DMUser != null) // { // sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("设备设施申购表待指定采购专员", entity.ID, entity.ORG_ID, DMUser.ID, DMUser.NAME, DateTime.Now, // DateTime.Now.AddDays(1), (int)FMNoticeTypeEnum.消息, "DM035"); // } //} UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); }); } return true; } private bool BackUpdate_DMDevicePurchase(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false) { #region 审批公用 if (modelApp == null) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp.DATA_ID, "Nav_Details.Nav_Files", "Nav_Details.Nav_ReceiptFiles"); entity.STATUS = PFStandardStatus.Reading; //发给部门级负责人审阅 T_FM_NOTIFICATION_TASK sendNotice = null; var dep = DepartmentService.GetDEPARTMENTLevel(entity.DEPARTMENT_ID.Value); if (dep != null) { var department = this.GetEntity(t => t.ID == dep.ID && t.USER_ID.HasValue, "Nav_User"); if (department != null) { sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("设备设施申购表采购记录待审阅", entity.ID, entity.ORG_ID, (Guid)department.USER_ID, department?.Nav_User?.NAME, DateTime.Now, DateTime.Now.AddDays(1), (int)FMNoticeTypeEnum.消息, "DM036_SHOWPRINT"); } else throw new Exception("请先到组织架构配置部门级负责人"); } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (sendNotice != null) this.UpdateEntityNoCommit(sendNotice); if (entity != null) this.UpdateEntityNoCommit(entity); }); } return true; } private bool BackUpdate_DMDeviceCheck(string id) { var entity = this.GetEntity(id); entity.STATUS = PFStandardStatus.Archived; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; } private bool BackUpdate_DMDeviceRepair(string id) { var entity = this.GetEntity(id); entity.STATUS = PFStandardStatus.Archived; T_FM_NOTIFICATION_TASK sendNotice = null; T_DM_DEVICE_OVERHAUL overhaul = null; overhaul = new T_DM_DEVICE_OVERHAUL { ID = Guid.NewGuid(), OVERHAUL_TIME = DateTime.Now, CODE = DateTime.Now.ToString("yyyyMMddHHmmss"), USER_ID = entity.REPAIR_USER_ID, DEVICE_BASE_ID = entity.DEVICE_BASE_ID, MACHINE_NAME = entity.MACHINE_NAME, SPEC = entity.SPEC, MACHINE_CODE = entity.MACHINE_CODE, POSITION = entity.POSITION, MALFUCTION = entity.DESCRPTION, REPAIR_ID = entity.ID, ORG_ID = entity.ORG_ID, IS_HELP = entity.IS_HELP, MineType = entity.MineType, }; if (entity.IS_HELP == true) { var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("设备设施检修记录-" + entity.MACHINE_NAME, overhaul.ID, entity.ORG_ID, (Guid)userId, GetEntity(userId.Value).NAME, DateTime.Now, DateTime.Now.AddDays(1), 0, "DM022"); } else { sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("设备设施检修记录-" + entity.MACHINE_NAME, overhaul.ID, entity.ORG_ID, (Guid)entity.REPAIR_USER_ID, GetEntity(entity.REPAIR_USER_ID.Value).NAME, DateTime.Now, DateTime.Now.AddDays(1), 0, "DM022"); } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (overhaul != null) AddEntityNoCommit(overhaul); if (sendNotice != null) AddEntityNoCommit(sendNotice); }); return true; } private bool BackUpdate_FOJobEventRecord(string id) { var entity = this.GetEntity(id, "Nav_Details"); entity.FORM_STATUS = (int)FOTeamActivityState.已归档; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; } private bool BackUpdate_DMDeviceScrap(string id) { var entity = this.GetEntity(id); entity.STATUS = PFStandardStatus.Archived; T_DM_DEVICE_BASE deviceBase = new T_DM_DEVICE_BASE(); if (entity.DEVICEBASE_ID != null) { deviceBase = this.GetEntity(t => t.ID == entity.DEVICEBASE_ID); if (deviceBase != null) { //更新设备设施库 deviceBase.DEVICE_STATUS = DMDeviceStatusEnum.已报废; } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (deviceBase != null) this.UpdateEntityNoCommit(deviceBase); }); return true; } private bool BackUpdate_DMDeviceApply(string id) { var entity = this.GetEntity(id, "Nav_Details"); entity.STATUS = PFStandardStatus.Archived; List sendNotices = new List(); List issues = new List(); List details = new List(); List deviceBases = new List(); if (entity.Nav_Details != null && entity.Nav_Details.Any()) { var deviseBaseIds = entity.Nav_Details.Select(t => t.DEVICE_BASE_ID).Distinct().ToList(); var deviseBaseInfos = this.GetEntities(t => deviseBaseIds.Contains(t.ID) && t.DEVICE_STATUS == DMDeviceStatusEnum.库存品); var useIds = deviseBaseInfos.Select(t => t.USER_ID).Distinct().ToList(); var userInfos = this.GetEntities(t => useIds.Contains(t.ID) && t.ENABLE_STATUS == 0, "Nav_Person"); if (useIds != null && useIds.Any()) { foreach (var userId in useIds) { var user = userInfos.FirstOrDefault(t => t.ID == userId); if (user != null) { var issue = new T_DM_DEVICE_ISSUE(); issue.ORG_ID = entity.ORG_ID; issue.CODE = DateTime.Now.Year.ToString().PadLeft(4, '0') + DateTime.Now.Month.ToString().PadLeft(2, '0') + DateTime.Now.Day.ToString().PadLeft(2, '0') + new Random().Next().ToString(); issue.TIME = DateTime.Now; issue.STATUS = PFStandardStatus.Draft; issue.USER_ID = user.ID; issue.DEPARTMENT_ID = user?.DEPARTMENT_ID; issue.USER_POST_ID = user?.Nav_Person?.POST_ID; issue.APPLY_ID = entity.ID; issue.DEVICE_PURCHASE_ID = entity.DEVICE_PURCHASE_ID; issue.MineType = entity.MineType; issues.Add(issue); var deviceBaseIds = deviseBaseInfos.Where(t => t.USER_ID == userId).Select(m => m.ID).ToList(); var applyDetails = entity.Nav_Details.Where(t => deviceBaseIds.Contains((Guid)t.DEVICE_BASE_ID)).ToList(); if (applyDetails != null && applyDetails.Any()) { foreach (var item in applyDetails) { T_DM_DEVICE_ISSUE_DETAIL detail = new T_DM_DEVICE_ISSUE_DETAIL(); detail.ORG_ID = item.ORG_ID; detail.DEVICE_ISSUE_ID = issue.ID; detail.DEVICE_BASE_ID = item.DEVICE_BASE_ID; detail.SPEC = item.SPEC; detail.QTY = item.QTY; detail.UNIT = item.UNIT; detail.USE = item.USE; detail.DEPARTMENT_ID = item.DEPARTMENT_ID; detail.USER_ID = item.USER_ID; detail.USE_USER_POST_ID = item.USER_POST_ID; detail.RETURN_TIME = item.RETURN_TIME; detail.POSITION = item.POSITION; details.Add(detail); } } var userName = userInfos.FirstOrDefault(t => t.ID == user.ID)?.NAME; var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("设备设施发放表", issue.ID, entity.ORG_ID, user.ID, userName, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "DM016"); sendNotices.Add(sendNotice); } } } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (issues != null && issues.Any()) BantchSaveEntityNoCommit(issues); if (details != null && details.Any()) BantchSaveEntityNoCommit(details); if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); if (deviceBases != null && deviceBases.Any()) BantchSaveEntityNoCommit(deviceBases); }); return true; } private bool BackUpdate_DMDeviceIssue(string id) { var entity = this.GetEntity(id, "Nav_Details"); entity.STATUS = PFStandardStatus.Archived; List deviceBases = new List(); //if (entity.Nav_Details != null && entity.Nav_Details.Any()) //{ // var deviceIds = entity.Nav_Details.Select(t => t.DEVICE_BASE_ID).Distinct().ToList(); // deviceBases = this.GetEntities(t => deviceIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToList(); // foreach (var detail in entity.Nav_Details) // { // //更新设备设施库 // deviceBases.Where(t => t.ID == detail.DEVICE_BASE_ID).ForEach(m => { m.DEVICE_STATUS = DMDeviceStatusEnum.使用中; }); // } //} var apply = this.GetEntity(t => t.ID == entity.APPLY_ID, "Nav_Details"); if (apply != null && apply.Nav_Details != null && apply.Nav_Details.Any()) { var deviceIds = apply.Nav_Details.Select(t => t.DEVICE_BASE_ID).Distinct().ToList(); deviceBases = this.GetEntities(t => deviceIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToList(); foreach (var detail in apply.Nav_Details) { //更新设备设施库 deviceBases.Where(t => t.ID == detail.DEVICE_BASE_ID).ForEach(m => { m.PURPOSE = detail.USE; m.USE_USER_POST_ID = detail.USER_POST_ID; m.USE_DEPARTMENT_ID = detail.DEPARTMENT_ID; m.USE_USER_ID = detail.USER_ID; m.POSITION = detail.POSITION; m.DEVICE_STATUS = DMDeviceStatusEnum.使用中; }); //device.USE_USER_ID = item.USER_ID; //device.USE_DEPARTMENT_ID = item.DEPARTMENT_ID; //device.USE_USER_POST_ID = item.USE_USER_POST_ID; } } //List sendNotices = new List(); //if (entity.Nav_Details != null && entity.Nav_Details.Any()) //{ // //发给领用人审阅 // var userIds = entity.Nav_Details.Select(t => t.USER_ID).Distinct().ToList(); // var userInfos = this.GetEntities(t => userIds.Contains(t.ID) && t.ENABLE_STATUS == 0); // if (userIds != null && userIds.Any()) // { // foreach (var userId in userIds) // { // var userName = userInfos.FirstOrDefault(t => t.ID == userId)?.NAME; // var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("设备设施发放表审阅", entity.ID, entity.ORG_ID, userId.Value, userName, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "DM016_SHOWPRINT"); // sendNotices.Add(sendNotice); // } // } //} UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (deviceBases != null && deviceBases.Any()) BantchSaveEntityNoCommit(deviceBases); //if (sendNotices != null && sendNotices.Any()) // BantchSaveEntityNoCommit(sendNotices); }); return true; } private bool BackUpdate_DMDetectionInspectionRecord(string id) { var entity = this.GetEntity(id);//"Nav_DeviceBase", "Nav_Files" entity.STATUS = PFStandardStatus.Archived; //T_DM_DEVICE_BASE_INSPECTION inspec = null; //List files = new List(); //if (entity.DEVICE_BASE_ID != null && entity.Nav_DeviceBase != null) //{ // var deviceBase = this.GetEntity(t => t.NAME == entity.Nav_DeviceBase.NAME && t.SPEC == entity.SPEC && t.MACHINE_CODE == entity.MACHINE_CODE && t.POSITION == entity.POSITION); // if (deviceBase != null) // { // var cycle = this.GetEntity(t => t.SET_TYPE == PTSetTypeEnum.Inspection); // inspec = new T_DM_DEVICE_BASE_INSPECTION(); // inspec.ORG_ID = entity.ORG_ID; // inspec.DEVICE_BASE_ID = deviceBase.ID; // inspec.TIME = entity.TIME.Value; // inspec.CYCLE = cycle == null ? 0 : cycle.PLANCHECKFREQUENCY; // inspec.DEPARTMENT_ID = entity.DEPARTMENT_ID; // inspec.USER_ID = entity.USER_ID; // inspec.MECHANISM = entity.MECHANISM; // inspec.RESULT = entity.RESULT; // if (entity.Nav_Files != null && entity.Nav_Files.Any()) // { // foreach (var item in entity.Nav_Files) // { // T_DM_DEVICE_BASE_INSPECTION_FILE file = new T_DM_DEVICE_BASE_INSPECTION_FILE(); // file.ORG_ID = item.ORG_ID; // file.PARENT_ID = inspec.ID; // file.IMG_FILE_ID = item.IMG_FILE_ID; // files.Add(file); // } // } // } //} UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); //if (inspec != null) // this.UpdateEntityNoCommit(inspec); //if (files != null && files.Any()) // this.BantchSaveEntityNoCommit(files); }); return true; } private bool BackUpdate_PRChangeTaskImplement(string id) { var entity = this.GetEntity(id, "Nav_Change"); entity.STATUS = PFStandardStatus.Archived; var implements = this.GetEntities(t => t.ID != entity.ID && t.CHANGE_IDENTIFY_EVALUATION_ID == entity.CHANGE_IDENTIFY_EVALUATION_ID, new BaseFilter(entity.ORG_ID)); var isSend = true; T_PR_CHANGE_ACCEPTANCE acceptance = null; T_FM_NOTIFICATION_TASK notice = null; T_PR_CHANGE_ACCEPTANCE accept = null; foreach (var item in implements) { if (item.STATUS != PFStandardStatus.Archived) isSend = false; } if (isSend) { accept = this.GetEntity(t => t.CHANGE_IDENTIFY_EVALUATION_ID == entity.CHANGE_IDENTIFY_EVALUATION_ID, "Nav_User"); if (accept != null) { accept.STATUS = PFStandardStatus.Rejected; notice = NotificationTaskService.InsertUserNoticeTaskModel("变化管理验收表", accept.ID, entity.ORG_ID, accept.USER_ID.Value, accept.Nav_User.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PR028"); } else { var dep = DepartmentService.GetDEPARTMENTLevel(entity.Nav_Change.DEPARTMENT_ID.Value); if (dep != null) { var department = this.GetEntity(t => t.ID == dep.ID && t.USER_ID.HasValue, "Nav_User"); if (department != null) { acceptance = new T_PR_CHANGE_ACCEPTANCE(); acceptance.ORG_ID = entity.ORG_ID; acceptance.TIME = DateTime.Now; acceptance.STATUS = PFStandardStatus.Draft; acceptance.CHANGE_IDENTIFY_EVALUATION_ID = entity.CHANGE_IDENTIFY_EVALUATION_ID; acceptance.USER_ID = department.USER_ID; acceptance.DEPARTMENT_ID = department.ID; notice = NotificationTaskService.InsertUserNoticeTaskModel("变化管理验收表", acceptance.ID, entity.ORG_ID, department.USER_ID.Value, department.Nav_User.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PR028"); } else throw new Exception("请先到组织架构配置部门级负责人"); } } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (accept != null) this.UpdateEntityNoCommit(accept); if (notice != null) this.UpdateEntityNoCommit(notice); if (acceptance != null) this.UpdateEntityNoCommit(acceptance); }); return true; } private bool BackUpdate_PRSurveyRecord(string id) { var entity = this.GetEntity(id); entity.STATUS = PFStandardStatus.Archived; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; } private bool BackUpdate_PESafetyEvaluationPlan(string id) { var entity = this.GetEntity(id); entity.STATUS = PFStandardStatus.Archived; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; } private bool BackUpdate_PRMapProcessRecord(string id) { var entity = this.GetEntity(id, "Nav_Files"); entity.STATUS = PFStandardStatus.Archived; if (entity.Nav_Files != null && entity.Nav_Files.Any()) { var fileIds = entity.Nav_Files.Select(t => t.IMG_FILE_ID).Distinct().ToList(); DepartmentService.AddDocument("生产工艺", "测绘处理记录", "测绘处理记录", "测绘记录", "勘察文件", DateTime.Now.AddYears(99), entity.ID, fileIds, entity.CREATER_ID); } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; } private bool BackUpdate_PRExternalAcceptanceRecord(string id) { var entity = this.GetEntity(id); entity.STATUS = PFStandardStatus.Archived; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; } private bool BackUpdate_PRExternalAssistanceApplication(string id) { var entity = this.GetEntity(id, "Nav_User"); entity.STATUS = PFStandardStatus.Archived; //触发滑坡滚石处理外部验收记录表 T_PR_EXTERNAL_ACCEPTANCE_RECORD record = new T_PR_EXTERNAL_ACCEPTANCE_RECORD(); record.ORG_ID = entity.ORG_ID; record.UNIT = entity.UNIT; record.DESCRIPTION = entity.DESCRIPTION; record.STATUS = PFStandardStatus.Draft; record.APPLICATION_ID = entity.ID; T_FM_NOTIFICATION_TASK notice = NotificationTaskService.InsertUserNoticeTaskModel("滑坡滚石处理外部验收记录表", record.ID, entity.ORG_ID, entity.USER_ID.Value, entity.Nav_User.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PR011"); UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (record != null) this.UpdateEntityNoCommit(record); if (notice != null) this.UpdateEntityNoCommit(notice); }); return true; } private bool BackUpdate_PRLandslideRollstoneMonitor(string id) { var entity = this.GetEntity(id, "Nav_User"); entity.STATUS = PFStandardStatus.Archived; //触发外部协助申请表 T_PR_EXTERNAL_ASSISTANCE_APPLICATION help = null; T_FM_NOTIFICATION_TASK notice = null; if (entity.IS_HELP == DisableStatusEnum.是) { help = new T_PR_EXTERNAL_ASSISTANCE_APPLICATION(); help.ORG_ID = entity.ORG_ID; help.USER_ID = entity.USER_ID; help.DESCRIPTION = entity.DESCRIPTION; var department = this.GetEntity(t => t.ID == entity.USER_ID && t.ENABLE_STATUS == 0); help.DEPARTMENT_ID = department?.DEPARTMENT_ID; help.STATUS = PFStandardStatus.Draft; help.MONITOR_ID = entity.ID; notice = NotificationTaskService.InsertUserNoticeTaskModel("滑坡滚石处理外部协助申请表", help.ID, entity.ORG_ID, entity.USER_ID.Value, entity.Nav_User.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PR009"); } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (help != null) this.UpdateEntityNoCommit(help); if (notice != null) this.UpdateEntityNoCommit(notice); }); return true; } /// /// 返回所有上级部门节点 /// /// /// /// public void GetParentDepartmentIds(Guid orgId, List listDepIDInt, ref List departmentIdPs) { var listDep = GetEntities(e => e.ORG_ID == orgId && !e.IS_DELETED && listDepIDInt.Contains(e.ID)); if (listDep != null && listDep.Any()) { listDepIDInt = listDep.Where(t => t.PARENT_ID.HasValue).Select(e => e.PARENT_ID.Value).ToList(); departmentIdPs.AddRange(listDepIDInt); GetParentDepartmentIds(orgId, listDepIDInt, ref departmentIdPs); } } private bool BackUpdate_PRDesignDocumentReview(string id) { var entity = this.GetEntity(id, "Nav_Files"); entity.STATUS = PFStandardStatus.Archived; if (entity.Nav_Files != null && entity.Nav_Files.Any()) { var fileIds = entity.Nav_Files.Select(t => t.IMG_FILE_ID).Distinct().ToList(); DepartmentService.AddDocument("生产工艺", "内部设计文件审核表", entity.NAME, "附件", "设计文件", DateTime.Now.AddYears(99), entity.ID, fileIds, entity.CREATER_ID); } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; } private bool BackUpdate_SCStandardCreate(string id) { var content = ""; T_SC_STANDARD_CREATE oldEntity = null; var entity = this.GetEntity(id, "Nav_User"); if (entity.FILE_STATUS == SCSystemFileStatus.废除中) { content = "已废除"; entity.STATUS = SCSystemEditStatus.已废除; entity.FILE_STATUS = SCSystemFileStatus.已废除; oldEntity = this.GetEntity(t => t.ID != entity.ID && t.CODE == entity.CODE && t.FILE_STATUS == SCSystemFileStatus.有效); if (oldEntity != null) oldEntity.FILE_STATUS = SCSystemFileStatus.失效; } else { entity.STATUS = SCSystemEditStatus.已归档; entity.FILE_STATUS = SCSystemFileStatus.有效; if (entity.VERSION == 1) { content = "已创建"; } else { content = "已修订"; oldEntity = this.GetEntity(t => t.ID != entity.ID && t.CODE == entity.CODE && t.FILE_STATUS == SCSystemFileStatus.有效); if (oldEntity != null) oldEntity.FILE_STATUS = SCSystemFileStatus.失效; } } T_FM_NOTIFICATION_TASK sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("“" + entity.NAME + "”" + content + ",请召开相关培训", entity.ID, entity.ORG_ID, entity.USER_ID.Value, entity.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.今日提醒, "PF135"); if (content == "已废除") { sendNotice = null; } T_LR_LAW_SC_SYSTEM sys = null; if (!string.IsNullOrEmpty(entity.LAW_NAME)) { var law = this.GetEntity(t => t.NAME == entity.LAW_NAME && t.ID == entity.LAW_ID); if (law != null) { sys = new T_LR_LAW_SC_SYSTEM(); sys.LAW_ID = law.ID; sys.SC_SYSTEM_ID = entity.ID; sys.ORG_ID = entity.ORG_ID; } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (oldEntity != null) this.UpdateEntityNoCommit(oldEntity); if (sendNotice != null) this.UpdateEntityNoCommit(sendNotice); if (sys != null) this.UpdateEntityNoCommit(sys); }); return true; } private bool BackUpdate_PESafetyEvaluationRecord(string id) { var entity = this.GetEntity(id); entity.STATUS = PFStandardStatus.Archived; T_FM_NOTIFICATION_TASK sendNotice = null; var userInfo = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0); if (userInfo == null && entity.ORG_ID.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca") { userInfo = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0); } if (userInfo != null) { sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("请上传安全标准化自评报告", entity.ID, entity.ORG_ID, userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.今日提醒, "PF135"); } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (sendNotice != null) this.UpdateEntityNoCommit(sendNotice); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PESafetyMonitorRecord(string id) { var entity = this.GetEntity(id); entity.STATUS = PFStandardStatus.Archived; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PESafetyMonitorPlan(string id) { var entity = this.GetEntity(id); entity.STATUS = PFStandardStatus.Archived; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PECorrectivePreventiveEvaluation(string id) { var entity = this.GetEntity(id); entity.STATUS = PFStandardStatus.Archived; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PECorrectivePreventiveProcess(string id) { List notices = new List(); var entity = this.GetEntity(id, "Nav_Details", "Nav_Details.Nav_Files", "Nav_Corrective", "Nav_Corrective.Nav_Details"); entity.STATUS = PFStandardStatus.Archived; T_PE_CORRECTIVE_PREVENTIVE_EVALUATION evaluation = null; List details = new List(); List files = new List(); List deleteDetailIds = new List(); List deleteFileIds = new List(); if (entity != null && entity.Nav_Details != null && entity.Nav_Details.Any()) { var evaluationIsExist = this.GetEntity(t => t.CORRECTIVE_PREVENTIVE_PROCESS_ID == entity.ID, new string[] { "Nav_Details.Nav_Files" }); if (evaluationIsExist != null) { if (evaluationIsExist.Nav_Details != null && evaluationIsExist.Nav_Details.Any()) { var detailTemps = evaluationIsExist.Nav_Details.Where(m => m.EVALUATE_RESULT == PEEvaluateResultEnum.NG).ToList(); var detailIds = detailTemps.Select(t => t.ID).ToList(); deleteDetailIds.AddRange(detailIds); detailTemps.ForEach(t => { if (t.Nav_Files != null && t.Nav_Files.Any()) { var ids = t.Nav_Files.Select(t => t.ID).ToList(); deleteFileIds.AddRange(ids); } t.Nav_Files = null; }); if (entity.Nav_Details != null && entity.Nav_Details.Any()) { var existContent = detailTemps.Select(m => m.CONTENTS).ToList(); var existPrevent = detailTemps.Select(m => m.CORRECTIVE_PREVENTIVE).ToList(); var entityDetails = entity.Nav_Details.Where(m => existContent.Contains(m.CONTENTS) && existPrevent.Contains(m.CORRECTIVE_PREVENTIVE)).ToList(); foreach (var detail in entityDetails) { T_PE_CORRECTIVE_PREVENTIVE_EVALUATION_DETAIL de = new T_PE_CORRECTIVE_PREVENTIVE_EVALUATION_DETAIL(); de.ORG_ID = detail.ORG_ID; de.CORRECTIVE_PREVENTIVE_EVALUATION_ID = evaluationIsExist.ID; de.CONTENTS = detail.CONTENTS; de.CORRECTIVE_PREVENTIVE = detail.CORRECTIVE_PREVENTIVE; de.SITUATION = detail.SITUATION; de.NOT_CARRY_OUT = detail.NOT_CARRY_OUT; details.Add(de); if (detail.Nav_Files != null && detail.Nav_Files.Any()) { foreach (var file in detail.Nav_Files) { T_PE_CORRECTIVE_PREVENTIVE_EVALUATION_DETAIL_FILE fe = new T_PE_CORRECTIVE_PREVENTIVE_EVALUATION_DETAIL_FILE(); fe.ORG_ID = file.ORG_ID; fe.CORRECTIVE_PREVENTIVE_EVALUATION_DETAIL_ID = de.ID; fe.IMG_FILE_ID = file.IMG_FILE_ID; files.Add(fe); } } } if (entity.Nav_Corrective != null && entity.Nav_Corrective.Nav_Details != null && entity.Nav_Corrective.Nav_Details.Any()) { details.ForEach(t => { var first = entity.Nav_Corrective.Nav_Details.FirstOrDefault(m => m.CONTENTS == t.CONTENTS); if (first != null) t.USER_ID = first.USER_ID; }); } var userIds = entity.Nav_Corrective.Nav_Details.Where(m => existContent.Contains(m.CONTENTS)).Select(t => t.USER_ID.Value).Distinct().ToList();// && m.DEPARTMENT_ID == entity.DEPARTMENT_ID var users = this.GetEntities(t => userIds.Contains(t.ID) && t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)).Distinct().ToList(); List userNames = new List(); foreach (var user in users) { userNames.Add(user.NAME); } //发消息 notices = NotificationTaskService.InsertUserNoticeTaskModels("纠正与预防措施评估表", evaluationIsExist.ID, evaluationIsExist.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PE013"); } } } else { evaluation = new T_PE_CORRECTIVE_PREVENTIVE_EVALUATION(); evaluation.ORG_ID = entity.ORG_ID; evaluation.USER_ID = entity.USER_ID; evaluation.DEPARTMENT_ID = entity.DEPARTMENT_ID; evaluation.STATUS = PFStandardStatus.Sign; evaluation.CORRECTIVE_PREVENTIVE_PROCESS_ID = entity.ID; foreach (var detail in entity.Nav_Details) { T_PE_CORRECTIVE_PREVENTIVE_EVALUATION_DETAIL de = new T_PE_CORRECTIVE_PREVENTIVE_EVALUATION_DETAIL(); de.ORG_ID = detail.ORG_ID; de.CORRECTIVE_PREVENTIVE_EVALUATION_ID = evaluation.ID; de.CONTENTS = detail.CONTENTS; de.CORRECTIVE_PREVENTIVE = detail.CORRECTIVE_PREVENTIVE; de.SITUATION = detail.SITUATION; de.NOT_CARRY_OUT = detail.NOT_CARRY_OUT; details.Add(de); if (detail.Nav_Files != null && detail.Nav_Files.Any()) { foreach (var file in detail.Nav_Files) { T_PE_CORRECTIVE_PREVENTIVE_EVALUATION_DETAIL_FILE fe = new T_PE_CORRECTIVE_PREVENTIVE_EVALUATION_DETAIL_FILE(); fe.ORG_ID = file.ORG_ID; fe.CORRECTIVE_PREVENTIVE_EVALUATION_DETAIL_ID = de.ID; fe.IMG_FILE_ID = file.IMG_FILE_ID; files.Add(fe); } } } if (entity.Nav_Corrective != null && entity.Nav_Corrective.Nav_Details != null && entity.Nav_Corrective.Nav_Details.Any()) { details.ForEach(t => { var first = entity.Nav_Corrective.Nav_Details.FirstOrDefault(m => m.CONTENTS == t.CONTENTS); if (first != null) t.USER_ID = first.USER_ID; }); var contents = entity.Nav_Details.Select(t => t.CONTENTS).Distinct().ToList(); var userIds = entity.Nav_Corrective.Nav_Details.Where(m => contents.Contains(m.CONTENTS)).Select(t => t.USER_ID.Value).Distinct().ToList();// && m.DEPARTMENT_ID == entity.DEPARTMENT_ID var users = this.GetEntities(t => userIds.Contains(t.ID) && t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)).Distinct().ToList(); List userNames = new List(); foreach (var user in users) { userNames.Add(user.NAME); } //发消息 notices = NotificationTaskService.InsertUserNoticeTaskModels("纠正与预防措施评估表", evaluation.ID, evaluation.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PE013"); } } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (evaluation != null) this.UpdateEntityNoCommit(evaluation); if (deleteDetailIds != null && deleteDetailIds.Any()) this.BantchDeleteEntityNoCommit(deleteDetailIds); if (details != null && details.Any()) this.BantchSaveEntityNoCommit(details); if (deleteFileIds != null && deleteFileIds.Any()) this.BantchDeleteEntityNoCommit(deleteFileIds); if (files != null && files.Any()) this.BantchSaveEntityNoCommit(files); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PECorrectivePreventive(string id) { List notices = new List(); var entity = this.GetEntity(id, "Nav_Details"); entity.STATUS = PFStandardStatus.Archived; //List userNames = new List(); //List processList = new List(); //List processDetailList = new List(); var departmentIds = entity.Nav_Details.Where(m => m.DEPARTMENT_ID != null).Select(t => t.DEPARTMENT_ID.Value).Distinct().ToList(); var detailUserIds = entity.Nav_Details.Where(m => m.USER_ID != null).Select(t => t.USER_ID).Distinct().ToList(); var departmentIdUsers = this.GetEntities(t => departmentIds.Contains(t.ID) && t.USER_ID != null && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, new BaseFilter(entity.ORG_ID)).ToList(); var userIds = departmentIdUsers.Where(x => x.USER_ID != null).Select(t => t.USER_ID).Distinct().ToList(); var users = this.GetEntities(t => (userIds.Contains(t.ID) || detailUserIds.Contains(t.ID)) && t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)).Distinct().ToList(); if (departmentIds != null && departmentIds.Any()) { foreach (var departmentId in departmentIds) { var departmentUser = departmentIdUsers.FirstOrDefault(t => t.ID == departmentId); if (departmentUser != null && departmentUser.USER_ID != null) { var user = users.FirstOrDefault(t => t.ID == departmentUser.USER_ID); //T_PE_CORRECTIVE_PREVENTIVE_PROCESS process = new T_PE_CORRECTIVE_PREVENTIVE_PROCESS(); //process.USER_ID = departmentUser.USER_ID; //process.DEPARTMENT_ID = departmentId; //process.STATUS = PFStandardStatus.Draft; //process.CORRECTIVE_PREVENTIVE_ID = entity.ID; //process.ORG_ID = departmentUser.ORG_ID; //processList.Add(process); //userNames.Add(user.NAME); //var details = entity.Nav_Details.Where(t => t.DEPARTMENT_ID == departmentId).ToList(); //if (details != null && details.Any()) //{ // foreach (var detail in details) // { // T_PE_CORRECTIVE_PREVENTIVE_PROCESS_DETAIL processDetail = new T_PE_CORRECTIVE_PREVENTIVE_PROCESS_DETAIL(); // processDetail.ORG_ID = detail.ORG_ID; // processDetail.CORRECTIVE_PREVENTIVE_PROCESS_ID = process.ID; // processDetail.CONTENTS = detail.CONTENTS; // processDetail.SITUATION = PESituationEnum.NotCarryOut; // processDetail.RECTIFICATION_TIME = detail.RECTIFICATION_TIME; // processDetail.PRODUCTION_UNIT_ID = detail.PRODUCTION_UNIT_ID; // processDetail.STANDARDIZED_ID = detail.STANDARDIZED_ID; // processDetailList.Add(processDetail); // } //} //发消息 T_FM_NOTIFICATION_TASK noticeView = NotificationTaskService.InsertUserNoticeTaskModel("纠正与预防措施通知单", entity.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PE005_SHOWPRINT"); //发消息 //T_FM_NOTIFICATION_TASK notice = NotificationTaskService.InsertUserNoticeTaskModel("纠正与预防措施处理单", process.ID, process.ORG_ID, user.ID, user.NAME, DateTime.Now.AddHours(1), //DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PE007"); //发消息 notices.Add(noticeView); //notices.Add(notice); } } } var tempUser = detailUserIds.Where(t => !userIds.Contains(t.Value)).ToList(); if (tempUser != null && tempUser.Any()) { foreach (var user in tempUser) { var first = users.FirstOrDefault(t => t.ID == user.Value); if (first != null) { T_FM_NOTIFICATION_TASK noticeView = NotificationTaskService.InsertUserNoticeTaskModel("纠正与预防措施通知单", entity.ID, entity.ORG_ID, first.ID, first.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PE005_SHOWPRINT"); notices.Add(noticeView); } } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); //if (processList != null && processList.Any()) // this.BantchSaveEntityNoCommit(processList); //if (processDetailList != null && processDetailList.Any()) // this.BantchSaveEntityNoCommit(processDetailList); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PTMonitorAssessment(string id) { var entity = this.GetEntity(id, "Nav_Details.Nav_Contents"); entity.STATUS = PFStandardStatus.Archived; List notices = null; if (entity.Nav_Details != null && entity.Nav_Details.Any()) { var userIds = entity.Nav_Details.Where(m => m.USER_ID != null).Select(t => (Guid)t.USER_ID).Distinct().ToList(); var newFilter = new BaseFilter(entity.ORG_ID); newFilter.SelectField = new List { "ID", "NAME" }; var userNames = new List(); var user = this.GetEntities(t => userIds.Contains(t.ID) && t.ENABLE_STATUS == 0, newFilter); if (userIds != null && userIds.Any()) { userIds.ForEach(t => { var name = user.FirstOrDefault(m => m.ID == t); if (name != null) userNames.Add(name.NAME); }); var cycleName = entity.ASSESSMENT_CYCLE.GetDescription(); //发消息 notices = NotificationTaskService.InsertUserNoticeTaskModels("(" + cycleName + ")" + "个人监测与考核记录-查阅", entity.ID, entity.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PT029_SHOWPRINT"); } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PTAssessmentPlanAudit(string id) { List notices = new List(); var entity = this.GetEntity(id, "Nav_Files"); var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; var entityDetails = this.GetEntities(t => t.ASSESSMENT_PLAN_ID == Guid.Parse(id), new BaseFilter(orgId), "Nav_Contents").ToList(); entity.STATUS = PFStandardStatus.Archived; var departmentIds = entityDetails.Where(m => m.DEPARTMENT_ID != null).Select(t => t.DEPARTMENT_ID.Value).Distinct().ToList(); //userIds = this.GetEntities(t => departmentIds.Contains(t.ID) && t.USER_ID != null && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, new BaseFilter(entity.ORG_ID)).Select(t => t.USER_ID.Value).Distinct().ToList(); var userIdss = entityDetails.Where(m => m.USER_ID != null).Select(t => t.USER_ID.Value).Distinct().ToList(); //if (userIdss != null && userIdss.Any()) // userIds.AddRange(userIdss); //userIds = userIds.Distinct().ToList(); //var users = this.GetEntities(t => userIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).Distinct().ToList(); //foreach (var user in users) //{ // userNames.Add(user.NAME); //} var users = this.GetEntities(t => (t.DEPARTMENT_ID != null && departmentIds.Contains(t.DEPARTMENT_ID.Value) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人") && t.ENABLE_STATUS == 0) || userIdss.Contains(t.ID), new BaseFilter(entity.ORG_ID), "Nav_ApproveRole"); var sendUsers = users.Distinct().ToList(); switch (entity.DEPARTMENT_TYPE) { case FMDepartmentType.Company: sendUsers = users.Where(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "部门负责人" || t.Nav_ApproveRole.NAME == "安环部负责人").ToList(); var userInfoFirst = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人"); if (userInfoFirst == null && entity.ORG_ID.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca") { var userInfo = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0); sendUsers.Add(userInfo); } break; case FMDepartmentType.Department: sendUsers = users.Where(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "车间负责人").ToList(); break; case FMDepartmentType.Workshop: sendUsers = users.Where(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "班组负责人").ToList(); break; case FMDepartmentType.Class: sendUsers = null; //entity.STATUS = PFStandardStatus.Archived; break; default: sendUsers = null; //entity.STATUS = PFStandardStatus.Archived; break; } var name = Enum.GetName(typeof(FMDepartmentType), entity.DEPARTMENT_TYPE); if (sendUsers != null && sendUsers.Any()) { List userIds = new List(); List userNames = new List(); foreach (var user in sendUsers) { userIds.Add(user.ID); userNames.Add(user.NAME); } //发消息 notices = NotificationTaskService.InsertUserNoticeTaskModels(name + "考核方案审阅", entity.ID, entity.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PT024_SHOWPRINT"); } if (entity != null && entity.Nav_Files != null && entity.Nav_Files.Any()) { var fileIds = entity.Nav_Files.Select(t => t.IMG_FILE_ID).Distinct().ToList(); DepartmentService.AddDocument("安全生产方针与目标", "考核方案审核表", name + "安全生产目标与指标考核方案", "附件", "计划文件", DateTime.Now.AddYears(1), entity.ID, fileIds, entity.CREATER_ID); } List deleteContentId = new List(); List details = new List(); List contents = new List(); if (entityDetails != null && entityDetails.Any()) { var tempDetails = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(entity.ORG_ID)).ToList(); var tempDetailContents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(entity.ORG_ID)).ToList(); foreach (var item in entityDetails) { var temps = tempDetails.Where(t => t.DEPARTMENT_ID == item.DEPARTMENT_ID && t.USER_ID == item.USER_ID).ToList(); if (temps != null && temps.Any()) { if (item.Nav_Contents != null && item.Nav_Contents.Any()) { var tempIds = temps.Select(t => t.ID).ToList(); var detailContentIds = tempDetailContents.Where(t => tempIds.Contains(t.PLAN_AUDIT_DETAIL_ID)).Select(m => m.ID).ToList(); deleteContentId.AddRange(detailContentIds); foreach (var temp in temps) { foreach (var content in item.Nav_Contents) { T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL_CONTENT contentTemp = new T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL_CONTENT(); contentTemp.PLAN_AUDIT_DETAIL_ID = temp.ID; contentTemp.ROW_NO = content.ROW_NO; contentTemp.NAME = content.NAME; contentTemp.SCORE = content.SCORE; contentTemp.METHOD = content.METHOD; contentTemp.ORG_ID = orgId; contents.Add(contentTemp); } } } } else { T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL de = new T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL(); de.ORG_ID = orgId; de.DEPARTMENT_ID = item.DEPARTMENT_ID; de.USER_ID = item.USER_ID; de.YEAR = item.YEAR; de.ASSESSMENT_CYCLE = item.ASSESSMENT_CYCLE; details.Add(de); if (item.Nav_Contents != null && item.Nav_Contents.Any()) { foreach (var content in item.Nav_Contents) { T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL_CONTENT contentTemp = new T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL_CONTENT(); contentTemp.PLAN_AUDIT_DETAIL_ID = de.ID; contentTemp.ROW_NO = content.ROW_NO; contentTemp.NAME = content.NAME; contentTemp.SCORE = content.SCORE; contentTemp.METHOD = content.METHOD; contentTemp.ORG_ID = orgId; contents.Add(contentTemp); } } } } } //entity.Nav_Details = null; entity.Nav_Files = null; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (deleteContentId != null && deleteContentId.Any()) this.BantchDeleteEntityNoCommit(deleteContentId); if (details != null && details.Any()) this.BantchSaveEntityNoCommit(details); if (contents != null && contents.Any()) this.BantchSaveEntityNoCommit(contents); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PTAssessmentPlanAuditYL(string id) { List notices = new List(); var entity = this.GetEntity(id, "Nav_Files"); var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; var entityDetails = this.GetEntities(t => t.ASSESSMENT_PLAN_ID == Guid.Parse(id), new BaseFilter(orgId), "Nav_Contents").ToList(); entity.STATUS = PFStandardStatus.Archived; var departmentIds = entityDetails.Where(m => m.DEPARTMENT_ID != null).Select(t => t.DEPARTMENT_ID.Value).Distinct().ToList(); var userIdss = entityDetails.Where(m => m.USER_ID != null).Select(t => t.USER_ID.Value).Distinct().ToList(); var users = this.GetEntities(t => (t.DEPARTMENT_ID != null && departmentIds.Contains(t.DEPARTMENT_ID.Value) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人") && t.ENABLE_STATUS == 0) || userIdss.Contains(t.ID), new BaseFilter(entity.ORG_ID), "Nav_ApproveRole"); var sendUsers = users.Distinct().ToList(); switch (entity.DEPARTMENT_TYPE) { case FMDepartmentType.Company: sendUsers = users.Where(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "部门负责人" || t.Nav_ApproveRole.NAME == "安环部负责人").ToList(); var userInfoFirst = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人"); if (userInfoFirst == null && entity.ORG_ID.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca") { var userInfo = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0); sendUsers.Add(userInfo); } break; case FMDepartmentType.Department: sendUsers = users.Where(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "班组负责人").ToList(); break; case FMDepartmentType.Class: sendUsers = null; entity.STATUS = PFStandardStatus.Archived; break; default: sendUsers = null; entity.STATUS = PFStandardStatus.Archived; break; } var name = Enum.GetName(typeof(FMDepartmentType), entity.DEPARTMENT_TYPE); if (sendUsers != null && sendUsers.Any()) { List userIds = new List(); List userNames = new List(); foreach (var user in sendUsers) { userIds.Add(user.ID); userNames.Add(user.NAME); } //发消息 notices = NotificationTaskService.InsertUserNoticeTaskModels(name + "考核方案审阅", entity.ID, entity.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PT024_SHOWPRINT"); } if (entity != null && entity.Nav_Files != null && entity.Nav_Files.Any()) { var fileIds = entity.Nav_Files.Select(t => t.IMG_FILE_ID).Distinct().ToList(); DepartmentService.AddDocument("安全生产方针与目标", "考核方案审核表", name + "安全生产目标与指标考核方案", "附件", "计划文件", DateTime.Now.AddYears(1), entity.ID, fileIds, entity.CREATER_ID); } List deleteContentId = new List(); List details = new List(); List contents = new List(); if (entityDetails != null && entityDetails.Any()) { var tempDetails = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(entity.ORG_ID)).ToList(); var tempDetailContents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(entity.ORG_ID)).ToList(); foreach (var item in entityDetails) { var temps = tempDetails.Where(t => t.DEPARTMENT_ID == item.DEPARTMENT_ID && t.USER_ID == item.USER_ID).ToList(); if (temps != null && temps.Any()) { if (item.Nav_Contents != null && item.Nav_Contents.Any()) { var tempIds = temps.Select(t => t.ID).ToList(); var detailContentIds = tempDetailContents.Where(t => tempIds.Contains(t.PLAN_AUDIT_DETAIL_ID)).Select(m => m.ID).ToList(); deleteContentId.AddRange(detailContentIds); foreach (var temp in temps) { foreach (var content in item.Nav_Contents) { T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL_CONTENT contentTemp = new T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL_CONTENT(); contentTemp.PLAN_AUDIT_DETAIL_ID = temp.ID; contentTemp.ROW_NO = content.ROW_NO; contentTemp.NAME = content.NAME; contentTemp.SCORE = content.SCORE; contentTemp.METHOD = content.METHOD; contentTemp.ORG_ID = orgId; contents.Add(contentTemp); } } } } else { T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL de = new T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL(); de.ORG_ID = orgId; de.DEPARTMENT_ID = item.DEPARTMENT_ID; de.USER_ID = item.USER_ID; de.YEAR = item.YEAR; de.ASSESSMENT_CYCLE = item.ASSESSMENT_CYCLE; details.Add(de); if (item.Nav_Contents != null && item.Nav_Contents.Any()) { foreach (var content in item.Nav_Contents) { T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL_CONTENT contentTemp = new T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL_CONTENT(); contentTemp.PLAN_AUDIT_DETAIL_ID = de.ID; contentTemp.ROW_NO = content.ROW_NO; contentTemp.NAME = content.NAME; contentTemp.SCORE = content.SCORE; contentTemp.METHOD = content.METHOD; contentTemp.ORG_ID = orgId; contents.Add(contentTemp); } } } } } entity.Nav_Details = null; entity.Nav_Files = null; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity, "STATUS"); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (deleteContentId != null && deleteContentId.Any()) this.BantchDeleteEntityNoCommit(deleteContentId); if (details != null && details.Any()) this.BantchSaveEntityNoCommit(details); if (contents != null && contents.Any()) this.BantchSaveEntityNoCommit(contents); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PTIndicatorFormulationDepartment(string id) { List notices = new List(); var entity = this.GetEntity(id, "Nav_TeamDetail", "Nav_DepartmentDetail", "Nav_Files"); entity.STATUS = PFStandardStatus.Archived; List userNames = new List(); var userIds = entity.Nav_TeamDetail.Select(t => t.USER_ID.Value).Distinct().ToList(); if (entity.DEPARTMENT_TYPE != FMDepartmentType.Class) { var departmentIds = entity.Nav_DepartmentDetail.Select(t => t.DEPARTMENT_ID.Value).Distinct().ToList(); var userIdTemps = this.GetEntities(t => departmentIds.Contains(t.ID) && t.USER_ID != null && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, new BaseFilter(entity.ORG_ID)).Select(t => t.USER_ID.Value).Distinct().ToList(); userIds.AddRange(userIdTemps); userIds = userIds.Distinct().ToList(); } var users = this.GetEntities(t => userIds.Contains(t.ID), new BaseFilter(entity.ORG_ID));//&& t.ID != loginUserId foreach (var user in users) { userNames.Add(user.NAME); } var name = ""; switch (entity.DEPARTMENT_TYPE) { case FMDepartmentType.Company: name = "部门"; break; case FMDepartmentType.Department: name = "车间"; break; case FMDepartmentType.Workshop: name = "班组"; break; case FMDepartmentType.Class: name = "个人"; break; default: name = ""; break; } //var name = Enum.GetName(typeof(FMDepartmentType), entity.DEPARTMENT_TYPE); //发消息 notices = NotificationTaskService.InsertUserNoticeTaskModels(name + "安全生产目标与指标审阅", entity.ID, entity.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PT020_SHOWPRINT"); if (entity.Nav_Files != null && entity.Nav_Files.Any()) { var fileIds = entity.Nav_Files.Select(t => t.IMG_FILE_ID).Distinct().ToList(); DepartmentService.AddDocument("安全生产方针与目标", "安全生产目标与指标制定", name + "安全生产目标与指标实施计划", "实施计划附件", "计划文件", DateTime.Now.AddYears(1), entity.ID, fileIds, entity.CREATER_ID); } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PTIndicatorFormulationDepartmentYL(string id) { List notices = new List(); var entity = this.GetEntity(id, "Nav_TeamDetail", "Nav_DepartmentDetail", "Nav_Files"); entity.STATUS = PFStandardStatus.Archived; List userNames = new List(); var userIds = entity.Nav_TeamDetail.Select(t => t.USER_ID.Value).Distinct().ToList(); if (entity.DEPARTMENT_TYPE != FMDepartmentType.Class) { var departmentIds = entity.Nav_DepartmentDetail.Select(t => t.DEPARTMENT_ID.Value).Distinct().ToList(); var userIdTemps = this.GetEntities(t => departmentIds.Contains(t.ID) && t.USER_ID != null && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, new BaseFilter(entity.ORG_ID)).Select(t => t.USER_ID.Value).Distinct().ToList(); userIds.AddRange(userIdTemps); userIds = userIds.Distinct().ToList(); } var users = this.GetEntities(t => userIds.Contains(t.ID) && t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID));//&& t.ID != loginUserId foreach (var user in users) { userNames.Add(user.NAME); } var name = ""; switch (entity.DEPARTMENT_TYPE) { case FMDepartmentType.Company: name = "部门"; break; case FMDepartmentType.Department: name = "班组"; break; case FMDepartmentType.Class: name = "个人"; break; default: name = ""; break; } //var name = Enum.GetName(typeof(FMDepartmentType), entity.DEPARTMENT_TYPE); //发消息 notices = NotificationTaskService.InsertUserNoticeTaskModels(name + "安全生产目标与指标审阅", entity.ID, entity.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PT020_SHOWPRINT"); if (entity.Nav_Files != null && entity.Nav_Files.Any()) { var fileIds = entity.Nav_Files.Select(t => t.IMG_FILE_ID).Distinct().ToList(); DepartmentService.AddDocument("安全生产方针与目标", "安全生产目标与指标制定", name + "安全生产目标与指标实施计划", "实施计划附件", "计划文件", DateTime.Now.AddYears(1), entity.ID, fileIds, entity.CREATER_ID); } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_PTIndicatorFormulation(string id) { var entity = this.GetEntity(id, "Nav_User", "Nav_Files", "Nav_Goals"); entity.STATUS = PFStandardStatus.Archived; if (entity.Nav_Files != null && entity.Nav_Files.Any()) { var fileIds = entity.Nav_Files.Select(t => t.IMG_FILE_ID).Distinct().ToList(); DepartmentService.AddDocument("安全生产方针与目标", "安全生产目标与指标制定", "安全生产目标与指标", "年度安全生产目标与指标附件", "计划文件", DateTime.Now.AddYears(1), entity.ID, fileIds, entity.CREATER_ID); } //触发部门安全生产目标与指标 T_PT_INDICATOR_FORMULATION_DEPARTMENT formulationDepartment = null; List departmentDetails = new List(); List teamDetails = new List(); List departmentContents = new List(); List teamContents = new List(); //触发考核方案审核表 T_PT_ASSESSMENT_PLAN_AUDIT audit = null; List auditDetails = new List(); List contents = new List(); List notices = new List(); var userInfo = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0); if (userInfo == null && entity.ORG_ID.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca") { userInfo = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0); } if (userInfo != null) { formulationDepartment = new T_PT_INDICATOR_FORMULATION_DEPARTMENT(); formulationDepartment.ORG_ID = entity.ORG_ID; formulationDepartment.DEPARTMENT_TYPE = FMDepartmentType.Company; formulationDepartment.STATUS = PFStandardStatus.Draft; formulationDepartment.YEAR = entity.YEAR; formulationDepartment.USER_ID = userInfo.ID; formulationDepartment.DEPARTMENT_ID = userInfo.DEPARTMENT_ID; formulationDepartment.SET_TIME = DateTime.Now; formulationDepartment.INDICATOR_FORMULATION_ID = entity.ID; audit = new T_PT_ASSESSMENT_PLAN_AUDIT(); audit.ORG_ID = entity.ORG_ID; audit.DEPARTMENT_TYPE = FMDepartmentType.Company; audit.STATUS = PFStandardStatus.Draft; audit.YEAR = entity.YEAR; audit.USER_ID = userInfo.ID; audit.DEPARTMENT_ID = userInfo.DEPARTMENT_ID; audit.SET_TIME = DateTime.Now; audit.INDICATOR_FORMULATION_ID = entity.ID; var departmentInfos = this.GetEntities(t => t.DEPARTMENT_TYPE == (int)FMDepartmentType.Department && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, new BaseFilter(entity.ORG_ID)); var departmentIds = departmentInfos.Select(m => m.ID).Distinct().ToList(); if (departmentIds.Any()) { foreach (var department in departmentIds) { //细表 T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL detail = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL(); detail.ORG_ID = entity.ORG_ID; detail.DEPARTMENT_ID = department; detail.INDICATOR_FORMULATION_DEPARTMENT_ID = formulationDepartment.ID; departmentDetails.Add(detail); //细表 T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL auditDetail = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL(); auditDetail.ORG_ID = entity.ORG_ID; auditDetail.DEPARTMENT_ID = department; auditDetail.ASSESSMENT_PLAN_ID = audit.ID; auditDetail.YEAR = DateTime.Now.Year.ToString(); auditDetail.ASSESSMENT_CYCLE = PTAssessmentCycleEnums.Year; auditDetails.Add(auditDetail); } } var chargeIds = departmentInfos.Select(t => t.USER_ID).Distinct().ToList(); //var chargeAnotherIds = departmentInfos.Where(t=>t.USER_ID ==null).Select(t => t.CHARGEUSER_ID).Distinct().ToList(); //chargeIds.AddRange(chargeAnotherIds); var userInfos = this.GetEntities(t => (t.Nav_Department != null && (t.Nav_Department.DEPARTMENT_TYPE == (int)FMDepartmentType.Company || t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("副总")) && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && !t.NAME.Contains("管理员")) || chargeIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToList(); if (userInfos != null && userInfos.Any()) { foreach (var info in userInfos) { //细表 T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM team = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM(); team.ORG_ID = entity.ORG_ID; team.USER_ID = info.ID; team.INDICATOR_FORMULATION_DEPARTMENT_ID = formulationDepartment.ID; teamDetails.Add(team); //细表 T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL auditDetail = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL(); auditDetail.ORG_ID = entity.ORG_ID; auditDetail.DEPARTMENT_ID = info.DEPARTMENT_ID; auditDetail.USER_ID = info.ID; auditDetail.ASSESSMENT_PLAN_ID = audit.ID; auditDetail.YEAR = DateTime.Now.Year.ToString(); auditDetail.ASSESSMENT_CYCLE = PTAssessmentCycleEnums.Year; auditDetails.Add(auditDetail); } } var userIds = userInfos.Select(t => t.ID).ToList(); var tempDetails = this.GetEntities(t => (departmentIds.Contains(t.DEPARTMENT_ID.Value) || userIds.Contains(t.USER_ID.Value)), new BaseFilter(entity.ORG_ID), new string[] { "Nav_Contents" }).ToList(); if (departmentDetails != null && departmentDetails.Any()) { foreach (var auditDs in departmentDetails) { if (entity.Nav_Goals != null && entity.Nav_Goals.Any()) { entity.Nav_Goals.ForEach(t => { T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL_CONTENT content = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL_CONTENT(); content.ORG_ID = t.ORG_ID; content.INDICATOR_FORMULATION_DEPARTMENT_DETAIL_ID = auditDs.ID; content.NAME = t.NAME; content.ROW_NO = t.ROW_NO; departmentContents.Add(content); }); } } } if (teamDetails != null && teamDetails.Any()) { foreach (var auditDs in teamDetails) { if (entity.Nav_Goals != null && entity.Nav_Goals.Any()) { entity.Nav_Goals.ForEach(t => { T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT content = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT(); content.ORG_ID = t.ORG_ID; content.INDICATOR_FORMULATION_DEPARTMENT_TEAM_ID = auditDs.ID; content.NAME = t.NAME; content.ROW_NO = t.ROW_NO; teamContents.Add(content); }); } } } if (auditDetails != null && auditDetails.Any()) { foreach (var auditDs in auditDetails) { var tempCurrent = tempDetails.FirstOrDefault(t => t.DEPARTMENT_ID == auditDs.DEPARTMENT_ID && t.USER_ID == auditDs.USER_ID); if (tempCurrent == null) tempCurrent = tempDetails.FirstOrDefault(t => t.USER_ID != null && t.USER_ID == auditDs.USER_ID); if (tempCurrent != null) { auditDs.ASSESSMENT_CYCLE = tempCurrent.ASSESSMENT_CYCLE != 0 ? tempCurrent.ASSESSMENT_CYCLE : PTAssessmentCycleEnums.Year; if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any()) { tempCurrent.Nav_Contents.ForEach(t => { T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT content = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT(); content.ORG_ID = t.ORG_ID; content.PLAN_AUDIT_DETAIL_ID = auditDs.ID; content.NAME = t.NAME; content.SCORE = t.SCORE; content.METHOD = t.METHOD; contents.Add(content); }); } } } } //if (departmentDetails != null && departmentDetails.Any()) //{ // foreach (var auditDs in departmentDetails) // { // var tempCurrent = tempDetails.FirstOrDefault(t => t.DEPARTMENT_ID == auditDs.DEPARTMENT_ID && t.USER_ID == null); // if (tempCurrent != null) // { // if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any()) // { // tempCurrent.Nav_Contents.ForEach(t => // { // T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL_CONTENT content = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_DETAIL_CONTENT(); // content.ORG_ID = t.ORG_ID; // content.INDICATOR_FORMULATION_DEPARTMENT_DETAIL_ID = auditDs.ID; // content.NAME = t.NAME; // content.ROW_NO = t.ROW_NO; // departmentContents.Add(content); // }); // } // } // } //} //if (teamDetails != null && teamDetails.Any()) //{ // foreach (var auditDs in teamDetails) // { // var tempCurrent = tempDetails.FirstOrDefault(t => t.USER_ID == auditDs.USER_ID); // if (tempCurrent != null) // { // if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any()) // { // tempCurrent.Nav_Contents.ForEach(t => // { // T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT content = new T_PT_INDICATOR_FORMULATION_DEPARTMENT_TEAM_CONTENT(); // content.ORG_ID = t.ORG_ID; // content.INDICATOR_FORMULATION_DEPARTMENT_TEAM_ID = auditDs.ID; // content.NAME = t.NAME; // content.ROW_NO = t.ROW_NO; // teamContents.Add(content); // }); // } // } // } //} //if (auditDetails != null && auditDetails.Any()) //{ // foreach (var auditDs in auditDetails) // { // var tempCurrent = tempDetails.FirstOrDefault(t => t.DEPARTMENT_ID == auditDs.DEPARTMENT_ID && t.USER_ID == auditDs.USER_ID); // if (tempCurrent != null) // { // auditDs.ASSESSMENT_CYCLE = tempCurrent.ASSESSMENT_CYCLE != 0 ? tempCurrent.ASSESSMENT_CYCLE : PTAssessmentCycleEnums.Year; // if (tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any()) // { // tempCurrent.Nav_Contents.ForEach(t => // { // T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT content = new T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL_CONTENT(); // content.ORG_ID = t.ORG_ID; // content.PLAN_AUDIT_DETAIL_ID = auditDs.ID; // content.NAME = t.NAME; // content.SCORE = t.SCORE; // content.METHOD = t.METHOD; // contents.Add(content); // }); // } // } // } //} notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("部门目标与指标分解", formulationDepartment.ID, entity.ORG_ID, userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(5), (int)FMNoticeTypeEnum.消息, "PT020")); notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("公司考核方案审核", audit.ID, entity.ORG_ID, userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(5), (int)FMNoticeTypeEnum.消息, "PT024")); } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (formulationDepartment != null) this.UpdateEntityNoCommit(formulationDepartment); if (departmentDetails != null && departmentDetails.Any()) this.BantchSaveEntityNoCommit(departmentDetails); if (departmentContents != null && departmentContents.Any()) this.BantchSaveEntityNoCommit(departmentContents); if (teamDetails != null && teamDetails.Any()) this.BantchSaveEntityNoCommit(teamDetails); if (teamContents != null && teamContents.Any()) this.BantchSaveEntityNoCommit(teamContents); if (audit != null) this.UpdateEntityNoCommit(audit); if (auditDetails != null && auditDetails.Any()) this.BantchSaveEntityNoCommit(auditDetails); if (contents != null && contents.Any()) this.BantchSaveEntityNoCommit(contents); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_HMCrucialTaskAnalysis(string id) { //var entity = this.GetEntity(id, false, "Nav_OperationAnalyze", "Nav_Details", "Nav_Details.Nav_OperationStep", "Nav_Details.Nav_EvaluateRisk"); var entity = this.GetEntity(id, new string[] { "Nav_OperationAnalyze", "Nav_Details", "Nav_Details.Nav_OperationStep" }); entity.IS_PUBLISH = FOPreMeetingStatusEnum.归档; entity.COMPLETE_DATE = DateTime.Now; //写入作业任务库 List addOperations = new List(); List safeConfs = new List(); List safeMeas = new List(); List dealMeas = new List(); List posts = new List(); //List areas = new List(); List notices = new List(); List confIds = new List(); List measIds = new List(); List dealIds = new List(); List postIds = new List(); if (entity.Nav_Details != null && entity.Nav_Details.Any()) { List jobDetails = null; var stepIds = entity.Nav_Details.Select(t => t.OPERATION_STEP_ID).Distinct().ToList(); if (entity.Nav_OperationAnalyze != null && entity.Nav_OperationAnalyze.JOBTASK_IDENTIFY_ID != null) { jobDetails = this.GetEntities(t => t.JOBTASK_IDENTIFY_ID == entity.Nav_OperationAnalyze.JOBTASK_IDENTIFY_ID && stepIds.Contains(t.OPERATION_STEP_ID), new BaseFilter(entity.ORG_ID), "Nav_DetailPost").ToList(); } var links = this.GetEntities(t => stepIds.Contains(t.OPERATION_STEP_ID) && t.STATUS == (int)STATUSEnum.启用 && t.IS_RUN == DisableStatusEnum.是, new BaseFilter(entity.ORG_ID), new string[] { "Nav_LinkPost", "Nav_SafeConfirms", "Nav_SafeMeasures", "Nav_DealMeasures" }); entity.Nav_Details.ForEach(t => { T_HM_OPERATION_LINK operation = new T_HM_OPERATION_LINK(); var current = links.FirstOrDefault(x => x.OPERATION_STEP_ID == t.OPERATION_STEP_ID);//OrderByDescending(t => t.CREATE_TIME). if (current != null) { current.CODE = entity.CODE; current.NAME = "关键任务分析表回写"; current.OPERATION_STEP_ID = t.OPERATION_STEP_ID; current.TASK_LEVEL = (int)HMTaskLevelEnum.关键任务非许可作业; current.ORG_ID = entity.ORG_ID; current.IS_IMPORTANT = (int)ISImportantEnum.是; current.SafeConfirmsStr = t.SafeConfirmsStr; current.SafeMeasuresStr = t.SafeMeasuresStr; current.DealMeasuresStr = t.DealMeasuresStr; current.STATUS = (int)STATUSEnum.启用; current.CREATER_ID = entity.CREATER_ID; current.MODIFY_TYPE = HMModifyEnum.修改; current.CYCLE_TYPE = t.CYCLE_TYPE; current.AUDIT_LEVEL = (int)t.AUDIT_LEVEL; operation = current; if (current.Nav_SafeConfirms != null && current.Nav_SafeConfirms.Any()) { var ids = current.Nav_SafeConfirms.Select(t => t.ID).ToList(); confIds.AddRange(ids); } if (current.Nav_SafeMeasures != null && current.Nav_SafeMeasures.Any()) { var ids = current.Nav_SafeMeasures.Select(t => t.ID).ToList(); measIds.AddRange(ids); } if (current.Nav_DealMeasures != null && current.Nav_DealMeasures.Any()) { var ids = current.Nav_DealMeasures.Select(t => t.ID).ToList(); dealIds.AddRange(ids); } if (current.Nav_LinkPost != null && current.Nav_LinkPost.Any()) { var ids = current.Nav_LinkPost.Select(t => t.ID).ToList(); postIds.AddRange(ids); } //if (t.AREA_ID != null && current.Nav_LinkArea != null && current.Nav_LinkArea.Any()) //{ // var linkArea = current.Nav_LinkArea.FirstOrDefault(t => t.AREA_ID == t.AREA_ID); // if (linkArea == null) // { // T_HM_OPERATION_LINK_AREA area = new T_HM_OPERATION_LINK_AREA(); // area.ORG_ID = entity.ORG_ID; // area.OPERATION_LINK_ID = current.ID; // area.AREA_ID = t.AREA_ID; // areas.Add(area); // } //} } else { //主表 operation.CODE = entity.CODE; operation.NAME = "关键任务分析表新增"; operation.OPERATION_STEP_ID = t.OPERATION_STEP_ID; operation.TASK_LEVEL = (int)HMTaskLevelEnum.关键任务非许可作业; operation.ORG_ID = entity.ORG_ID; operation.IS_IMPORTANT = (int)ISImportantEnum.是; operation.SafeConfirmsStr = t.SafeConfirmsStr; operation.SafeMeasuresStr = t.SafeMeasuresStr; operation.DealMeasuresStr = t.DealMeasuresStr; operation.STATUS = (int)STATUSEnum.启用; operation.CREATER_ID = entity.CREATER_ID; operation.MODIFY_TYPE = HMModifyEnum.新增; operation.CYCLE_TYPE = t.CYCLE_TYPE; operation.AUDIT_LEVEL = (int)t.AUDIT_LEVEL; var mineType = APT.Infrastructure.Api.AppContext.CurrentSession.MineType; if (!string.IsNullOrEmpty(mineType)) { operation.MineType = int.Parse(mineType.Split(",")[0]); } //if (t.AREA_ID != null) //{ // T_HM_OPERATION_LINK_AREA area = new T_HM_OPERATION_LINK_AREA(); // area.ORG_ID = entity.ORG_ID; // area.OPERATION_LINK_ID = operation.ID; // area.AREA_ID = t.AREA_ID; // areas.Add(area); //} } addOperations.Add(operation); var newPostIds = jobDetails.FirstOrDefault(t => t.OPERATION_STEP_ID == operation.OPERATION_STEP_ID); if (newPostIds != null && newPostIds.Nav_DetailPost != null && newPostIds.Nav_DetailPost.Any()) { foreach (var item in newPostIds.Nav_DetailPost) { T_HM_OPERATION_LINK_POST post = new T_HM_OPERATION_LINK_POST(); post.ORG_ID = entity.ORG_ID; post.OPERATION_LINK_ID = operation.ID; post.POST_ID = item.POST_ID; posts.Add(post); } } if (!string.IsNullOrEmpty(t.SafeConfirmsStr)) { var conf = t.SafeConfirmsStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (conf.Length > 0) { foreach (var c in conf) { T_HM_OPERATION_TASK_SAFE_CONFIRM safeConf = new T_HM_OPERATION_TASK_SAFE_CONFIRM(); safeConf.ORG_ID = entity.ORG_ID; safeConf.OPERATION_LINK_ID = operation.ID; if (c.Contains("、")) { var co = c.Split(new[] { '、' }, StringSplitOptions.RemoveEmptyEntries); if (co.Length > 0) { safeConf.NAME = co[1]; safeConf.NUM = int.Parse(co[0]); } else { safeConf.NAME = c; safeConf.NUM = 1; } } else { safeConf.NAME = c; safeConf.NUM = 1; } safeConfs.Add(safeConf); } } } if (!string.IsNullOrEmpty(t.SafeMeasuresStr)) { var conf = t.SafeMeasuresStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (conf.Length > 0) { foreach (var c in conf) { T_HM_OPERATION_TASK_SAFE_MEASURE safeConf = new T_HM_OPERATION_TASK_SAFE_MEASURE(); safeConf.ORG_ID = entity.ORG_ID; safeConf.OPERATION_LINK_ID = operation.ID; if (c.Contains("、")) { var co = c.Split(new[] { '、' }, StringSplitOptions.RemoveEmptyEntries); if (co.Length > 0) { safeConf.NAME = co[1]; safeConf.NUM = int.Parse(co[0]); } else { safeConf.NAME = c; safeConf.NUM = 1; } } else { safeConf.NAME = c; safeConf.NUM = 1; } safeMeas.Add(safeConf); } } } if (!string.IsNullOrEmpty(t.DealMeasuresStr)) { var conf = t.DealMeasuresStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (conf.Length > 0) { foreach (var c in conf) { T_HM_OPERATION_TASK_DEAL_MEASURE safeConf = new T_HM_OPERATION_TASK_DEAL_MEASURE(); safeConf.ORG_ID = entity.ORG_ID; safeConf.OPERATION_LINK_ID = operation.ID; if (c.Contains("、")) { var co = c.Split(new[] { '、' }, StringSplitOptions.RemoveEmptyEntries); if (co.Length > 0) { safeConf.NAME = co[1]; safeConf.NUM = int.Parse(co[0]); } else { safeConf.NAME = c; safeConf.NUM = 1; } } else { safeConf.NAME = c; safeConf.NUM = 1; } dealMeas.Add(safeConf); } } } operation.IS_RUN = DisableStatusEnum.是; }); } //自动触发文件发布 List dataIds = new List(); T_HM_FILE_PUBLISH publish = null; dataIds.Add(entity.ID); var license = this.GetEntity(t => t.OPERATION_ANALYZE_ID == entity.OPERATION_ANALYZE_ID); if (license != null) dataIds.Add(license.ID); var ordinary = this.GetEntity(t => t.OPERATION_ANALYZE_ID == entity.OPERATION_ANALYZE_ID); if (ordinary != null) dataIds.Add(ordinary.ID); var approve = this.GetEntities(t => dataIds.Contains(t.DATA_ID), new BaseFilter(entity.ORG_ID)); if (approve != null && approve.Any()) { bool isEnd = true; approve.ForEach(t => { if (t.APPROVE_STATUS != (int)ApproveStatus.Done) isEnd = false; }); if (isEnd) { var nextCode = ""; var nextCodeInfo = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(entity.ORG_ID)).OrderByDescending(t => t.CREATE_TIME).FirstOrDefault(); var year = DateTime.Now.Year; var month = DateTime.Now.Month.PadLeft(2, '0'); var day = DateTime.Now.Day.PadLeft(2, '0'); if (nextCodeInfo == null) { nextCode = "RWFX" + year + month + day + "00001"; } else { //取最后五位序列号 var serial = nextCodeInfo.CODE.Substring(nextCodeInfo.CODE.Length - 5); //序列号+1,不足五位补0 var num = (int.Parse(serial) + 1).ToString().PadLeft(5, '0'); nextCode = "RWFX" + year + month + day + num; } var userId = this.GetEntity(t => t.NAME == "办公室负责人")?.USER_ID; if (userId != null) { //文件发布表 publish = new T_HM_FILE_PUBLISH(); publish.NAME = ""; publish.CODE = nextCode; publish.LICENSE_ANALYSIS_ID = license?.ID; publish.CRUCIAL_TASK_ANALYSIS_ID = entity.ID; publish.ORDINARY_TASK_ANALYSIS_ID = ordinary?.ID; publish.PUBLISH_DATE = DateTime.Now; publish.Nav_Area = null; publish.ORG_ID = entity.ORG_ID; publish.IS_AUTO = ISImportantEnum.是; publish.USER_ID = userId; //消息通知部门负责人 var userIds = new List(); userIds.Add((Guid)userId); //userIds.Add((Guid)chargeUserId); var UserNames = new List(); var user = this.GetEntity(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userIds.Contains(t.ID)); UserNames.Add(user?.NAME); //发消息 DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.Default, entity.ORG_ID.Value, DateTime.Now, null, null); notices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("作业任务分析文件发布表", publish.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "HM124")); } } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (addOperations != null && addOperations.Any()) this.BantchSaveEntityNoCommit(addOperations); if (confIds != null && confIds.Any()) this.BantchDeleteEntityNoCommit(confIds); if (measIds != null && measIds.Any()) this.BantchDeleteEntityNoCommit(measIds); if (dealIds != null && dealIds.Any()) this.BantchDeleteEntityNoCommit(dealIds); if (postIds != null && postIds.Any()) this.BantchDeleteEntityNoCommit(postIds); if (safeConfs != null && safeConfs.Any()) this.BantchSaveEntityNoCommit(safeConfs); if (safeMeas != null && safeMeas.Any()) this.BantchSaveEntityNoCommit(safeMeas); if (dealMeas != null && dealMeas.Any()) this.BantchSaveEntityNoCommit(dealMeas); if (posts != null && posts.Any()) this.BantchSaveEntityNoCommit(posts); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (publish != null) this.UpdateEntityNoCommit(publish); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_HMJobtaskIdentify(string id) { //var entity = this.GetEntity(id, false, "Nav_Details", "Nav_Details.Nav_OperationStep", "Nav_Details.Nav_DetailRisk"); var entity = this.GetEntity(id, new string[] { "Nav_IdentifyUser", "Nav_Details", "Nav_Details.Nav_OperationStep", "Nav_Details.Nav_DetailRisk" }); entity.IS_PUBLISH = FOPreMeetingStatusEnum.归档; entity.COMPLETE_DATE = DateTime.Now; //自动生成作业任务分析表 T_HM_OPERATION_TASK_DISTINGUISH_ANALYZE operation = new T_HM_OPERATION_TASK_DISTINGUISH_ANALYZE(); //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.作业任务分析表编号; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); //主表 operation.CODE = codeList[0]; operation.COMPLETION_TIME = DateTime.Now; operation.DEPARTMENT_ID = entity.DEPARTMENT_ID; operation.JOBTASK_IDENTIFY_ID = entity.ID; operation.ORG_ID = entity.ORG_ID; operation.Nav_AnalyzeDetails = null; operation.Nav_AnalyzeFiles = null; operation.Nav_Users = null; operation.IS_AUTO = ISImportantEnum.是; operation.CREATER_ID = entity.CREATER_ID; operation.USER_ID = entity.CREATER_ID; //明细表 List analyzeDetails = new List(); List riskList = new List(); var details = entity.Nav_Details; if (details != null && details.Any()) { details.ForEach(t => { T_HM_OPERATION_TASK_DISTINGUISH_ANALYZE_DETAIL detail = new T_HM_OPERATION_TASK_DISTINGUISH_ANALYZE_DETAIL(); detail.AREA_ID = t.AREA_ID; detail.OPERATION_STEP_ID = t.OPERATION_STEP_ID; detail.OPERATION_TASK_DISTINGUISH_ANALYZE_ID = operation.ID; detail.ORG_ID = t.ORG_ID; detail.CREATER_ID = t.CREATER_ID; detail.CYCLE_TYPE = t.CYCLE_TYPE; if (t.Nav_DetailRisk != null && t.Nav_DetailRisk.Any()) { t.Nav_DetailRisk.ForEach(x => { T_HM_OPERATION_TASK_DISTINGUISH_ANALYZE_RISK risk = new T_HM_OPERATION_TASK_DISTINGUISH_ANALYZE_RISK(); risk.EVALUATE_RISK_ID = x.EVALUATE_RISK_ID.Value; risk.OPERATION_TASK_DISTINGUISH_ANALYZE_DETAIL_ID = detail.ID; risk.ORG_ID = t.ORG_ID; riskList.Add(risk); }); } detail.Nav_DetailRisk = null;// riskList.Distinct(m=>m.EVALUATE_RISK_ID).ToList(); analyzeDetails.Add(detail); }); } // KeywordFilter filter = new KeywordFilter(); filter.Keyword = entity.CREATER_ID.ToString(); var detailTemp = FullGet(filter); int count = 0; if (detailTemp != null && detailTemp.Nav_Details != null) { count = detailTemp.Nav_Details.Count(); } //发消息通知负责人 List notices = new List(); T_HM_RISK_RECORD riskRecord = null; List recordUser = new List(); List recordDetail = new List(); T_HM_RISK_RECORD_IDENTIFYING recordObj = null; var chargeUserId = GetChargeUserId(entity.CREATER_ID); if (chargeUserId != null) { DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.Default, entity.ORG_ID.Value, DateTime.Now, null, null); var userIds = new List(); userIds.Add((Guid)chargeUserId); var UserNames = new List(); var users = this.GetEntities(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)); foreach (var user in userIds) { var current = users.FirstOrDefault(t => t.ID == user); UserNames.Add(current?.NAME); } //发消息 notices = NotificationTaskService.InsertUserNoticeTaskModels("作业任务分析表", operation.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "HM088"); if (count != 0 && details.Count() > count) { var request = this.GetEntity(t => t.ORG_ID == entity.ORG_ID); var obj = this.GetEntity(t => t.NAME == "作业过程"); riskRecord = new T_HM_RISK_RECORD(); riskRecord.START_TIME = DateTime.Now; riskRecord.ORG_ID = entity.ORG_ID; riskRecord.STATUS = (int)FOPreMeetingStatusEnum.草稿; riskRecord.LEVEL = FMDepartmentType.Department; riskRecord.REQUEST_ID = request.ID; riskRecord.NOTE_TAKER_ID = chargeUserId; riskRecord.INITIATING_DEPARTMENT = entity.DEPARTMENT_ID; riskRecord.CREATER_ID = entity.CREATER_ID; if (obj != null) { recordObj = new T_HM_RISK_RECORD_IDENTIFYING(); recordObj.ORG_ID = entity.ORG_ID; recordObj.RECORD_ID = riskRecord.ID; recordObj.IDENTIFYING_ID = obj.ID; } details.ForEach(t => { T_HM_RISK_RECORD_DETAIL detail = new T_HM_RISK_RECORD_DETAIL(); detail.ORG_ID = entity.ORG_ID; detail.RECORD_ID = riskRecord.ID; detail.AREA_ID = t.AREA_ID; detail.OPERATION_STEP_ID = t.OPERATION_STEP_ID; detail.IDENTIFYING_ID = obj?.ID; recordDetail.Add(detail); }); if (entity.Nav_IdentifyUser != null && entity.Nav_IdentifyUser.Any()) { entity.Nav_IdentifyUser.ForEach(t => { recordDetail.ForEach(t1 => { T_HM_RISK_RECORD_USER user = new T_HM_RISK_RECORD_USER(); user.ORG_ID = t.ORG_ID; user.RECORD_ID = riskRecord.ID; user.USER_ID = t.USER_ID.Value; user.AREA_ID = (Guid)t1.AREA_ID; recordUser.Add(user); }); }); } //如果识别细表有新增数据,则触发风险辨识任务制定表 notices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("危险源/风险辨识记录(作业任务识别触发)", riskRecord.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "HM064")); } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (operation != null) this.UpdateEntityNoCommit(operation); if (analyzeDetails != null && analyzeDetails.Any()) this.BantchSaveEntityNoCommit(analyzeDetails); if (riskList != null && riskList.Any()) this.BantchSaveEntityNoCommit(riskList); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (riskRecord != null) this.UpdateEntityNoCommit(riskRecord); if (recordObj != null) this.UpdateEntityNoCommit(recordObj); if (recordUser != null && recordUser.Any()) this.BantchSaveEntityNoCommit(recordUser); if (recordDetail != null && recordDetail.Any()) this.BantchSaveEntityNoCommit(recordDetail); }); return true; } /// /// 获取单条 /// /// /// private T_HM_JOBTASK_IDENTIFY FullGet(KeywordFilter filter) { T_HM_JOBTASK_IDENTIFY iDENTIFY = new T_HM_JOBTASK_IDENTIFY(); List detailList = new List(); if (string.IsNullOrEmpty(filter.Keyword)) filter.Keyword = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.ToString(); //取人员部门对应的部门层级:公司级、部门级、车间级、班组级 var user = GetEntity(t => t.ID == Guid.Parse(filter.Keyword) && t.ENABLE_STATUS == 0, new string[] { "Nav_Department" }); var type = user.Nav_Department.DEPARTMENT_TYPE; //主表部门自动赋值 iDENTIFY.ORG_ID = user.ORG_ID; iDENTIFY.DEPARTMENT_ID = user.DEPARTMENT_ID; List departmentIds = new List() { user.DEPARTMENT_ID.Value }; DepartmentService.GetDepartmentIds(user.ORG_ID.Value, new List() { user.DEPARTMENT_ID.Value }, ref departmentIds); //根据辨识区域和部门层级到风险库获取作业任务、岗位、风险信息typeList.Contains((int)t.LEVEL) && areaIds.Contains((Guid)t.AREA_ID) var stepIds = GetEntities(t => departmentIds.Contains(t.DEPARTMENT_LIABLE_ID.Value) && t.OPERATION_STEP_ID != null && t.STATUS == (int)HMOperationStepEnum.有效 && (int)t.LEVEL == type, new BaseFilter(user.ORG_ID)).Select(t => t.OPERATION_STEP_ID).Distinct().ToList(); var links = GetEntities(t => stepIds.Contains(t.OPERATION_STEP_ID), new BaseFilter(user.ORG_ID), new string[] { "Nav_LinkPost", "Nav_LinkPost.Nav_Post", "Nav_OperationStep" }); if (links != null && links.Any()) { links.ForEach(t => { List postList = new List(); List detailPost = new List(); var postName = ""; T_HM_JOBTASK_IDENTIFY_DETAIL detail = new T_HM_JOBTASK_IDENTIFY_DETAIL(); //List riskList = new List(); detail.ORG_ID = user.ORG_ID; detail.JOBTASK_IDENTIFY_ID = iDENTIFY.ID; //detail.AREA_ID = t.AREA_ID; //detail.Nav_Area = t.Nav_Area; //var link = links.FirstOrDefault(m => m.OPERATION_STEP_ID == t.OPERATION_STEP_ID); if (t.Nav_LinkPost != null && t.Nav_LinkPost.Any()) { t.Nav_LinkPost.ForEach(x => { T_HM_JOBTASK_IDENTIFY_DETAIL_POST post = new T_HM_JOBTASK_IDENTIFY_DETAIL_POST(); post.ORG_ID = t.ORG_ID; post.JOBTASK_IDENTIFY_DETAIL_ID = detail.ID; post.POST_ID = x.POST_ID; post.Nav_Post = x.Nav_Post; postName = x.Nav_Post?.NAME; detailPost.Add(postName); postList.Add(post); }); } //风险表 //var risks = links.Where(m => m.OPERATION_STEP_ID == t.OPERATION_STEP_ID).ToList(); //if (risks != null && risks.Any()) //{ // risks.ForEach(x => // { // T_HM_JOBTASK_IDENTIFY_DETAIL_RISK risk = new T_HM_JOBTASK_IDENTIFY_DETAIL_RISK(); // risk.ORG_ID = t.ORG_ID; // risk.JOBTASK_IDENTIFY_DETAIL_ID = detail.ID; // risk.EVALUATE_RISK_ID = x.ID; // risk.Nav_EvaluateRisk = x; // riskList.Add(risk); // }); //} //detail.Nav_DetailRisk = riskList.Distinct(m => m.EVALUATE_RISK_ID).ToList(); detail.OPERATION_STEP_ID = t.OPERATION_STEP_ID; detail.Nav_OperationStep = t.Nav_OperationStep; detail.Nav_DetailPost = postList.Distinct(m => m.POST_ID).ToList(); detail.DetailPost = string.Join(",", detailPost); detail.OperationStepName = t.Nav_OperationStep?.NAME; detail.CYCLE_TYPE = t.CYCLE_TYPE; detailList.Add(detail); }); } iDENTIFY.Nav_Details = detailList.OrderBy(t => t.Nav_OperationStep.NAME).ToList(); return iDENTIFY; } /// /// 回调函数 /// /// /// private bool BackUpdate_HMLicenseAnalysis(string id) { //var entity = this.GetEntity( id, false,"Nav_OperationAnalyze", "Nav_Details", "Nav_Details.Nav_OperationStep", "Nav_Details.Nav_DetailRisk"); var entity = this.GetEntity(id, new string[] { "Nav_OperationAnalyze", "Nav_Details", "Nav_Details.Nav_OperationStep" }); entity.IS_PUBLISH = FOPreMeetingStatusEnum.归档; entity.COMPLETE_DATE = DateTime.Now; //写入作业任务库 List operations = new List(); List safeConfs = new List(); List safeMeas = new List(); List dealMeas = new List(); List posts = new List(); List notices = new List(); List confIds = new List(); List measIds = new List(); List dealIds = new List(); List postIds = new List(); if (entity.Nav_Details != null && entity.Nav_Details.Any()) { List jobDetails = null; var stepIds = entity.Nav_Details.Select(t => t.OPERATION_STEP_ID).Distinct().ToList(); if (entity.Nav_OperationAnalyze != null && entity.Nav_OperationAnalyze.JOBTASK_IDENTIFY_ID != null) { jobDetails = this.GetEntities(t => t.JOBTASK_IDENTIFY_ID == entity.Nav_OperationAnalyze.JOBTASK_IDENTIFY_ID && stepIds.Contains(t.OPERATION_STEP_ID), new BaseFilter(entity.ORG_ID), "Nav_DetailPost").ToList(); } var links = this.GetEntities(t => stepIds.Contains(t.OPERATION_STEP_ID) && t.STATUS == (int)STATUSEnum.启用 && t.IS_RUN == DisableStatusEnum.是, new BaseFilter(entity.ORG_ID), new string[] { "Nav_LinkPost", "Nav_SafeConfirms", "Nav_SafeMeasures", "Nav_DealMeasures" }); entity.Nav_Details.ForEach(t => { T_HM_OPERATION_LINK operation = new T_HM_OPERATION_LINK(); var current = links.FirstOrDefault(x => x.OPERATION_STEP_ID == t.OPERATION_STEP_ID);//OrderByDescending(t => t.CREATE_TIME). if (current != null) { current.CODE = entity.CODE; current.NAME = "许可作业分析表回写"; current.OPERATION_STEP_ID = t.OPERATION_STEP_ID; current.TASK_LEVEL = (int)HMTaskLevelEnum.许可作业; current.ORG_ID = entity.ORG_ID; current.IS_IMPORTANT = (int)ISImportantEnum.是; current.SafeConfirmsStr = t.SafeConfirmsStr; current.SafeMeasuresStr = t.SafeMeasuresStr; current.DealMeasuresStr = t.DealMeasuresStr; current.STATUS = (int)STATUSEnum.启用; current.CREATER_ID = entity.CREATER_ID; current.MODIFY_TYPE = HMModifyEnum.修改; current.CYCLE_TYPE = t.CYCLE_TYPE; current.WORK_PERMIT_TYPE_ID = t.WORK_PERMIT_TYPE_ID; current.AUDIT_LEVEL = (int)t.AUDIT_LEVEL; operation = current; if (current.Nav_SafeConfirms != null && current.Nav_SafeConfirms.Any()) { var ids = current.Nav_SafeConfirms.Select(t => t.ID).ToList(); confIds.AddRange(ids); } if (current.Nav_SafeMeasures != null && current.Nav_SafeMeasures.Any()) { var ids = current.Nav_SafeMeasures.Select(t => t.ID).ToList(); measIds.AddRange(ids); } if (current.Nav_DealMeasures != null && current.Nav_DealMeasures.Any()) { var ids = current.Nav_DealMeasures.Select(t => t.ID).ToList(); dealIds.AddRange(ids); } if (current.Nav_LinkPost != null && current.Nav_LinkPost.Any()) { var ids = current.Nav_LinkPost.Select(t => t.ID).ToList(); postIds.AddRange(ids); } //if (t.AREA_ID != null && current.Nav_LinkArea != null && current.Nav_LinkArea.Any()) //{ // var linkArea = current.Nav_LinkArea.FirstOrDefault(t => t.AREA_ID == t.AREA_ID); // if (linkArea == null) // { // T_HM_OPERATION_LINK_AREA area = new T_HM_OPERATION_LINK_AREA(); // area.ORG_ID = entity.ORG_ID; // area.OPERATION_LINK_ID = current.ID; // area.AREA_ID = t.AREA_ID; // areas.Add(area); // } //} } else { //主表 operation.CODE = entity.CODE; operation.NAME = "许可作业分析表新增"; operation.OPERATION_STEP_ID = t.OPERATION_STEP_ID; operation.TASK_LEVEL = (int)HMTaskLevelEnum.许可作业; operation.ORG_ID = entity.ORG_ID; operation.IS_IMPORTANT = (int)ISImportantEnum.是; operation.SafeConfirmsStr = t.SafeConfirmsStr; operation.SafeMeasuresStr = t.SafeMeasuresStr; operation.DealMeasuresStr = t.DealMeasuresStr; operation.STATUS = (int)STATUSEnum.启用; operation.CREATER_ID = entity.CREATER_ID; operation.MODIFY_TYPE = HMModifyEnum.新增; operation.CYCLE_TYPE = t.CYCLE_TYPE; operation.WORK_PERMIT_TYPE_ID = t.WORK_PERMIT_TYPE_ID; operation.AUDIT_LEVEL = (int)t.AUDIT_LEVEL; var mineType = APT.Infrastructure.Api.AppContext.CurrentSession.MineType; if (!string.IsNullOrEmpty(mineType)) { operation.MineType = int.Parse(mineType.Split(",")[0]); } //if (t.AREA_ID != null) //{ // T_HM_OPERATION_LINK_AREA area = new T_HM_OPERATION_LINK_AREA(); // area.ORG_ID = entity.ORG_ID; // area.OPERATION_LINK_ID = operation.ID; // area.AREA_ID = t.AREA_ID; // areas.Add(area); //} } var newPostIds = jobDetails.FirstOrDefault(t => t.OPERATION_STEP_ID == operation.OPERATION_STEP_ID); if (newPostIds != null && newPostIds.Nav_DetailPost != null && newPostIds.Nav_DetailPost.Any()) { foreach (var item in newPostIds.Nav_DetailPost) { T_HM_OPERATION_LINK_POST post = new T_HM_OPERATION_LINK_POST(); post.ORG_ID = entity.ORG_ID; post.OPERATION_LINK_ID = operation.ID; post.POST_ID = item.POST_ID; posts.Add(post); } } if (!string.IsNullOrEmpty(t.SafeConfirmsStr)) { var conf = t.SafeConfirmsStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (conf.Length > 0) { foreach (var c in conf) { T_HM_OPERATION_TASK_SAFE_CONFIRM safeConf = new T_HM_OPERATION_TASK_SAFE_CONFIRM(); safeConf.ORG_ID = entity.ORG_ID; safeConf.OPERATION_LINK_ID = operation.ID; if (c.Contains("、")) { var co = c.Split(new[] { '、' }, StringSplitOptions.RemoveEmptyEntries); if (co.Length > 0) { safeConf.NAME = co[1]; safeConf.NUM = int.Parse(co[0]); } else { safeConf.NAME = c; safeConf.NUM = 1; } } else { safeConf.NAME = c; safeConf.NUM = 1; } safeConfs.Add(safeConf); } } } if (!string.IsNullOrEmpty(t.SafeMeasuresStr)) { var conf = t.SafeMeasuresStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (conf.Length > 0) { foreach (var c in conf) { T_HM_OPERATION_TASK_SAFE_MEASURE safeConf = new T_HM_OPERATION_TASK_SAFE_MEASURE(); safeConf.ORG_ID = entity.ORG_ID; safeConf.OPERATION_LINK_ID = operation.ID; if (c.Contains("、")) { var co = c.Split(new[] { '、' }, StringSplitOptions.RemoveEmptyEntries); if (co.Length > 0) { safeConf.NAME = co[1]; safeConf.NUM = int.Parse(co[0]); } else { safeConf.NAME = c; safeConf.NUM = 1; } } else { safeConf.NAME = c; safeConf.NUM = 1; } safeMeas.Add(safeConf); } } } if (!string.IsNullOrEmpty(t.DealMeasuresStr)) { var conf = t.DealMeasuresStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (conf.Length > 0) { foreach (var c in conf) { T_HM_OPERATION_TASK_DEAL_MEASURE safeConf = new T_HM_OPERATION_TASK_DEAL_MEASURE(); safeConf.ORG_ID = entity.ORG_ID; safeConf.OPERATION_LINK_ID = operation.ID; if (c.Contains("、")) { var co = c.Split(new[] { '、' }, StringSplitOptions.RemoveEmptyEntries); if (co.Length > 0) { safeConf.NAME = co[1]; safeConf.NUM = int.Parse(co[0]); } else { safeConf.NAME = c; safeConf.NUM = 1; } } else { safeConf.NAME = c; safeConf.NUM = 1; } dealMeas.Add(safeConf); } } } operation.IS_RUN = DisableStatusEnum.是; operations.Add(operation); }); } //自动触发文件发布 List dataIds = new List(); T_HM_FILE_PUBLISH publish = null; dataIds.Add(entity.ID); var crucial = this.GetEntity(t => t.OPERATION_ANALYZE_ID == entity.OPERATION_ANALYZE_ID); if (crucial != null) dataIds.Add(crucial.ID); var ordinary = this.GetEntity(t => t.OPERATION_ANALYZE_ID == entity.OPERATION_ANALYZE_ID); if (ordinary != null) dataIds.Add(ordinary.ID); var approve = this.GetEntities(t => dataIds.Contains(t.DATA_ID), new BaseFilter(entity.ORG_ID)); if (approve != null && approve.Any()) { bool isEnd = true; approve.ForEach(t => { if (t.APPROVE_STATUS != (int)ApproveStatus.Done) isEnd = false; }); if (isEnd) { var nextCode = ""; var nextCodeInfo = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(entity.ORG_ID)).OrderByDescending(t => t.CREATE_TIME).FirstOrDefault(); var year = DateTime.Now.Year; var month = DateTime.Now.Month.PadLeft(2, '0'); var day = DateTime.Now.Day.PadLeft(2, '0'); if (nextCodeInfo == null) { nextCode = "RWFX" + year + month + day + "00001"; } else { //取最后五位序列号 var serial = nextCodeInfo.CODE.Substring(nextCodeInfo.CODE.Length - 5); //序列号+1,不足五位补0 var num = (int.Parse(serial) + 1).ToString().PadLeft(5, '0'); nextCode = "RWFX" + year + month + day + num; } var userId = this.GetEntity(t => t.NAME == "办公室负责人")?.USER_ID; if (userId != null) { //文件发布表 publish = new T_HM_FILE_PUBLISH(); publish.NAME = ""; publish.CODE = nextCode; publish.LICENSE_ANALYSIS_ID = entity.ID; publish.CRUCIAL_TASK_ANALYSIS_ID = crucial?.ID; publish.ORDINARY_TASK_ANALYSIS_ID = ordinary?.ID; publish.PUBLISH_DATE = DateTime.Now; publish.Nav_Area = null; publish.ORG_ID = entity.ORG_ID; publish.IS_AUTO = ISImportantEnum.是; publish.USER_ID = userId; //消息通知辦公室负责人李忠松 var userIds = new List(); userIds.Add((Guid)userId); //userIds.Add((Guid)chargeUserId); var UserNames = new List(); var user = this.GetEntity(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userIds.Contains(t.ID)); UserNames.Add(user?.NAME); //发消息 DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.Default, entity.ORG_ID.Value, DateTime.Now, null, null); notices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("作业任务分析文件发布表", publish.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "HM124")); } } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (operations != null && operations.Any()) this.BantchSaveEntityNoCommit(operations); if (confIds != null && confIds.Any()) this.BantchDeleteEntityNoCommit(confIds); if (measIds != null && measIds.Any()) this.BantchDeleteEntityNoCommit(measIds); if (dealIds != null && dealIds.Any()) this.BantchDeleteEntityNoCommit(dealIds); if (postIds != null && postIds.Any()) this.BantchDeleteEntityNoCommit(postIds); if (safeConfs != null && safeConfs.Any()) this.BantchSaveEntityNoCommit(safeConfs); if (safeMeas != null && safeMeas.Any()) this.BantchSaveEntityNoCommit(safeMeas); if (dealMeas != null && dealMeas.Any()) this.BantchSaveEntityNoCommit(dealMeas); if (posts != null && posts.Any()) this.BantchSaveEntityNoCommit(posts); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (publish != null) this.UpdateEntityNoCommit(publish); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_HMOperationTaskDistinguishAnalyze(string id) { //var entity = this.GetEntity(id, false, "Nav_AnalyzeDetails", "Nav_AnalyzeDetails.Nav_WorkPermitType", "Nav_AnalyzeDetails.Nav_OperationStep", "Nav_AnalyzeDetails.Nav_EvaluateRisk", "Nav_Users"); var entity = this.GetEntity(id, new string[] { "Nav_JobtaskIdentify", "Nav_AnalyzeDetails", "Nav_AnalyzeDetails.Nav_WorkPermitType", "Nav_AnalyzeDetails.Nav_OperationStep", "Nav_AnalyzeDetails.Nav_DetailRisk", "Nav_Users" }); entity.IS_PUBLISH = FOPreMeetingStatusEnum.归档; entity.COMPLETION_TIME = DateTime.Now; //自动生成许可、非许可的关键任务、一般任务分析表 T_HM_LICENSE_ANALYSIS license = null; List licenseDetails = new List(); List licenseUsers = new List(); T_HM_CRUCIAL_TASK_ANALYSIS crucial = null; List crucialDetails = new List(); List crucialUsers = new List(); T_HM_ORDINARY_TASK_ANALYSIS ordinary = null; List ordinaryDetails = new List(); List ordinaryUsers = new List(); List notices = new List(); List userInfos = new List(); if (entity.Nav_Users != null && entity.Nav_Users.Any()) { var userAllIds = entity.Nav_Users.Select(t => t.USER_ID).Distinct().ToList(); userInfos = this.GetEntities(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userAllIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToList(); } if (entity.Nav_AnalyzeDetails != null && entity.Nav_AnalyzeDetails.Any()) { DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.JobtaskIdentify, entity.ORG_ID.Value, DateTime.Now, null, null); var stepIds = entity.Nav_AnalyzeDetails.Select(t => t.OPERATION_STEP_ID).Distinct().ToList(); //var areaIds = entity.Nav_AnalyzeDetails.Select(t => t.AREA_ID).Distinct().ToList(); var operations = this.GetEntities(t => stepIds.Contains(t.ID) && t.STATUS == (int)STATUSEnum.启用, new BaseFilter(entity.ORG_ID), new string[] { "Nav_SafeConfirms", "Nav_SafeMeasures", "Nav_DealMeasures" }).ToList(); //许可作业 var licenses = entity.Nav_AnalyzeDetails.Where(t => t.Nav_WorkPermitType != null && t.Nav_WorkPermitType.NAME != "无").ToList(); //非许可的关键任务 var crucials = entity.Nav_AnalyzeDetails.Where(t => (t.Nav_WorkPermitType == null || (t.Nav_WorkPermitType != null && t.Nav_WorkPermitType.NAME == "无")) && t.IS_MAINTASK == WFDisableStatusEnum.是).ToList(); //非许可非关键的一般任务 var ordinarys = entity.Nav_AnalyzeDetails.Where(t => (t.Nav_WorkPermitType == null || (t.Nav_WorkPermitType != null && t.Nav_WorkPermitType.NAME == "无")) && t.IS_MAINTASK == (int)WFDisableStatusEnum.否).ToList(); //触发许可作业 if (licenses.Count() > 0) { //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.许可作业分析表编号; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); //主表 license = new T_HM_LICENSE_ANALYSIS(); license.CODE = codeList[0]; license.COMPLETE_DATE = DateTime.Now; license.DEPARTMENT_ID = entity.DEPARTMENT_ID; license.OPERATION_ANALYZE_ID = entity.ID; license.ORG_ID = entity.ORG_ID; license.Nav_Details = null; license.Nav_AnalysisPerson = null; license.IS_AUTO = ISImportantEnum.是; license.IS_PUBLISH = FOPreMeetingStatusEnum.分析中; //license.USER_ID = entity.Nav_JobtaskIdentify.CREATER_ID; licenses.ForEach(t => { //var operation = operations.FirstOrDefault(m => m.AREA_ID == t.AREA_ID && m.OPERATION_STEP_ID == t.OPERATION_STEP_ID); var confirms = operations.FirstOrDefault(m => m.ID == t.OPERATION_STEP_ID && m.Nav_SafeConfirms.Count > 0); var measures = operations.FirstOrDefault(m => m.ID == t.OPERATION_STEP_ID && m.Nav_SafeMeasures.Count > 0); var dealMeasures = operations.FirstOrDefault(m => m.ID == t.OPERATION_STEP_ID && m.Nav_DealMeasures.Count > 0); var safeConfirms = ""; if (confirms != null && confirms.Nav_SafeConfirms != null && confirms.Nav_SafeConfirms.Any()) { var i = 1; confirms.Nav_SafeConfirms.ForEach(m => { safeConfirms = safeConfirms + i + "、" + m.NAME + ";"; i++; }); } var safeMeasures = ""; if (measures != null && measures.Nav_SafeMeasures != null && measures.Nav_SafeMeasures.Any()) { var i = 1; measures.Nav_SafeMeasures.ForEach(m => { safeMeasures = safeMeasures + i + "、" + m.NAME + ";"; i++; }); } var dealMeasurestr = ""; if (dealMeasures != null && dealMeasures.Nav_DealMeasures != null && dealMeasures.Nav_DealMeasures.Any()) { var i = 1; dealMeasures.Nav_DealMeasures.ForEach(m => { dealMeasurestr = dealMeasurestr + i + "、" + m.NAME + ";"; i++; }); } T_HM_LICENSE_ANALYSIS_DETAIL detail = new T_HM_LICENSE_ANALYSIS_DETAIL(); detail.OPERATION_STEP_ID = t.OPERATION_STEP_ID; detail.LICENSE_ANALYSIS_ID = license.ID; detail.ORG_ID = t.ORG_ID; detail.CREATER_ID = t.CREATER_ID; detail.SafeConfirmsStr = safeConfirms; detail.SafeMeasuresStr = safeMeasures; detail.DealMeasuresStr = dealMeasurestr; detail.WORK_PERMIT_TYPE_ID = t.WORK_PERMIT_TYPE_ID; detail.AREA_ID = t.AREA_ID; detail.CYCLE_TYPE = t.CYCLE_TYPE; licenseDetails.Add(detail); }); if (entity.Nav_Users != null && entity.Nav_Users.Any()) { entity.Nav_Users.ForEach(t => { T_HM_ANALYSIS_PERSON person = new T_HM_ANALYSIS_PERSON(); person.ORG_ID = t.ORG_ID; person.USER_ID = t.USER_ID; person.LICENSE_ANALYSIS_ID = license.ID; person.CREATER_ID = t.CREATER_ID; person.IS_FIRST = t.IS_FIRST; licenseUsers.Add(person); }); //发消息通知第一个分析人 var firstUserId = entity.Nav_Users.FirstOrDefault(t => t.IS_FIRST == true).USER_ID; license.USER_ID = firstUserId; var userIds = new List(); userIds.Add(firstUserId); var UserNames = new List(); var user = userInfos.FirstOrDefault(t => userIds.Contains(t.ID)); UserNames.Add(user?.NAME); license.CREATER_ID = firstUserId; //发消息 notices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("许可作业分析表", license.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "HM108")); } } //触发关键任务 if (crucials.Count() > 0) { //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.关键任务分析表编号; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); //主表 crucial = new T_HM_CRUCIAL_TASK_ANALYSIS(); crucial.CODE = codeList[0]; crucial.COMPLETE_DATE = DateTime.Now; crucial.DEPARTMENT_ID = entity.DEPARTMENT_ID; crucial.OPERATION_ANALYZE_ID = entity.ID; crucial.ORG_ID = entity.ORG_ID; crucial.Nav_Details = null; crucial.Nav_CrucialAnalysisPerson = null; crucial.IS_AUTO = ISImportantEnum.是; crucial.IS_PUBLISH = FOPreMeetingStatusEnum.分析中; //crucial.USER_ID = entity.Nav_JobtaskIdentify.CREATER_ID; crucials.ForEach(t => { //var operation = operations.FirstOrDefault(m => m.AREA_ID == t.AREA_ID && m.OPERATION_STEP_ID == t.OPERATION_STEP_ID); var confirms = operations.FirstOrDefault(m => m.ID == t.OPERATION_STEP_ID && m.Nav_SafeConfirms.Count > 0); var measures = operations.FirstOrDefault(m => m.ID == t.OPERATION_STEP_ID && m.Nav_SafeMeasures.Count > 0); var dealMeasures = operations.FirstOrDefault(m => m.ID == t.OPERATION_STEP_ID && m.Nav_DealMeasures.Count > 0); var safeConfirms = ""; if (confirms != null && confirms.Nav_SafeConfirms != null && confirms.Nav_SafeConfirms.Any()) { var i = 1; confirms.Nav_SafeConfirms.ForEach(m => { safeConfirms = safeConfirms + i + "、" + m.NAME + ";"; i++; }); } var safeMeasures = ""; if (measures != null && measures.Nav_SafeMeasures != null && measures.Nav_SafeMeasures.Any()) { var i = 1; measures.Nav_SafeMeasures.ForEach(m => { safeMeasures = safeMeasures + i + "、" + m.NAME + ";"; i++; }); } var dealMeasurestr = ""; if (dealMeasures != null && dealMeasures.Nav_DealMeasures != null && dealMeasures.Nav_DealMeasures.Any()) { var i = 1; dealMeasures.Nav_DealMeasures.ForEach(m => { dealMeasurestr = dealMeasurestr + i + "、" + m.NAME + ";"; i++; }); } T_HM_CRUCIAL_TASK_DETAIL detail = new T_HM_CRUCIAL_TASK_DETAIL(); detail.OPERATION_STEP_ID = t.OPERATION_STEP_ID; detail.CRUCIAL_TASK_ANALYSIS_ID = crucial.ID; detail.ORG_ID = t.ORG_ID; detail.CREATER_ID = t.CREATER_ID; detail.SafeConfirmsStr = safeConfirms; detail.SafeMeasuresStr = safeMeasures; detail.DealMeasuresStr = dealMeasurestr; detail.AREA_ID = t.AREA_ID; detail.CYCLE_TYPE = t.CYCLE_TYPE; crucialDetails.Add(detail); }); if (entity.Nav_Users != null && entity.Nav_Users.Any()) { entity.Nav_Users.ForEach(t => { T_HM_CRUCIAL_ANALYSIS_PERSON person = new T_HM_CRUCIAL_ANALYSIS_PERSON(); person.ORG_ID = t.ORG_ID; person.USER_ID = t.USER_ID; person.CRUCIAL_TASK_ANALYSIS_ID = crucial.ID; person.CREATER_ID = t.CREATER_ID; person.IS_FIRST = t.IS_FIRST; crucialUsers.Add(person); }); //发消息通知第一个分析人 var firstUserId = entity.Nav_Users.FirstOrDefault(t => t.IS_FIRST == true).USER_ID; crucial.USER_ID = firstUserId; var userIds = new List(); userIds.Add(firstUserId); var UserNames = new List(); var user = userInfos.FirstOrDefault(t => userIds.Contains(t.ID)); UserNames.Add(user?.NAME); crucial.CREATER_ID = firstUserId; //发消息 notices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("关键任务分析表", crucial.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "HM110")); } } //触发一般任务 if (ordinarys.Count() > 0) { //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.一般任务分析表编号; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); //主表 ordinary = new T_HM_ORDINARY_TASK_ANALYSIS(); ordinary.CODE = codeList[0]; ordinary.COMPLETE_DATE = DateTime.Now; ordinary.DEPARTMENT_ID = entity.DEPARTMENT_ID; ordinary.OPERATION_ANALYZE_ID = entity.ID; ordinary.ORG_ID = entity.ORG_ID; ordinary.Nav_Details = null; ordinary.Nav_OrdinaryAnalysisPerson = null; ordinary.IS_AUTO = ISImportantEnum.是; ordinary.IS_PUBLISH = FOPreMeetingStatusEnum.分析中; //ordinary.USER_ID = entity.Nav_JobtaskIdentify.CREATER_ID; ordinarys.ForEach(t => { //var operation = operations.FirstOrDefault(m => m.AREA_ID == t.AREA_ID && m.OPERATION_STEP_ID == t.OPERATION_STEP_ID); var confirms = operations.FirstOrDefault(m => m.ID == t.OPERATION_STEP_ID && m.Nav_SafeConfirms.Count > 0); var measures = operations.FirstOrDefault(m => m.ID == t.OPERATION_STEP_ID && m.Nav_SafeMeasures.Count > 0); var dealMeasures = operations.FirstOrDefault(m => m.ID == t.OPERATION_STEP_ID && m.Nav_DealMeasures.Count > 0); var safeConfirms = ""; if (confirms != null && confirms.Nav_SafeConfirms != null && confirms.Nav_SafeConfirms.Any()) { var i = 1; confirms.Nav_SafeConfirms.ForEach(m => { safeConfirms = safeConfirms + i + "、" + m.NAME + ";"; i++; }); } var safeMeasures = ""; if (measures != null && measures.Nav_SafeMeasures != null && measures.Nav_SafeMeasures.Any()) { var i = 1; measures.Nav_SafeMeasures.ForEach(m => { safeMeasures = safeMeasures + i + "、" + m.NAME + ";"; i++; }); } var dealMeasurestr = ""; if (dealMeasures != null && dealMeasures.Nav_DealMeasures != null && dealMeasures.Nav_DealMeasures.Any()) { var i = 1; dealMeasures.Nav_DealMeasures.ForEach(m => { dealMeasurestr = dealMeasurestr + i + "、" + m.NAME + ";"; i++; }); } T_HM_ORDINARY_TASK_DETAIL detail = new T_HM_ORDINARY_TASK_DETAIL(); detail.OPERATION_STEP_ID = t.OPERATION_STEP_ID; detail.ORDINARY_TASK_ANALYSIS_ID = ordinary.ID; detail.ORG_ID = t.ORG_ID; detail.CREATER_ID = t.CREATER_ID; detail.SafeConfirmsStr = safeConfirms; detail.SafeMeasuresStr = safeMeasures; detail.DealMeasuresStr = dealMeasurestr; detail.AREA_ID = t.AREA_ID; detail.CYCLE_TYPE = t.CYCLE_TYPE; ordinaryDetails.Add(detail); }); if (entity.Nav_Users != null && entity.Nav_Users.Any()) { entity.Nav_Users.ForEach(t => { T_HM_ORDINARY_ANALYSIS_PERSON person = new T_HM_ORDINARY_ANALYSIS_PERSON(); person.ORG_ID = t.ORG_ID; person.USER_ID = t.USER_ID; person.ORDINARY_TASK_ANALYSIS_ID = ordinary.ID; person.CREATER_ID = t.CREATER_ID; person.IS_FIRST = t.IS_FIRST; ordinaryUsers.Add(person); }); //发消息通知第一个分析人 var firstUserId = entity.Nav_Users.FirstOrDefault(t => t.IS_FIRST == true).USER_ID; ordinary.USER_ID = firstUserId; var userIds = new List(); userIds.Add(firstUserId); var UserNames = new List(); var user = userInfos.FirstOrDefault(t => userIds.Contains(t.ID)); UserNames.Add(user?.NAME); ordinary.CREATER_ID = firstUserId; //发消息 notices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("一般任务分析表", ordinary.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "HM112")); } } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (license != null) this.UpdateEntityNoCommit(license); if (crucial != null) this.UpdateEntityNoCommit(crucial); if (ordinary != null) this.UpdateEntityNoCommit(ordinary); if (licenseDetails != null && licenseDetails.Any()) this.BantchSaveEntityNoCommit(licenseDetails); if (crucialDetails != null && crucialDetails.Any()) this.BantchSaveEntityNoCommit(crucialDetails); if (ordinaryDetails != null && ordinaryDetails.Any()) this.BantchSaveEntityNoCommit(ordinaryDetails); if (licenseUsers != null && licenseUsers.Any()) this.BantchSaveEntityNoCommit(licenseUsers); if (crucialUsers != null && crucialUsers.Any()) this.BantchSaveEntityNoCommit(crucialUsers); if (ordinaryUsers != null && ordinaryUsers.Any()) this.BantchSaveEntityNoCommit(ordinaryUsers); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); }); return true; } /// /// 回调函数 /// /// /// private bool BackUpdate_HMOrdinaryTaskAnalysis(string id) { //var entity = this.GetEntity(id, false, "Nav_OperationAnalyze", "Nav_Details", "Nav_Details.Nav_OperationStep", "Nav_Details.Nav_DetailRisk"); var entity = this.GetEntity(id, new string[] { "Nav_OperationAnalyze", "Nav_Details", "Nav_Details.Nav_OperationStep" }); entity.IS_PUBLISH = FOPreMeetingStatusEnum.归档; entity.COMPLETE_DATE = DateTime.Now; //写入作业任务库 List operations = new List(); List safeConfs = new List(); List safeMeas = new List(); List dealMeas = new List(); List posts = new List(); List notices = new List(); List confIds = new List(); List measIds = new List(); List dealIds = new List(); List postIds = new List(); if (entity.Nav_Details != null && entity.Nav_Details.Any()) { List jobDetails = null; var stepIds = entity.Nav_Details.Select(t => t.OPERATION_STEP_ID).Distinct().ToList(); if (entity.Nav_OperationAnalyze != null && entity.Nav_OperationAnalyze.JOBTASK_IDENTIFY_ID != null) { jobDetails = this.GetEntities(t => t.JOBTASK_IDENTIFY_ID == entity.Nav_OperationAnalyze.JOBTASK_IDENTIFY_ID && stepIds.Contains(t.OPERATION_STEP_ID), new BaseFilter(entity.ORG_ID), "Nav_DetailPost").ToList(); } var links = this.GetEntities(t => stepIds.Contains(t.OPERATION_STEP_ID) && t.STATUS == (int)STATUSEnum.启用 && t.IS_RUN == DisableStatusEnum.是, new BaseFilter(entity.ORG_ID), new string[] { "Nav_LinkPost", "Nav_SafeConfirms", "Nav_SafeMeasures", "Nav_DealMeasures" }); entity.Nav_Details.ForEach(t => { T_HM_OPERATION_LINK operation = new T_HM_OPERATION_LINK(); var current = links.FirstOrDefault(x => x.OPERATION_STEP_ID == t.OPERATION_STEP_ID);//OrderByDescending(t => t.CREATE_TIME). if (current != null) { current.CODE = entity.CODE; current.NAME = "一般任务分析表回写"; current.OPERATION_STEP_ID = t.OPERATION_STEP_ID; current.TASK_LEVEL = (int)HMTaskLevelEnum.一般任务; current.ORG_ID = entity.ORG_ID; current.IS_IMPORTANT = (int)ISImportantEnum.是; current.SafeConfirmsStr = t.SafeConfirmsStr; current.SafeMeasuresStr = t.SafeMeasuresStr; current.DealMeasuresStr = t.DealMeasuresStr; current.STATUS = (int)STATUSEnum.启用; current.CREATER_ID = entity.CREATER_ID; current.MODIFY_TYPE = HMModifyEnum.修改; current.CYCLE_TYPE = t.CYCLE_TYPE; operation = current; if (current.Nav_SafeConfirms != null && current.Nav_SafeConfirms.Any()) { var ids = current.Nav_SafeConfirms.Select(t => t.ID).ToList(); confIds.AddRange(ids); } if (current.Nav_SafeMeasures != null && current.Nav_SafeMeasures.Any()) { var ids = current.Nav_SafeMeasures.Select(t => t.ID).ToList(); measIds.AddRange(ids); } if (current.Nav_DealMeasures != null && current.Nav_DealMeasures.Any()) { var ids = current.Nav_DealMeasures.Select(t => t.ID).ToList(); dealIds.AddRange(ids); } if (current.Nav_LinkPost != null && current.Nav_LinkPost.Any()) { var ids = current.Nav_LinkPost.Select(t => t.ID).ToList(); postIds.AddRange(ids); } //if (t.AREA_ID != null && current.Nav_LinkArea != null && current.Nav_LinkArea.Any()) //{ // var linkArea = current.Nav_LinkArea.FirstOrDefault(t => t.AREA_ID == t.AREA_ID); // if (linkArea == null) // { // T_HM_OPERATION_LINK_AREA area = new T_HM_OPERATION_LINK_AREA(); // area.ORG_ID = entity.ORG_ID; // area.OPERATION_LINK_ID = current.ID; // area.AREA_ID = t.AREA_ID; // areas.Add(area); // } //} } else { //主表 operation.CODE = entity.CODE; operation.NAME = "一般任务分析表新增"; operation.OPERATION_STEP_ID = t.OPERATION_STEP_ID; operation.TASK_LEVEL = (int)HMTaskLevelEnum.一般任务; operation.ORG_ID = entity.ORG_ID; operation.IS_IMPORTANT = (int)ISImportantEnum.是; operation.SafeConfirmsStr = t.SafeConfirmsStr; operation.SafeMeasuresStr = t.SafeMeasuresStr; operation.DealMeasuresStr = t.DealMeasuresStr; operation.STATUS = (int)STATUSEnum.启用; operation.CREATER_ID = entity.CREATER_ID; operation.MODIFY_TYPE = HMModifyEnum.新增; operation.CYCLE_TYPE = t.CYCLE_TYPE; var mineType = APT.Infrastructure.Api.AppContext.CurrentSession.MineType; if (!string.IsNullOrEmpty(mineType)) { operation.MineType = int.Parse(mineType.Split(",")[0]); } //if (t.AREA_ID != null) //{ // T_HM_OPERATION_LINK_AREA area = new T_HM_OPERATION_LINK_AREA(); // area.ORG_ID = entity.ORG_ID; // area.OPERATION_LINK_ID = operation.ID; // area.AREA_ID = t.AREA_ID; // areas.Add(area); //} } operations.Add(operation); var newPostIds = jobDetails.FirstOrDefault(t => t.OPERATION_STEP_ID == operation.OPERATION_STEP_ID); if (newPostIds != null && newPostIds.Nav_DetailPost != null && newPostIds.Nav_DetailPost.Any()) { foreach (var item in newPostIds.Nav_DetailPost) { T_HM_OPERATION_LINK_POST post = new T_HM_OPERATION_LINK_POST(); post.ORG_ID = entity.ORG_ID; post.OPERATION_LINK_ID = operation.ID; post.POST_ID = item.POST_ID; posts.Add(post); } } if (!string.IsNullOrEmpty(t.SafeConfirmsStr)) { var conf = t.SafeConfirmsStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (conf.Length > 0) { foreach (var c in conf) { T_HM_OPERATION_TASK_SAFE_CONFIRM safeConf = new T_HM_OPERATION_TASK_SAFE_CONFIRM(); safeConf.ORG_ID = entity.ORG_ID; safeConf.OPERATION_LINK_ID = operation.ID; if (c.Contains("、")) { var co = c.Split(new[] { '、' }, StringSplitOptions.RemoveEmptyEntries); if (co.Length > 0) { safeConf.NAME = co[1]; safeConf.NUM = int.Parse(co[0]); } else { safeConf.NAME = c; safeConf.NUM = 1; } } else { safeConf.NAME = c; safeConf.NUM = 1; } safeConfs.Add(safeConf); } } } if (!string.IsNullOrEmpty(t.SafeMeasuresStr)) { var conf = t.SafeMeasuresStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (conf.Length > 0) { foreach (var c in conf) { T_HM_OPERATION_TASK_SAFE_MEASURE safeConf = new T_HM_OPERATION_TASK_SAFE_MEASURE(); safeConf.ORG_ID = entity.ORG_ID; safeConf.OPERATION_LINK_ID = operation.ID; if (c.Contains("、")) { var co = c.Split(new[] { '、' }, StringSplitOptions.RemoveEmptyEntries); if (co.Length > 0) { safeConf.NAME = co[1]; safeConf.NUM = int.Parse(co[0]); } else { safeConf.NAME = c; safeConf.NUM = 1; } } else { safeConf.NAME = c; safeConf.NUM = 1; } safeMeas.Add(safeConf); } } } if (!string.IsNullOrEmpty(t.DealMeasuresStr)) { var conf = t.DealMeasuresStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (conf.Length > 0) { foreach (var c in conf) { T_HM_OPERATION_TASK_DEAL_MEASURE safeConf = new T_HM_OPERATION_TASK_DEAL_MEASURE(); safeConf.ORG_ID = entity.ORG_ID; safeConf.OPERATION_LINK_ID = operation.ID; if (c.Contains("、")) { var co = c.Split(new[] { '、' }, StringSplitOptions.RemoveEmptyEntries); if (co.Length > 0) { safeConf.NAME = co[1]; safeConf.NUM = int.Parse(co[0]); } else { safeConf.NAME = c; safeConf.NUM = 1; } } else { safeConf.NAME = c; safeConf.NUM = 1; } dealMeas.Add(safeConf); } } } operation.IS_RUN = DisableStatusEnum.是; }); } //自动触发文件发布 List dataIds = new List(); T_HM_FILE_PUBLISH publish = null; dataIds.Add(entity.ID); var license = this.GetEntity(t => t.OPERATION_ANALYZE_ID == entity.OPERATION_ANALYZE_ID); if (license != null) dataIds.Add(license.ID); var crucial = this.GetEntity(t => t.OPERATION_ANALYZE_ID == entity.OPERATION_ANALYZE_ID); if (crucial != null) dataIds.Add(crucial.ID); var approve = this.GetEntities(t => dataIds.Contains(t.DATA_ID), new BaseFilter(entity.ORG_ID)); if (approve != null && approve.Any()) { bool isEnd = true; approve.ForEach(t => { if (t.APPROVE_STATUS != (int)ApproveStatus.Done) isEnd = false; }); if (isEnd) { var nextCode = ""; var nextCodeInfo = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(entity.ORG_ID)).OrderByDescending(t => t.CREATE_TIME).FirstOrDefault(); var year = DateTime.Now.Year; var month = DateTime.Now.Month.PadLeft(2, '0'); var day = DateTime.Now.Day.PadLeft(2, '0'); if (nextCodeInfo == null) { nextCode = "RWFX" + year + month + day + "00001"; } else { //取最后五位序列号 var serial = nextCodeInfo.CODE.Substring(nextCodeInfo.CODE.Length - 5); //序列号+1,不足五位补0 var num = (int.Parse(serial) + 1).ToString().PadLeft(5, '0'); nextCode = "RWFX" + year + month + day + num; } var userId = this.GetEntity(t => t.NAME == "办公室负责人")?.USER_ID; if (userId != null) { //文件发布表 publish = new T_HM_FILE_PUBLISH(); publish.NAME = ""; publish.CODE = nextCode; publish.LICENSE_ANALYSIS_ID = license?.ID; publish.CRUCIAL_TASK_ANALYSIS_ID = crucial?.ID; publish.ORDINARY_TASK_ANALYSIS_ID = entity.ID; publish.PUBLISH_DATE = DateTime.Now; publish.Nav_Area = null; publish.ORG_ID = entity.ORG_ID; publish.IS_AUTO = ISImportantEnum.是; publish.USER_ID = userId; //消息通知辦公室负责人李忠松 var userIds = new List(); userIds.Add((Guid)userId); //userIds.Add((Guid)chargeUserId); var UserNames = new List(); var user = this.GetEntity(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userIds.Contains(t.ID)); UserNames.Add(user?.NAME); //发消息 DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.Default, entity.ORG_ID.Value, DateTime.Now, null, null); notices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("作业任务分析文件发布表", publish.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "HM124")); } } } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (operations != null && operations.Any()) this.BantchSaveEntityNoCommit(operations); if (confIds != null && confIds.Any()) this.BantchDeleteEntityNoCommit(confIds); if (measIds != null && measIds.Any()) this.BantchDeleteEntityNoCommit(measIds); if (dealIds != null && dealIds.Any()) this.BantchDeleteEntityNoCommit(dealIds); if (postIds != null && postIds.Any()) this.BantchDeleteEntityNoCommit(postIds); if (safeConfs != null && safeConfs.Any()) this.BantchSaveEntityNoCommit(safeConfs); if (safeMeas != null && safeMeas.Any()) this.BantchSaveEntityNoCommit(safeMeas); if (dealMeas != null && dealMeas.Any()) this.BantchSaveEntityNoCommit(dealMeas); if (posts != null && posts.Any()) this.BantchSaveEntityNoCommit(posts); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (publish != null) this.UpdateEntityNoCommit(publish); }); return true; } /// /// 获取创建人负责人ID /// private Guid? GetChargeUserId(Guid? id) { var chargeId = id; //var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; var user = GetEntity(t => t.ID == id && t.ENABLE_STATUS == 0, new string[] { "Nav_Department" }); if (user != null && user.Nav_Department != null && user.Nav_Department.USER_ID != null)//user.Nav_Department.DEPARTMENT_TYPE == (int)FMDepartmentType.部门 { chargeId = user.Nav_Department.USER_ID; } //else //{ // List departmentIds = new List(); // GetDepartmentId(user.DEPARTMENT_ID, ref departmentIds); // var departInfo = this.GetEntity(t => departmentIds.Contains(t.ID) && t.DEPARTMENT_TYPE == (int)FMDepartmentType.部门 && t.USER_ID != null); // chargeId = departInfo?.USER_ID; //} return chargeId; } private void GetDepartmentId(Guid? departmentId, ref List departmentIds) { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; departmentIds.Add(departmentId); var department = GetEntity(t => t.ID == departmentId); if (department != null && department.PARENT_ID != null) { GetDepartmentId(department.PARENT_ID, ref departmentIds); } } #endregion #region WJN /// /// 审批流回调 /// /// /// private bool PersonalApprove_HMRiskTask(string id) { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; Guid RiskId = Guid.Parse(id); BaseFilter filter = new BaseFilter(orgId); filter.Include = new string[] { "Nav_Detail.Nav_Users.Nav_User" }; var entity = GetEntity(t => t.ID == RiskId, filter); if (entity != null) { entity.STATUS = FOPreMeetingStatusEnum.签到中; var noticeUserIds = new List(); var noticeUserNames = new List(); var noticeTitles = new List(); var noticeDataIds = new List(); foreach (var detail in entity.Nav_Detail) { foreach (var users in detail.Nav_Users) { var count = noticeUserIds.Where(t => t == users.USER_ID).Count(); if (count == 0) { noticeUserIds.Add(users.USER_ID); noticeUserNames.Add(users.Nav_User.NAME); noticeTitles.Add("危险源辨识任务待确认"); noticeDataIds.Add(RiskId); } } } var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(noticeTitles, noticeDataIds, orgId, noticeUserIds, noticeUserNames, DateTime.Now, DateTime.Parse(DateTime.Now.AddDays(1).ToShortDateString() + " 23:59:59"), (int)FMNoticeTypeEnum.消息, "HM061_SHOWPRINT"); this.UnifiedCommit(() => { UpdateEntityNoCommit(entity, "STATUS"); if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); }); } return true; } /// /// 审批流回调 /// /// /// private bool PersonalApprove_HMRiskRecord(string id) { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; var entity = GetEntity(id, new string[] { "Nav_Files", "Nav_Details.Nav_EvaluateRiskRecordWorkduty", "Nav_Details.Nav_EvaluateRiskRecordEquipment", "Nav_Details.Nav_EvaluateRiskRecordFacilities" }); BaseFilter filter = new BaseFilter(orgId); if (entity != null) { T_HM_EVALUATE_RESULT result = new T_HM_EVALUATE_RESULT(); List resultRisks = new List(); List resultRiskfiles = new List(); List resultRiskWorkdutys = new List(); List resultEquipments = new List(); List resultRiskFacilitys = new List(); List individuals = new List(); List engineerings = new List(); List managements = new List(); List educations = new List(); List emergencys = new List(); var details = entity.Nav_Details.Where(t => t.RISK_STATUS == HMOperationStepEnum.有效).Select(x => x.EVALUATE_RISK_ID); var disableDetails = entity.Nav_Details.Where(t => t.RISK_STATUS == HMOperationStepEnum.作废 || t.MODIFY_TYPE == HMModifyEnum.修改).Select(x => x.EVALUATE_RISK_ID); var disableEvaluates = GetEntities(t => disableDetails.Contains(t.ID), new BaseFilter(orgId)); foreach (var disItem in disableEvaluates) { disItem.STATUS = (int)HMOperationStepEnum.作废; } filter.Include = new string[] { "Nav_EvaluateRiskIndividualMeasures", "Nav_EvaluateRiskEngineeringMeasures", "Nav_EvaluateRiskManagementMeasures", "Nav_EvaluateRiskEducationMeasures", "Nav_EvaluateRiskEmergencyMeasures" }; var evaluaterisks = GetEntities(t => details.Contains(t.ID), filter); var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.评价结果表; sysFilter.Count = 1; sysFilter.OrgId = orgId; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); result.CODE = codeList[0]; result.ID = Guid.NewGuid(); result.STATUS = FOPreMeetingStatusEnum.草稿; result.EVALUATE_TYPE = HMRiskTypeEnmu.危险源辨识; var RequireMent = GetEntity(t => t.IS_DELETED == false); if (RequireMent != null) { result.REQUIREMENT_ID = RequireMent.ID; } result.INITIATING_DEPARTMENT = entity.INITIATING_DEPARTMENT; result.ORG_ID = orgId; result.LEVEL = entity.LEVEL; result.START_TIME = entity.START_TIME; result.END_TIME = entity.END_TIME; result.PLAN_ID = entity.PLAN_ID; Guid sendUserId = Guid.Empty; string sendName = ""; var sendUser = new T_FM_USER(); if (entity.LEVEL == FMDepartmentType.Company) { var approveRole = GetEntity(t => t.NAME == "安环部安全员").ID; sendUser = GetEntity(t => t.APPROVE_ROLE_ID == approveRole && t.ENABLE_STATUS == 0); sendUserId = sendUser.ID; sendName = sendUser.NAME; if (sendUserId == Guid.Empty) { ThrowError("未找到安环部安全员"); } } else { var userDepartmentId = GetEntity(t => t.ID == entity.NOTE_TAKER_ID && t.ENABLE_STATUS == 0).DEPARTMENT_ID; var department = GetEntity(userDepartmentId.ToString()); Guid departmentId = Guid.Empty; if (department.DEPARTMENT_TYPE == (int)FMDepartmentType.Class) { var tempDepartment = GetEntity(t => t.ID == department.PARENT_ID).PARENT_ID; departmentId = GetEntity(t => t.ID == tempDepartment).ID; } else if (department.DEPARTMENT_TYPE == (int)FMDepartmentType.Workshop) { departmentId = GetEntity(t => t.ID == department.PARENT_ID).ID; } else { departmentId = department.ID; } sendUser = GetEntity(t => t.DEPARTMENT_ID == departmentId && t.Nav_ApproveRole.NAME == "部门安全员" && t.ENABLE_STATUS == 0); if (sendUser == null) { sendUser = GetEntity(t => t.DEPARTMENT_ID == departmentId && t.Nav_ApproveRole.NAME == "部门负责人" && t.ENABLE_STATUS == 0); if (sendUser == null) { sendUser = GetEntity(t => t.DEPARTMENT_ID == departmentId && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0); sendUserId = sendUser.ID; sendName = sendUser.NAME; } else { sendUserId = sendUser.ID; sendName = sendUser.NAME; } if (sendUser == null) { throw new Exception("未找到部门安全员或部门负责人"); } } else { sendUserId = sendUser.ID; sendName = sendUser.NAME; } } result.NOTE_TAKER_ID = sendUserId;//部门安全员 if (entity.Nav_Files != null && entity.Nav_Files.Any()) { foreach (var item in entity.Nav_Files) { T_HM_EVALUATE_RESULT_FILE resultRiskfile = new T_HM_EVALUATE_RESULT_FILE(); resultRiskfile.EVALUATE_RESULT_ID = result.ID; resultRiskfile.IMG_FILE_ID = item.IMG_FILE_ID; resultRiskfile.ORG_ID = orgId; resultRiskfiles.Add(resultRiskfile); } } var enableDetails = entity.Nav_Details.Where(t => t.RISK_STATUS == HMOperationStepEnum.有效); if (enableDetails != null && enableDetails.Any()) { foreach (var item in enableDetails) { var evaluatierisk = evaluaterisks.Where(t => t.ID == item.EVALUATE_RISK_ID).FirstOrDefault(); T_HM_EVALUATE_RESULT_RISK resultRisk = new T_HM_EVALUATE_RESULT_RISK(); resultRisk.ID = Guid.NewGuid(); resultRisk.EVALUATE_RESULT_ID = result.ID; resultRisk.NAME = item.RISK_NAME; resultRisk.RISK_PLACE = item.RISK_PLACE; resultRisk.AREA_ID = item.AREA_ID; resultRisk.IDENTIFYING_ID = item.IDENTIFYING_ID; resultRisk.TYPE_ID = item.TYPE_ID; resultRisk.OPERATION_STEP_ID = item.OPERATION_STEP_ID; resultRisk.ORG_ID = orgId; resultRisk.DEPARTMENT_LIABLE_ID = item.DEPARTMENT_LIABLE_ID; resultRisk.POST_LIABLE_ID = item.POST_LIABLE_ID; if (item.LIABLE_USER_ID == null) { var user = GetEntity(t => t.DEPARTMENT_ID == resultRisk.DEPARTMENT_LIABLE_ID && t.APPROVE_ROLE_ID == resultRisk.POST_LIABLE_ID && t.ENABLE_STATUS == 0); if (user != null) { resultRisk.LIABLE_USER_ID = user.ID; } } else { resultRisk.LIABLE_USER_ID = item.LIABLE_USER_ID; } if (evaluatierisk != null) { resultRisk.EVALUATE_L = evaluatierisk.EVALUATE_L; resultRisk.EVALUATE_E = evaluatierisk.EVALUATE_E; resultRisk.EVALUATE_C = evaluatierisk.EVALUATE_C; resultRisk.EVALUATE_SCORE = evaluatierisk.EVALUATE_SCORE; resultRisk.EVALUATE_LEVEL = evaluatierisk.EVALUATE_LEVEL; resultRisk.EVALUATE_RISK_ID = item.EVALUATE_RISK_ID; } else { resultRisk.EVALUATE_RISK_ID = null; } resultRisk.MODIFY_TYPE = item.MODIFY_TYPE; resultRisks.Add(resultRisk); foreach (var workduty in item.Nav_EvaluateRiskRecordWorkduty) { T_HM_EVALUATE_RESULT_RISK_WORKDUTY resultRiskWorkduty = new T_HM_EVALUATE_RESULT_RISK_WORKDUTY(); resultRiskWorkduty.EVALUATION_RESULT_RISK_ID = resultRisk.ID; resultRiskWorkduty.WORKDUTY_ID = workduty.WORKDUTY_ID; resultRiskWorkduty.ORG_ID = orgId; resultRiskWorkdutys.Add(resultRiskWorkduty); } foreach (var equipment in item.Nav_EvaluateRiskRecordEquipment) { T_HM_EVALUATE_RESULT_RISK_EQUIPMENT resultEquipment = new T_HM_EVALUATE_RESULT_RISK_EQUIPMENT(); resultEquipment.EVALUATION_RESULT_RISK_ID = resultRisk.ID; resultEquipment.EQUIPMENT_ID = equipment.EQUIPMENT_ID; resultEquipment.ORG_ID = orgId; resultEquipments.Add(resultEquipment); } foreach (var facility in item.Nav_EvaluateRiskRecordFacilities) { T_HM_EVALUATE_RESULT_RISK_FACILITIES resultRiskFacility = new T_HM_EVALUATE_RESULT_RISK_FACILITIES(); resultRiskFacility.EVALUATION_RESULT_RISK_ID = resultRisk.ID; resultRiskFacility.FACILITIES_ID = facility.FACILITIES_ID; resultRiskFacility.ORG_ID = orgId; resultRiskFacilitys.Add(resultRiskFacility); } if (evaluatierisk != null) { foreach (var measure in evaluatierisk.Nav_EvaluateRiskIndividualMeasures) { T_HM_EVALUATE_RESULT_RISK_INDIVIDUAL_MEASURES model = new T_HM_EVALUATE_RESULT_RISK_INDIVIDUAL_MEASURES(); model.EVALUATION_RESULT_RISK_ID = resultRisk.ID; model.INDIVIDUAL_MEASURES_ID = measure.INDIVIDUAL_MEASURES_ID; model.ORG_ID = orgId; individuals.Add(model); } foreach (var measure in evaluatierisk.Nav_EvaluateRiskEngineeringMeasures) { T_HM_EVALUATE_RESULT_RISK_ENGINEERING_MEASURES model = new T_HM_EVALUATE_RESULT_RISK_ENGINEERING_MEASURES(); model.EVALUATION_RESULT_RISK_ID = resultRisk.ID; model.ENGINEERING_MEASURES_ID = measure.ENGINEERING_MEASURES_ID; model.ORG_ID = orgId; engineerings.Add(model); } foreach (var measure in evaluatierisk.Nav_EvaluateRiskManagementMeasures) { T_HM_EVALUATE_RESULT_RISK_MANAGEMENT_MEASURES model = new T_HM_EVALUATE_RESULT_RISK_MANAGEMENT_MEASURES(); model.EVALUATION_RESULT_RISK_ID = resultRisk.ID; model.MANAGEMENT_MEASURES_ID = measure.MANAGEMENT_MEASURES_ID; model.ORG_ID = orgId; managements.Add(model); } foreach (var measure in evaluatierisk.Nav_EvaluateRiskEducationMeasures) { T_HM_EVALUATE_RESULT_RISK_EDUCATION_MEASURES model = new T_HM_EVALUATE_RESULT_RISK_EDUCATION_MEASURES(); model.EVALUATION_RESULT_RISK_ID = resultRisk.ID; model.EDUCATION_MEASURES_ID = measure.EDUCATION_MEASURES_ID; model.ORG_ID = orgId; educations.Add(model); } foreach (var measure in evaluatierisk.Nav_EvaluateRiskEmergencyMeasures) { T_HM_EVALUATE_RESULT_RISK_EMERGENCY_MEASURES model = new T_HM_EVALUATE_RESULT_RISK_EMERGENCY_MEASURES(); model.EVALUATION_RESULT_RISK_ID = resultRisk.ID; model.EMERGENCY_MEASURES_ID = measure.EMERGENCY_MEASURES_ID; model.ORG_ID = orgId; emergencys.Add(model); } } } } entity.STATUS = FOPreMeetingStatusEnum.归档; NotificationTaskService.SendNotificationTask("危险源与风险辨识评价结果", result.ID, orgId, sendUserId, sendName, DateTime.Now, DateTime.Parse(DateTime.Now.AddDays(5).ToShortDateString() + " 23:59:59"), (int)FMNoticeTypeEnum.消息, "HM122", () => { if (entity != null) UpdateEntityNoCommit(entity, "STATUS"); if (result != null) AddEntityNoCommit(result); if (resultRisks != null && resultRisks.Any()) BantchAddEntityNoCommit(resultRisks); if (resultRiskfiles != null && resultRiskfiles.Any()) BantchAddEntityNoCommit(resultRiskfiles); if (resultRiskWorkdutys != null && resultRiskWorkdutys.Any()) BantchAddEntityNoCommit(resultRiskWorkdutys); if (resultEquipments != null && resultEquipments.Any()) BantchAddEntityNoCommit(resultEquipments); if (resultRiskFacilitys != null && resultRiskFacilitys.Any()) BantchAddEntityNoCommit(resultRiskFacilitys); if (individuals != null && individuals.Any()) BantchSaveEntityNoCommit(individuals); //保存子表 if (engineerings != null && engineerings.Any()) BantchSaveEntityNoCommit(engineerings); //保存子表 if (managements != null && managements.Any()) BantchSaveEntityNoCommit(managements); //保存子表 if (educations != null && educations.Any()) BantchSaveEntityNoCommit(educations); //保存子表 if (emergencys != null && emergencys.Any()) BantchSaveEntityNoCommit(emergencys); //保存子表 if (disableEvaluates != null && disableEvaluates.Any()) BantchUpdateEntityNoCommit(disableEvaluates, "STATUS"); //保存子表 }); } return true; } /// /// 审批流回调 /// /// /// private bool PersonalApprove_HMHazardTask(string id) { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; Guid HazardId = Guid.Parse(id); BaseFilter filter = new BaseFilter(orgId); filter.Include = new string[] { "Nav_Detail.Nav_Users.Nav_User" }; var entity = GetEntity(t => t.ID == HazardId, filter); if (entity != null) { entity.STATUS = FOPreMeetingStatusEnum.签到中; var noticeUserIds = new List(); var noticeUserNames = new List(); var noticeTitles = new List(); var noticeDataIds = new List(); foreach (var detail in entity.Nav_Detail) { foreach (var users in detail.Nav_Users) { var count = noticeUserIds.Where(t => t == users.USER_ID).Count(); if (count == 0) { noticeUserIds.Add(users.USER_ID); noticeUserNames.Add(users.Nav_User.NAME); noticeTitles.Add("职业危害任务待确认"); noticeDataIds.Add(HazardId); } } } var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(noticeTitles, noticeDataIds, orgId, noticeUserIds, noticeUserNames, DateTime.Now, DateTime.Parse(DateTime.Now.AddDays(1).ToShortDateString() + " 23:59:59"), (int)FMNoticeTypeEnum.消息, "HM101_SHOWPRINT"); this.UnifiedCommit(() => { UpdateEntityNoCommit(entity, "STATUS"); if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); }); } return true; } /// /// 审批流回调 /// /// /// private bool PersonalApprove_HMHazardRecord(string id) { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; Guid RiskId = Guid.Parse(id); var entity = GetEntity(RiskId, new string[] { "Nav_Files", "Nav_Details" }); if (entity != null) { T_HM_EVALUATE_RESULT result = new T_HM_EVALUATE_RESULT(); List resultHazards = new List(); List resultHazardFiles = new List(); List individuals = new List(); List engineerings = new List(); List managements = new List(); List educations = new List(); List emergencys = new List(); var details = entity.Nav_Details.Where(t => t.HAZARD_STATUS == HMOperationStepEnum.有效).Select(x => x.EVALUATE_HAZARD_ID); var disableDetails = entity.Nav_Details.Where(t => t.HAZARD_STATUS == HMOperationStepEnum.作废).Select(x => x.EVALUATE_HAZARD_ID); var disableEvaluates = GetEntities(t => disableDetails.Contains(t.ID), new BaseFilter(orgId)); foreach (var disItem in disableEvaluates) { disItem.STATUS = (int)HMOperationStepEnum.作废; } BaseFilter filter = new BaseFilter(orgId); filter.Include = new string[] { "Nav_EvaluateHazardIndividualMeasures", "Nav_EvaluateHazardEngineeringMeasures", "Nav_EvaluateHazardManagementMeasures", "Nav_EvaluateHazardEducationMeasures", "Nav_EvaluateHazardEmergencyMeasures" }; var evaluateHazards = GetEntities(t => details.Contains(t.ID), filter); var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.评价结果表; sysFilter.Count = 1; sysFilter.OrgId = orgId; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); result.CODE = codeList[0]; result.ID = Guid.NewGuid(); result.STATUS = FOPreMeetingStatusEnum.草稿; result.EVALUATE_TYPE = HMRiskTypeEnmu.职业危害辨识; result.START_TIME = entity.START_TIME; result.END_TIME = entity.END_TIME; result.PLAN_ID = entity.PLAN_ID; var RequireMent = GetEntity(t => t.IS_DELETED == false); if (RequireMent != null) { result.REQUIREMENT_ID = RequireMent.ID; } result.INITIATING_DEPARTMENT = entity.INITIATING_DEPARTMENT; result.ORG_ID = orgId; result.LEVEL = entity.LEVEL; Guid sendUserId = Guid.Empty; string sendName = ""; var sendUser = new T_FM_USER(); if (entity.LEVEL == FMDepartmentType.Company) { var approveRole = GetEntity(t => t.NAME == "安环部安全员").ID; sendUser = GetEntity(t => t.APPROVE_ROLE_ID == approveRole && t.ENABLE_STATUS == 0); sendUserId = sendUser.ID; sendName = sendUser.NAME; if (sendUserId == Guid.Empty) { ThrowError("未找到安环部安全员"); } } else { var userDepartmentId = GetEntity(t => t.ID == entity.NOTE_TAKER_ID && t.ENABLE_STATUS == 0).DEPARTMENT_ID; var department = GetEntity(userDepartmentId.ToString()); Guid departmentId = Guid.Empty; if (department.DEPARTMENT_TYPE == (int)FMDepartmentType.Class) { var tempDepartment = GetEntity(t => t.ID == department.PARENT_ID).PARENT_ID; departmentId = GetEntity(t => t.ID == tempDepartment).ID; } else if (department.DEPARTMENT_TYPE == (int)FMDepartmentType.Department) { departmentId = department.ID; } else { departmentId = GetEntity(t => t.ID == department.PARENT_ID).ID; } sendUser = GetEntity(t => t.DEPARTMENT_ID == departmentId && t.Nav_ApproveRole.NAME == "部门安全员" && t.ENABLE_STATUS == 0); if (sendUser == null) { sendUser = GetEntity(t => t.DEPARTMENT_ID == departmentId && t.Nav_ApproveRole.NAME == "部门负责人" && t.ENABLE_STATUS == 0); if (sendUser == null) { throw new Exception("未找到部门安全员或部门负责人"); } sendUserId = sendUser.ID; sendName = sendUser.NAME; } else { sendUserId = sendUser.ID; sendName = sendUser.NAME; } } result.NOTE_TAKER_ID = sendUserId;//部门安全员 if (entity.Nav_Files != null && entity.Nav_Files.Any()) { foreach (var item in entity.Nav_Files) { T_HM_EVALUATE_RESULT_FILE resultHazardFile = new T_HM_EVALUATE_RESULT_FILE(); resultHazardFile.EVALUATE_RESULT_ID = result.ID; resultHazardFile.IMG_FILE_ID = item.IMG_FILE_ID; resultHazardFile.ORG_ID = orgId; resultHazardFiles.Add(resultHazardFile); } } var enableDetail = entity.Nav_Details.Where(t => t.HAZARD_STATUS == HMOperationStepEnum.有效); if (enableDetail != null && enableDetail.Any()) { foreach (var item in enableDetail) { var evaluatieHazard = evaluateHazards.Where(t => t.ID == item.EVALUATE_HAZARD_ID).FirstOrDefault(); T_HM_EVALUATE_RESULT_HAZARD resultHazard = new T_HM_EVALUATE_RESULT_HAZARD(); resultHazard.ID = Guid.NewGuid(); resultHazard.EVALUATE_RESULT_ID = result.ID; resultHazard.AREA_ID = item.AREA_ID; resultHazard.ORG_ID = orgId; resultHazard.HAZARD_POSITION = item.HAZARD_POSITION; resultHazard.EXPOSURE_TIME = item.EXPOSURE_TIME; resultHazard.EXPOSURE_LIMIT_VALUE = item.EXPOSURE_LIMIT_VALUE; resultHazard.EXPOSURE_NUMBER = item.EXPOSURE_NUMBER; resultHazard.OCCUPATIONALRISK_ID = item.OCCUPATIONALRISK_ID; resultHazard.MODIFY_TYPE = item.MODIFY_TYPE; resultHazard.IDENTIFYING_ID = item.IDENTIFYING_ID; if (evaluatieHazard != null) { resultHazard.EVALUATE_HAZARD_ID = evaluatieHazard.ID; resultHazard.POST_LIABLE_ID = evaluatieHazard.POST_LIABLE_ID; resultHazard.DEPARTMENT_LIABLE_ID = evaluatieHazard.DEPARTMENT_LIABLE_ID; resultHazard.MONITOR_MEASURES_ID = evaluatieHazard.MONITOR_MEASURES_ID; resultHazard.HAZARD_LEVEL = evaluatieHazard.HAZARD_LEVEL; } else { resultHazard.EVALUATE_HAZARD_ID = null; resultHazard.MONITOR_MEASURES_ID = null; } resultHazards.Add(resultHazard); if (evaluatieHazard != null) { foreach (var measure in evaluatieHazard.Nav_EvaluateHazardIndividualMeasures) { T_HM_EVALUATE_RESULT_HAZARD_INDIVIDUAL_MEASURES model = new T_HM_EVALUATE_RESULT_HAZARD_INDIVIDUAL_MEASURES(); model.EVALUATE_RESULT_HAZARD_ID = resultHazard.ID; model.INDIVIDUAL_MEASURES_ID = measure.INDIVIDUAL_MEASURES_ID; model.ORG_ID = orgId; individuals.Add(model); } foreach (var measure in evaluatieHazard.Nav_EvaluateHazardEngineeringMeasures) { T_HM_EVALUATE_RESULT_HAZARD_ENGINEERING_MEASURES model = new T_HM_EVALUATE_RESULT_HAZARD_ENGINEERING_MEASURES(); model.EVALUATE_RESULT_HAZARD_ID = resultHazard.ID; model.ENGINEERING_MEASURES_ID = measure.ENGINEERING_MEASURES_ID; model.ORG_ID = orgId; engineerings.Add(model); } foreach (var measure in evaluatieHazard.Nav_EvaluateHazardManagementMeasures) { T_HM_EVALUATE_RESULT_HAZARD_MANAGEMENT_MEASURES model = new T_HM_EVALUATE_RESULT_HAZARD_MANAGEMENT_MEASURES(); model.EVALUATE_RESULT_HAZARD_ID = resultHazard.ID; model.MANAGEMENT_MEASURES_ID = measure.MANAGEMENT_MEASURES_ID; model.ORG_ID = orgId; managements.Add(model); } foreach (var measure in evaluatieHazard.Nav_EvaluateHazardEducationMeasures) { T_HM_EVALUATE_RESULT_HAZARD_EDUCATION_MEASURES model = new T_HM_EVALUATE_RESULT_HAZARD_EDUCATION_MEASURES(); model.EVALUATE_RESULT_HAZARD_ID = resultHazard.ID; model.EDUCATION_MEASURES_ID = measure.EDUCATION_MEASURES_ID; model.ORG_ID = orgId; educations.Add(model); } foreach (var measure in evaluatieHazard.Nav_EvaluateHazardEmergencyMeasures) { T_HM_EVALUATE_RESULT_HAZARD_EMERGENCY_MEASURES model = new T_HM_EVALUATE_RESULT_HAZARD_EMERGENCY_MEASURES(); model.EVALUATE_RESULT_HAZARD_ID = resultHazard.ID; model.EMERGENCY_MEASURES_ID = measure.EMERGENCY_MEASURES_ID; model.ORG_ID = orgId; emergencys.Add(model); } } } } entity.STATUS = FOPreMeetingStatusEnum.归档; NotificationTaskService.SendNotificationTask("职业危害辨识评价结果", result.ID, orgId, sendUserId, sendName, DateTime.Now, DateTime.Parse(DateTime.Now.AddDays(5).ToShortDateString() + " 23:59:59"), (int)FMNoticeTypeEnum.消息, "HM122", () => { if (entity != null) UpdateEntityNoCommit(entity, "STATUS"); if (result != null) AddEntityNoCommit(result); if (resultHazards != null && resultHazards.Any()) BantchAddEntityNoCommit(resultHazards); if (resultHazardFiles != null && resultHazardFiles.Any()) BantchAddEntityNoCommit(resultHazardFiles); if (individuals != null && individuals.Any()) BantchSaveEntityNoCommit(individuals); //保存子表 if (engineerings != null && engineerings.Any()) BantchSaveEntityNoCommit(engineerings); //保存子表 if (managements != null && managements.Any()) BantchSaveEntityNoCommit(managements); //保存子表 if (educations != null && educations.Any()) BantchSaveEntityNoCommit(educations); //保存子表 if (emergencys != null && emergencys.Any()) BantchSaveEntityNoCommit(emergencys); //保存子表 if (disableEvaluates != null && disableEvaluates.Any()) BantchUpdateEntityNoCommit(disableEvaluates, "STATUS"); //保存子表 }); } return true; } /// /// 危险源及风险审批流回调 /// /// /// private bool PersonalApprove1(string id) { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; Guid RiskId = Guid.Parse(id); BaseFilter filter = new BaseFilter(orgId); filter.Include = new string[] { "Nav_Risks", "Nav_Risks.Nav_EvaluateRiskWorkduty", "Nav_Risks.Nav_EvaluateRiskEquipment", "Nav_Risks.Nav_EvaluateRiskIndividualMeasures", "Nav_Risks.Nav_EvaluateRiskEngineeringMeasures", "Nav_Risks.Nav_EvaluateRiskManagementMeasures", "Nav_Risks.Nav_EvaluateRiskEducationMeasures", "Nav_Risks.Nav_EvaluateRiskEmergencyMeasures" }; var entity = GetEntity(t => t.ID == RiskId, filter); List addEvaluateRisks = new List(); List addWorkdutys = new List(); List addEquipments = new List(); //List addFacilities = new List(); List addIndividuals = new List(); List addEngineerings = new List(); List addManagements = new List(); List addEducations = new List(); List addEmergencys = new List(); List updateRiskResult = new List(); List newjobAdds1 = null; List newjobAdds2 = null; T_HM_JOBTASK_IDENTIFY jobTask = null; List jobtaskDetailList = null; List jobtaskDetailPostList = null; List jobtaskDetailRiskList = null; List modelCheck = null; List listProject = null; List listDetail = null; if (entity.Nav_Risks != null && entity.Nav_Risks.Any()) { entity.STATUS = FOPreMeetingStatusEnum.归档; var updateRecord = entity.Nav_Risks.Where(t => t.MODIFY_TYPE != 0); foreach (var update in updateRecord) { T_HM_EVALUATE_RISK risk = new T_HM_EVALUATE_RISK(); if (update.EVALUATE_RISK_ID != null) { risk.ID = (Guid)update.EVALUATE_RISK_ID; } else { risk.ID = Guid.NewGuid(); update.EVALUATE_RISK_ID = risk.ID; updateRiskResult.Add(update); } risk.NAME = update.NAME; risk.AREA_ID = update.AREA_ID; risk.OPERATION_STEP_ID = update.OPERATION_STEP_ID; risk.IDENTIFYING_ID = update.IDENTIFYING_ID; risk.TYPE_ID = update.TYPE_ID; risk.RISK_PLACE = update.RISK_PLACE; risk.LEVEL = entity.LEVEL; risk.ORG_ID = orgId; risk.EVALUATE_L = update.EVALUATE_L; risk.EVALUATE_E = update.EVALUATE_E; risk.EVALUATE_C = update.EVALUATE_C; risk.EVALUATE_SCORE = update.EVALUATE_SCORE; risk.EVALUATE_LEVEL = update.EVALUATE_LEVEL; risk.POST_LIABLE_ID = update.POST_LIABLE_ID; risk.DEPARTMENT_LIABLE_ID = update.DEPARTMENT_LIABLE_ID; risk.MODIFY_TYPE = HMModifyEnum.新增; var minetype = int.Parse(APT.Infrastructure.Api.AppContext.CurrentSession.MineType.Split(',')[0]); if (minetype != 0) { risk.MineType = minetype; } foreach (var item in update.Nav_EvaluateRiskWorkduty) { T_HM_EVALUATE_RISK_WORKDUTY addWorkduty = new T_HM_EVALUATE_RISK_WORKDUTY(); addWorkduty.EVALUATION_RISK_ID = risk.ID; addWorkduty.POST_ID = item.WORKDUTY_ID; addWorkduty.ORG_ID = orgId; addWorkdutys.Add(addWorkduty); } foreach (var item in update.Nav_EvaluateRiskEquipment) { T_HM_EVALUATE_RISK_EQUIPMENT addEquipment = new T_HM_EVALUATE_RISK_EQUIPMENT(); addEquipment.EVALUATION_RISK_ID = risk.ID; addEquipment.EQUIPMENT_ID = item.EQUIPMENT_ID; addEquipment.ORG_ID = orgId; addEquipments.Add(addEquipment); } //foreach (var item in update.Nav_EvaluateRiskFacilities) //{ // T_HM_EVALUATE_RISK_FACILITIES addFacility = new T_HM_EVALUATE_RISK_FACILITIES(); // addFacility.EVALUATION_RISK_ID = risk.ID; // addFacility.FACILITIES_ID = item.FACILITIES_ID; // addFacility.ORG_ID = orgId; // addFacilities.Add(addFacility); //} foreach (var item in update.Nav_EvaluateRiskIndividualMeasures) { T_HM_EVALUATE_RISK_INDIVIDUAL_MEASURES addItem = new T_HM_EVALUATE_RISK_INDIVIDUAL_MEASURES(); addItem.EVALUATION_RISK_ID = risk.ID; addItem.INDIVIDUAL_MEASURES_ID = item.INDIVIDUAL_MEASURES_ID; addItem.ORG_ID = orgId; addIndividuals.Add(addItem); } foreach (var item in update.Nav_EvaluateRiskEngineeringMeasures) { T_HM_EVALUATE_RISK_ENGINEERING_MEASURES addItem = new T_HM_EVALUATE_RISK_ENGINEERING_MEASURES(); addItem.EVALUATION_RISK_ID = risk.ID; addItem.ENGINEERING_MEASURES_ID = item.ENGINEERING_MEASURES_ID; addItem.ORG_ID = orgId; addEngineerings.Add(addItem); } foreach (var item in update.Nav_EvaluateRiskManagementMeasures) { T_HM_EVALUATE_RISK_MANAGEMENT_MEASURES addItem = new T_HM_EVALUATE_RISK_MANAGEMENT_MEASURES(); addItem.EVALUATION_RISK_ID = risk.ID; addItem.MANAGEMENT_MEASURES_ID = item.MANAGEMENT_MEASURES_ID; addItem.ORG_ID = orgId; addManagements.Add(addItem); } foreach (var item in update.Nav_EvaluateRiskEducationMeasures) { T_HM_EVALUATE_RISK_EDUCATION_MEASURES addItem = new T_HM_EVALUATE_RISK_EDUCATION_MEASURES(); addItem.EVALUATION_RISK_ID = risk.ID; addItem.EDUCATION_MEASURES_ID = item.EDUCATION_MEASURES_ID; addItem.ORG_ID = orgId; addEducations.Add(addItem); } foreach (var item in update.Nav_EvaluateRiskEmergencyMeasures) { T_HM_EVALUATE_RISK_EMERGENCY_MEASURES addItem = new T_HM_EVALUATE_RISK_EMERGENCY_MEASURES(); addItem.EVALUATION_RISK_ID = risk.ID; addItem.EMERGENCY_MEASURES_ID = item.EMERGENCY_MEASURES_ID; addItem.ORG_ID = orgId; addEmergencys.Add(addItem); } addEvaluateRisks.Add(risk); } var addDetails = entity.Nav_Risks.Where(t => t.MODIFY_TYPE == HMModifyEnum.新增); var noticeTitles1 = new List(); var noticeUserIds1 = new List(); var noticeUserNames1 = new List(); var noticeDataIds1 = new List(); var noticeTitles2 = new List(); var noticeUserIds2 = new List(); var noticeUserNames2 = new List(); var noticeDataIds2 = new List(); if (addDetails != null && addDetails.Any()) { jobtaskDetailList = new List(); jobtaskDetailPostList = new List(); jobtaskDetailRiskList = new List(); modelCheck = new List(); listProject = new List(); listDetail = new List(); var allIdentifyID = GetEntities(t => true); var identifyID = allIdentifyID.FirstOrDefault(t => t.NAME == "作业过程" || t.NAME == "作业活动").ID; var jobadds = addDetails.Where(t => t.IDENTIFYING_ID == identifyID && t.OPERATION_STEP_ID != null); var allUsers = GetEntities(t => t.APPROVE_ROLE_ID != null && t.ENABLE_STATUS == 0, new BaseFilter(orgId)); if (jobadds.Count() > 0) { jobTask = new T_HM_JOBTASK_IDENTIFY(); jobTask.ORG_ID = orgId; jobTask.ID = Guid.NewGuid(); jobTask.CREATER_ID = userId; var jobaddsDistinct = jobadds.GroupBy(t => new { t.AREA_ID, t.OPERATION_STEP_ID }).Select(g => g.First()).ToList(); foreach (var itemDistinct in jobaddsDistinct) { var addItem = jobadds.Where(t => t.AREA_ID == itemDistinct.AREA_ID && t.OPERATION_STEP_ID == itemDistinct.OPERATION_STEP_ID); foreach (var item in addItem) { T_HM_JOBTASK_IDENTIFY_DETAIL jobtaskDetail = new T_HM_JOBTASK_IDENTIFY_DETAIL(); jobtaskDetail.ID = Guid.NewGuid(); jobtaskDetail.JOBTASK_IDENTIFY_ID = jobTask.ID; jobtaskDetail.AREA_ID = item.AREA_ID; jobtaskDetail.OPERATION_STEP_ID = item.OPERATION_STEP_ID; jobtaskDetail.ORG_ID = orgId; foreach (var post in item.Nav_EvaluateRiskWorkduty) { T_HM_JOBTASK_IDENTIFY_DETAIL_POST jobTaskPost = new T_HM_JOBTASK_IDENTIFY_DETAIL_POST(); jobTaskPost.JOBTASK_IDENTIFY_DETAIL_ID = jobtaskDetail.ID; jobTaskPost.POST_ID = post.WORKDUTY_ID; jobTaskPost.ORG_ID = orgId; jobtaskDetailPostList.Add(jobTaskPost); } var newRisks = addEvaluateRisks.Where(t => t.AREA_ID == item.AREA_ID && t.OPERATION_STEP_ID == item.OPERATION_STEP_ID).Select(p => p.ID); foreach (var risk in newRisks) { T_HM_JOBTASK_IDENTIFY_DETAIL_RISK jobTaskRisk = new T_HM_JOBTASK_IDENTIFY_DETAIL_RISK(); jobTaskRisk.JOBTASK_IDENTIFY_DETAIL_ID = jobtaskDetail.ID; jobTaskRisk.EVALUATE_RISK_ID = risk; jobTaskRisk.ORG_ID = orgId; jobtaskDetailRiskList.Add(jobTaskRisk); } var jobUser = allUsers.FirstOrDefault(t => t.DEPARTMENT_ID == item.DEPARTMENT_LIABLE_ID && t.APPROVE_ROLE_ID == item.POST_LIABLE_ID); if (jobUser != null) { jobtaskDetailList.Add(jobtaskDetail); noticeTitles1.Add("新增作业任务识别"); noticeDataIds1.Add(jobTask.ID); noticeUserIds1.Add(jobUser.ID); noticeUserNames1.Add(jobUser.NAME); } } } } if (addDetails.Count() > 0) { var safeCheckAddsDistinct = addDetails.GroupBy(t => new { t.AREA_ID }).Select(g => g.First()).ToList(); foreach (var safeCheckArea in safeCheckAddsDistinct) { var safeCheck1 = addDetails.Where(t => t.AREA_ID == safeCheckArea.AREA_ID); if (safeCheck1 != null) { foreach (var item in safeCheck1) { var DIC = new Dictionary>(); var texts = new List(); if (item.Nav_EvaluateRiskEquipment.Count > 0) { var equipmentIds = item.Nav_EvaluateRiskEquipment.Select(t => t.ID); var equipments = GetEntities(t => equipmentIds.Contains(t.ID)); var equipmentNames = string.Join(",", equipments.Select(i => i.NAME)); if (item.Nav_EvaluateRiskIndividualMeasures.Count > 0) { var IndividualMeasuresIds = item.Nav_EvaluateRiskIndividualMeasures.Select(t => t.INDIVIDUAL_MEASURES_ID); var IndividualMeasures = GetEntities(t => IndividualMeasuresIds.Contains(t.ID)); var IndividualMeasureNames = string.Join(",", IndividualMeasures.Select(i => i.NAME)); texts.Add(equipmentNames + "是否" + IndividualMeasureNames); } if (item.Nav_EvaluateRiskEngineeringMeasures.Count > 0) { var EngineeringMeasuresIds = item.Nav_EvaluateRiskEngineeringMeasures.Select(t => t.ENGINEERING_MEASURES_ID); var EngineeringMeasures = GetEntities(t => EngineeringMeasuresIds.Contains(t.ID)); var EngineeringMeasuresNames = string.Join(",", EngineeringMeasures.Select(i => i.NAME)); texts.Add(equipmentNames + "是否" + EngineeringMeasuresNames); } if (item.Nav_EvaluateRiskManagementMeasures.Count > 0) { var ManagementMeasuresIds = item.Nav_EvaluateRiskManagementMeasures.Select(t => t.MANAGEMENT_MEASURES_ID); var ManagementMeasures = GetEntities(t => ManagementMeasuresIds.Contains(t.ID)); var ManagementMeasureNames = string.Join(",", ManagementMeasures.Select(i => i.NAME)); texts.Add(equipmentNames + "是否" + ManagementMeasureNames); } if (item.Nav_EvaluateRiskEducationMeasures.Count > 0) { var EducationMeasuresIds = item.Nav_EvaluateRiskEducationMeasures.Select(t => t.EDUCATION_MEASURES_ID); var EducationMeasures = GetEntities(t => EducationMeasuresIds.Contains(t.ID)); var EducationMeasureNames = string.Join(",", EducationMeasures.Select(i => i.NAME)); texts.Add(equipmentNames + "是否" + EducationMeasureNames); } if (item.Nav_EvaluateRiskEmergencyMeasures.Count > 0) { var EmergencyMeasuresIds = item.Nav_EvaluateRiskEmergencyMeasures.Select(t => t.EMERGENCY_MEASURES_ID); var EmergencyMeasures = GetEntities(t => EmergencyMeasuresIds.Contains(t.ID)); var EmergencyMeasureNames = string.Join(",", EmergencyMeasures.Select(i => i.NAME)); texts.Add(equipmentNames + "是否" + EmergencyMeasureNames); } } if (item.Nav_EvaluateRiskFacilities != null && item.Nav_EvaluateRiskFacilities.Count > 0) { var Ids = item.Nav_EvaluateRiskFacilities.Select(t => t.ID); var equipments = GetEntities(t => Ids.Contains(t.ID)); var Names = string.Join(",", equipments.Select(i => i.NAME)); if (item.Nav_EvaluateRiskIndividualMeasures.Count > 0) { var IndividualMeasuresIds = item.Nav_EvaluateRiskIndividualMeasures.Select(t => t.INDIVIDUAL_MEASURES_ID); var IndividualMeasures = GetEntities(t => IndividualMeasuresIds.Contains(t.ID)); var IndividualMeasureNames = string.Join(",", IndividualMeasures.Select(i => i.NAME)); texts.Add(Names + "是否" + IndividualMeasureNames); } if (item.Nav_EvaluateRiskEngineeringMeasures.Count > 0) { var EngineeringMeasuresIds = item.Nav_EvaluateRiskEngineeringMeasures.Select(t => t.ENGINEERING_MEASURES_ID); var EngineeringMeasures = GetEntities(t => EngineeringMeasuresIds.Contains(t.ID)); var EngineeringMeasuresNames = string.Join(",", EngineeringMeasures.Select(i => i.NAME)); texts.Add(Names + "是否" + EngineeringMeasuresNames); } if (item.Nav_EvaluateRiskManagementMeasures.Count > 0) { var ManagementMeasuresIds = item.Nav_EvaluateRiskManagementMeasures.Select(t => t.MANAGEMENT_MEASURES_ID); var ManagementMeasures = GetEntities(t => ManagementMeasuresIds.Contains(t.ID)); var ManagementMeasureNames = string.Join(",", ManagementMeasures.Select(i => i.NAME)); texts.Add(Names + "是否" + ManagementMeasureNames); } if (item.Nav_EvaluateRiskEducationMeasures.Count > 0) { var EducationMeasuresIds = item.Nav_EvaluateRiskEducationMeasures.Select(t => t.EDUCATION_MEASURES_ID); var EducationMeasures = GetEntities(t => EducationMeasuresIds.Contains(t.ID)); var EducationMeasureNames = string.Join(",", EducationMeasures.Select(i => i.NAME)); texts.Add(Names + "是否" + EducationMeasureNames); } if (item.Nav_EvaluateRiskEmergencyMeasures.Count > 0) { var EmergencyMeasuresIds = item.Nav_EvaluateRiskEmergencyMeasures.Select(t => t.EMERGENCY_MEASURES_ID); var EmergencyMeasures = GetEntities(t => EmergencyMeasuresIds.Contains(t.ID)); var EmergencyMeasureNames = string.Join(",", EmergencyMeasures.Select(i => i.NAME)); texts.Add(Names + "是否" + EmergencyMeasureNames); } } if (item.OPERATION_STEP_ID != null) { var operationStepName = GetEntity(t => t.ID == item.OPERATION_STEP_ID).NAME; if (item.Nav_EvaluateRiskIndividualMeasures.Count > 0) { var IndividualMeasuresIds = item.Nav_EvaluateRiskIndividualMeasures.Select(t => t.INDIVIDUAL_MEASURES_ID); var IndividualMeasures = GetEntities(t => IndividualMeasuresIds.Contains(t.ID)); var IndividualMeasureNames = string.Join(",", IndividualMeasures.Select(i => i.NAME)); texts.Add(operationStepName + "是否" + IndividualMeasureNames); } if (item.Nav_EvaluateRiskEngineeringMeasures.Count > 0) { var EngineeringMeasuresIds = item.Nav_EvaluateRiskEngineeringMeasures.Select(t => t.ENGINEERING_MEASURES_ID); var EngineeringMeasures = GetEntities(t => EngineeringMeasuresIds.Contains(t.ID)); var EngineeringMeasuresNames = string.Join(",", EngineeringMeasures.Select(i => i.NAME)); texts.Add(operationStepName + "是否" + EngineeringMeasuresNames); } if (item.Nav_EvaluateRiskManagementMeasures.Count > 0) { var ManagementMeasuresIds = item.Nav_EvaluateRiskManagementMeasures.Select(t => t.MANAGEMENT_MEASURES_ID); var ManagementMeasures = GetEntities(t => ManagementMeasuresIds.Contains(t.ID)); var ManagementMeasureNames = string.Join(",", ManagementMeasures.Select(i => i.NAME)); texts.Add(operationStepName + "是否" + ManagementMeasureNames); } if (item.Nav_EvaluateRiskEducationMeasures.Count > 0) { var EducationMeasuresIds = item.Nav_EvaluateRiskEducationMeasures.Select(t => t.EDUCATION_MEASURES_ID); var EducationMeasures = GetEntities(t => EducationMeasuresIds.Contains(t.ID)); var EducationMeasureNames = string.Join(",", EducationMeasures.Select(i => i.NAME)); texts.Add(operationStepName + "是否" + EducationMeasureNames); } if (item.Nav_EvaluateRiskEmergencyMeasures.Count > 0) { var EmergencyMeasuresIds = item.Nav_EvaluateRiskEmergencyMeasures.Select(t => t.EMERGENCY_MEASURES_ID); var EmergencyMeasures = GetEntities(t => EmergencyMeasuresIds.Contains(t.ID)); var EmergencyMeasureNames = string.Join(",", EmergencyMeasures.Select(i => i.NAME)); texts.Add(operationStepName + "是否" + EmergencyMeasureNames); } } var identifyName = allIdentifyID.FirstOrDefault(t => t.ID == item.IDENTIFYING_ID).NAME; if (texts.Count > 0) { DIC.Add(identifyName, texts); var sendUser = allUsers.FirstOrDefault(t => t.DEPARTMENT_ID == item.DEPARTMENT_LIABLE_ID && t.APPROVE_ROLE_ID == item.POST_LIABLE_ID); var dataId = Guid.NewGuid(); T_BS_SAFE_CHECK safeCheck = new T_BS_SAFE_CHECK(); List templistProject = new List(); List templistDetail = new List(); HazardsIni(safeCheckArea.AREA_ID, DIC, sendUser.ID, item.DEPARTMENT_LIABLE_ID, orgId, dataId, ref safeCheck, ref templistProject, ref templistDetail); modelCheck.Add(safeCheck); listProject.AddRange(templistProject); listDetail.AddRange(templistDetail); noticeTitles2.Add("新增安全检查任务制定-" + identifyName); noticeDataIds2.Add(dataId); noticeUserIds2.Add(sendUser.ID); noticeUserNames2.Add(sendUser.NAME); } } } } } newjobAdds1 = NotificationTaskService.InsertUserNoticeTaskModels(noticeTitles1, noticeDataIds1, orgId, noticeUserIds1, noticeUserNames1, DateTime.Now, DateTime.Parse(DateTime.Now.AddDays(1).ToShortDateString() + " 23:59:59"), (int)FMNoticeTypeEnum.消息, "HM104"); newjobAdds2 = NotificationTaskService.InsertUserNoticeTaskModels(noticeTitles2, noticeDataIds2, orgId, noticeUserIds2, noticeUserNames2, DateTime.Now, DateTime.Parse(DateTime.Now.AddDays(1).ToShortDateString() + " 23:59:59"), (int)FMNoticeTypeEnum.消息, "BS032"); } } this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity, "STATUS"); //保存主表 if (updateRiskResult.Any()) BantchUpdateEntityNoCommit(updateRiskResult, "EVALUATE_RISK_ID"); //保存主表 if (addEvaluateRisks != null && addEvaluateRisks.Any()) BantchSaveEntityNoCommit(addEvaluateRisks); //保存子表 if (addWorkdutys != null && addWorkdutys.Any()) BantchSaveEntityNoCommit(addWorkdutys); //保存子表 if (addEquipments != null && addEquipments.Any()) BantchSaveEntityNoCommit(addEquipments); //保存子表 //if (addFacilities != null && addFacilities.Any()) // BantchSaveEntityNoCommit(addFacilities); //保存子表 if (addIndividuals != null && addIndividuals.Any()) BantchSaveEntityNoCommit(addIndividuals); //保存子表 if (addEngineerings != null && addEngineerings.Any()) BantchSaveEntityNoCommit(addEngineerings); //保存子表 if (addManagements != null && addManagements.Any()) BantchSaveEntityNoCommit(addManagements); //保存子表 if (addEducations != null && addEducations.Any()) BantchSaveEntityNoCommit(addEducations); //保存子表 if (addEmergencys != null && addEmergencys.Any()) BantchSaveEntityNoCommit(addEmergencys); //保存子表 if (newjobAdds1 != null && newjobAdds1.Any()) BantchAddEntityNoCommit(newjobAdds1); //新增的消息表 if (newjobAdds2 != null && newjobAdds2.Any()) BantchAddEntityNoCommit(newjobAdds2); //新增的消息表 if (jobTask != null) AddEntityNoCommit(jobTask); //新增的作业任务表 if (jobtaskDetailList != null && jobtaskDetailList.Any()) BantchAddEntityNoCommit(jobtaskDetailList); //新增的作业任务表 if (jobtaskDetailPostList != null && jobtaskDetailPostList.Any()) BantchAddEntityNoCommit(jobtaskDetailPostList); //新增的作业任务表 if (jobtaskDetailRiskList != null && jobtaskDetailRiskList.Any()) BantchAddEntityNoCommit(jobtaskDetailRiskList); //新增的作业任务表 if (modelCheck != null && modelCheck.Any()) BantchAddEntityNoCommit(modelCheck); //新增的安全检查表 if (listProject != null && listProject.Any()) BantchSaveEntityNoCommit(listProject); //新增的安全检查表 if (listDetail != null && listDetail.Any()) BantchSaveEntityNoCommit(listDetail); //新增的安全检查表 }); return true; } private void HazardsIni(Guid? RISK_AREA_ID, Dictionary> dicProjctContents, Guid UserID, Guid? DEPARTMENTID, Guid? OrgId, Guid DateID, ref T_BS_SAFE_CHECK modelCheck, ref List listProject, ref List listDetail) { modelCheck = new T_BS_SAFE_CHECK(); modelCheck.ID = DateID; modelCheck.ORG_ID = OrgId; DateTime dtNow = DateTime.Now; modelCheck.NAME = "危险源辨识触发安全检查"; modelCheck.CODE = dtNow.ToString("yyyyMMddHHmmss"); //变成可空 //modelCheck.CHECK_TYPE_ID = ; //modelCheck.CHECKOBJECT = ; //modelCheck.CHECK_TYPE_LEVEL_ID = ; modelCheck.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; modelCheck.CREACTTYPE = CREACTTYPEEnum.HazardsAdd; modelCheck.IS_DELETED = false; modelCheck.CREATE_TIME = dtNow; modelCheck.CREATER_ID = UserID; modelCheck.STATUCHECK = 0;// HMAuditStatusEnmu.草稿; modelCheck.STATUSPLAN = 0;// HMAuditStatusEnmu.草稿; modelCheck.DEPARTMENTID = DEPARTMENTID; modelCheck.USERID_DOPLAN = UserID; modelCheck.RISKSTATE = 0; //modelCheck.PLAN_SET_ID = ; //modelCheck.CHECKTIME = ; //modelCheck.ENTITY_ORG_TPYE = ; //modelCheck.FORM_ID = ; //modelCheck.FLOW_STATUS = ; //modelCheck.FLOW_SEND_STATUS = ; //modelCheck.FLOW_ID = ; //modelCheck.MODIFY_TIME = ; //modelCheck.MODIFIER_ID = ; //modelCheck.APPROVE_ID = ; //modelCheck.APPROVE_CHECKAUDIT_ID = ; //modelCheck.APPROVE_TEMP_ID = ; //modelCheck.CheckUsers = ; listDetail = new List(); listProject = new List(); int rowNO = 0; T_BS_CHECK_PROJECT operateProject = null; foreach (var item in dicProjctContents) { operateProject = GetEntity(e => e.NAME == item.Key); if (operateProject == null) { operateProject = new T_BS_CHECK_PROJECT(); operateProject.NAME = item.Key; operateProject.ID = Guid.NewGuid(); operateProject.CREATER_ID = UserID; operateProject.CREATE_TIME = dtNow; operateProject.ENABLE_STATUS = 0; operateProject.IS_DELETED = false; operateProject.ORG_ID = OrgId; listProject.Add(operateProject); } for (int i = 0; i < item.Value.Count; i++) { rowNO++; T_BS_SAFE_CHECK_DETAIL modelDetail = new T_BS_SAFE_CHECK_DETAIL(); modelDetail.ID = Guid.NewGuid(); modelDetail.SAFE_CHECK_ID = DateID; modelDetail.CHECKTYPE = 0; modelDetail.IS_DELETED = false; modelDetail.ORG_ID = OrgId; modelDetail.CREATE_TIME = dtNow; modelDetail.CREATER_ID = UserID; modelDetail.ROW_NO = rowNO; modelDetail.CHECKCONTENT = item.Value[i]; modelDetail.CHECK_PROJECT_ID = operateProject.ID; modelDetail.RISK_AREA_ID = RISK_AREA_ID; //modelDetail.CHECK_MAIN_ID = ; //modelDetail.REMARK_RESULT = ; //modelDetail.QUESTION_LEVEL = ; //modelDetail.ENTITY_ORG_TPYE = ; //modelDetail.FORM_ID = ; //modelDetail.FLOW_STATUS = ; //modelDetail.FLOW_SEND_STATUS = ; //modelDetail.FLOW_ID = ; //modelDetail.MODIFY_TIME = ; //modelDetail.MODIFIER_ID = ; //modelDetail.CHECKRESULT = ; //modelDetail.CHECKPROOF = ; //modelDetail.CHECK_PROJECT_PROJECT_CATEGORY_ID = ; //modelDetail.CHECK_QUESTION_ID = ; //modelDetail.SERIOUS_RISK = ; listDetail.Add(modelDetail); } } //UnifiedCommit(() => //{ // if (modelCheck != null)//添加安全检查 // AddEntity(modelCheck); // if (listProject.Any())//添加检查项目 // BantchSaveEntityNoCommit(listProject); // if (listDetail.Any())//添加审批详情 // BantchSaveEntityNoCommit(listDetail); //}); } /// /// 职业危害审批流回调 /// /// /// private bool PersonalApprove2(string id) { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; Guid HazardId = Guid.Parse(id); BaseFilter filter = new BaseFilter(orgId); filter.Include = new string[] { "Nav_Hazards.Nav_EvaluateHazardIndividualMeasures", "Nav_Hazards.Nav_EvaluateHazardEngineeringMeasures", "Nav_Hazards.Nav_EvaluateHazardManagementMeasures", "Nav_Hazards.Nav_EvaluateHazardEducationMeasures", "Nav_Hazards.Nav_EvaluateHazardEmergencyMeasures" }; var entity = GetEntity(t => t.ID == HazardId, filter); List addEvaluateHazards = new List(); List addIndividuals = new List(); List addEngineerings = new List(); List addManagements = new List(); List addEducations = new List(); List addEmergencys = new List(); List updateHazardResult = new List(); List disableEvaluateHazards = null; if (entity.Nav_Hazards != null && entity.Nav_Hazards.Any()) { entity.STATUS = FOPreMeetingStatusEnum.归档; var updateRecord = entity.Nav_Hazards.Where(t => t.MODIFY_TYPE != 0); var isDisable = updateRecord.Where(t => t.MODIFY_TYPE == HMModifyEnum.修改).Select(t => (Guid)t.EVALUATE_HAZARD_ID); if (isDisable.Any()) { BaseFilter recordFilter = new BaseFilter(orgId); recordFilter.SelectField = new string[] { "STATUS" }; disableEvaluateHazards = GetEntities(t => isDisable.Contains(t.ID), recordFilter).ToList(); foreach (var disable in disableEvaluateHazards) { disable.STATUS = (int)HMOperationStepEnum.作废; } } foreach (var update in updateRecord) { T_HM_EVALUATE_HAZARD hazard = new T_HM_EVALUATE_HAZARD(); hazard.ID = Guid.NewGuid(); update.EVALUATE_HAZARD_ID = hazard.ID; updateHazardResult.Add(update); hazard.AREA_ID = update.AREA_ID; hazard.HAZARD_POSITION = update.HAZARD_POSITION; hazard.EXPOSURE_TIME = update.EXPOSURE_TIME; hazard.EXPOSURE_LIMIT_VALUE = update.EXPOSURE_LIMIT_VALUE; hazard.EXPOSURE_NUMBER = update.EXPOSURE_NUMBER; hazard.OCCUPATIONALRISK_ID = update.OCCUPATIONALRISK_ID; hazard.HAZARD_LEVEL = update.HAZARD_LEVEL; hazard.LEVEL = entity.LEVEL; hazard.ORG_ID = orgId; hazard.POST_LIABLE_ID = update.POST_LIABLE_ID; hazard.DEPARTMENT_LIABLE_ID = update.DEPARTMENT_LIABLE_ID; hazard.IDENTIFYING_ID = update.IDENTIFYING_ID; if (update.MONITOR_MEASURES_ID != null) { hazard.MONITOR_MEASURES_ID = (Guid)update.MONITOR_MEASURES_ID; } hazard.MODIFY_TYPE = HMModifyEnum.新增; foreach (var item in update.Nav_EvaluateHazardIndividualMeasures) { T_HM_EVALUATE_HAZARD_INDIVIDUAL_MEASURES addItem = new T_HM_EVALUATE_HAZARD_INDIVIDUAL_MEASURES(); addItem.EVALUATE_HAZARD_ID = hazard.ID; addItem.INDIVIDUAL_MEASURES_ID = item.INDIVIDUAL_MEASURES_ID; addItem.ORG_ID = orgId; addIndividuals.Add(addItem); } foreach (var item in update.Nav_EvaluateHazardEngineeringMeasures) { T_HM_EVALUATE_HAZARD_ENGINEERING_MEASURES addItem = new T_HM_EVALUATE_HAZARD_ENGINEERING_MEASURES(); addItem.EVALUATE_HAZARD_ID = hazard.ID; addItem.ENGINEERING_MEASURES_ID = item.ENGINEERING_MEASURES_ID; addItem.ORG_ID = orgId; addEngineerings.Add(addItem); } foreach (var item in update.Nav_EvaluateHazardManagementMeasures) { T_HM_EVALUATE_HAZARD_MANAGEMENT_MEASURES addItem = new T_HM_EVALUATE_HAZARD_MANAGEMENT_MEASURES(); addItem.EVALUATE_HAZARD_ID = hazard.ID; addItem.MANAGEMENT_MEASURES_ID = item.MANAGEMENT_MEASURES_ID; addItem.ORG_ID = orgId; addManagements.Add(addItem); } foreach (var item in update.Nav_EvaluateHazardEducationMeasures) { T_HM_EVALUATE_HAZARD_EDUCATION_MEASURES addItem = new T_HM_EVALUATE_HAZARD_EDUCATION_MEASURES(); addItem.EVALUATE_HAZARD_ID = hazard.ID; addItem.EDUCATION_MEASURES_ID = item.EDUCATION_MEASURES_ID; addItem.ORG_ID = orgId; addEducations.Add(addItem); } foreach (var item in update.Nav_EvaluateHazardEmergencyMeasures) { T_HM_EVALUATE_HAZARD_EMERGENCY_MEASURES addItem = new T_HM_EVALUATE_HAZARD_EMERGENCY_MEASURES(); addItem.EVALUATE_HAZARD_ID = hazard.ID; addItem.EMERGENCY_MEASURES_ID = item.EMERGENCY_MEASURES_ID; addItem.ORG_ID = orgId; addEmergencys.Add(addItem); } addEvaluateHazards.Add(hazard); } } this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity, "STATUS"); //保存主表 if (disableEvaluateHazards != null && disableEvaluateHazards.Any()) BantchUpdateEntityNoCommit(disableEvaluateHazards, "STATUS"); if (updateHazardResult.Any()) BantchUpdateEntityNoCommit(updateHazardResult, "EVALUATE_HAZARD_ID"); //保存主表 if (addEvaluateHazards != null && addEvaluateHazards.Any()) BantchSaveEntityNoCommit(addEvaluateHazards); //保存子表 if (addIndividuals != null && addIndividuals.Any()) BantchSaveEntityNoCommit(addIndividuals); //保存子表 if (addEngineerings != null && addEngineerings.Any()) BantchSaveEntityNoCommit(addEngineerings); //保存子表 if (addManagements != null && addManagements.Any()) BantchSaveEntityNoCommit(addManagements); //保存子表 if (addEducations != null && addEducations.Any()) BantchSaveEntityNoCommit(addEducations); //保存子表 if (addEmergencys != null && addEmergencys.Any()) BantchSaveEntityNoCommit(addEmergencys); //保存子表 }); return true; } /// /// 审批流回调 /// /// /// private bool PersonalApprove(string id) { var entity = GetEntity(id); entity.STATUS = FOPreMeetingStatusEnum.归档; T_HM_NOTICE_RELEASE model = new T_HM_NOTICE_RELEASE(); List noticefiles = new List(); var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.风险评价计划发布文件编号; sysFilter.Count = 1; sysFilter.OrgId = orgId; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); model.ID = Guid.NewGuid(); model.PLAN_ID = Guid.Parse(id); model.DOCUMENT_CODE = codeList[0]; model.DOCUMENT_NAME = entity.DOCUMENT_NAME; model.DOCUMENT_VERSION = "1"; model.DOCUMENT_LEVEL = HMFileLevelEnmu.普通; model.RELEASE_STATUS = (int)FOPreMeetingStatusEnum.草稿; model.NOTICE_RELEASE_TYPE = (int)HMNoticeReleaseTypeEnmu.风险评价计划发布; model.ORG_ID = orgId; var files = GetEntities(t => t.EVALUATION_PLAN_ID == Guid.Parse(id), new BaseFilter(orgId)); foreach (var file in files) { T_HM_NOTICE_RELEASE_FILE noticeFile = new T_HM_NOTICE_RELEASE_FILE(); noticeFile.ID = Guid.NewGuid(); noticeFile.NOTICE_RELEASE_ID = model.ID; noticeFile.IMG_FILE_ID = (Guid)file.IMG_FILE_ID; noticeFile.ORG_ID = orgId; noticefiles.Add(noticeFile); } Guid sendUser = (Guid)userId; string sendUserName = ""; List fileIds = new List(); foreach (var file in files) { fileIds.Add(file.IMG_FILE_ID); } DepartmentService.AddDocument("风险管理", "年度风险评价计划审核表", "年度风险评价计划", "附件", "计划文件", DateTime.Now.AddYears(1), entity.ID, fileIds, entity.RELEASE_USER_ID); var teamLeaders = GetEntities(t => t.NAME == "风险管理小组组长" || t.NAME == "风险管理小组副组长", new BaseFilter(orgId)); if (teamLeaders != null && teamLeaders.Any()) { var leader = teamLeaders.Where(t => t.NAME == "风险管理小组组长"); foreach (var leaderuser in leader) { leaderuser.DEFAULT_APPROVE_USER_ID = entity.GROUP_LEADER_ID; } var deputyLeader = teamLeaders.Where(t => t.NAME == "风险管理小组副组长"); foreach (var leaderuser in deputyLeader) { leaderuser.DEFAULT_APPROVE_USER_ID = entity.DEPUTY_GROUP_LEADER_ID; } } if (orgId == Guid.Parse("b043b28b-bbc3-c452-6052-4fba1457abfa"))//行洛坑 { sendUser = (Guid)GetEntity(t => t.NAME == "办公室").USER_ID; sendUserName = GetEntity(sendUser.ToString()).NAME; } else if (orgId == Guid.Parse("d9871ba8-0eec-9e4a-bb87-7d5a540d8913"))//洛阳豫鹭 { sendUser = (Guid)GetEntity(t => t.NAME == "企业管理部").USER_ID; sendUserName = GetEntity(sendUser.ToString()).NAME; } else if (orgId == Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c"))//都昌都昌 { sendUser = (Guid)GetEntity(t => t.NAME == "综合管理部").USER_ID; sendUserName = GetEntity(sendUser.ToString()).NAME; } else if (orgId == Guid.Parse("8f1cf418-8bf3-ea3f-7a6d-fc5d61247008") || orgId == Guid.Parse("3efd5276-632b-e379-9ff3-7a7546591fca"))//龙岩综合部 { sendUser = (Guid)GetEntity(t => t.NAME == "综合部").USER_ID; sendUserName = GetEntity(sendUser.ToString()).NAME; } 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", () => { UpdateEntityNoCommit(entity, "STATUS"); UpdateEntityNoCommit(model); BantchAddEntityNoCommit(noticefiles); BantchUpdateEntityNoCommit(teamLeaders); }); return true; } #endregion #endregion #region 审批回调 /// /// 添加审批流 /// /// /// 审批入参 /// /// public bool CallBackNew(string CALLBACK_INTERFACE, T_PF_APPROVE entityInt, bool isApprovel = true) { bool result = false; if (!string.IsNullOrEmpty(CALLBACK_INTERFACE)) { #region 审批公用 T_PF_APPROVE modelApp = null; List listAppDetail = null; T_FM_NOTIFICATION_TASK taskFinish = null; List listTaskNext = null; string taskCodeCheck = String.Empty; bool isLast = false;//非审批最后一步 bool resultGetApp = true; if (isApprovel) { resultGetApp = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); } if (!resultGetApp) { throw new Exception("审批失败!"); } #endregion if (!isLast && isApprovel) { IEnumerable listLog = null; switch (CALLBACK_INTERFACE) { case "BS/BSRiskSubmitDelayApply/DealEndNew": var listApplyDetail = GetEntities(e => e.RISK_SUBMIT_DELAY_APPLY_ID == modelApp.DATA_ID); if (listApplyDetail != null && listApplyDetail.Any()) { var listContentID = listApplyDetail.Select(e => e.RISK_SUBMIT_CONTENT_ID).ToList(); listLog = GetUpdateDeal(OPERATEPOINT_Enums.RiskDelayApplyAudit, Guid.Empty, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, listContentID, taskFinish.TASK_ENDDT); } break; case "BS/BSRiskSubmit/NoticeNew": var listContents = GetEntities(e => e.RISK_SUBMIT_NOTICE_ID == modelApp.DATA_ID); if (listContents != null && listContents.Any()) { var listContentID = listContents.Select(e => e.ID); var RISK_SUBMIT_ID = listContents.ToList()[0].RISK_SUBMIT_ID; listLog = GetUpdateDeal(OPERATEPOINT_Enums.RiskSendAudit, RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, listContentID, taskFinish.TASK_ENDDT); } break; case "BS/BSRiskSubmit/DealEndNew"://整改记录 var contentDeal = GetEntity(modelApp.DATA_ID); if (contentDeal != null) { var modelLog = GetUpdateDeal(OPERATEPOINT_Enums.RiskDealAudit, contentDeal.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, contentDeal.RISK_SUBMIT_CONTENT_ID, taskFinish.TASK_ENDDT); if (modelLog != null) listLog = new List() { modelLog }; } break; default: break; } //如果感觉taskID会乱 taskFinish 做case 判断 this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下一个节点 BantchSaveEntityNoCommit(listTaskNext); if (listLog != null && listLog.Any())//本节点操作记录 BantchSaveEntityNoCommit(listLog); }); //待办同步 NotificationTaskService.TaskToHead(listAppDetail, null, listTaskNext, taskFinish); } else { switch (CALLBACK_INTERFACE) { case "BS/BSSafeCheck/CheckPlanAuditEndNew": result = CheckPlanAuditEndNew(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "BS/BSSafeCheck/CheckAuditEndNew": result = CheckAuditEndNew(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "BS/BSRiskSubmit/NoticeNew": result = NoticeNew(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "BS/BSRiskSubmit/DealEndNew": result = DealEndNew(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "BS/BSRiskSubmitDelayApply/DealEndNew": result = DealEnd_BS_DelayApplyNew(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast); break; case "FO/FOCrucialLicenseJob/BackUpdateNew": result = BackUpdateNew_FOCrucialLicenseJob(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast); break; case "FO/FOJobEventRecord/BackUpdateNew": result = BackUpdateNew_FOJobEventRecord(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast); break; case "FO/FOCrucialLicenseJobOutsource/BackUpdateNew": result = BackUpdateNew_FOCrucialLicenseJobOutsource(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast); break; case "TL/TLBack/BackUpdateNew": result = BackUpdate_TLBack(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast); break; case "TL/TLBackRecord/BackUpdateNew": result = BackUpdate_TLRecordBack(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast); break; case "TL/TLWatchDayly/BackUpdateNew": result = BackUpdate_TLWatchDayly(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast); break; case "DM/DMDeviceBasePurchase/BackUpdateNew": result = BackUpdate_DMDeviceBasePurchase(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast); break; case "DM/DMDeviceMaintenancePlan/BackUpdateNew": result = BackUpdate_DMDeviceMaintenancePlan(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast); break; case "DM/DMDevicePurchase/BackUpdateNew": result = BackUpdate_DMDevicePurchase(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast); break; case "SK/SKHiddenDangerReport/BackUpdateNew": result = BackUpdate_SKHiddenDangerReport(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/SKSecurityInspectionNotice/BackUpdateNew": result = BackUpdate_SKSecurityInspectionNotice(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/SKHiddenDangerConfirm/BackUpdateNew": result = BackUpdate_SKHiddenDangerConfirm(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/SKHiddenDangerRectifyRecord/BackUpdateNew": result = BackUpdate_SKHiddenDangerRectifyRecord(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/SKHiddenDangerRectifyDelayApply/BackUpdateNew": result = BackUpdate_SKHiddenDangerRectifyDelayApply(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/SKDoublePreventMechanism/BackUpdateNew": result = BackUpdate_SKDoublePreventMechanism(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/SKIdentifyEvaluationPlan/BackUpdateNew": result = BackUpdate_SKIdentifyEvaluationPlan(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/SKRiskIdentify/BackUpdateNew": result = BackUpdate_SKRiskIdentify(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/SKRiskIdentifyResult/BackUpdateNew": result = BackUpdate_SKRiskIdentifyResult(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/RiskIdentifyResultSummary/BackUpdateNew": result = BackUpdate_RiskIdentifyResultSummary(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/SKRiskEvaluation/BackUpdateNew": result = BackUpdate_SKRiskEvaluation(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "SK/SKRiskEvaluationSummary/BackUpdateNew": result = BackUpdate_SKRiskEvaluationSummary(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "WB/WBDangerousJob/UserAgreeNew": result = UserAgreeNew(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "WB/WBSafeCheckRecord/UserAgreeNew": result = UserRecordAgreeNew(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "WB/WBHiddenDangerNotify/UserAgreeNew": result = UserNoticeAgreeNew(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "WB/WBHiddenDangerRecord/UserAgreeNew": result = HiddenDangerAgreeNew(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; case "WB/WBRegister/UserAgreeNew": result = RegisterAgreeNew(entityInt, modelApp, listAppDetail, taskFinish, listTaskNext, isLast, isApprovel); break; default: //SysLogService.AddLog(APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, PFSysLogTypeEnum.CommonApproveCallBack, "PF119", "审批流回调方法未完善", "PFApproveCallBackService=>CallBack: " + CALLBACK_INTERFACE, DATA_ID); break; } } } return result; } #endregion #region 审批流 获取信息 /// /// 获取信息到审批流(拒绝) /// /// /// /// /// /// public bool GetApproject(T_PF_APPROVE entity, ref T_PF_APPROVE modelApp, ref List listAppDetail, ref T_FM_NOTIFICATION_TASK taskFinish, ref string taskCodeCheck) { if (entity.DATA_ID == Guid.Empty || entity.ID == Guid.Empty) { throw new Exception("驳回传参信息有误!"); } modelApp = this.GetEntity(entity.ID.ToString(), "Nav_ApproveDetails"); if (modelApp == null) { this.ThrowError("020027"); return false; } if (modelApp.APPROVE_STATUS != (int)ApproveStatus.Doing) { this.ThrowError("020028"); return false; } var node = modelApp.Nav_ApproveDetails.FirstOrDefault(i => i.ID == entity.CurrentNode.ID); if (!node.IS_CURRENT) { this.ThrowError("020030"); return false; } if (entity.TaskID != Guid.Empty) taskFinish = GetEntity(entity.TaskID); if (taskFinish == null || !string.IsNullOrEmpty(taskCodeCheck)) { //查询消息表 最好写日志 if (!string.IsNullOrEmpty(taskCodeCheck) && taskFinish.SOURCE_FORMCODE != taskCodeCheck) { taskFinish = this.GetEntity(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == node.APPROVE_USER_ID && i.NOTICE_STATUS == (int)FMNoticeStatusEnum.未处理); } if (taskFinish == null) { taskFinish = this.GetEntity(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == node.APPROVE_USER_ID && i.NOTICE_STATUS == (int)FMNoticeStatusEnum.未处理); } } if (taskFinish != null) { taskFinish.NOTICE_STATUS = (int)FMNoticeStatusEnum.正常已办; taskFinish.TASK_DT = DateTime.Now; if (DateTime.Now > taskFinish.TASK_ENDDT) taskFinish.NOTICE_STATUS = (int)FMNoticeStatusEnum.超期办理; } //修改节点状态 //驳回时状态改为驳回,并通知申请人重新提交 modelApp.APPROVE_STATUS = entity.CurrentNode.NODE_APPROVE_STATUS;// (int)ApproveStatus.Reject; listAppDetail = modelApp.Nav_ApproveDetails.ToList(); //modelApp.Nav_ApproveDetails = null; int max = 0; foreach (var item in listAppDetail) { if (max < item.NUM) { max = item.NUM; } //item.Nav_Approve = null; if (item.ID == entity.CurrentNode.ID) { item.NODE_APPROVE_TIME = DateTime.Now; item.NODE_APPROVE_STATUS = entity.CurrentNode.NODE_APPROVE_STATUS; item.IS_CURRENT = false; item.CONTEXT = entity.CurrentNode.CONTEXT; } } return true; } /// /// 获取信息到审批流 /// /// /// /// /// /// /// /// /// public bool GetApproject2(T_PF_APPROVE entity, ref T_PF_APPROVE modelApp, ref List listAppDetail, ref T_FM_NOTIFICATION_TASK taskFinish, ref string taskCodeCheck, ref bool isLast, ref List listTaskNext) { if (entity.DATA_ID == Guid.Empty || entity.ID == Guid.Empty) { throw new Exception("驳回传参信息有误!"); } var ret = string.Empty; //BaseFilter filterH = new BaseFilter(); //filterH.IgnoreOrgRule = true; //filterH.IgnoreDataRule = true; //filterH.OrgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;// entity.ORG_ID; //modelApp = this.GetEntity(e => e.ID == entity.ID, filterH, "Nav_ApproveDetails"); modelApp = this.GetEntity(e => e.ID == entity.ID, "Nav_ApproveDetails"); if (modelApp == null) this.ThrowError("020027"); if (modelApp.APPROVE_STATUS != (int)ApproveStatus.Doing) this.ThrowError("020028"); var node = modelApp.Nav_ApproveDetails.FirstOrDefault(i => i.ID == entity.CurrentNode.ID); if (!node.IS_CURRENT) this.ThrowError("020030"); //查询消息表 taskFinish = this.GetEntity(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == node.APPROVE_USER_ID && i.NOTICE_STATUS == (int)FMNoticeStatusEnum.未处理); if (taskFinish != null) { taskFinish.NOTICE_STATUS = (int)FMNoticeStatusEnum.正常已办; taskFinish.TASK_DT = DateTime.Now; if (DateTime.Now > taskFinish.TASK_ENDDT) taskFinish.NOTICE_STATUS = (int)FMNoticeStatusEnum.超期办理; } //修改节点状态 node.NODE_APPROVE_TIME = DateTime.Now; node.NODE_APPROVE_STATUS = entity.CurrentNode.NODE_APPROVE_STATUS; node.IS_CURRENT = false; node.CONTEXT = entity.CurrentNode.CONTEXT; List lisNextID = new List(); #region wyw 默认审批判断 isLast = false; List Nav_ApproveDetails = modelApp.Nav_ApproveDetails.ToList(); DoneLaterApproverDeal(node, node.APPROVE_USER_ID.Value, node.CONTEXT, node.NODE_APPROVE_STATUS, ref Nav_ApproveDetails, ref isLast); modelApp.Nav_ApproveDetails = Nav_ApproveDetails;//可能会有修改赋值过去 listAppDetail = Nav_ApproveDetails; #endregion //var lastNode = dbApprove.Nav_ApproveDetails.Where(i => i.NUM >= entity.CurrentNode.NUM && i.ID != entity.CurrentNode.ID && i.NODE_APPROVE_STATUS == (int)NodeApproveStatus.Doing); //if (!lastNode.Any()) string APPROVE_CODE = modelApp.APPROVE_CODE; if (isLast) { modelApp.APPROVE_STATUS = (int)ApproveStatus.Done;//完成 ret = modelApp.CALLBACK_INTERFACE; //查询审批的表单数据 var form = this.GetEntity(i => i.CODE == APPROVE_CODE && i.ORG_ID == entity.ORG_ID); var tableName = form?.TABLE_NAME; if (string.IsNullOrEmpty(tableName)) { var formEdit = this.GetEntity(i => i.PAGE_FORM_ID == form.ID && i.PARENT_ID == null); if (formEdit != null) { tableName = formEdit.EDIT_NAME; } } if (!string.IsNullOrEmpty(tableName)) { var dbType = APT.Infrastructure.Core.Refctor.ReflectHelper.FindTypeInCurrentDomain(tableName); if (dbType != null) { MethodInfo methodInfo = this.GetType().GetMethod("GetMyEntity", BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static); var entity2 = methodInfo.MakeGenericMethod(new Type[] { dbType }). Invoke(this, new object[] { modelApp.DATA_ID }); if (entity2 != null) { var prop = dbType.GetProperty("FLOW_STATUS"); if (prop != null) { prop.SetValue(entity2, 2); MethodInfo methodInfoUpdate = this.GetType().GetMethod("UpdateMyEntityNoCommit", BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static); //var details = modelApp.Nav_ApproveDetails; //modelApp.Nav_ApproveDetails = null; //details.ForEach(i => i.Nav_Approve = null); UnifiedCommit(() => { //if (task != null) // this.UpdateEntityNoCommit(task); //this.UpdateEntityNoCommit(modelApp); //this.BantchUpdateEntityNoCommit(details); methodInfoUpdate.MakeGenericMethod(new Type[] { dbType }). Invoke(this, new object[] { entity }); }); //return ret; } } } } } else { var next = listAppDetail.Where(i => i.NUM == entity.CurrentNode.NUM && i.ID != entity.CurrentNode.ID && i.NODE_APPROVE_STATUS == (int)NodeApproveStatus.Doing); if (next.Any()) { //同级审批 } else { //var nextNodes = dbApprove.Nav_ApproveDetails.Where(i => i.NUM > entity.CurrentNode.NUM);//wyw var nextNodes = listAppDetail.Where(i => i.NUM > entity.CurrentNode.NUM && i.NODE_APPROVE_STATUS == (int)NodeApproveStatus.Doing); if (nextNodes.Any()) { T_PF_APPROVE_DETAIL curentApprove = null; GetApproveNodes(nextNodes.ToList(), ref curentApprove); //所有节点均无审核人,直接归档 if (curentApprove == null) { modelApp.APPROVE_STATUS = (int)ApproveStatus.Done;//完成 ret = modelApp.CALLBACK_INTERFACE; //查询审批的表单数据 var form = this.GetEntity(i => i.CODE == APPROVE_CODE && i.ORG_ID == entity.ORG_ID); var tableName = form?.TABLE_NAME; if (string.IsNullOrEmpty(tableName)) { var formEdit = this.GetEntity(i => i.PAGE_FORM_ID == form.ID && i.PARENT_ID == null); if (formEdit != null) { tableName = formEdit.EDIT_NAME; } } if (!string.IsNullOrEmpty(tableName)) { var dbType = APT.Infrastructure.Core.Refctor.ReflectHelper.FindTypeInCurrentDomain(tableName); if (dbType != null) { MethodInfo methodInfo = this.GetType().GetMethod("GetMyEntity", BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static); var entity2 = methodInfo.MakeGenericMethod(new Type[] { dbType }). Invoke(this, new object[] { modelApp.DATA_ID }); if (entity2 != null) { var prop = dbType.GetProperty("FLOW_STATUS"); if (prop != null) { prop.SetValue(entity2, 2); MethodInfo methodInfoUpdate = this.GetType().GetMethod("UpdateMyEntityNoCommit", BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static); //var details = modelApp.Nav_ApproveDetails; //modelApp.Nav_ApproveDetails = null; //details.ForEach(i => i.Nav_Approve = null); UnifiedCommit(() => { //if (task != null) // this.UpdateEntityNoCommit(task); //this.UpdateEntityNoCommit(modelApp); //this.BantchUpdateEntityNoCommit(details); methodInfoUpdate.MakeGenericMethod(new Type[] { dbType }). Invoke(this, new object[] { entity2 }); }); //return ret; } } } } } else { var nextNode = nextNodes.Where(i => i.NUM == curentApprove.NUM && i.APPROVE_USER_ID != entity.CurrentNode.APPROVE_USER_ID);// && i.APPROVE_USER_ID != entity.CurrentNode.APPROVE_USER_ID nextNode.ForEach(i => i.IS_CURRENT = true); nextNode.ForEach(e => lisNextID.Add(e.ID)); List userIds = new List(); List listName = new List(); userIds.AddRange(nextNode.Select(i => (Guid)i.APPROVE_USER_ID).ToArray()); var listUser = GetEntities(e => userIds.Contains(e.ID)); T_FM_USER uT = null; for (int i = 0; i < userIds.Count; i++) { uT = listUser.FirstOrDefault(e => e.ID == userIds[i]); if (uT != null) listName.Add(uT.NAME); else listName.Add(""); } //var details = modelApp.Nav_ApproveDetails; //details.ForEach(i => i.Nav_Approve = null); //modelApp.Nav_ApproveDetails = null; //var nextNodeName=nextNode.Select(i => i.NAME).FirstOrDefault(); //消息通知并修改状态 string NoticeTitle = entity.NAME; if (!entity.NAME.EndsWith("审批")) NoticeTitle = NoticeTitle + "待审批"; DateTime dtTaskEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.Default, modelApp.ORG_ID.Value, DateTime.Now, null, null);//暂时先采用默认时间 //非最后一个审批 审批流待办 listTaskNext = NotificationTaskService.InsertUserNoticeTaskModels(NoticeTitle, modelApp.ID, modelApp.ORG_ID, userIds, listName, DateTime.Now, dtTaskEnd, (int)FMNoticeTypeEnum.审批, "PF119"); //NotificationTaskService.SendNotificationTask(NoticeTitle, // entity.ID, APT.Infrastructure.Api.AppContext.CurrentSession.OrgId, userIds, // DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.审批, "PF119", () => // { // if (task != null) // this.UpdateEntityNoCommit(task); // this.UpdateEntityNoCommit(modelApp); // this.BantchUpdateEntityNoCommit(details); // }); //return ret; } } else { } } } ////} //ChangeApproveStatus(modelApp, task); if (listAppDetail != null && listAppDetail.Any()) { foreach (var item in listAppDetail) { if (item.ID == node.ID) { item.IS_CURRENT = false; } if (lisNextID.Count > 0 && lisNextID.Contains(item.ID)) { item.IS_CURRENT = true; } } } //if (entity.DATA_ID == Guid.Empty || entity.ID == Guid.Empty) //{ // throw new Exception("驳回传参信息有误!"); //} //modelApp = this.GetEntity(entity.ID.ToString(), "Nav_ApproveDetails"); //if (modelApp == null) //{ // this.ThrowError("020027"); // return false; //} //if (modelApp.APPROVE_STATUS != (int)ApproveStatus.Doing) //{ // this.ThrowError("020028"); // return false; //} //var node = modelApp.Nav_ApproveDetails.FirstOrDefault(i => i.ID == entity.CurrentNode.ID); //if (!node.IS_CURRENT) //{ // this.ThrowError("020030"); // return false; //} //if (entity.TaskID != Guid.Empty) // taskFinish = GetEntity(entity.TaskID); //if (taskFinish == null || !string.IsNullOrEmpty(taskCodeCheck)) //{ // //查询消息表 最好写日志 // if (!string.IsNullOrEmpty(taskCodeCheck) && taskFinish.SOURCE_FORMCODE != taskCodeCheck) // { // taskFinish = this.GetEntity(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == node.APPROVE_USER_ID // && i.NOTICE_STATUS == (int)FMNoticeStatusEnum.未处理); // } // if (taskFinish == null) // { // taskFinish = this.GetEntity(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == node.APPROVE_USER_ID // && i.NOTICE_STATUS == (int)FMNoticeStatusEnum.未处理); // } //} //if (taskFinish != null) //{ // taskFinish.NOTICE_STATUS = (int)FMNoticeStatusEnum.正常已办; // taskFinish.TASK_DT = DateTime.Now; // if (DateTime.Now > taskFinish.TASK_ENDDT) // taskFinish.NOTICE_STATUS = (int)FMNoticeStatusEnum.超期办理; //} ////修改节点状态 ////驳回时状态改为驳回,并通知申请人重新提交 //modelApp.APPROVE_STATUS = entity.CurrentNode.NODE_APPROVE_STATUS;// (int)ApproveStatus.Reject; //listAppDetail = modelApp.Nav_ApproveDetails.OrderBy(e=>e.NUM).ToList(); //var next = listAppDetail.Where(i => i.NUM == entity.CurrentNode.NUM && i.ID != entity.CurrentNode.ID && i.NODE_APPROVE_STATUS == (int)NodeApproveStatus.Doing); ////modelApp.Nav_ApproveDetails = null; ////int max = 0; ////isLast //isLast = true; //int currIndex = entity.CurrentNode.NUM; //foreach (var item in listAppDetail) //{ // if (item.NUM> currIndex) // { // isLast = false; // } // //item.Nav_Approve = null; // if (item.ID == entity.CurrentNode.ID) // { // item.NODE_APPROVE_TIME = DateTime.Now; // item.NODE_APPROVE_STATUS = entity.CurrentNode.NODE_APPROVE_STATUS; // item.IS_CURRENT = false; // item.CONTEXT = entity.CurrentNode.CONTEXT; // } //} //////判断是否最后一个审批流 ////if (max <= entity.CurrentNode.NUM) //// isLast = true; //T_FM_NOTIFICATION_TASK taskNext = null; //if (!isLast) //{ // taskNext = new T_FM_NOTIFICATION_TASK(); // NotificationTaskService.InsertUserNoticeTaskModel(taskFinish.NOTICE_TITLE, modelApp.ID, modelApp.ORG_ID, null, null, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.审批, "PF119"); //} return true; } ///// ///// 获取信息到审批流 ///// ///// ///// ///// ///// ///// //public bool GetApproject(T_PF_APPROVE entity, ref T_PF_APPROVE modelApp, ref List listAppDetail, ref T_FM_NOTIFICATION_TASK taskFinish, ref string taskCodeCheck, ref bool isLast) //{ // if (entity.DATA_ID == Guid.Empty || entity.ID == Guid.Empty) // { // throw new Exception("驳回传参信息有误!"); // } // modelApp = this.GetEntity(entity.ID.ToString(), "Nav_ApproveDetails"); // if (modelApp == null) // { // this.ThrowError("020027"); // return false; // } // if (modelApp.APPROVE_STATUS != (int)ApproveStatus.Doing) // { // this.ThrowError("020028"); // return false; // } // var node = modelApp.Nav_ApproveDetails.FirstOrDefault(i => i.ID == entity.CurrentNode.ID); // if (!node.IS_CURRENT) // { // this.ThrowError("020030"); // return false; // } // if (entity.TaskID != Guid.Empty) // taskFinish = GetEntity(entity.TaskID); // if (taskFinish == null || !string.IsNullOrEmpty(taskCodeCheck)) // { // //查询消息表 最好写日志 // if (!string.IsNullOrEmpty(taskCodeCheck) && taskFinish.SOURCE_FORMCODE != taskCodeCheck) // { // taskFinish = this.GetEntity(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == node.APPROVE_USER_ID // && i.NOTICE_STATUS == (int)FMNoticeStatusEnum.未处理); // } // if (taskFinish == null) // { // taskFinish = this.GetEntity(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == node.APPROVE_USER_ID // && i.NOTICE_STATUS == (int)FMNoticeStatusEnum.未处理); // } // } // if (taskFinish != null) // { // taskFinish.NOTICE_STATUS = (int)FMNoticeStatusEnum.正常已办; // taskFinish.TASK_DT = DateTime.Now; // if (DateTime.Now > taskFinish.TASK_ENDDT) // taskFinish.NOTICE_STATUS = (int)FMNoticeStatusEnum.超期办理; // } // //修改节点状态 // //驳回时状态改为驳回,并通知申请人重新提交 // modelApp.APPROVE_STATUS = entity.CurrentNode.NODE_APPROVE_STATUS;// (int)ApproveStatus.Reject; // listAppDetail = modelApp.Nav_ApproveDetails.OrderBy(e => e.NUM).ToList(); // var next = listAppDetail.Where(i => i.NUM == entity.CurrentNode.NUM && i.ID != entity.CurrentNode.ID && i.NODE_APPROVE_STATUS == (int)NodeApproveStatus.Doing); // //modelApp.Nav_ApproveDetails = null; // //int max = 0; // //isLast // isLast = true; // int currIndex = entity.CurrentNode.NUM; // foreach (var item in listAppDetail) // { // if (item.NUM > currIndex) // { // isLast = false; // } // //item.Nav_Approve = null; // if (item.ID == entity.CurrentNode.ID) // { // item.NODE_APPROVE_TIME = DateTime.Now; // item.NODE_APPROVE_STATUS = entity.CurrentNode.NODE_APPROVE_STATUS; // item.IS_CURRENT = false; // item.CONTEXT = entity.CurrentNode.CONTEXT; // } // } // ////判断是否最后一个审批流 // //if (max <= entity.CurrentNode.NUM) // // isLast = true; // return true; //} //private void ChangeApproveStatus(T_PF_APPROVE dbApprove, T_FM_NOTIFICATION_TASK task) //{ // var details = dbApprove.Nav_ApproveDetails; // dbApprove.Nav_ApproveDetails = null; // details.ForEach(i => i.Nav_Approve = null); // UnifiedCommit(() => // { // if (task != null) // this.UpdateEntityNoCommit(task); // this.UpdateEntityNoCommit(dbApprove); // this.BantchUpdateEntityNoCommit(details); // }); //} static void GetApproveNodes(List approveDetails, ref T_PF_APPROVE_DETAIL approveNode) { if (approveDetails == null) return; var curentNode = approveDetails.FirstOrDefault(i => i.NUM == approveDetails.Min(x => x.NUM) && i.NODE_APPROVE_STATUS == (int)NodeApproveStatus.Doing); if (curentNode == null || curentNode.APPROVE_USER_ID == null) { approveDetails.Remove(curentNode); approveNode = null; if (!approveDetails.Any()) return; GetApproveNodes(approveDetails, ref approveNode); } else { approveNode = curentNode; return; } } /// /// 审批通过 判断是否下一节点未本人 wyw /// /// /// /// /// /// /// private void DoneLaterApproverDeal(T_PF_APPROVE_DETAIL currentNode, Guid OperateID, string CONTEXT, int NODE_APPROVE_STATUS, ref List Nav_ApproveDetails, ref bool isLast) { if (NODE_APPROVE_STATUS != 10) { //审批不通过 return; } var detailDoing = Nav_ApproveDetails.FirstOrDefault(e => e.APPROVE_USER_ID.HasValue && e.NUM >= currentNode.NUM && e.NODE_APPROVE_STATUS == (int)NodeApproveStatus.Doing && e.ID != currentNode.ID); if (detailDoing == null) { //最后一个审批人了 isLast = true; return; } else { isLast = false; } if (!isLast) { //如果不是最后一个审批人 判断处理 下级审批人信息 //同级 审批完了 下一级有他 默认审批 var currentNumNode = Nav_ApproveDetails.FirstOrDefault(e => e.NUM == currentNode.NUM && e.ID != currentNode.ID && e.NODE_APPROVE_STATUS == (int)NodeApproveStatus.Doing); if (currentNumNode != null) { //同级 还有未审批的 return; } //同级没有未审批的人员信息 List listDoing = Nav_ApproveDetails.FindAll(e => e.NODE_APPROVE_STATUS == (int)NodeApproveStatus.Doing).OrderBy(e => e.NUM).ToList(); if (listDoing != null && listDoing.Count > 0) { //还有未审批的 List listDoingMin = listDoing.FindAll(e => e.NUM == listDoing[0].NUM);//最小未审批节点 T_PF_APPROVE_DETAIL detailLogin = listDoingMin.FirstOrDefault(e => e.APPROVE_USER_ID == OperateID); if (detailLogin == null) { //下一个节点不是当前审批人 return; } //默认 审批 //detailLogin detailLogin.NODE_APPROVE_TIME = DateTime.Now; detailLogin.NODE_APPROVE_STATUS = (int)NodeApproveStatus.Done; detailLogin.IS_CURRENT = false; detailLogin.CONTEXT = CONTEXT; if (listDoingMin.Count == 1) { DoneLaterApproverDeal(detailLogin, OperateID, CONTEXT, NODE_APPROVE_STATUS, ref Nav_ApproveDetails, ref isLast); } } } } #endregion #region 安全检查新版 /// /// 安全检查申请审批 审批流回调 /// /// 审批入参 /// 审批单 /// 审批明细 /// 审批待办 /// 是否审批最后一步 /// /// private bool CheckPlanAuditEndNew(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID); var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; //2、添加安全检查填写表单(配置) BS034 //3、给被安排检查的人去添加 代办事项 通知去安检 //查找所有本次安检的人员 var CheckUser = this.GetEntities(e => !e.IS_DELETED && e.SAFE_CHECK_ID == entity.ID, null, new string[] { "Nav_User" }).Select(e => e.Nav_User).Distinct(e => e.ID).ToList(); List listUserId = new List(); List listUserName = new List(); for (int i = 0; i < CheckUser.Count; i++) { listUserId.Add(CheckUser[i].ID); listUserName.Add(CheckUser[i].NAME); } //直接发送检查记录 //修改为 发送检查通知 检查人 查看后 再收到检查记录表 entity.CHECKFINISHINTTIME = DateTime.Now; if (!entity.CHECKTIME.HasValue || !entity.PLAN_SET_ID.HasValue || entity.CHECKTIME.Value.Date == DateTime.Now.Date) { entity.ISCHECKFINISHINTTIME = true; } else { var plan = GetEntity(entity.PLAN_SET_ID.Value); //查询 时间频率对应最后时间 DateTime dtEnd = SafeCheckService.GetEndTime((BSPLANCHECKFREQUENCYEnum)plan.PLANCHECKFREQUENCY, entity.CHECKTIME.Value); if (dtEnd >= DateTime.Now) entity.ISCHECKFINISHINTTIME = true; else entity.ISCHECKFINISHINTTIME = false; } entity.STATUSPLAN = 20; if (listUserId.Count > 0) { entity.STATUCHECK = (int)HMAuditStatusEnmu.确认中;//给验收人 发送确认通知 DateTime dtTimeOut = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_SafeCheck_Make_Check, entity.ORG_ID.Value, DateTime.Now, null, entity.CHECKTIME);// entity.LIMITDATETIME //最后时间是今天 //DateTime dtTimeOut = DateTime.Now.Date.AddDays(1).AddSeconds(-1); //Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")); ////给 T_FM_NOTIFICATION_TASK 添加实体 ////只是通知,不需要表单 //NotificationTaskService.SendNotificationTask(entity.NAME, entity.ID, orgId, listUserId, listUserName, DateTime.Now, dtTimeOut, 0, "BS034", () => //{ // UpdateEntityNoCommit(entity); //}); List listUserIDDone = new List();//需要默认处理的待办 #region 制表确认 默认处理 if (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue) { listUserIDDone.Add(APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value); } if (entity.USERID_DOPLAN.HasValue) { if (!listUserIDDone.Contains(entity.USERID_DOPLAN.Value)) { listUserIDDone.Add(entity.USERID_DOPLAN.Value); } } #endregion List listUserCheck = null; if (entity.USERID_DOPLAN.HasValue && listUserId.Contains(entity.USERID_DOPLAN.Value)) { #region 旧方法 ////如果检查人员 包含 制表人 //listUserCheck = this.GetEntities(e => !e.IS_DELETED && e.SAFE_CHECK_ID == entity.ID && e.USER_ID == entity.USERID_DOPLAN.Value); //如果是主要检查人 修改为已 确认 //if (listUserCheck != null && listUserCheck.Any()) //{ // foreach (var item in listUserCheck) // { // item.SAFECHECKSTATE = (int)SAFECHECKSTATEEnum.viewDoneSign; // if (item.ISMAINCHECK) // { // item.ISCHECK = true;//检查结果确认 // item.CHECKTIME = DateTime.Now; // } // } //} #endregion #region 新方法 主要处理 默认 【制表确认】 //如果检查人员 包含 制表人 var listUserAll = this.GetEntities(e => !e.IS_DELETED && e.SAFE_CHECK_ID == entity.ID); //如果是主要检查人 修改为已 确认 int STATECHECK = (int)entity.STATECHECK; foreach (var item in listUserAll) { //if ((item.SAFECHECKSTATE.HasValue && item.SAFECHECKSTATE == 80) || STATECHECK > 10)//已经检查过了 待办消息默认审批通过 或者 检查登记进入审批状态 if ((item.SAFECHECKSTATE.HasValue && item.SAFECHECKSTATE >= 60) || STATECHECK > 10) { listUserIDDone.Add(item.USER_ID); } } if (listUserAll != null && listUserAll.Any()) { foreach (var item in listUserAll) { //if (item.USER_ID == entity.USERID_DOPLAN.Value) if (listUserIDDone.Contains(item.USER_ID)) { if (item.SAFECHECKSTATE < (int)SAFECHECKSTATEEnum.viewDoneSign) { item.SAFECHECKSTATE = (int)SAFECHECKSTATEEnum.viewDoneSign; } //item.SAFECHECKSTATE = (int)SAFECHECKSTATEEnum.viewDoneSign; if (item.ISMAINCHECK) { item.ISCHECK = true;//检查结果确认 item.CHECKTIME = DateTime.Now; } if (listUserCheck == null) { listUserCheck = new List(); } listUserCheck.Add(item); } //else //{ // //判断处理待办 // if (item.ISCHECK && !listUserIDDone.Contains(item.USER_ID)) // { // listUserIDDone.Add(item.USER_ID); // } //} } } #endregion } #region 修改操作日志 添加 下一步待操作日志 DateTime? dtTaskEnd = null; dtTaskEnd = taskFinish?.TASK_ENDDT; var listOperateLog = GetListOperateLog(OPERATEPOINT_Enums.CheckAudit, entity.ID, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, listUserId, listUserName, entity.ORG_ID, null, listUserIDDone, false, dtTaskEnd); int APPROVE_STATUS = 0; var ApproveCreateID = Guid.Empty; if (modelApp != null && modelApp.CREATER_ID.HasValue) { ApproveCreateID = modelApp.CREATER_ID.Value; APPROVE_STATUS = modelApp.APPROVE_STATUS; } if (ApproveCreateID == Guid.Empty && entityInt != null && entityInt.CREATER_ID.HasValue) { ApproveCreateID = entityInt.CREATER_ID.Value; APPROVE_STATUS = entityInt.APPROVE_STATUS; } //检查任务默认审批、确认 if (listOperateLog != null && listOperateLog.Any() && dtTaskEnd == null && APPROVE_STATUS == 10 && APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue && (ApproveCreateID == APT.Infrastructure.Api.AppContext.CurrentSession.UserID || ApproveCreateID == Guid.Empty)) { foreach (var item in listOperateLog) { if (item.USER_ID == APT.Infrastructure.Api.AppContext.CurrentSession.UserID) { item.ISINTTIME = true; } } } #endregion if (listUserId.Count == 1 && listUserId.Count == listUserIDDone.Count && listUserId[0] == listUserIDDone[0]) { //如果就一个人 还是默认处理的人 直接 sendCheck entity.STATUCHECK = (int)HMAuditStatusEnmu.审批中;//其实是检查中了 } //BS034_SHOWPRINT=> BS032_SHOWPRINT NotificationTaskService.SendNotificationTask((entity.NAME + "-确认"), entity.ID, orgId, listUserId, listUserName, DateTime.Now, dtTimeOut, 0, "BS032_SHOWPRINT", () => { UpdateEntityNoCommit(entity); if (listUserCheck != null && listUserCheck.Any()) BantchSaveEntityNoCommit(listUserCheck); if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); if (listOperateLog != null && listOperateLog.Count > 0)//操作记录 BantchSaveEntityNoCommit(listOperateLog); }, "", listUserIDDone); } } return true; } /// /// 安全检查线下完成后进入审批 审批流回调 /// /// 审批入参 /// 审批单 /// 审批明细 /// 审批待办 /// 是否审批最后一步 /// /// private bool CheckAuditEndNew(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { //如果是最后一个审批 var entity = GetEntity((modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID), new string[] { "Nav_ListSafeCheckDetail", "Nav_User", "Nav_CheckType", "Nav_CheckTypeLevel.Nav_Enums" }); if (!entity.PLAN_SET_ID.HasValue || !entity.CHECKTIME.HasValue || entity.CHECKTIME.Value.Date == DateTime.Now.Date) //同一天 { entity.ISFINISHINTTIME = true; } else { var modelPlanset = GetEntity(entity.PLAN_SET_ID.Value); if (modelPlanset == null) { entity.ISFINISHINTTIME = true; } else { DateTime dtLast = SafeCheckService.GetEndTime((BSPLANCHECKFREQUENCYEnum)modelPlanset.PLANCHECKFREQUENCY, modelPlanset.CHECKTIME);//最迟时间 if (!entity.ISFINISHINTTIME && DateTime.Now <= dtLast) { entity.ISFINISHINTTIME = true; } } } //// 1、审批记录单 判断审批结果 修改安全检查表制定的单审批状态 //T_PF_APPROVE modelApprove = this.GetEntity(e => e.DATA_ID == modelApp.DATA_ID && e.APPROVE_CODE == "BS034_SHOWPRINT"); //if (modelApprove.APPROVE_STATUS == 10) // entity.STATUCHECK = (int)HMAuditStatusEnmu.归档; //已完成 //else if (modelApprove.APPROVE_STATUS == 20) // entity.STATUCHECK = (int)HMAuditStatusEnmu.审批驳回; //已驳回 if (isApprovel) { if (entityInt.CurrentNode.NODE_APPROVE_STATUS == 10) entity.STATUCHECK = (int)HMAuditStatusEnmu.归档; //已完成 else if (entityInt.CurrentNode.NODE_APPROVE_STATUS == 20) entity.STATUCHECK = (int)HMAuditStatusEnmu.审批驳回; //已驳回 } //组合库 List listCheckMain = new List(); List listCheckMainDep = new List(); List listCheckDetail = new List(); List listUpdateMain = new List(); List checkMainChangeAll = new List();//所有被修改的检查库 var checkMainChange = entity.Nav_ListSafeCheckDetail.Where(e => e.CHECK_MAIN_ID.HasValue && e.ISMAINCHANGE); if (checkMainChange != null && checkMainChange.Any()) { List listMainID = checkMainChange.Select(e => e.CHECK_MAIN_ID.Value).ToList(); checkMainChangeAll = GetEntities(e => listMainID.Contains(e.ID), null, new string[] { "Nav_ListMainDep" }).ToList(); } List listDepMainCheck = new List(); T_FM_DEPARTMENT depMainCheck = null; T_FM_DEPARTMENT depMade = null;//制表人 所在组织 //可能和安全隐患对接 foreach (var item in entity.Nav_ListSafeCheckDetail) { if (entity.RISKSTATE == 0 && item.CHECKRESULT.HasValue && (item.CHECKRESULT.Value == 20 || item.CHECKRESULT.Value == 30)) { //检查有问题 待安全隐患上报 20 与描述一致 30 其他 entity.RISKSTATE = 10; } #region 如果 不是检查库 需要添加组合库 同时修改检查信息中的ID if ((item.CHECK_MAIN_ID == null || item.CHECK_MAIN_ID == Guid.Empty) && item.CHECKRESULT == 20 && item.QUESTION_LEVEL.HasValue) { #region 检查制定 手动添加 记录 //添加隐患库 //检查问题 手动输入 没有 整改建议与措施 不能入库 T_BS_CHECK_MAIN modelAdd = new T_BS_CHECK_MAIN(); modelAdd.ID = Guid.NewGuid(); modelAdd.ISRISK = true; modelAdd.CHECKOBJECT = entity.CHECKOBJECT.Value; modelAdd.CHECK_PROJECT_ID = item.CHECK_PROJECT_ID; //modelAdd.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID; modelAdd.CHECK_QUESTION_ID = GetEntity(e => e.SAFE_CHECK_DETAIL_ID == item.ID).SAFE_CHECK_QUESTION_ID; modelAdd.CHECKCONTENT = item.CHECKCONTENT; modelAdd.CHECKPROOF = item.CHECKPROOF; modelAdd.QUESTION_LEVEL = item.QUESTION_LEVEL.Value; if (modelAdd.QUESTION_LEVEL == 10) modelAdd.SERIOUS_RISK = 1; else modelAdd.SERIOUS_RISK = 0; modelAdd.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; modelAdd.CHECK_TYPE_LEVEL_ID = entity.CHECK_TYPE_LEVEL_ID; modelAdd.RISK_AREA_ID = item.RISK_AREA_ID; modelAdd.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; modelAdd.NUM = 0; modelAdd.IS_DELETED = false; modelAdd.ORG_ID = item.ORG_ID; //modelAdd.FORM_ID = item.FORM_ID; modelAdd.CREATE_TIME = DateTime.Now; modelAdd.CREATER_ID = entity.USERID_DOPLAN.Value; //modelAdd.DEPARTMENT_ID = item.DEPARTMENT_ID; depMainCheck = listDepMainCheck.FirstOrDefault(e => e.ID == item.DEPARTMENT_ID); if (depMainCheck == null) { depMainCheck = GetEntity(item.DEPARTMENT_ID.Value); listDepMainCheck.Add(depMainCheck); } //if (item.CREATER_ID == depMainCheck.USER_ID) //{ // if (depMainCheck.DEPARTMENT_TYPE == 2) // { // modelAdd.RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; // } // else // { // modelAdd.RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; // } //} //else //{ // modelAdd.RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; //} //modelAdd.ENTITY_ORG_TPYE = item.ENTITY_ORG_TPYE; //modelAdd.FLOW_STATUS = item.FLOW_STATUS; //modelAdd.FLOW_SEND_STATUS = item.FLOW_SEND_STATUS; //modelAdd.FLOW_ID = item.FLOW_ID; //modelAdd.MODIFY_TIME = item.MODIFY_TIME; //modelAdd.MODIFIER_ID = item.MODIFIER_ID; modelAdd.CHECK_PROJECT_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelAdd.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID; listCheckMain.Add(modelAdd);//不判断去重了,按理有就直接选择了,不会删除自己再手动选 //会写到检查信息 item.CHECK_MAIN_ID = modelAdd.ID; if (depMade == null) { depMade = GetEntity(entity.USERID_DOPLAN.Value, "Nav_Department").Nav_Department; } //组织范围 listCheckMainDep.Add(new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelAdd.ID, IS_DELETED = false, ORG_ID = modelAdd.ORG_ID, //ENTITY_ORG_TPYE = , //FORM_ID = , //FLOW_STATUS = , //FLOW_SEND_STATUS = , //FLOW_ID = , CREATE_TIME = modelAdd.CREATE_TIME, MODIFY_TIME = modelAdd.CREATE_TIME, CREATER_ID = modelAdd.CREATER_ID, MODIFIER_ID = modelAdd.CREATER_ID, DEPARTMENT_ID = depMade.ID,//制表人 所在组织 //RESPONOBJECT = modelAdd.RESPONOBJECT, }); listCheckDetail.Add(item); #endregion } else if (item.ISMAINCHANGE && item.CHECK_MAIN_ID.HasValue && checkMainChangeAll != null && checkMainChangeAll.Count > 0) { #region 安全检查 修改 添加隐患库 或者 修改 隐患库安全检查可修改的字段 修改 标志符 var main = checkMainChangeAll.FirstOrDefault(e => e.ID == item.CHECK_MAIN_ID.Value); if (main == null) continue; if (main.CHECK_PROJECT_ID != item.CHECK_PROJECT_ID || main.CHECK_PROJECT_PROJECT_CATEGORY_ID != item.CHECK_PROJECT_PROJECT_CATEGORY_ID || main.CHECKCONTENT != item.CHECKCONTENT || main.CHECKPROOF != item.CHECKPROOF || main.RISK_AREA_ID != item.RISK_AREA_ID || (item.QUESTION_LEVEL.HasValue && main.QUESTION_LEVEL != item.QUESTION_LEVEL)) { //有修改 if (!main.ISRISK) { //安全库 被修改 main.ENABLE_STATUS = 1;// FMEnableStatusEnum.禁用; listUpdateMain.Add(main); //隐患库被修改 //修改 修改的信息 更新到 库中 删除新增的库信息 T_BS_CHECK_MAIN modelMain = new T_BS_CHECK_MAIN(); modelMain.ID = Guid.NewGuid(); modelMain.CHECKOBJECT = main.CHECKOBJECT; modelMain.NUM = main.NUM; modelMain.CHECK_PROJECT_ID = item.CHECK_PROJECT_ID; modelMain.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID == null ? main.CHECK_QUESTION_ID : item.CHECK_QUESTION_ID; modelMain.CHECKCONTENT = item.CHECKCONTENT; modelMain.CHECKPROOF = item.CHECKPROOF; modelMain.QUESTION_LEVEL = item.QUESTION_LEVEL.HasValue ? item.QUESTION_LEVEL.Value : main.QUESTION_LEVEL; modelMain.SERIOUS_RISK = modelMain.QUESTION_LEVEL == 10 ? 1 : 0;// (int)item.SERIOUS_RISK; modelMain.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; modelMain.CHECK_TYPE_LEVEL_ID = entity.CHECK_TYPE_LEVEL_ID; modelMain.RISK_AREA_ID = item.RISK_AREA_ID; modelMain.ORG_ID = item.ORG_ID; modelMain.ENTITY_ORG_TPYE = item.ENTITY_ORG_TPYE; modelMain.FORM_ID = item.FORM_ID; modelMain.FLOW_STATUS = item.FLOW_STATUS; modelMain.FLOW_SEND_STATUS = item.FLOW_SEND_STATUS; modelMain.FLOW_ID = item.FLOW_ID; modelMain.CREATE_TIME = DateTime.Now; modelMain.MODIFY_TIME = DateTime.Now; modelMain.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; modelMain.MODIFIER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; modelMain.CHECK_PROJECT_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelMain.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID; modelMain.ISRISK = true; modelMain.IS_DELETED = false; modelMain.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; modelMain.CHECK_CONTENTS_ID = main.CHECK_CONTENTS_ID;//改不到检查内容 listCheckMain.Add(modelMain);//添加待添加的信息 和 手动添加的一起 foreach (var itemDe in main.Nav_ListMainDep) { listCheckMainDep.Add(new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelMain.ID, IS_DELETED = false, ORG_ID = modelMain.ORG_ID, //ENTITY_ORG_TPYE = , //FORM_ID = , //FLOW_STATUS = , //FLOW_SEND_STATUS = , //FLOW_ID = , CREATE_TIME = modelMain.CREATE_TIME, MODIFY_TIME = modelMain.CREATE_TIME, CREATER_ID = modelMain.CREATER_ID, MODIFIER_ID = modelMain.CREATER_ID, DEPARTMENT_ID = itemDe.DEPARTMENT_ID, RESPONOBJECT = itemDe.RESPONOBJECT, }); } } else { //隐患库 修改 安全检查可修改到的信息 main.MODIFIER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; main.MODIFY_TIME = DateTime.Now; main.CHECK_PROJECT_ID = item.CHECK_PROJECT_ID; main.CHECK_PROJECT_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_PROJECT_CATEGORY_ID; main.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID; main.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID; main.RISK_AREA_ID = item.RISK_AREA_ID; main.QUESTION_LEVEL = item.QUESTION_LEVEL.HasValue ? item.QUESTION_LEVEL.Value : main.QUESTION_LEVEL; main.SERIOUS_RISK = main.QUESTION_LEVEL == 10 ? 1 : 0; main.CHECKCONTENT = item.CHECKCONTENT; main.CHECKPROOF = item.CHECKPROOF; listUpdateMain.Add(main); } } else { //手动修改 并未实际修改 item.ISMAINCHANGE = false; listCheckDetail.Add(item);//实质没有修改 } #endregion } #endregion } entity.STATECHECK = STATECHECK.Archived; DateTime? dtTaskEnd = null; dtTaskEnd = taskFinish?.TASK_ENDDT; //给制表人发送待办 if (entity.RISKSTATE == 10 && entity.USERID_DOPLAN.HasValue) { //结束 + 上报 #region 隐患上报信息 发隐患上报信息 出去 流程各时间也对应 T_BS_RISK_SUBMIT modelSub = new T_BS_RISK_SUBMIT(); modelSub = new T_BS_RISK_SUBMIT(); modelSub.ID = Guid.NewGuid(); modelSub.CODE = entity.CODE;//替换成同一个 modelSub.NAME = entity.Nav_CheckTypeLevel.Nav_Enums.NAME + entity.Nav_CheckType.NAME; modelSub.Nav_Check = entity; modelSub.Nav_CheckType = entity.Nav_CheckType; modelSub.Nav_CheckTypeLevel = entity.Nav_CheckTypeLevel; modelSub.CREATER_ID = entity.USERID_DOPLAN; modelSub.CREATE_TIME = DateTime.Now;//绩效报表 取当前时间 modelSub.CHECK_ID = entity.ID; modelSub.CHECKTIME = entity.CHECKTIME; modelSub.SUBMIT_STATUS = (int)BSSubmitStatusEnum.WaiteStart; modelSub.USER_ID = modelSub.CREATER_ID; modelSub.DEPARTMENT_ID = entity.Nav_User.DEPARTMENT_ID; modelSub.SUBMIT_TYPE = (int)SUBMIT_TYPE.Check; modelSub.ISORDEREND = false; modelSub.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; modelSub.CHECK_TYPE_LEVEL_ID = entity.CHECK_TYPE_LEVEL_ID; modelSub.ORG_ID = entity.ORG_ID; if (entity.CHECKOBJECT.HasValue) { try { modelSub.CHECKOBJECT = (BSMineTypeEnum)entity.CHECKOBJECT; } catch { } } List Nav_Files = null; var files = GetEntities(e => e.SAFE_CHECK_ID == entity.ID, false, null); if (files != null && files.Any()) { Nav_Files = new List(); foreach (var item in files) { Nav_Files.Add(new T_BS_RISK_SUBMIT_FILE() { ID = Guid.NewGuid(), ORG_ID = modelSub.ORG_ID, RISK_SUBMIT_ID = modelSub.ID, IMG_FILE_ID = item.IMG_FILE_ID }); } } List ListRiskSubmitContent = new List(); entity.Nav_ListSafeCheckDetail = entity.Nav_ListSafeCheckDetail.OrderBy(e => e.ROW_NO).ToList(); int ROW_NO = 0; foreach (var item in entity.Nav_ListSafeCheckDetail) { if (!item.CHECKRESULT.HasValue || item.CHECKRESULT.Value != 20) // CHECKRESULTEnum.Same { continue; } ROW_NO++; ListRiskSubmitContent.Add(new T_BS_RISK_SUBMIT_CONTENT() { ID = Guid.NewGuid(), ORG_ID = modelSub.ORG_ID, RISK_SUBMIT_ID = modelSub.ID, SAFE_CHECK_DETAIL_ID = item.ID, NAME = null, CODE = null, //QUESTION_LEVEL = 0, //RiskContentState= RiskContentState. ROW_NO = ROW_NO, CHECK_MAIN_ID = item.CHECK_MAIN_ID, DEPARTMENT_ID = item.DEPARTMENT_ID, SERIOUS_RISK = item.SERIOUS_RISK, //CHECKCONTENT = item.CHECKCONTENT, RISK_AREA_ID = item.RISK_AREA_ID, CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID, //这两个字段作为是否操作过的标签 //CHECK_PROJECT_ID = item.CHECK_PROJECT_ID, //CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID, ADDRESS = item.ADDRESS }); } #endregion entity.ISNEEDTOUP = false; //检查发现问题问题 走隐患上报 //最后时间是今天 //DateTime dtTimeOut = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")); DateTime dtTimeOut = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_Risk_Up, entity.ORG_ID.Value, DateTime.Now, null, null); if (entity.Nav_User == null) entity.Nav_User = GetEntity(entity.USERID_DOPLAN.Value); //给 表单制定人 添加待办 //NotificationTaskService.SendNotificationTask("隐患待上报:" + entity.NAME, modelSub.ID, entity.ORG_ID, entity.USERID_DOPLAN.Value, entity.Nav_User.NAME, DateTime.Now, dtTimeOut, 0, "BS006", () => // { // UpdateEntityNoCommit(entity);//修改隐患 // UpdateEntity(modelSub);//添加隐患上报 // }); // entity.ID 被 modelSub.ID 替换 var listOperateLog = GetListOperateLog(OPERATEPOINT_Enums.CheckResultAudit, entity.ID, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, new List() { entity.USERID_DOPLAN.Value }, new List() { entity.Nav_User.NAME }, entity.ORG_ID, modelSub.ID, null, false, dtTaskEnd); //modelSubOPERATEPOINT_Enums.RiskGet //var listOperateLogRisk = GetListOperateLog(OPERATEPOINT_Enums.RiskGet, modelSub.ID, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, new List() { entity.USERID_DOPLAN.Value }, new List() { entity.Nav_User.NAME }, entity.ORG_ID, null, null, false, dtTaskEnd); NotificationTaskService.SendNotificationTask("隐患待上报:" + entity.NAME.Replace("安全检查:", ""), modelSub.ID, entity.ORG_ID, entity.USERID_DOPLAN.Value, entity.Nav_User.NAME, DateTime.Now, dtTimeOut, 0, "BS006", () => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); UpdateEntityNoCommit(entity);//修改隐患 //UpdateEntity(modelSub);//添加隐患上报 if (listCheckMain.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listCheckMain); if (listCheckMainDep.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listCheckMainDep); if (listCheckDetail != null && listCheckDetail.Any())//修改检查明细 MainID ISMAINCHANGE BantchUpdateEntityNoCommit(listCheckDetail); if (listUpdateMain != null && listUpdateMain.Any())//安全检查库修改不可用 BantchUpdateEntityNoCommit(listUpdateMain); UpdateEntityNoCommit(modelSub); if (Nav_Files != null && Nav_Files.Any())//附件 BantchSaveEntityNoCommit(Nav_Files); if (ListRiskSubmitContent != null && ListRiskSubmitContent.Any()) BantchSaveEntityNoCommit(ListRiskSubmitContent); if (listOperateLog != null && listOperateLog.Any()) BantchSaveEntityNoCommit(listOperateLog);//安全检查操作记录//隐患待上报操作记录 }); } else { var listOperateLog = GetListOperateLog(OPERATEPOINT_Enums.CheckResultAudit, entity.ID, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, null, null, entity.ORG_ID, null, null, true, dtTaskEnd); //直接结束 entity.ISNEEDTOUP = true; //检查没问题 直接结束 安全检查 this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); if (entity != null) UpdateEntityNoCommit(entity); //保存主表 if (listCheckMain.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listCheckMain); if (listCheckMainDep.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listCheckMainDep); if (listCheckDetail != null && listCheckDetail.Any())//修改检查明细 MainID ISMAINCHANGE BantchUpdateEntityNoCommit(listCheckDetail); if (listUpdateMain != null && listUpdateMain.Any())//安全检查库修改不可用 BantchUpdateEntityNoCommit(listUpdateMain); if (listOperateLog != null && listOperateLog.Any())//操作记录 BantchSaveEntityNoCommit(listOperateLog); }); } } return true; } /// /// 隐患上报 审核通过 给每个通知负责人发送通知 /// /// /// private bool NoticeNew(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { //给对应通知责任人发送待办 T_BS_RISK_SUBMIT_NOTICE entity = this.GetEntity(entityInt.DATA_ID, new string[] { "Nav_ListRiskSubmitContent.Nav_SafeCheckDetail", "Nav_ListRiskSubmitContent.Nav_User" }); List listContent = entity.Nav_ListRiskSubmitContent; int delayDays = 0; bool isNoticeCheck = false;//新版 直接通知 验收人 if (listContent != null && listContent.Any() && listContent[0].DEAL_USER_ID.HasValue && listContent[0].LastDateUser.HasValue)//CHECK_USER_ID =>DEAL_USER_ID { //新版 有设置验收人 整改期限 isNoticeCheck = true; } else { var delays = GetEntity(e => e.QUESTION_LEVEL == entity.QUESTION_LEVEL); if (delays != null) { delayDays = delays.MAX_DELAY_DAYS; } else { switch (entity.QUESTION_LEVEL) { case (int)BSQuestionLevelEnum.重大: delayDays = (int)BSDelayDaysEnum.重大; break; case (int)BSQuestionLevelEnum.A: delayDays = (int)BSDelayDaysEnum.A; break; case (int)BSQuestionLevelEnum.B: delayDays = (int)BSDelayDaysEnum.B; break; case (int)BSQuestionLevelEnum.C: delayDays = (int)BSDelayDaysEnum.C; break; case (int)BSQuestionLevelEnum.D: delayDays = (int)BSDelayDaysEnum.D; break; default: break; } } } List listMainConbinAdd = new List(); List listMainConbinQuestionAdd = new List(); List listMainConbinDepAdd = new List(); //更新对应的检查问题 List listSafecheckDetail = new List(); T_BS_SAFE_CHECK safeCheck = null; T_FM_DEPARTMENT depMainCheck = null; List listDepMainCheck = new List(); string[] codeList = new string[listContent.Count]; string codeTemp = "YHTZ" + DateTime.Now.ToString("yyyyMMddHHmmss"); for (int j = 0; j < listContent.Count; j++) { codeList[j] = codeTemp + j; } //T_BS_RISK_SUBMIT entityMain = this.GetEntity(entity.RISK_SUBMIT_ID.Value); T_BS_RISK_SUBMIT entityMain = null; var listContentID = listContent.Select(e => e.ID); var listConts = GetEntities(e => e.RISK_SUBMIT_ID == entity.RISK_SUBMIT_ID.Value && !listContentID.Contains(e.ID) && !e.USER_ID.HasValue && e.NOTICEDATE.HasValue);//除了这单 别的都有分配通知责任人通知时间 if (listConts == null || !listConts.Any()) { entityMain = GetEntity(entity.RISK_SUBMIT_ID.Value); entityMain.SUBMITFINISHTIME = DateTime.Now; if (!entityMain.STARTTIME.HasValue) { entityMain.STARTTIME = entityMain.CREATE_TIME; } if (entityMain.STARTTIME.HasValue || entityMain.STARTTIME.Value.AddDays(1) > entityMain.SUBMITFINISHTIME) entityMain.ISSUBMITFINISHINTTIME = true; else entityMain.ISSUBMITFINISHINTTIME = false; } List listNotice = new List(); List listNoticePerson = new List(); T_BS_RISK_SUBMIT_NOTICE_PERSON temp = null; List listDataID = new List(); List listUserID = new List(); List listUserName = new List(); List listName = new List(); List listEndTime = new List(); DateTime dtTaskEndTime = DateTime.Now; int i = 0; foreach (var item in listContent) { i++; item.CODE = entity.CODE + "_" + i.ToString(); item.NAME = "隐患整改通知:" + entity.NAME; if (!isNoticeCheck) { item.LastDateSystem = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")).AddDays(delayDays); } item.NOTICEDATE = DateTime.Now; item.RiskContentState = (int)RiskContentState.Notice; //隐患上报 问题 通知责任人 相同 同一个通知 (后续分配整改信息) if (isNoticeCheck) { temp = listNoticePerson.FirstOrDefault(x => x.USER_ID == item.DEAL_USER_ID.Value);//CHECK_USER_ID if (temp == null) { temp = new T_BS_RISK_SUBMIT_NOTICE_PERSON(); temp.ID = Guid.NewGuid(); temp.USER_ID = item.DEAL_USER_ID.Value;//CHECK_USER_ID temp.ORG_ID = item.ORG_ID; temp.NAME = item.NAME; temp.CODE = item.CODE; temp.RISK_SUBMIT_ID = item.RISK_SUBMIT_ID; temp.RISK_SUBMIT_NOTICE_ID = item.RISK_SUBMIT_NOTICE_ID; temp.QUESTION_LEVEL = item.QUESTION_LEVEL; listNoticePerson.Add(temp); listDataID.Add(temp.ID); listUserID.Add(temp.USER_ID); dtTaskEndTime = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_RiskUp_Checker, entity.ORG_ID.Value, DateTime.Now, null, entity.Nav_ListRiskSubmitContent.Where(e => e.DEAL_USER_ID == temp.USER_ID && e.LastDateUser.HasValue).OrderBy(e => e.LastDateUser).ToList()[0].LastDateUser.Value);//CHECK_USER_ID listEndTime.Add(dtTaskEndTime); if (item.Nav_UserDeal != null)//Nav_UserCheck { listUserName.Add(item.Nav_UserDeal.NAME);//Nav_UserCheck }//listUserName.Add(item.Nav_User.NAME); listName.Add("整改责任人指定落实人:" + entity.NAME);// temp.NAME } } else { temp = listNoticePerson.FirstOrDefault(x => x.USER_ID == item.DEAL_USER_ID);//USER_ID if (temp == null) { temp = new T_BS_RISK_SUBMIT_NOTICE_PERSON(); temp.ID = Guid.NewGuid(); temp.USER_ID = item.DEAL_USER_ID.Value;//USER_ID temp.ORG_ID = item.ORG_ID; temp.NAME = item.NAME; temp.CODE = item.CODE; temp.RISK_SUBMIT_ID = item.RISK_SUBMIT_ID; temp.RISK_SUBMIT_NOTICE_ID = item.RISK_SUBMIT_NOTICE_ID; temp.QUESTION_LEVEL = item.QUESTION_LEVEL; listNoticePerson.Add(temp); listDataID.Add(temp.ID); listUserID.Add(temp.USER_ID); if (item.Nav_UserDeal != null) { listUserName.Add(item.Nav_UserDeal?.NAME); } listName.Add("整改责任人确认:" + entity.NAME);//temp.NAME dtTaskEndTime = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_RiskUp_Checker, entity.ORG_ID.Value, DateTime.Now, null, entity.Nav_ListRiskSubmitContent.Where(e => e.CHECK_USER_ID == temp.USER_ID && e.LastDateUser.HasValue).OrderBy(e => e.LastDateUser).ToList()[0].LastDateUser.Value); listEndTime.Add(dtTaskEndTime); } } if (listUserName != null && string.IsNullOrEmpty(listUserName[0])) { var listUserIDDis = listUserID.Distinct(); var listModelUser = GetEntities(e => listUserIDDis.Contains(e.ID)); for (int j = 0; j < listUserID.Count; j++) { listUserName[i] = listModelUser.FirstOrDefault(e => e.ID == listUserID[j])?.NAME; } } item.RISK_SUBMIT_NOTICE_PERSON_ID = temp.ID;//个人通知ID绑定明细 if (item.Nav_SafeCheckDetail != null) { if (item.Nav_SafeCheckDetail.CHECKRESULT.HasValue && item.Nav_SafeCheckDetail.CHECKRESULT == 30)//检查结果 其他 { //添加安全检查库信息 #region MyRegion if (safeCheck == null) { safeCheck = GetEntity(item.Nav_SafeCheckDetail.SAFE_CHECK_ID); } T_BS_CHECK_QUESTION ques = new T_BS_CHECK_QUESTION(); ques.ID = Guid.NewGuid(); ques.ORG_ID = item.ORG_ID; ques.DESCREPTION = item.DESCREPTION; ques.DEMAND = item.DEMAND; ques.IS_DELETED = false; ques.ENABLE_STATUS = 0; ques.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; ques.QUESTION_LEVEL = (BSQuestionLevelEnum)(item.Nav_SafeCheckDetail.QUESTION_LEVEL.HasValue ? item.Nav_SafeCheckDetail.QUESTION_LEVEL.Value : 20); listMainConbinQuestionAdd.Add(ques); //添加隐患库 //检查问题 手动输入 没有 整改建议与措施 不能入库 T_BS_CHECK_MAIN modelAdd = new T_BS_CHECK_MAIN(); modelAdd.ID = Guid.NewGuid(); modelAdd.ISRISK = true; modelAdd.CHECKOBJECT = safeCheck.CHECKOBJECT.Value; modelAdd.CHECK_PROJECT_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_ID; modelAdd.CHECK_QUESTION_ID = ques.ID; modelAdd.CHECKCONTENT = item.CHECKCONTENT; modelAdd.CHECKPROOF = item.Nav_SafeCheckDetail.CHECKPROOF; modelAdd.QUESTION_LEVEL = item.Nav_SafeCheckDetail.QUESTION_LEVEL.HasValue ? item.Nav_SafeCheckDetail.QUESTION_LEVEL.Value : 20; if (modelAdd.QUESTION_LEVEL == 10) modelAdd.SERIOUS_RISK = 1; else modelAdd.SERIOUS_RISK = 0; modelAdd.CHECK_TYPE_ID = safeCheck.CHECK_TYPE_ID; modelAdd.CHECK_TYPE_LEVEL_ID = safeCheck.CHECK_TYPE_LEVEL_ID; modelAdd.RISK_AREA_ID = item.RISK_AREA_ID; modelAdd.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; modelAdd.NUM = 0; modelAdd.IS_DELETED = false; modelAdd.ORG_ID = item.ORG_ID; //modelAdd.FORM_ID = item.FORM_ID; modelAdd.CREATE_TIME = DateTime.Now; modelAdd.CREATER_ID = safeCheck.USERID_DOPLAN.Value; //modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; //modelAdd.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID.Value; modelAdd.CHECK_PROJECT_CATEGORY_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_CATEGORY_ID.Value; depMainCheck = listDepMainCheck.FirstOrDefault(e => e.ID == item.Nav_SafeCheckDetail.DEPARTMENT_ID); if (depMainCheck == null) { depMainCheck = GetEntity(item.Nav_SafeCheckDetail.DEPARTMENT_ID.Value); listDepMainCheck.Add(depMainCheck); } BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; //wyw1114-1 //modelAdd.DEPARTMENT_ID = item.DEPARTMENT_ID; if (item.CREATER_ID == depMainCheck.USER_ID) { if (depMainCheck.DEPARTMENT_TYPE == 2) { RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; } } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; } listMainConbinDepAdd.Add(new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelAdd.ID, ORG_ID = modelAdd.ORG_ID, DEPARTMENT_ID = item.DEPARTMENT_ID, RESPONOBJECT = RESPONOBJECT }); listMainConbinAdd.Add(modelAdd); //更新对应的检查问题 item.Nav_SafeCheckDetail.CHECK_MAIN_ID = modelAdd.ID; listSafecheckDetail.Add(item.Nav_SafeCheckDetail); #endregion } else if (!item.Nav_SafeCheckDetail.CHECK_MAIN_ID.HasValue && !item.Nav_SafeCheckDetail.CHECK_QUESTION_ID.HasValue) { #region MyRegion if (safeCheck == null) { safeCheck = GetEntity(item.Nav_SafeCheckDetail.SAFE_CHECK_ID); } //添加隐患库 //检查问题 手动输入 没有 整改建议与措施 不能入库 T_BS_CHECK_MAIN modelAdd = new T_BS_CHECK_MAIN(); modelAdd.ID = Guid.NewGuid(); modelAdd.ISRISK = true; modelAdd.CHECKOBJECT = safeCheck.CHECKOBJECT.Value; modelAdd.CHECK_PROJECT_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_ID; modelAdd.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID; modelAdd.CHECKCONTENT = item.CHECKCONTENT; modelAdd.CHECKPROOF = item.Nav_SafeCheckDetail.CHECKPROOF; modelAdd.QUESTION_LEVEL = item.Nav_SafeCheckDetail.QUESTION_LEVEL.HasValue ? item.Nav_SafeCheckDetail.QUESTION_LEVEL.Value : 20; if (modelAdd.QUESTION_LEVEL == 10) modelAdd.SERIOUS_RISK = 1; else modelAdd.SERIOUS_RISK = 0; modelAdd.CHECK_TYPE_ID = safeCheck.CHECK_TYPE_ID; modelAdd.CHECK_TYPE_LEVEL_ID = safeCheck.CHECK_TYPE_LEVEL_ID; modelAdd.RISK_AREA_ID = item.RISK_AREA_ID; modelAdd.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; modelAdd.NUM = 0; modelAdd.IS_DELETED = false; modelAdd.ORG_ID = item.ORG_ID; //modelAdd.FORM_ID = item.FORM_ID; modelAdd.CREATE_TIME = DateTime.Now; modelAdd.CREATER_ID = safeCheck.USERID_DOPLAN.Value; //modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; //modelAdd.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID.Value; modelAdd.CHECK_PROJECT_CATEGORY_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_CATEGORY_ID.Value; depMainCheck = listDepMainCheck.FirstOrDefault(e => e.ID == item.Nav_SafeCheckDetail.DEPARTMENT_ID); if (depMainCheck == null) { depMainCheck = GetEntity(item.Nav_SafeCheckDetail.DEPARTMENT_ID.Value); listDepMainCheck.Add(depMainCheck); } BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; //wyw1114-1 //modelAdd.DEPARTMENT_ID = item.DEPARTMENT_ID; if (item.CREATER_ID == depMainCheck.USER_ID) { if (depMainCheck.DEPARTMENT_TYPE == 2) { RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; } } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; } listMainConbinDepAdd.Add(new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelAdd.ID, ORG_ID = modelAdd.ORG_ID, DEPARTMENT_ID = item.DEPARTMENT_ID, RESPONOBJECT = RESPONOBJECT }); listMainConbinAdd.Add(modelAdd); //更新对应的检查问题 item.Nav_SafeCheckDetail.CHECK_MAIN_ID = modelAdd.ID; listSafecheckDetail.Add(item.Nav_SafeCheckDetail); #endregion } } #region MyRegion //if (item.Nav_SafeCheckDetail != null && !item.Nav_SafeCheckDetail.CHECK_MAIN_ID.HasValue && !item.Nav_SafeCheckDetail.CHECK_QUESTION_ID.HasValue) //{ // //组合的安全检查 完善数据库 // #region MyRegion // if (safeCheck == null) // { // safeCheck = GetEntity(item.Nav_SafeCheckDetail.SAFE_CHECK_ID); // } // //添加隐患库 // //检查问题 手动输入 没有 整改建议与措施 不能入库 // T_BS_CHECK_MAIN modelAdd = new T_BS_CHECK_MAIN(); // modelAdd.ID = Guid.NewGuid(); // modelAdd.ISRISK = true; // modelAdd.CHECKOBJECT = safeCheck.CHECKOBJECT.Value; // modelAdd.CHECK_PROJECT_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_ID; // modelAdd.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID; // modelAdd.CHECKCONTENT = item.CHECKCONTENT; // modelAdd.CHECKPROOF = item.Nav_SafeCheckDetail.CHECKPROOF; // modelAdd.QUESTION_LEVEL = item.Nav_SafeCheckDetail.QUESTION_LEVEL.HasValue ? item.Nav_SafeCheckDetail.QUESTION_LEVEL.Value : 20; // if (modelAdd.QUESTION_LEVEL == 10) // modelAdd.SERIOUS_RISK = 1; // else // modelAdd.SERIOUS_RISK = 0; // modelAdd.CHECK_TYPE_ID = safeCheck.CHECK_TYPE_ID; // modelAdd.CHECK_TYPE_LEVEL_ID = safeCheck.CHECK_TYPE_LEVEL_ID; // modelAdd.RISK_AREA_ID = item.RISK_AREA_ID; // modelAdd.ENABLE_STATUS = 0;// FMEnableStatusEnum.启用; // modelAdd.NUM = 0; // modelAdd.IS_DELETED = false; // modelAdd.ORG_ID = item.ORG_ID; // //modelAdd.FORM_ID = item.FORM_ID; // modelAdd.CREATE_TIME = DateTime.Now; // modelAdd.CREATER_ID = safeCheck.USERID_DOPLAN.Value; // //modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; // //modelAdd.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID.Value; // modelAdd.CHECK_PROJECT_CATEGORY_ID = item.Nav_SafeCheckDetail.CHECK_PROJECT_CATEGORY_ID.Value; // depMainCheck = listDepMainCheck.FirstOrDefault(e => e.ID == item.Nav_SafeCheckDetail.DEPARTMENT_ID); // if (depMainCheck == null) // { // depMainCheck = GetEntity(item.Nav_SafeCheckDetail.DEPARTMENT_ID.Value); // listDepMainCheck.Add(depMainCheck); // } // BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; // //wyw1114-1 // //modelAdd.DEPARTMENT_ID = item.DEPARTMENT_ID; // if (item.CREATER_ID == depMainCheck.USER_ID) // { // if (depMainCheck.DEPARTMENT_TYPE == 2) // { // RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; // } // else // { // RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; // } // } // else // { // RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; // } // listMainConbinDepAdd.Add(new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() // { // ID = Guid.NewGuid(), // MAIN_ID = modelAdd.ID, // ORG_ID = modelAdd.ORG_ID, // DEPARTMENT_ID = item.DEPARTMENT_ID, // RESPONOBJECT = RESPONOBJECT // }); // listMainConbinAdd.Add(modelAdd); // //更新对应的检查问题 // item.Nav_SafeCheckDetail.CHECK_MAIN_ID = modelAdd.ID; // listSafecheckDetail.Add(item.Nav_SafeCheckDetail); // #endregion //} #endregion } List listOperateLog = new List(); //更新日期 //给隐患上报隐患通知责任人 发送待办 if (isNoticeCheck) { //listNotice = NotificationTaskService.InsertUserNoticeTaskModels(codeList, listName, listDataID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, listEndTime, (int)FMNoticeTypeEnum.消息, "BS042_SHOWPRINT"); //整改责任人 指定 整改落实人 listNotice = NotificationTaskService.InsertUserNoticeTaskModels(codeList, listName, listDataID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, listEndTime, (int)FMNoticeTypeEnum.消息, "BS074"); //整改责任人指定落实人:车间级巡回检查D级隐患 foreach (var item in listContent) { for (int j = 0; j < listUserID.Count; j++) { if (item.DEAL_USER_ID.HasValue && item.DEAL_USER_ID.Value == listUserID[j]) { //给每个检查内容 发送 整改责任人确认 操作明细 listOperateLog.AddRange(GetListOperateLog(OPERATEPOINT_Enums.RiskSendAudit, entity.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, new List() { listUserID[j] }, new List() { listUserName[j] }, entity.ORG_ID, item.ID, null, false, taskFinish?.TASK_ENDDT)); break; } } } } else { //listNotice = NotificationTaskService.InsertUserNoticeTaskModels(codeList, listName, listDataID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "BS042"); listNotice = NotificationTaskService.InsertUserNoticeTaskModels(codeList, listName, listDataID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, listEndTime, (int)FMNoticeTypeEnum.消息, "BS042"); } UnifiedCommit(() => { if (isApprovel) { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); } if (entityMain != null)//审批结束 如果隐患上报 全部明细都审批完成 登记完成时间 UpdateEntityNoCommit(entityMain); if (listNoticePerson.Count > 0) BantchSaveEntityNoCommit(listNoticePerson); if (listContent.Count > 0) BantchUpdateEntityNoCommit(listContent); if (listNotice.Count > 0) BantchSaveEntityNoCommit(listNotice); if (listMainConbinAdd.Count > 0)//确定检查问题 添加安全检查记录 BantchSaveEntityNoCommit(listMainConbinAdd); if (listMainConbinDepAdd.Count > 0)//确定检查问题 添加安全检查记录 BantchSaveEntityNoCommit(listMainConbinDepAdd); if (listMainConbinQuestionAdd.Count > 0)//确定检查问题 添加检查问题 BantchSaveEntityNoCommit(listMainConbinQuestionAdd); if (listSafecheckDetail.Count > 0)//确定检查问题 添加安全检查记录 BantchUpdateEntityNoCommit(listSafecheckDetail); if (listOperateLog != null && listOperateLog.Any())//操作记录 BantchSaveEntityNoCommit(listOperateLog); }); } return true; } /// /// 隐患上报 完成 修改各种状态 完善隐患库 /// /// /// private bool DealEndNew(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { var deal = GetEntity(entityInt.DATA_ID, new string[] { "Nav_Submit.Nav_ListRiskSubmitContent", "Nav_Submit.Nav_ListRiskSubmitContent.Nav_SafeCheck", "Nav_SubmitContent.Nav_SafeCheckDetail", "Nav_SubmitContent.Nav_CheckMain", "Nav_SubmitContent.Nav_Question", "Nav_SubmitContent.Nav_Contents" }); deal.DEALSITUATION = (int)DealSituation.End;//结束 T_BS_RISK_SUBMIT subModel = deal.Nav_Submit; List listContent = subModel.Nav_ListRiskSubmitContent; //如果是手动上报 都是选择检查问题 不存在隐患入库 var content = deal.Nav_SubmitContent; //deal.Nav_SubmitContent = null;//不能清空 否则RISK_SUBMIT_CONTENT_ID 会被清空 var modelNoOK = listContent.FirstOrDefault(e => e.ID != content.ID && (!e.ISBACK.HasValue || !e.ISBACK.Value) && e.RiskContentState.HasValue && e.RiskContentState != (int)RiskContentState.OK && e.RiskContentState != (int)RiskContentState.BackOK); if (modelNoOK == null) { subModel.ISORDEREND = true; subModel.SUBMIT_STATUS = (int)BSSubmitStatusEnum.AuditOK; } content.OKDATE = DateTime.Now; content.RiskContentState = (int)RiskContentState.OK; if (!content.LastDateUser.HasValue || content.LastDateUser.Value > content.OKDATE) content.ISFINISHINTTIME = true; else content.ISFINISHINTTIME = false; var check = content.Nav_CheckMain; //根据隐患上报中检查结果 //未发现此问题 无需隐患上报 //以问题描述一致 无需完善隐患库 //其他 手动填写 需要完善隐患库 //书写 隐患待上报 内容 发送给安环部对应的人 标准化描述 再审批流 入库 //检查问题 T_BS_CHECK_QUESTION modelQues = null; T_BS_CHECK_MAIN modelCheck = null; T_BS_CHECK_CONTENT_MAIN_DEPARTMENT mainDep = null; if (content.Nav_SafeCheckDetail == null) { //手动隐患上报 if (content.CHECK_MAIN_ID.HasValue) { #region 旧版 var checkMain = GetEntity(content.CHECK_MAIN_ID.Value); if (checkMain.CHECK_TYPE_ID == subModel.CHECK_TYPE_ID && checkMain.CHECK_TYPE_LEVEL_ID == subModel.CHECK_TYPE_LEVEL_ID && checkMain.CHECK_QUESTION_ID == content.CHECK_QUESTION_ID && checkMain.RISK_AREA_ID == content.RISK_AREA_ID) { //全部都一样 if (checkMain.ENABLE_STATUS == 1) { checkMain.ENABLE_STATUS = 0; modelCheck = checkMain; } if (content.DEPARTMENT_ID.HasValue) { var mainDepCheck = GetEntity(e => !e.IS_DELETED && e.MAIN_ID.HasValue && e.DEPARTMENT_ID.HasValue && e.MAIN_ID.Value == content.CHECK_MAIN_ID && e.DEPARTMENT_ID.Value == content.DEPARTMENT_ID); if (mainDepCheck == null) { mainDep = new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = content.CHECK_MAIN_ID.Value, ORG_ID = content.ORG_ID, DEPARTMENT_ID = content.DEPARTMENT_ID.Value, RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head }; }; } } else { //手动隐患上报 //选择 检查问题 //填写检查依据、检查区域 modelCheck = new T_BS_CHECK_MAIN(); modelCheck.ID = Guid.NewGuid(); modelCheck.CHECK_QUESTION_ID = content.CHECK_QUESTION_ID; modelCheck.CHECKPROOF = content.PROOF;//检查依据 modelCheck.QUESTION_LEVEL = content.QUESTION_LEVEL; modelCheck.SERIOUS_RISK = (content.QUESTION_LEVEL == (int)BSQuestionLevelEnum.重大) ? 1 : 0; modelCheck.CHECK_TYPE_ID = subModel.CHECK_TYPE_ID; modelCheck.CHECK_TYPE_LEVEL_ID = subModel.CHECK_TYPE_LEVEL_ID; modelCheck.RISK_AREA_ID = content.RISK_AREA_ID; modelCheck.CHECKOBJECT = deal.Nav_Submit.CHECKOBJECT.HasValue ? (deal.Nav_Submit.CHECKOBJECT.Value).GetInt() : content.Nav_SafeCheck.CHECKOBJECT.Value;// content.Nav_SafeCheck.CHECKOBJECT.Value; modelCheck.CHECK_PROJECT_ID = content.CHECK_PROJECT_ID; modelCheck.CHECKCONTENT = content.CHECKCONTENT; modelCheck.CHECK_PROJECT_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; modelCheck.NUM = content.CHECK_MAIN_ID != null ? content.Nav_CheckMain.NUM : 0; modelCheck.ENABLE_STATUS = (int)FMEnableStatusEnum.启用; modelCheck.IS_DELETED = false; modelCheck.ORG_ID = deal.ORG_ID; //modelCheck.ENTITY_ORG_TPYE = content.Nav_CheckMain.ENTITY_ORG_TPYE; //modelCheck.FORM_ID = content.Nav_CheckMain.FORM_ID; //modelCheck.FLOW_STATUS = content.Nav_CheckMain.FLOW_STATUS; //modelCheck.FLOW_SEND_STATUS = content.Nav_CheckMain.FLOW_SEND_STATUS; //modelCheck.FLOW_ID = content.Nav_CheckMain.FLOW_ID; modelCheck.CREATE_TIME = DateTime.Now; modelCheck.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; //modelCheck.MODIFY_TIME = content.Nav_CheckMain.MODIFY_TIME; //modelCheck.MODIFIER_ID = content.Nav_CheckMain.MODIFIER_ID; modelCheck.ISRISK = true; modelCheck.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; var dep = GetEntity(content.DEPARTMENT_ID.Value); if (dep.USER_ID == content.USER_ID) { if (dep.DEPARTMENT_TYPE == 2) { RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; } } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; } mainDep = new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelCheck.ID, ORG_ID = modelCheck.ORG_ID, DEPARTMENT_ID = content.DEPARTMENT_ID, RESPONOBJECT = RESPONOBJECT }; } #endregion } else { #region 新版 BS060 //检查内容 检查问题 整改建议与措施 modelCheck = new T_BS_CHECK_MAIN(); modelCheck.ID = Guid.NewGuid(); modelCheck.CHECK_QUESTION_ID = content.CHECK_QUESTION_ID; modelCheck.CHECKPROOF = content.PROOF;//检查依据 modelCheck.QUESTION_LEVEL = content.QUESTION_LEVEL; modelCheck.SERIOUS_RISK = (content.QUESTION_LEVEL == (int)BSQuestionLevelEnum.重大) ? 1 : 0; modelCheck.CHECK_TYPE_ID = subModel.CHECK_TYPE_ID; modelCheck.CHECK_TYPE_LEVEL_ID = subModel.CHECK_TYPE_LEVEL_ID; modelCheck.RISK_AREA_ID = content.RISK_AREA_ID; modelCheck.CHECKOBJECT = (int)content.Nav_Contents.CHECKOBJECT;//.Nav_SafeCheck.CHECKOBJECT.Value; modelCheck.CHECK_PROJECT_ID = content.CHECK_PROJECT_ID; modelCheck.CHECKCONTENT = content.CHECKCONTENT; modelCheck.CHECK_PROJECT_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; modelCheck.NUM = 1; modelCheck.ENABLE_STATUS = (int)FMEnableStatusEnum.启用; modelCheck.IS_DELETED = false; modelCheck.ORG_ID = deal.ORG_ID; modelCheck.CREATE_TIME = DateTime.Now; modelCheck.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; modelCheck.ISRISK = true; modelCheck.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; var dep = GetEntity(content.DEPARTMENT_ID.Value); if (dep.USER_ID == content.USER_ID) { if (dep.DEPARTMENT_TYPE == 2) { RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; } } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; } mainDep = new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelCheck.ID, ORG_ID = modelCheck.ORG_ID, DEPARTMENT_ID = content.DEPARTMENT_ID, RESPONOBJECT = RESPONOBJECT }; #endregion } } else if (content.Nav_SafeCheckDetail.CHECKRESULT == (int)CHECKRESULTEnum.Same) { //安全检查 如果是 与问题描述一致 也不存在此问题 //无需 完善检查问题 } else { //安全检查 结果 其他 隐患上报 隐患入库 //检查问题描述 检查依据 检查等级 是否重大隐患 根据页面数据赖 //检查区域等 根据检查问题来 //检查问题 modelQues = new T_BS_CHECK_QUESTION(); modelQues.ID = Guid.NewGuid(); modelQues.ORG_ID = deal.ORG_ID; modelQues.DESCREPTION = content.DESCREPTION;//问题描述 modelQues.DEMAND = content.Nav_Question.DEMAND;//整改建议与措施 modelQues.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; modelQues.QUESTION_LEVEL = (BSQuestionLevelEnum)content.QUESTION_LEVEL; modelCheck = new T_BS_CHECK_MAIN(); modelCheck.ID = Guid.NewGuid(); modelCheck.CHECK_QUESTION_ID = modelQues.ID; modelCheck.CHECKPROOF = content.PROOF;//检查依据 modelCheck.QUESTION_LEVEL = content.QUESTION_LEVEL; modelCheck.SERIOUS_RISK = (content.QUESTION_LEVEL == (int)BSQuestionLevelEnum.重大) ? 1 : 0; //var deal = GetEntity(id, new string[] { "Nav_Submit.Nav_ListRiskSubmitContent", "Nav_SubmitContent.Nav_SafeCheckDetail.Nav_CheckMain", "Nav_SubmitContent.Nav_Question" }); modelCheck.CHECKOBJECT = content.Nav_SafeCheck.CHECKOBJECT.Value; modelCheck.CHECK_PROJECT_ID = content.CHECK_PROJECT_ID; modelCheck.CHECKCONTENT = content.CHECKCONTENT; modelCheck.CHECK_TYPE_ID = content.Nav_SafeCheck.CHECK_TYPE_ID; modelCheck.CHECK_TYPE_LEVEL_ID = content.Nav_SafeCheck.CHECK_TYPE_LEVEL_ID; modelCheck.RISK_AREA_ID = content.RISK_AREA_ID; modelCheck.ENABLE_STATUS = (int)FMEnableStatusEnum.启用; modelCheck.NUM = content.CHECK_MAIN_ID != null ? content.Nav_CheckMain.NUM : 0; modelCheck.IS_DELETED = false; modelCheck.ORG_ID = deal.ORG_ID; //modelCheck.ENTITY_ORG_TPYE = content.Nav_CheckMain.ENTITY_ORG_TPYE; //modelCheck.FORM_ID = content.Nav_CheckMain.FORM_ID; //modelCheck.FLOW_STATUS = content.Nav_CheckMain.FLOW_STATUS; //modelCheck.FLOW_SEND_STATUS = content.Nav_CheckMain.FLOW_SEND_STATUS; //modelCheck.FLOW_ID = content.Nav_CheckMain.FLOW_ID; modelCheck.CREATE_TIME = DateTime.Now; modelCheck.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; //modelCheck.MODIFY_TIME = content.Nav_CheckMain.MODIFY_TIME; //modelCheck.MODIFIER_ID = content.Nav_CheckMain.MODIFIER_ID; modelCheck.CHECK_PROJECT_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_PROJECT_CATEGORY_ID; modelCheck.CHECK_PROJECT_CATEGORY_ID = content.CHECK_PROJECT_CATEGORY_ID; modelCheck.ISRISK = true; modelCheck.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; //wyw1114-1 //modelCheck.DEPARTMENT_ID = content.DEPARTMENT_ID; BSPLANCHECKOBJECTEnum RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; var dep = GetEntity(content.DEPARTMENT_ID.Value); if (dep.USER_ID == content.USER_ID) { if (dep.DEPARTMENT_TYPE == 2) { RESPONOBJECT = BSPLANCHECKOBJECTEnum.ClassMonitor; } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Head; } } else { RESPONOBJECT = BSPLANCHECKOBJECTEnum.Hon; } mainDep = new T_BS_CHECK_CONTENT_MAIN_DEPARTMENT() { ID = Guid.NewGuid(), MAIN_ID = modelCheck.ID, ORG_ID = modelCheck.ORG_ID, DEPARTMENT_ID = content.DEPARTMENT_ID, RESPONOBJECT = RESPONOBJECT }; } //整改完成后 完善检查库 if (modelCheck != null && modelCheck.CHECKOBJECT == 0 && deal.Nav_Submit != null && deal.Nav_Submit.CHECKOBJECT.HasValue) { modelCheck.CHECKOBJECT = (int)deal.Nav_Submit.CHECKOBJECT.Value; } var listOperateLog = GetListOperateLog(OPERATEPOINT_Enums.RiskDealAudit, deal.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, null, null, deal.ORG_ID, deal.RISK_SUBMIT_CONTENT_ID, null, true, taskFinish?.TASK_ENDDT); UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); UpdateEntityNoCommit(deal);//修改状态 审批结束 if (subModel.ISORDEREND)//隐患上报单 是否完成 UpdateEntityNoCommit(subModel); UpdateEntityNoCommit(content);//隐患上报内容明细 if (modelQues != null) UpdateEntityNoCommit(modelQues); if (modelCheck != null) UpdateEntityNoCommit(modelCheck); if (mainDep != null) UpdateEntityNoCommit(mainDep); if (listOperateLog != null && listOperateLog.Any())//操作记录 BantchSaveEntityNoCommit(listOperateLog); }); } return true; } /// /// 延期申请 完成 修改状态、最后完成时间 给验收人发送通知 /// api/BS/BSRiskSubmit/DealEnd /// /// /// private bool DealEnd_BS_DelayApplyNew(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false) { #region 审批公用 if (modelApp == null) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = GetEntity(modelApp.DATA_ID, new string[] { "Nav_ListApplyDetail.Nav_SubmitContent.Nav_UserCheck" }); entity.OPERARTETYPE = (int)OperateType.Check; //修改记录信息 状态 最后完成时间 //给验收人发送通知 var listContent = entity.Nav_ListApplyDetail; List listNotice = new List(); List listBackAll = new List(); List listRiskContent = new List(); List listBack = null; List listCheckUserID = new List(); List listTaskBS044 = new List(); List listLog = new List(); Dictionary dicContentIDDtEnd = new Dictionary(); foreach (var item in listContent) { if (item.IS_DELETED) { continue; } T_BS_RISK_SUBMIT_CONTENT subContent = item.Nav_SubmitContent; //自动生成的 if (subContent.RiskContentState == (int)RiskContentState.OKNotBack || subContent.RiskContentState == (int)RiskContentState.ReportedDelay) { BaseFilter filter = null; //如果是审批退回 //同时修改 退回自动新增的隐患上报 //审批退回 自动生成的单 状态为 【已修改落实整改人 ActualDealChange = 32】 listBack = this.GetEntities(e => e.PARENTID.HasValue && e.PARENTID.Value == subContent.ID && e.RiskContentState.HasValue && e.RiskContentState == (int)RiskContentState.ActualDealChange && e.ACTUAL_DEAL_USER_ID.HasValue && e.ACTUAL_DEAL_USER_ID.Value == subContent.ACTUAL_DEAL_USER_ID, filter, null).ToList(); if (listBack != null && listBack.Count > 0) { foreach (var item2 in listBack) { item2.LastDateUser = subContent.LastDateSystem; } listBackAll.AddRange(listBack); } } subContent.RiskContentState = (int)RiskContentState.ReportedDelay; subContent.LastDateUser = item.LastDateApply; listRiskContent.Add(subContent); item.CHCEKUSERID = subContent.CHECK_USER_ID;//指定验收人 if (!listCheckUserID.Contains(subContent.CHECK_USER_ID.Value)) { listCheckUserID.Add(subContent.CHECK_USER_ID.Value); var notice = NotificationTaskService.InsertUserNoticeTaskModel("延期整改通知单:" + entity.NAME.Replace("延期申请:", ""), entity.ID, entity.ORG_ID, subContent.CHECK_USER_ID.Value, subContent.Nav_UserCheck.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "BS046_SHOWPRINT"); listNotice.Add(notice); } dicContentIDDtEnd.Add(item.RISK_SUBMIT_CONTENT_ID, item.LastDateApply.Value); listLog.Add(AddModel(OPERATEPOINT_Enums.RiskDelayApplyCheck, entity.RISK_SUBMIT_ID, subContent.CHECK_USER_ID.Value, subContent.Nav_UserCheck.NAME, subContent.ORG_ID, 0, false, subContent.ID));//每个明细都要添加操作记录(最终查看是整改单) } #region 隐患整改单待办结束时间修改 var listTaskEndChange = GetEntities(e => e.NOTICE_STATUS == 0 && e.USER_ID == entity.USER_ID && e.SOURCE_DATA_ID.HasValue && e.SOURCE_FORMCODE == "BS044"); if (listTaskEndChange != null && listTaskEndChange.Any()) { var listTaskSourceID = listTaskEndChange.Select(e => e.SOURCE_DATA_ID.Value); var listContentDeal = GetEntities(e => listTaskSourceID.Contains(e.ID)); if (listContentDeal != null && listContentDeal.Any()) { T_FM_NOTIFICATION_TASK taskTemp = null; foreach (var item in listContentDeal) { if (dicContentIDDtEnd.ContainsKey(item.RISK_SUBMIT_CONTENT_ID.Value)) { taskTemp = listTaskEndChange.FirstOrDefault(e => e.SOURCE_DATA_ID.Value == item.ID); if (taskTemp != null) { taskTemp.TASK_ENDDT = dicContentIDDtEnd[item.RISK_SUBMIT_CONTENT_ID.Value]; listTaskBS044.Add(taskTemp); } } } } } #endregion if (listContent != null && listContent.Any()) { var listContentID = listContent.Select(e => e.RISK_SUBMIT_CONTENT_ID).ToList(); listLog.AddRange(GetUpdateDeal(OPERATEPOINT_Enums.RiskDelayApplyAudit, entity.RISK_SUBMIT_ID, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, listContentID, taskFinish.TASK_ENDDT)); } //修改 model UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); UpdateEntityNoCommit(entity);//修改状态 BantchUpdateEntityNoCommit(listContent);//修改整改落实人 BantchUpdateEntityNoCommit(listRiskContent);//修改上报详情整改期限、状态 if (listBackAll != null && listBackAll.Count > 0) BantchUpdateEntityNoCommit(listBackAll);//修改 自动生成的整改单 //if (notice != null)//发送通知 // UpdateEntityNoCommit(notice); if (listNotice.Count > 0)//发送通知 { BantchSaveEntityNoCommit(listNotice); } if (listTaskBS044 != null && listTaskBS044.Any())//隐患整改单修改 待办结束时间 BantchUpdateEntityNoCommit(listTaskBS044); if (listLog != null && listLog.Any())//下个审批节点 BantchSaveEntityNoCommit(listLog); }); } return true; } #endregion #region 尾矿库 /// /// 回采计划 审批流 /// /// /// public bool BackUpdate_TLBack(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false) { #region 审批公用 if (modelApp == null) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { //修改完 给 值班人 确认 单 var entity = GetEntity(modelApp.DATA_ID); entity.STATUS = PFStandardStatus.Sign;//审批完后 值变小(注) var listDetailUser = GetEntities(e => e.BACK_ID == entity.ID, "Nav_User"); List listUserId = new List(); List listUserName = new List(); foreach (var item in listDetailUser) { if (!listUserId.Contains(item.USER_ID)) { listUserId.Add(item.USER_ID); listUserName.Add(item.Nav_User.NAME); } } if (listUserId.Count < 1) { entity.STATUS = PFStandardStatus.Archived; this.UnifiedCommit(() => { UpdateEntityNoCommit(entity); if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { List listTaskNotice = NotificationTaskService.InsertUserNoticeTaskModels("回采计划-确认", entity.ID, entity.ORG_ID, listUserId, listUserName, DateTime.Now, 0, "TL014_SHOWPRINT", FMTASKTYPE.Default, null, null, null, APT.Infrastructure.Api.AppContext.CurrentSession.UserID); this.UnifiedCommit(() => { UpdateEntityNoCommit(entity); if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); if (listTaskNotice != null && listTaskNotice.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNotice); }); } } return true; } /// /// 回采计划 审批流 /// /// /// public bool BackUpdate_TLRecordBack(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false) { #region 审批公用 if (modelApp == null) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { //修改完 给 值班人 确认 单 var entity = GetEntity(modelApp.DATA_ID); entity.STATUS = PFStandardStatus.Archived;//审批完后 值变小(注) this.UnifiedCommit(() => { UpdateEntityNoCommit(entity); if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } return true; } /// /// 回采计划 审批流 /// /// /// public bool BackUpdate_TLWatchDayly(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false) { #region 审批公用 if (modelApp == null) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { //修改完 给 值班人 确认 单 var entity = GetEntity(modelApp.DATA_ID); entity.STATUS = PFStandardStatus.Archived;//审批完后 值变小(注) this.UnifiedCommit(() => { UpdateEntityNoCommit(entity); if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } return true; } #endregion #region 方法重复写 如有修改 需同步修改 BSOperateLogService 对应方法 public List GetListOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserIDLogin, List ListDATA_ID, List ListUserID, List ListUserName, Guid? ORG_ID, Guid? DATA_ID_SUB = null, List ListUserIDDone = null, bool isEnd = false, DateTime? TASK_ENDDT = null) { List listResult = new List(); T_BS_OPERATE_LOG modelLogUpdate = null; switch (OPERATEPOINT) { case OPERATEPOINT_Enums.GotCheck: //系统触发 只是新增 if (ListUserID != null && ListUserName != null && ListUserID.Any()) for (int i = 0; i < ListUserID.Count; i++) listResult.Add(AddModel(OPERATEPOINT, ListDATA_ID[i], ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB)); break; case OPERATEPOINT_Enums.CheckForm: //BS032保存并发送 到审批流 modelLogUpdate = GetUpdateDeal(OPERATEPOINT_Enums.GotCheck, DATA_ID, UserIDLogin, null, TASK_ENDDT); if (modelLogUpdate != null) listResult.Add(modelLogUpdate); if (ListUserID != null && ListUserName != null && ListUserID.Any()) for (int i = 0; i < ListUserID.Count; i++) listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));// OPERATEPOINT => OPERATEPOINT_Enums.CheckAudit break; case OPERATEPOINT_Enums.CheckAudit: modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的待办日志 if (modelLogUpdate != null) listResult.Add(modelLogUpdate); if (ListUserID != null && ListUserName != null && ListUserID.Any()) for (int i = 0; i < ListUserID.Count; i++)//最后一个审批人 添加 通知 listResult.Add(AddModel(OPERATEPOINT_Enums.CheckerCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB)); break; case OPERATEPOINT_Enums.CheckerCheck: modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的 if (modelLogUpdate != null) listResult.Add(modelLogUpdate); break; case OPERATEPOINT_Enums.CheckRegister: //检查登记 modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的 if (modelLogUpdate != null) listResult.Add(modelLogUpdate); if (ListUserID != null && ListUserName != null && ListUserID.Any()) for (int i = 0; i < ListUserID.Count; i++) //发起检查结果确认 listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAgree, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB)); break; case OPERATEPOINT_Enums.CheckAgree: modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的 if (modelLogUpdate != null) listResult.Add(modelLogUpdate); if (ListUserID != null && ListUserName != null && ListUserID.Any()) for (int i = 0; i < ListUserID.Count; i++) //检查结果确认完 直接到审批 listResult.Add(AddModel(OPERATEPOINT_Enums.CheckResultAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB)); break; case OPERATEPOINT_Enums.CheckResultAudit: modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的 if (modelLogUpdate != null) listResult.Add(modelLogUpdate); if (isEnd) //最后一个审批就归档 { var logEnd = AddModel(OPERATEPOINT_Enums.CheckEnd, DATA_ID, UserIDLogin, (modelLogUpdate != null ? modelLogUpdate.USRTNAME : APT.Infrastructure.Api.AppContext.CurrentSession.UserName), ORG_ID); logEnd.OPERTETIME = DateTime.Now; if (modelLogUpdate != null) logEnd.ISINTTIME = modelLogUpdate.ISINTTIME; listResult.Add(logEnd); } else if (DATA_ID_SUB != null) { //添加 隐患上报 安全检查环境 也加归档 var logEnd = AddModel(OPERATEPOINT_Enums.CheckEnd, DATA_ID, UserIDLogin, (modelLogUpdate != null ? modelLogUpdate.USRTNAME : APT.Infrastructure.Api.AppContext.CurrentSession.UserName), ORG_ID); logEnd.OPERTETIME = DateTime.Now; if (modelLogUpdate != null) logEnd.ISINTTIME = modelLogUpdate.ISINTTIME; listResult.Add(logEnd); if (ListUserID != null && ListUserName != null && ListUserID.Any()) for (int i = 0; i < ListUserID.Count; i++) //listResult.Add(AddModel(OPERATEPOINT_Enums.RiskGet, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB)); listResult.Add(AddModel(OPERATEPOINT_Enums.RiskGet, DATA_ID_SUB.Value, ListUserID[i], ListUserName[i], ORG_ID, i, false, null));//注意 入参把 隐患上报ID 传给参数 DATA_ID_SUB } break; case OPERATEPOINT_Enums.CheckEnd: //此处没操作 break; case OPERATEPOINT_Enums.RiskNoticeSD: break; case OPERATEPOINT_Enums.RiskUpSD: break; case OPERATEPOINT_Enums.RiskInfoCompleteSD: break; case OPERATEPOINT_Enums.RiskGet: modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//隐患待上报 不需要传递 子表ID if (modelLogUpdate != null) listResult.Add(modelLogUpdate); if (ListUserID != null && ListUserName != null && ListUserID.Any()) for (int i = 0; i < ListUserID.Count; i++) listResult.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));//子表拆分记录 break; //case OPERATEPOINT_Enums.RiskSend: // modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT); // if (modelLogUpdate != null) // listResult.Add(modelLogUpdate); // if (ListUserID != null && ListUserName != null && ListUserID.Any()) // for (int i = 0; i < ListUserID.Count; i++) // listResult.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB)); // break; case OPERATEPOINT_Enums.RiskSendAudit: modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//分子表处理 if (modelLogUpdate != null) listResult.Add(modelLogUpdate); if (ListUserID != null && ListUserName != null && ListUserID.Any()) for (int i = 0; i < ListUserID.Count; i++) listResult.Add(AddModel(OPERATEPOINT_Enums.RiskAssignActure, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB)); break; case OPERATEPOINT_Enums.RiskAssignActure: break; case OPERATEPOINT_Enums.RiskNoticeCheckerCheck: break; case OPERATEPOINT_Enums.RiskNoticeActureCheck: break; case OPERATEPOINT_Enums.RiskDeal: break; case OPERATEPOINT_Enums.RiskDealDealCheck: break; case OPERATEPOINT_Enums.RiskDealCheckerCheck: break; case OPERATEPOINT_Enums.RiskDealAudit: modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的 if (modelLogUpdate != null) listResult.Add(modelLogUpdate); var logEndRisk = AddModel(OPERATEPOINT_Enums.RiskEnd, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID); logEndRisk.OPERTETIME = DateTime.Now; if (modelLogUpdate != null) logEndRisk.ISINTTIME = modelLogUpdate.ISINTTIME; listResult.Add(logEndRisk); break; case OPERATEPOINT_Enums.RiskEnd: break; default: break; } if (ListUserIDDone != null && ListUserIDDone.Count > 0) { //除了登陆者 需要默认操作的 listResult.ForEach(e => { if (ListUserIDDone.Contains(e.USER_ID)) e.OPERTETIME = DateTime.Now; }); } return listResult; } /// /// 获取新记录 /// /// /// /// /// /// /// private T_BS_OPERATE_LOG AddModel(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, string UserName, Guid? ORG_ID, int ORDERNO = 0, bool isAddLog = false, Guid? DATA_ID_SUB = null) { if (!string.IsNullOrEmpty(UserName) && UserName.Contains("=>")) { try { UserName = UserName.Split(" ")[2]; } catch { } } T_BS_OPERATE_LOG ModelAdd = new T_BS_OPERATE_LOG() { ID = Guid.NewGuid(), ORG_ID = ORG_ID, LOGTYPE = ((int)OPERATEPOINT) > 80 ? LOGTYPE_Enums.RiskSubmit : LOGTYPE_Enums.SafeCheck, DATA_ID = DATA_ID, DATA_ID_SUB = DATA_ID_SUB, OPERATEPOINT = OPERATEPOINT, USER_ID = UserID, USRTNAME = UserName, ORDERNO = ORDERNO, //OPERTETIME = null, //ISINTTIME = false, CREATE_TIME = DateTime.Now, CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID }; if (isAddLog || (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue && APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value == UserID)) { ModelAdd.OPERTETIME = DateTime.Now;//默认通过 ModelAdd.ISINTTIME = true; } return ModelAdd; } /// /// 获取需要修改的Model /// /// 操作节点 /// /// /// /// /// 自动处理转办 /// private T_BS_OPERATE_LOG GetUpdateDeal(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, Guid? DATA_ID_SUB = null, DateTime? TASK_ENDDT = null, bool IsAutoFilter = true) { if (UserID == Guid.Empty) { return null; } Expression> expression = e => e.DATA_ID == DATA_ID && e.OPERATEPOINT == OPERATEPOINT && e.USER_ID == UserID; if (DATA_ID_SUB.HasValue) expression = expression.And(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB == DATA_ID_SUB); //var model = GetEntity(expression); var listModel = GetEntities(expression); T_BS_OPERATE_LOG model = null; if (listModel != null && listModel.Any()) { if (listModel.Count() == 1) model = listModel.ToList()[0]; else model = listModel.OrderByDescending(e => e.CREATE_TIME).ToList()[0]; } if (model == null && IsAutoFilter) { //转办 expression = e => e.DATA_ID == DATA_ID && e.OPERATEPOINT == OPERATEPOINT; if (DATA_ID_SUB.HasValue) expression = expression.And(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB == DATA_ID_SUB); listModel = GetEntities(expression); if (listModel != null && listModel.Count() == 1) { model = listModel.ToList()[0]; var UserOP = GetEntity(UserID); model.MODIFIER_ID = UserOP.ID; model.USRTNAME += (" => " + UserOP.NAME); } } if (model != null) { model.OPERTETIME = DateTime.Now; if (TASK_ENDDT != null) model.ISINTTIME = (model.OPERTETIME > TASK_ENDDT.Value ? false : true); } return model; } private IEnumerable GetUpdateDeal(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, IEnumerable listDataIdSub, DateTime TASK_ENDDT) { if (UserID == Guid.Empty) { return null; } Expression> expression = e => e.OPERATEPOINT == OPERATEPOINT && e.USER_ID == UserID; if (DATA_ID != Guid.Empty && listDataIdSub != null && listDataIdSub.Any()) expression = expression.And(e => e.DATA_ID == DATA_ID); if (listDataIdSub != null && listDataIdSub.Any()) expression = expression.And(e => e.DATA_ID_SUB.HasValue && listDataIdSub.Contains(e.DATA_ID_SUB.Value)); var listModel = GetEntities(expression); if (listModel != null && listModel.Any()) { foreach (var item in listModel) { item.OPERTETIME = DateTime.Now; if (TASK_ENDDT != null) item.ISINTTIME = (item.OPERTETIME > TASK_ENDDT ? false : true); } } return listModel; } #endregion #region 外包工程 /// /// 危险作业 审批流 /// /// /// public bool UserAgreeNew(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { var dangerousJob = GetEntity(t => t.ID == (modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID), "Nav_Detail", "Nav_Users"); var userId = Guid.Empty; var userName = ""; T_FM_NOTIFICATION_TASK sendNotice = null; List newDiscloseDetail = null; List ListDisCloseUsers = new List(); if (dangerousJob.START_TIME.HasValue && dangerousJob.START_TIME.Value >= DateTime.Now) { //开始时间大于当前时间才有后续的流程 newDiscloseDetail = new List(); foreach (var item in dangerousJob.Nav_Detail) { T_WB_DANGEROUS_JOB_DISCLOSE_DETAIL newItem = new T_WB_DANGEROUS_JOB_DISCLOSE_DETAIL(); newItem.ID = Guid.NewGuid(); newItem.ROW_NUM = item.ROW_NUM; newItem.PARENT_ID = item.PARENT_ID; newItem.MEASURE = item.MEASURE; newItem.REMARK = item.REMARK; newItem.ORG_ID = item.ORG_ID; newItem.ISORNOT = item.ISORNOT; newDiscloseDetail.Add(newItem); } //被交底人 默认 系统匹配作业人员和现场监护人员,可增加,点选外包单位信息登记表人员 foreach (var item in dangerousJob.Nav_Users) { ListDisCloseUsers.Add(new T_WB_DANGEROUS_JOB_DISCLOSE_USER() { ID = Guid.NewGuid(), ORG_ID = item.ORG_ID, PARENT_ID = item.PARENT_ID, USER_ID = item.USER_ID, DEAL_STATUS = (int)UserDealStatusEnum.待处理,// 0,//UserDealStatusEnum.已处理; }); } if (dangerousJob.USER_ID != Guid.Empty) { var check = ListDisCloseUsers.FirstOrDefault(e => e.USER_ID == dangerousJob.USER_ID); if (check == null) { ListDisCloseUsers.Add(new T_WB_DANGEROUS_JOB_DISCLOSE_USER() { ID = Guid.NewGuid(), ORG_ID = dangerousJob.ORG_ID, PARENT_ID = dangerousJob.ID, USER_ID = dangerousJob.USER_ID, DEAL_STATUS = (int)UserDealStatusEnum.待处理,// 0,//UserDealStatusEnum.已处理; }); } } //dangerousJob.Nav_Users = null; //dangerousJob.Nav_Detail = null; var project = GetEntity(t => t.ID == dangerousJob.PROJECT_ID); var outsafeuser = GetEntity(t => t.CODE == project.WB_USER_CODE); userId = outsafeuser.ID; userName = outsafeuser.NAME; dangerousJob.DISCLOSE = 1; dangerousJob.STATUS = PFStandardStatus.Archived; sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("外包工程危险作业安全技术交底表", dangerousJob.ID, dangerousJob.ORG_ID, userId, userName, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB019");//外包单位现场安全员安全技术交底 } else { //给申请人发送今日提醒 dangerousJob.STATUS = PFStandardStatus.Close; if (dangerousJob.CREATER_ID.HasValue) { userId = dangerousJob.CREATER_ID.Value; userName = GetEntity(userId)?.NAME; sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("危险作业申请审批结束已经超期,请重新发起", Guid.Empty, dangerousJob.ORG_ID, userId, userName, DateTime.Now, DateTime.Now.AddDays(1), 2, ""); } } UnifiedCommit(() => { if (sendNotice != null) AddEntityNoCommit(sendNotice); if (dangerousJob != null) UpdateEntityNoCommit(dangerousJob); if (newDiscloseDetail != null && newDiscloseDetail.Any()) BantchSaveEntityNoCommit(newDiscloseDetail); if (ListDisCloseUsers != null && ListDisCloseUsers.Any()) BantchSaveEntityNoCommit(ListDisCloseUsers); if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } return true; } ///// ///// 审核通过 ///// ///// ///// //[HttpPost, Route("UserAgree")] //public JsonActionResult UserAgree([FromBody] T_WB_SAFE_CHECK_RECORD entity) //{ // return SafeExecute(() => // { // var record = GetEntity(t => t.ID == entity.ID); // var currUser = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; // T_FM_NOTIFICATION_TASK sendNotice = null; // record.STATUS = PFStandardStatus.Archived; // //sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("外包工程危险作业-建设项目负责人审批", entity.ID, entity.ORG_ID, userId, userName, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB013_SHOWPRINT"); // var finishTask = NotificationTaskService.FOGetTaskFinishModel(entity.TaskID, entity.ID); // UnifiedCommit(() => // { // UpdateEntityNoCommit(record); // if (finishTask != null) // UpdateEntityNoCommit(finishTask); // if (sendNotice != null) // AddEntityNoCommit(sendNotice); // }); // return true; // }); //} /// /// 外包工程检查记录 审批流 /// /// /// public bool UserRecordAgreeNew(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { var record = GetEntity(t => t.ID == modelApp.DATA_ID); var currUser = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; record.STATUS = PFStandardStatus.Archived; //sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("外包工程危险作业-建设项目负责人审批", entity.ID, entity.ORG_ID, userId, userName, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB013_SHOWPRINT"); //var finishTask = NotificationTaskService.FOGetTaskFinishModel(entity.TaskID, entity.ID); //3、审批后,根据整改责任单位的外包单位汇总问题触发给外包单位 List ListNotice = null; List Details = null; List Files = null; List listTask = null; var risk = GetEntities(e => e.PARENT_ID == modelApp.DATA_ID && e.PROJECT_ID.HasValue && e.ISORNOT.HasValue && e.ISORNOT.Value == ISORNOT.是, "Nav_Files"); if (risk != null && risk.Count() > 0) { //检查发现了问题 var riskProjectID = risk.Select(e => e.PROJECT_ID.Value).Distinct(); var listInput = GetEntities(e => riskProjectID.Contains(e.ID) && !e.IS_DELETED);//外包单位找安全员 T_WB_PROJECT_INPUT project = null; var listPhont = listInput.Select(e => e.WB_USER_PHONE); var listUser = GetEntities(e => listPhont.Contains(e.PHONE) && e.ENABLE_STATUS == 0); T_WB_HIDDEN_DANGER_NOTIFY modelNotice = null; T_FM_NOTIFICATION_TASK taskNotice = null; Details = new List(); listTask = new List(); Files = new List(); ListNotice = new List(); foreach (var item in riskProjectID) { //找安全员 T_FM_USER userSafe = listUser.FirstOrDefault(e => e.PHONE == (listInput.First(e => e.ID == item).WB_USER_PHONE) && e.PROJECT_ID.HasValue); if (userSafe == null) { continue; } var proRisk = risk.Where(e => e.PROJECT_ID == item); modelNotice = new T_WB_HIDDEN_DANGER_NOTIFY(); taskNotice = new T_FM_NOTIFICATION_TASK(); modelNotice.ID = Guid.NewGuid(); modelNotice.ORG_ID = record.ORG_ID; modelNotice.CREATER_ID = currUser;//审批结束 modelNotice.CREATE_TIME = DateTime.Now; modelNotice.CHECK_TIME = DateTime.Now; modelNotice.PROJECT_ID = item; modelNotice.TASK_ID = record.TASK_ID; modelNotice.CODE = DateTime.Now.ToString("yyyyMMddHHmmss"); modelNotice.LAUNCH_USER_ID = userSafe.ID;//安全员 接收待办 //modelNotice.USER_ID = null;//检查人? 去明细取第一个 modelNotice.MineType = null; modelNotice.STATUS = PFStandardStatus.Draft; modelNotice.CODE = DateTime.Now.ToString("yyyyMMddHHmmss"); modelNotice.RECORD_ID = record.ID; project = listInput.FirstOrDefault(e => e.ID == item); if (project != null && project.DEPARTMENT_ID.HasValue) { modelNotice.DEPARTMENT_ID = project.DEPARTMENT_ID; } else { modelNotice.DEPARTMENT_ID = record.DEPARTMENT_ID; } int ROW_NUM = 0; Guid? NOTIFY_DETAIL_ID = null; string MineType = "_"; foreach (var itemD in proRisk) { if (modelNotice.USER_ID == Guid.Empty)//给单赋值 modelNotice.USER_ID = itemD.USER_ID.Value; ROW_NUM++; NOTIFY_DETAIL_ID = Guid.NewGuid(); Details.Add(new T_WB_HIDDEN_DANGER_NOTIFY_DETAIL() { ID = NOTIFY_DETAIL_ID.Value, ORG_ID = modelNotice.ORG_ID, CREATER_ID = currUser, CREATE_TIME = DateTime.Now, PARENT_ID = modelNotice.ID, ROW_NUM = ROW_NUM, MineType = itemD.MineType, AREA_ID = itemD.AREA_ID, DETAIL_ID = itemD.ID,//.TASK_DETAIL_ID, CHECK_CONTENT = itemD.CHECK_CONTENT, CHECK_BASIS = itemD.CHECK_BASIS, REMARK = itemD.REMARK, ADRESS = itemD.ADRESS, END_TIME = itemD.END_TIME.Value, //DETAIL_ID= itemD.TASK_DETAIL_ID, TASK_DETAIL_ID = itemD.TASK_DETAIL_ID, }); MineType += ((int)itemD.MineType) + "_"; if (itemD.Nav_Files != null && itemD.Nav_Files.Any()) { //附件 foreach (var itemDF in itemD.Nav_Files) { Files.Add(new T_WB_HIDDEN_DANGER_NOTIFY_DETAIL_FILE() { ID = Guid.NewGuid(), ORG_ID = modelNotice.ORG_ID, PARENT_ID = NOTIFY_DETAIL_ID.Value, IMG_FILE_ID = itemDF.IMG_FILE_ID }); } } } modelNotice.MineType = MineType; taskNotice = NotificationTaskService.InsertUserNoticeTaskModel("外包工程隐患整改通知", modelNotice.ID, modelNotice.ORG_ID, userSafe.ID, userSafe.NAME, DateTime.Now, 1, "WB037", FMTASKTYPE.Default);//WB037 ListNotice.Add(modelNotice); listTask.Add(taskNotice); } } UnifiedCommit(() => { UpdateEntityNoCommit(record); //if (finishTask != null) // UpdateEntityNoCommit(finishTask); //if (sendNotice != null) // AddEntityNoCommit(sendNotice); //审批 if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); //隐患通知 if (ListNotice != null && ListNotice.Count > 0) BantchSaveEntityNoCommit(ListNotice); if (Details != null && Details.Count > 0) BantchSaveEntityNoCommit(Details); if (Files != null && Files.Count > 0) BantchSaveEntityNoCommit(Files); if (listTask != null && listTask.Count > 0) BantchSaveEntityNoCommit(listTask); }); } return true; } /// /// 外包工程检查记录 审批流 /// /// /// public bool UserNoticeAgreeNew(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID); var currUser = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; T_FM_NOTIFICATION_TASK sendNotice = null; entity.STATUS = PFStandardStatus.Archived; T_WB_HIDDEN_DANGER_RECORD record = new T_WB_HIDDEN_DANGER_RECORD(); record.ID = Guid.NewGuid(); record.ORG_ID = entity.ORG_ID; record.NOTIFY_ID = entity.ID; record.TASK_ID = entity.TASK_ID; List recordDetails = new List(); List beforeFiles = new List(); BaseFilter recordFilter = new BaseFilter(entity.ORG_ID); recordFilter.Include = new string[] { "Nav_Files" }; var notifyDetails = GetEntities(t => t.PARENT_ID == entity.ID, recordFilter); foreach (var notifyDetail in notifyDetails) { T_WB_HIDDEN_DANGER_RECORD_DETAIL recordDetail = new T_WB_HIDDEN_DANGER_RECORD_DETAIL(); recordDetail.ID = Guid.NewGuid(); recordDetail.ORG_ID = entity.ORG_ID; recordDetail.PARENT_ID = record.ID; recordDetail.ROW_NUM = notifyDetail.ROW_NUM; recordDetail.MineType = notifyDetail.MineType; recordDetail.AREA_ID = notifyDetail.AREA_ID; recordDetail.CHECK_CONTENT = notifyDetail.CHECK_CONTENT; recordDetail.CHECK_BASIS = notifyDetail.CHECK_BASIS; recordDetail.REMARK = notifyDetail.REMARK; recordDetail.ADRESS = notifyDetail.ADRESS; recordDetail.END_TIME = notifyDetail.END_TIME; recordDetail.TASK_DETAIL_ID = notifyDetail.TASK_DETAIL_ID; recordDetails.Add(recordDetail); foreach (var file in notifyDetail.Nav_Files) { T_WB_HIDDEN_DANGER_RECORD_DETAIL_BEFORE_FILE file1 = new T_WB_HIDDEN_DANGER_RECORD_DETAIL_BEFORE_FILE(); file1.ID = file.ID; file1.ORG_ID = file.ORG_ID; file1.IMG_FILE_ID = file.IMG_FILE_ID; file1.PARENT_ID = recordDetail.ID; beforeFiles.Add(file1); } } var project = GetEntity(entity.PROJECT_ID); var user = GetEntity(t => t.CODE == project.WB_USER_CODE); //sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("外包工程隐患整改记录", record.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB039"); //var finishTask = NotificationTaskService.FOGetTaskFinishModel(entity.TaskID, entity.ID); sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("外包工程隐患整改记录", record.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, 1, "WB039", FMTASKTYPE.Default); UnifiedCommit(() => { UpdateEntityNoCommit(entity); //if (finishTask != null) // UpdateEntityNoCommit(finishTask); if (sendNotice != null) AddEntityNoCommit(sendNotice); if (record != null) AddEntityNoCommit(record); if (recordDetails != null && recordDetails.Any()) BantchSaveEntityNoCommit(recordDetails); if (beforeFiles != null && beforeFiles.Any()) BantchSaveEntityNoCommit(beforeFiles); //审批 if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } return true; } /// /// 整改记录 审批流 /// /// /// public bool HiddenDangerAgreeNew(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { var record = GetEntity(t => t.ID == modelApp.DATA_ID); var currUser = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; T_FM_NOTIFICATION_TASK sendNotice = null; if (modelApp.PARAM == "30") //月:触发给安环安全员审阅 { // 虽然审批结束 等 安环确认后再归档 var safeUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部安全员"); sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("外包工程隐患整改记录-安环部安全员审阅", record.ID, record.ORG_ID, safeUser.ID, safeUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB039_SHOWPRINT"); } else { record.STATUS = PFStandardStatus.Archived; } record.ENDTIME = DateTime.Now; UnifiedCommit(() => { UpdateEntityNoCommit(record); if (sendNotice != null) AddEntityNoCommit(sendNotice); //审批 if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } return true; } /// /// 整改记录 审批流 /// /// /// public bool RegisterAgreeNew(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } else { var register = GetEntity(t => t.ID == modelApp.DATA_ID); var project = GetEntity(t => t.ID == register.PROJECT_ID); register.STATUS = PFStandardStatus.Archived; //var finishTask = NotificationTaskService.FOGetTaskFinishModel(entity.TaskID, entity.ID); T_WB_TRAIN_SELECT select = new T_WB_TRAIN_SELECT(); select.ID = Guid.NewGuid(); select.ORG_ID = register.ORG_ID; select.PROJECT_ID = register.PROJECT_ID; var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel(project.UNIT_NAME + "-入厂安全培训指派", select.ID, register.ORG_ID, project.SCENE_USER_ID, GetEntity(project.SCENE_USER_ID).NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB006"); //UnifiedCommit(() => //{ // if (register != null) // UpdateEntityNoCommit(register); // if (sendNotice != null) // AddEntityNoCommit(sendNotice); // if (select != null) // AddEntityNoCommit(select); //}); //return true; //var record = GetEntity(t => t.ID == modelApp.DATA_ID); //var currUser = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; //T_FM_NOTIFICATION_TASK sendNotice = null; //if (modelApp.PARAM == "30") //月:触发给安环安全员审阅 //{ // // 虽然审批结束 等 安环确认后再归档 // var safeUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部安全员"); // sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("外包工程隐患整改记录-安环部安全员审阅", record.ID, record.ORG_ID, safeUser.ID, safeUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB039_SHOWPRINT"); //} //else //{ // record.STATUS = PFStandardStatus.Archived; //} //record.ENDTIME = DateTime.Now; UnifiedCommit(() => { if (register != null) UpdateEntityNoCommit(register); if (sendNotice != null) AddEntityNoCommit(sendNotice); if (select != null) AddEntityNoCommit(select); //UpdateEntityNoCommit(record); if (sendNotice != null) AddEntityNoCommit(sendNotice); //审批 if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点 BantchSaveEntityNoCommit(listTaskNext); }); } return true; } #endregion #region 双控HMR private bool BackUpdate_SKSecurityInspectionNotice(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID, "Nav_CheckType"); entity.STATUS = PFStandardStatus.Sign; var entityDetails = this.GetEntities(t => t.SECURITY_INSPECTION_NOTICE_ID == entity.ID, new BaseFilter(entity.ORG_ID), "Nav_CheckNoticeDetailUsers"); List sendNotices = new List(); List userIds = new List(); List applyUserIds = new List(); List detailUsers = new List(); if (entityDetails != null && entityDetails.Any()) { foreach (var user in entityDetails) { if (user.Nav_CheckNoticeDetailUsers != null && user.Nav_CheckNoticeDetailUsers.Any()) { var tempIds = user.Nav_CheckNoticeDetailUsers.Where(t => t.USER_ID == entity.APPLY_USER_ID).Select(t => t.ID).ToList(); if (tempIds != null && tempIds.Any()) { applyUserIds.AddRange(tempIds); } var ids = user.Nav_CheckNoticeDetailUsers.Where(m => m.USER_ID != null && m.USER_ID != entity.APPLY_USER_ID).Select(t => (Guid)t.USER_ID).Distinct().ToList(); userIds.AddRange(ids); } } } if (applyUserIds != null && applyUserIds.Any()) { detailUsers = this.GetEntities(t => applyUserIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToList(); detailUsers.ForEach(t => { t.ISCHECK = true; t.CHECKTIME = DateTime.Now; }); } userIds = userIds.Distinct().ToList(); if (userIds != null && userIds.Any()) { entity.STATUS = PFStandardStatus.Sign; var UserNames = new List(); var users = this.GetEntities(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToList(); foreach (var u in userIds) { var current = users.FirstOrDefault(t => t.ID == u); UserNames.Add(current?.NAME); } var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); //发消息 sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(entity.DEPARTMENT_TYPE.GetDescription() + "安全检查通知" + date + entity.Nav_CheckType?.NAME + "-确认", entity.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK006_SHOWPRINT"); } else { entity.STATUS = PFStandardStatus.Archived; } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (sendNotices != null && sendNotices.Any()) this.BantchSaveEntityNoCommit(sendNotices); if (entity != null) this.UpdateEntityNoCommit(entity); if (detailUsers != null && detailUsers.Any()) this.BantchSaveEntityNoCommit(detailUsers); }); } return true; } private bool BackUpdate_SKHiddenDangerReport(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID, "Nav_ReportFiles"); entity.STATUS = PFStandardStatus.Archived; var reportDetails = this.GetEntities(t => t.HIDDEN_DANGER_REPORT_ID == entity.ID, new BaseFilter(entity.ORG_ID), "Nav_ReportDetailFiles", "Nav_ReportDetailBasics", "Nav_ReportDetailReasons"); //List reportDetails = new List(); List sendNotices = new List(); List records = new List(); List photoList = new List(); List basicList = new List(); List notices = new List(); List nfileList = new List(); List noticeDetails = new List(); List noticeBasicList = new List(); List noticeFileList = new List(); List noticeReasonList = new List(); List reasonList = new List(); if (entity != null && reportDetails != null && reportDetails.Any()) { var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID), "Nav_ApproveRole"); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID), "Nav_User"); var random = new Random(); foreach (var detail in reportDetails) { var departId = users.FirstOrDefault(t => t.ID == detail.RECITIFY_USER_ID).DEPARTMENT_ID; var departUserId = departs.FirstOrDefault(t => t.ID == departId)?.USER_ID; if (detail.RECITIFY_USER_ID == entity.APPLY_USER_ID) { var acceptUser = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (acceptUser == null || (acceptUser != null && acceptUser.ID == detail.RECITIFY_USER_ID)) { acceptUser = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); } var user = users.FirstOrDefault(t => t.ID == entity.APPLY_USER_ID); detail.ISCHECK = true; detail.CHECKTIME = DateTime.Now; T_SK_HIDDEN_DANGER_RECTIFY_RECORD record = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD(); record.ORG_ID = detail.ORG_ID; record.APPLY_USER_ID = entity.APPLY_USER_ID; record.APPLY_DEPARTMENT_ID = entity.APPLY_DEPARTMENT_ID; record.HIDDEN_DANGER_REPORT_ID = entity.ID; record.HIDDEN_DANGER_REPORT_DETAIL_ID = detail.ID; record.HIDDEN_DANGER_CONFIRM_ID = null; record.CODE = "YHZG" + DateTime.Now.ToShortDateString().Replace("/", "") + random.Next(1, 999); record.MineType = entity.MineType; record.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; record.RISK_AREA_ID = detail.RISK_AREA_ID; record.HIDDEN_PLACE = detail.HIDDEN_PLACE; record.HIDDEN_DESCRIPTION = detail.HIDDEN_DESCRIPTION; record.HIDDEN_LEVEL = detail.HIDDEN_LEVEL; record.RECITIFY_TIME = detail.RECITIFY_TIME; record.RECITIFY_USER_ID = detail.RECITIFY_USER_ID; record.IMPLEMENT_USER_ID = detail.RECITIFY_USER_ID; record.ACCEPT_USER_ID = acceptUser.ID; record.CHECK_PERSON = entity.CHECK_PERSON; record.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; record.CHECK_QUESTION_ID = detail.CHECK_QUESTION_ID; record.CHECK_CONTENTS_ID = detail.CHECK_CONTENTS_ID; record.CHECK_TIME = entity.CHECK_TIME != null ? entity.CHECK_TIME : DateTime.Now; records.Add(record); if (detail.Nav_ReportDetailFiles != null && detail.Nav_ReportDetailFiles.Any()) { foreach (var item in detail.Nav_ReportDetailFiles) { T_SK_HIDDEN_DANGER_RECTIFY_RECORD_PHOTOA file = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD_PHOTOA(); file.ORG_ID = item.ORG_ID; file.IMG_FILE_ID = item.IMG_FILE_ID; file.HIDDEN_DANGER_RECTIFY_RECORD_ID = record.ID; photoList.Add(file); } } if (detail.Nav_ReportDetailBasics != null && detail.Nav_ReportDetailBasics.Any()) { foreach (var item in detail.Nav_ReportDetailBasics) { T_SK_HIDDEN_DANGER_RECTIFY_RECORD_BASIC file = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD_BASIC(); file.ORG_ID = item.ORG_ID; file.LAW_ID = item.LAW_ID; file.HIDDEN_DANGER_RECTIFY_RECORD_ID = record.ID; basicList.Add(file); } } if (detail.Nav_ReportDetailReasons != null && detail.Nav_ReportDetailReasons.Any()) { foreach (var item in detail.Nav_ReportDetailReasons) { T_SK_HIDDEN_DANGER_RECTIFY_RECORD_REASON file = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD_REASON(); file.ORG_ID = item.ORG_ID; file.REASON_ID = item.REASON_ID; file.HIDDEN_DANGER_RECTIFY_RECORD_ID = record.ID; reasonList.Add(file); } } var endtime = DateTime.Now.AddDays(3); if (record.RECITIFY_TIME != null && record.RECITIFY_TIME != DateTime.MinValue) { endtime = DateTime.Parse(record.RECITIFY_TIME.Value.ToShortDateString() + " 23:59:59"); } var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改记录表", record.ID, record.ORG_ID, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK022"); sendNotices.Add(sendNotice); detail.Nav_ReportDetailFiles = null; detail.Nav_ReportDetailBasics = null; //reportDetails.Add(detail); } else if (departUserId != null && detail.RECITIFY_USER_ID != departUserId) { var acceptUser = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (acceptUser == null || (acceptUser != null && acceptUser.ID == detail.RECITIFY_USER_ID)) { acceptUser = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); } var user = users.FirstOrDefault(t => t.ID == detail.RECITIFY_USER_ID); detail.ISCHECK = true; detail.CHECKTIME = DateTime.Now; T_SK_HIDDEN_DANGER_RECTIFY_RECORD record = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD(); record.ORG_ID = detail.ORG_ID; record.APPLY_USER_ID = entity.APPLY_USER_ID; record.APPLY_DEPARTMENT_ID = entity.APPLY_DEPARTMENT_ID; record.HIDDEN_DANGER_REPORT_ID = entity.ID; record.HIDDEN_DANGER_REPORT_DETAIL_ID = detail.ID; record.HIDDEN_DANGER_CONFIRM_ID = null; record.CODE = "YHZG" + DateTime.Now.ToShortDateString().Replace("/", "") + random.Next(1, 999); record.MineType = entity.MineType; record.RISK_AREA_ID = detail.RISK_AREA_ID; record.HIDDEN_PLACE = detail.HIDDEN_PLACE; record.HIDDEN_DESCRIPTION = detail.HIDDEN_DESCRIPTION; record.HIDDEN_LEVEL = detail.HIDDEN_LEVEL; record.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; record.RECITIFY_TIME = detail.RECITIFY_TIME; record.RECITIFY_USER_ID = detail.RECITIFY_USER_ID; record.IMPLEMENT_USER_ID = detail.RECITIFY_USER_ID; record.ACCEPT_USER_ID = acceptUser.ID; record.CHECK_PERSON = entity.CHECK_PERSON; record.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; record.CHECK_QUESTION_ID = detail.CHECK_QUESTION_ID; record.CHECK_CONTENTS_ID = detail.CHECK_CONTENTS_ID; record.CHECK_TIME = entity.CHECK_TIME != null ? entity.CHECK_TIME : DateTime.Now; records.Add(record); if (detail.Nav_ReportDetailFiles != null && detail.Nav_ReportDetailFiles.Any()) { foreach (var item in detail.Nav_ReportDetailFiles) { T_SK_HIDDEN_DANGER_RECTIFY_RECORD_PHOTOA file = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD_PHOTOA(); file.ORG_ID = item.ORG_ID; file.IMG_FILE_ID = item.IMG_FILE_ID; file.HIDDEN_DANGER_RECTIFY_RECORD_ID = record.ID; photoList.Add(file); } } if (detail.Nav_ReportDetailBasics != null && detail.Nav_ReportDetailBasics.Any()) { foreach (var item in detail.Nav_ReportDetailBasics) { T_SK_HIDDEN_DANGER_RECTIFY_RECORD_BASIC file = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD_BASIC(); file.ORG_ID = item.ORG_ID; file.LAW_ID = item.LAW_ID; file.HIDDEN_DANGER_RECTIFY_RECORD_ID = record.ID; basicList.Add(file); } } if (detail.Nav_ReportDetailReasons != null && detail.Nav_ReportDetailReasons.Any()) { foreach (var item in detail.Nav_ReportDetailReasons) { T_SK_HIDDEN_DANGER_RECTIFY_RECORD_REASON file = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD_REASON(); file.ORG_ID = item.ORG_ID; file.REASON_ID = item.REASON_ID; file.HIDDEN_DANGER_RECTIFY_RECORD_ID = record.ID; reasonList.Add(file); } } var endtime = DateTime.Now.AddDays(3); if (record.RECITIFY_TIME != null && record.RECITIFY_TIME != DateTime.MinValue) { endtime = DateTime.Parse(record.RECITIFY_TIME.Value.ToShortDateString() + " 23:59:59"); } var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改记录表", record.ID, record.ORG_ID, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK022"); sendNotices.Add(sendNotice); detail.Nav_ReportDetailFiles = null; detail.Nav_ReportDetailBasics = null; } else { T_SK_HIDDEN_DANGER_RECTIFY_NOTICE notice = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE(); notice.ORG_ID = detail.ORG_ID; notice.HIDDEN_DANGER_REPORT_ID = entity.ID; notice.HIDDEN_DANGER_REPORT_DETAIL_ID = detail.ID; notice.HIDDEN_DANGER_CONFIRM_ID = null; notice.APPLY_USER_ID = entity.APPLY_USER_ID; notice.APPLY_DEPARTMENT_ID = entity.APPLY_DEPARTMENT_ID; notice.MineType = entity.MineType; notice.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; notice.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; notice.PLANCHECKFREQUENCY = entity.PLANCHECKFREQUENCY; notice.DEPARTMENT_TYPE = entity.DEPARTMENT_TYPE; notice.CHECK_TIME = entity.CHECK_TIME!=null ? entity.CHECK_TIME :DateTime.Now; notice.CHECK_PERSON = entity.CHECK_PERSON; notices.Add(notice); if (entity.Nav_ReportFiles != null && entity.Nav_ReportFiles.Any()) { foreach (var item in entity.Nav_ReportFiles) { T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_FILE file = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_FILE(); file.ORG_ID = item.ORG_ID; file.IMG_FILE_ID = item.IMG_FILE_ID; file.HIDDEN_DANGER_RECTIFY_NOTICE_ID = notice.ID; nfileList.Add(file); } } T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL noticeDetail = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL(); noticeDetail.ORG_ID = entity.ORG_ID; noticeDetail.HIDDEN_DANGER_RECTIFY_NOTICE_ID = notice.ID; noticeDetail.RISK_AREA_ID = detail.RISK_AREA_ID; noticeDetail.CHECK_CONTENTS_ID = detail.CHECK_CONTENTS_ID; noticeDetail.CHECK_QUESTION_ID = detail.CHECK_QUESTION_ID; noticeDetail.CHECKCONTENT = detail.CHECKCONTENT; noticeDetail.CHECKPROOF = detail.CHECKPROOF; noticeDetail.CHECKSTANDARD = detail.CHECKSTANDARD; noticeDetail.HIDDEN_DESCRIPTION = detail.HIDDEN_DESCRIPTION; noticeDetail.HIDDEN_LEVEL = detail.HIDDEN_LEVEL; noticeDetail.HIDDEN_PLACE = detail.HIDDEN_PLACE; noticeDetail.RECITIFY_TIME = detail.RECITIFY_TIME; noticeDetail.RECITIFY_USER_ID = detail.RECITIFY_USER_ID; noticeDetails.Add(noticeDetail); if (detail.Nav_ReportDetailFiles != null && detail.Nav_ReportDetailFiles.Any()) { foreach (var item in detail.Nav_ReportDetailFiles) { T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_FILE file = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_FILE(); file.ORG_ID = item.ORG_ID; file.IMG_FILE_ID = item.IMG_FILE_ID; file.HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_ID = noticeDetail.ID; noticeFileList.Add(file); } } if (detail.Nav_ReportDetailBasics != null && detail.Nav_ReportDetailBasics.Any()) { foreach (var item in detail.Nav_ReportDetailBasics) { T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_BASIC file = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_BASIC(); file.ORG_ID = item.ORG_ID; file.LAW_ID = item.LAW_ID; file.HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_ID = noticeDetail.ID; noticeBasicList.Add(file); } } if (detail.Nav_ReportDetailReasons != null && detail.Nav_ReportDetailReasons.Any()) { foreach (var item in detail.Nav_ReportDetailReasons) { T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_REASON file = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_REASON(); file.ORG_ID = item.ORG_ID; file.REASON_ID = item.REASON_ID; file.HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_ID = noticeDetail.ID; noticeReasonList.Add(file); } } 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) { var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改通知表", notice.ID, notice.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(1), (int)FMNoticeTypeEnum.消息, "SK020"); sendNotices.Add(sendNotice); } detail.Nav_ReportDetailBasics = null; detail.Nav_ReportDetailFiles = null; } var checkUser = users.FirstOrDefault(t => t.ID == detail.RECITIFY_USER_ID); if (checkUser != null) { var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("隐患上报表" + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0') + "-确认", entity.ID, entity.ORG_ID, checkUser.ID, checkUser.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK014_SHOWPRINT"); sendNotices.Add(sendNotice); entity.STATUS = PFStandardStatus.Sign; } //if (detail.IS_STORE == SKIsStoreEnum.Yes) //{ // //触发双重预防机制 // T_SK_DOUBLE_PREVENT_MECHANISM prevent = new T_SK_DOUBLE_PREVENT_MECHANISM(); // prevent.ORG_ID = entity.ORG_ID; // prevent.HIDDEN_DANGER_REPORT_ID = entity.ID; // prevent.APPLY_USER_ID = entity.APPLY_USER_ID; // prevent.APPLY_DEPARTMENT_ID = entity.APPLY_DEPARTMENT_ID; // prevent.RISK_AREA_ID = detail.RISK_AREA_ID; // prevent.CHECK_CONTENTS_ID = detail.CHECK_CONTENTS_ID; // prevent.CHECKCONTENT = detail.CHECKCONTENT; // prevent.CHECKPROOF = detail.CHECKPROOF; // prevent.CHECKSTANDARD = detail.CHECKSTANDARD; // prevent.HIDDEN_DESCRIPTION = detail.HIDDEN_DESCRIPTION; // prevent.HIDDEN_LEVEL = detail.HIDDEN_LEVEL; // prevent.HIDDEN_PLACE = detail.HIDDEN_PLACE; // prevents.Add(prevent); // if (detail.Nav_ReportDetailFiles != null && detail.Nav_ReportDetailFiles.Any()) // { // foreach (var item in detail.Nav_ReportDetailFiles) // { // T_SK_DOUBLE_PREVENT_MECHANISM_FILE file = new T_SK_DOUBLE_PREVENT_MECHANISM_FILE(); // file.ORG_ID = item.ORG_ID; // file.IMG_FILE_ID = item.IMG_FILE_ID; // file.DOUBLE_PREVENT_MECHANISM_ID = prevent.ID; // fileList.Add(file); // } // } // var departId = users.FirstOrDefault(t => t.ID == detail.RECITIFY_USER_ID).DEPARTMENT_ID; // 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) // { // var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("风险检查关联表", prevent.ID, prevent.ORG_ID, user.ID, user.NAME, DateTime.Now, // DateTime.Now.AddDays(1), (int)FMNoticeTypeEnum.消息, "SK026"); // sendNotices.Add(sendNotice); // } //} } } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (sendNotices != null && sendNotices.Any()) this.BantchSaveEntityNoCommit(sendNotices); if (entity != null) this.UpdateEntityNoCommit(entity); if (reportDetails != null && reportDetails.Any()) this.BantchSaveEntityNoCommit(reportDetails); if (records != null && records.Any()) this.BantchSaveEntityNoCommit(records); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (nfileList != null && nfileList.Any()) this.BantchSaveEntityNoCommit(nfileList); if (photoList != null && photoList.Any()) this.BantchSaveEntityNoCommit(photoList); if (basicList != null && basicList.Any()) this.BantchSaveEntityNoCommit(basicList); if (reasonList != null && reasonList.Any()) this.BantchSaveEntityNoCommit(reasonList); if (noticeDetails != null && noticeDetails.Any()) this.BantchSaveEntityNoCommit(noticeDetails); if (noticeFileList != null && noticeFileList.Any()) this.BantchSaveEntityNoCommit(noticeFileList); if (noticeBasicList != null && noticeBasicList.Any()) this.BantchSaveEntityNoCommit(noticeBasicList); if (noticeReasonList != null && noticeReasonList.Any()) this.BantchSaveEntityNoCommit(noticeReasonList); }); } return true; } private bool BackUpdate_SKHiddenDangerConfirm(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID, "Nav_Report", "Nav_Reasons", "Nav_Files"); entity.STATUS = PFStandardStatus.Archived; var photos = this.GetEntities(t => t.HIDDEN_DANGER_CONFIRM_ID == entity.ID, new BaseFilter(entity.ORG_ID)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID), "Nav_ApproveRole"); T_SK_DOUBLE_PREVENT_MECHANISM prevent = null; List fileList = new List(); List sendNotices = new List(); T_SK_HIDDEN_DANGER_RECTIFY_RECORD record = null; List photoList = new List(); T_SK_HIDDEN_DANGER_RECTIFY_NOTICE notice = null; List noticeFiles = new List(); List noticeDetails = new List(); List noticeFileList = new List(); List noticeReasonList = new List(); List reasonList = new List(); //if (entity != null && entity.IS_STORE == SKIsStoreEnum.Yes && entity.RECITIFY_USER_ID != null) //{ // //触发双重预防机制 // prevent = new T_SK_DOUBLE_PREVENT_MECHANISM(); // prevent.ORG_ID = entity.ORG_ID; // prevent.HIDDEN_DANGER_CONFIRM_ID = entity.ID; // prevent.APPLY_USER_ID = entity.APPLY_USER_ID; // prevent.APPLY_DEPARTMENT_ID = entity.APPLY_DEPARTMENT_ID; // prevent.RISK_AREA_ID = entity.RISK_AREA_ID; // prevent.CHECK_CONTENTS_ID = entity.CHECK_CONTENTS_ID; // prevent.CHECKCONTENT = entity.CHECKCONTENT; // prevent.CHECKPROOF = entity.CHECKPROOF; // prevent.CHECKSTANDARD = entity.CHECKSTANDARD; // prevent.HIDDEN_DESCRIPTION = entity.HIDDEN_DESCRIPTION; // prevent.HIDDEN_LEVEL = entity.HIDDEN_LEVEL; // prevent.HIDDEN_PLACE = entity.HIDDEN_PLACE; // prevent.RECTIFICATION_MEASURES = entity.RECTIFICATION_MEASURES; // if (entity.Nav_Photos != null && entity.Nav_Photos.Any()) // { // foreach (var item in entity.Nav_Photos) // { // T_SK_DOUBLE_PREVENT_MECHANISM_FILE file = new T_SK_DOUBLE_PREVENT_MECHANISM_FILE(); // file.ORG_ID = item.ORG_ID; // file.IMG_FILE_ID = item.IMG_FILE_ID; // file.DOUBLE_PREVENT_MECHANISM_ID = prevent.ID; // fileList.Add(file); // } // } // var departId = users.FirstOrDefault(t => t.ID == entity.RECITIFY_USER_ID).DEPARTMENT_ID; // 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) // { // var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("风险检查关联表", prevent.ID, prevent.ORG_ID, user.ID, user.NAME, DateTime.Now, // DateTime.Now.AddDays(1), (int)FMNoticeTypeEnum.消息, "SK026"); // sendNotices.Add(sendNotice); // } //} if (entity != null && entity.RECITIFY_USER_ID != null) { var departId = users.FirstOrDefault(t => t.ID == entity.RECITIFY_USER_ID).DEPARTMENT_ID; var departUserId = this.GetEntity(t => t.ID == departId)?.USER_ID; if (entity.RECITIFY_USER_ID == entity.APPLY_USER_ID) { var acceptUser = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (acceptUser == null || (acceptUser != null && acceptUser.ID == entity.RECITIFY_USER_ID)) { acceptUser = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); } var user = users.FirstOrDefault(t => t.ID == entity.APPLY_USER_ID); record = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD(); record.APPLY_DEPARTMENT_ID = entity.APPLY_DEPARTMENT_ID; record.APPLY_USER_ID = entity.APPLY_USER_ID; record.ORG_ID = entity.ORG_ID; record.HIDDEN_DANGER_REPORT_ID = entity.Nav_Report?.ID; record.HIDDEN_DANGER_CONFIRM_ID = entity.ID; record.CODE = "YHZG" + DateTime.Now.ToShortDateString().Replace("/", "") + new Random().Next(1, 999); record.MineType = entity.MineType; record.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; record.RISK_AREA_ID = entity.RISK_AREA_ID; record.HIDDEN_PLACE = entity.HIDDEN_PLACE; record.CHECK_CONTENTS_ID = entity.CHECK_CONTENTS_ID; record.CHECK_QUESTION_ID = entity.CHECK_QUESTION_ID; record.HIDDEN_DESCRIPTION = entity.HIDDEN_DESCRIPTION; record.HIDDEN_LEVEL = entity.HIDDEN_LEVEL; record.RECITIFY_TIME = entity.RECITIFY_TIME; record.RECITIFY_USER_ID = entity.RECITIFY_USER_ID; record.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; record.CHECK_TIME = entity.Nav_Report?.CREATE_TIME; record.CHECK_PERSON = user.NAME; record.IMPLEMENT_USER_ID = entity.RECITIFY_USER_ID; record.ACCEPT_USER_ID = acceptUser.ID; record.RECTIFICATION_MEASURES = entity.RECTIFICATION_MEASURES; if (photos != null && photos.Any()) { foreach (var item in photos) { T_SK_HIDDEN_DANGER_RECTIFY_RECORD_PHOTOA file = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD_PHOTOA(); file.ORG_ID = item.ORG_ID; file.IMG_FILE_ID = item.IMG_FILE_ID; file.HIDDEN_DANGER_RECTIFY_RECORD_ID = record.ID; photoList.Add(file); } } if (entity.Nav_Reasons != null && entity.Nav_Reasons.Any()) { foreach (var item in entity.Nav_Reasons) { T_SK_HIDDEN_DANGER_RECTIFY_RECORD_REASON file = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD_REASON(); file.ORG_ID = item.ORG_ID; file.REASON_ID = item.REASON_ID; file.HIDDEN_DANGER_RECTIFY_RECORD_ID = record.ID; reasonList.Add(file); } } var endtime = DateTime.Now.AddDays(3); if (record.RECITIFY_TIME != null && record.RECITIFY_TIME != DateTime.MinValue) { endtime = DateTime.Parse(record.RECITIFY_TIME.Value.ToShortDateString() + " 23:59:59"); } var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改记录表", record.ID, record.ORG_ID, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK022"); sendNotices.Add(sendNotice); } else if (departUserId != null && entity.RECITIFY_USER_ID != departUserId) { var user = users.FirstOrDefault(t => t.ID == entity.RECITIFY_USER_ID); if (user != null) { var acceptUser = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (acceptUser == null || (acceptUser != null && acceptUser.ID == entity.RECITIFY_USER_ID)) { acceptUser = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); } record = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD(); record.APPLY_DEPARTMENT_ID = entity.APPLY_DEPARTMENT_ID; record.APPLY_USER_ID = entity.APPLY_USER_ID; record.ORG_ID = entity.ORG_ID; record.HIDDEN_DANGER_REPORT_ID = entity.Nav_Report?.ID; record.HIDDEN_DANGER_CONFIRM_ID = entity.ID; record.CODE = "YHZG" + DateTime.Now.ToShortDateString().Replace("/", "") + new Random().Next(1, 999); record.MineType = entity.MineType; record.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; record.RISK_AREA_ID = entity.RISK_AREA_ID; record.HIDDEN_PLACE = entity.HIDDEN_PLACE; record.CHECK_CONTENTS_ID = entity.CHECK_CONTENTS_ID; record.CHECK_QUESTION_ID = entity.CHECK_QUESTION_ID; record.HIDDEN_DESCRIPTION = entity.HIDDEN_DESCRIPTION; record.HIDDEN_LEVEL = entity.HIDDEN_LEVEL; record.RECITIFY_TIME = entity.RECITIFY_TIME; record.RECITIFY_USER_ID = entity.RECITIFY_USER_ID; record.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; record.CHECK_TIME = entity.Nav_Report?.CREATE_TIME; record.CHECK_PERSON = user.NAME; record.IMPLEMENT_USER_ID = entity.RECITIFY_USER_ID; record.ACCEPT_USER_ID = acceptUser.ID; record.RECTIFICATION_MEASURES = entity.RECTIFICATION_MEASURES; if (photos != null && photos.Any()) { foreach (var item in photos) { T_SK_HIDDEN_DANGER_RECTIFY_RECORD_PHOTOA file = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD_PHOTOA(); file.ORG_ID = item.ORG_ID; file.IMG_FILE_ID = item.IMG_FILE_ID; file.HIDDEN_DANGER_RECTIFY_RECORD_ID = record.ID; photoList.Add(file); } } if (entity.Nav_Reasons != null && entity.Nav_Reasons.Any()) { foreach (var item in entity.Nav_Reasons) { T_SK_HIDDEN_DANGER_RECTIFY_RECORD_REASON file = new T_SK_HIDDEN_DANGER_RECTIFY_RECORD_REASON(); file.ORG_ID = item.ORG_ID; file.REASON_ID = item.REASON_ID; file.HIDDEN_DANGER_RECTIFY_RECORD_ID = record.ID; reasonList.Add(file); } } var endtime = DateTime.Now.AddDays(3); if (record.RECITIFY_TIME != null && record.RECITIFY_TIME != DateTime.MinValue) { endtime = DateTime.Parse(record.RECITIFY_TIME.Value.ToShortDateString() + " 23:59:59"); } var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改记录表", record.ID, record.ORG_ID, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK022"); sendNotices.Add(sendNotice); } } else { notice = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE(); notice.ORG_ID = entity.ORG_ID; notice.HIDDEN_DANGER_REPORT_ID = entity.Nav_Report?.ID; notice.HIDDEN_DANGER_CONFIRM_ID = entity.ID; notice.APPLY_USER_ID = entity.APPLY_USER_ID; notice.APPLY_DEPARTMENT_ID = entity.APPLY_DEPARTMENT_ID; notice.MineType = entity.MineType; notice.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; notice.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; notice.PLANCHECKFREQUENCY = entity.PLANCHECKFREQUENCY; notice.DEPARTMENT_TYPE = entity.DEPARTMENT_TYPE; notice.CREATE_TIME = entity.Nav_Report?.CREATE_TIME; notice.CHECK_PERSON = entity.Nav_ApplyUser?.NAME; if (entity.Nav_Files != null && entity.Nav_Files.Any()) { foreach (var item in entity.Nav_Files) { T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_FILE file = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_FILE(); file.ORG_ID = item.ORG_ID; file.IMG_FILE_ID = item.IMG_FILE_ID; file.HIDDEN_DANGER_RECTIFY_NOTICE_ID = notice.ID; noticeFiles.Add(file); } } T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL noticeDetail = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL(); noticeDetail.ORG_ID = entity.ORG_ID; noticeDetail.HIDDEN_DANGER_RECTIFY_NOTICE_ID = notice.ID; noticeDetail.RISK_AREA_ID = entity.RISK_AREA_ID; noticeDetail.CHECK_CONTENTS_ID = entity.CHECK_CONTENTS_ID; noticeDetail.CHECK_QUESTION_ID = entity.CHECK_QUESTION_ID; noticeDetail.CHECKCONTENT = entity.CHECKCONTENT; noticeDetail.CHECKPROOF = entity.CHECKPROOF; noticeDetail.CHECKSTANDARD = entity.CHECKSTANDARD; noticeDetail.HIDDEN_DESCRIPTION = entity.HIDDEN_DESCRIPTION; noticeDetail.RECTIFICATION_MEASURES = entity.RECTIFICATION_MEASURES; noticeDetail.HIDDEN_LEVEL = entity.HIDDEN_LEVEL; noticeDetail.HIDDEN_PLACE = entity.HIDDEN_PLACE; noticeDetail.RECITIFY_TIME = entity.RECITIFY_TIME; noticeDetail.RECITIFY_USER_ID = entity.RECITIFY_USER_ID; noticeDetails.Add(noticeDetail); if (photos != null && photos.Any()) { foreach (var item in photos) { T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_FILE file = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_FILE(); file.ORG_ID = item.ORG_ID; file.IMG_FILE_ID = item.IMG_FILE_ID; file.HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_ID = noticeDetail.ID; noticeFileList.Add(file); } } if (entity.Nav_Reasons != null && entity.Nav_Reasons.Any()) { foreach (var item in entity.Nav_Reasons) { T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_REASON file = new T_SK_HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_REASON(); file.ORG_ID = item.ORG_ID; file.REASON_ID = item.REASON_ID; file.HIDDEN_DANGER_RECTIFY_NOTICE_DETAIL_ID = noticeDetail.ID; noticeReasonList.Add(file); } } 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) { var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("隐患整改通知表", notice.ID, notice.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(1), (int)FMNoticeTypeEnum.消息, "SK020"); sendNotices.Add(sendNotice); } } var checkUser = users.FirstOrDefault(t => t.ID == entity.RECITIFY_USER_ID); if (checkUser != null) { var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("隐患确认单" + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0') + "-确认", entity.ID, entity.ORG_ID, checkUser.ID, checkUser.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK018_SHOWPRINT"); sendNotices.Add(sendNotice); entity.STATUS = PFStandardStatus.Sign; } } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (prevent != null) this.UpdateEntityNoCommit(prevent); if (fileList != null && fileList.Count > 0) BantchSaveEntityNoCommit(fileList); if (sendNotices != null && sendNotices.Any()) this.BantchSaveEntityNoCommit(sendNotices); if (record != null) this.UpdateEntityNoCommit(record); if (photoList != null && photoList.Any()) this.BantchSaveEntityNoCommit(photoList); if (reasonList != null && reasonList.Any()) this.BantchSaveEntityNoCommit(reasonList); if (notice != null) this.UpdateEntityNoCommit(notice); if (noticeFiles != null && noticeFiles.Any()) this.BantchSaveEntityNoCommit(noticeFiles); if (noticeDetails != null && noticeDetails.Any()) this.BantchSaveEntityNoCommit(noticeDetails); if (noticeFileList != null && noticeFileList.Any()) this.BantchSaveEntityNoCommit(noticeFileList); if (noticeReasonList != null && noticeReasonList.Any()) this.BantchSaveEntityNoCommit(noticeReasonList); }); } return true; } private bool BackUpdate_SKHiddenDangerRectifyRecord(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID); entity.STATUS = PFStandardStatus.Archived; UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); }); } return true; } private bool BackUpdate_SKHiddenDangerRectifyDelayApply(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID); entity.STATUS = PFStandardStatus.Reading; var record = this.GetEntity(t => t.ID == entity.HIDDEN_DANGER_RECTIFY_RECORD_ID, "Nav_AcceptUser"); record.RECITIFY_TIME = entity.DELAY_RECITIFY_TIME; var noticeTasks = this.GetEntities(t => t.SOURCE_DATA_ID == entity.HIDDEN_DANGER_RECTIFY_RECORD_ID && t.NOTICE_STATUS == 0,new BaseFilter(entity.ORG_ID)); noticeTasks.ForEach(t => { t.TASK_ENDDT = entity.DELAY_RECITIFY_TIME.Value; }); T_FM_NOTIFICATION_TASK notice = null; if (record != null && record.ACCEPT_USER_ID != null) { notice = NotificationTaskService.InsertUserNoticeTaskModel("延期整改申请-审阅", entity.ID, entity.ORG_ID, (Guid)record.ACCEPT_USER_ID, record.Nav_AcceptUser?.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK024_SHOWPRINT"); } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (record != null) this.UpdateEntityNoCommit(record); if (notice != null) this.UpdateEntityNoCommit(notice); if (noticeTasks != null && noticeTasks.Any()) BantchSaveEntityNoCommit(noticeTasks); }); } return true; } private bool BackUpdate_SKDoublePreventMechanism(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID); entity.STATUS = PFStandardStatus.Archived; List libraryIds = new List(); List libraryDepartIds = new List(); List detailIds = new List(); List contentIds = new List(); List departIds = new List(); List postIds = new List(); List hiddenIds = new List(); List libraryList = new List(); List libraryDepartList = new List(); List detailList = new List(); List contentList = new List(); List departList = new List(); List postList = new List(); List hiddenList = new List(); //var librarys = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)); //var libraryDetails = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(entity.ORG_ID)); //var libraryDeparts = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(entity.ORG_ID)); //var libraryContents = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(entity.ORG_ID)); //var contentDeparts = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(entity.ORG_ID)); //var contentPosts = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(entity.ORG_ID)); //var libraryHiddens = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(entity.ORG_ID)); if (entity != null) { //var details = this.GetEntities(t => t.DOUBLE_PREVENT_MECHANISM_ID == entity.ID, new BaseFilter(entity.ORG_ID), "Nav_DoubleDetailMeasures.Nav_DetailMeasureContents.Nav_DetailMeasureContentPosts.Nav_DetailPosts", "Nav_DoubleDetailMeasures.Nav_DetailMeasureContents.Nav_DetailMeasureContentHiddens", "Nav_DetailPosts"); //if (details != null && details.Any()) { //foreach (var item in details) { //var libraryTemp = librarys.FirstOrDefault(t => t.MineType == item.MineType && t.AREA_ID == item.AREA_ID && t.RISK_NAME == item.RISK_NAME && t.RISK_DESCRIPTION == item.RISK_DESCRIPTION && t.EVALUATE_C == item.EVALUATE_C && t.EVALUATE_L == item.EVALUATE_L && t.EVALUATE_E == item.EVALUATE_E && t.TYPE_ID == item.TYPE_ID && t.EVALUATE_LEVEL == item.EVALUATE_LEVEL); //if (libraryTemp == null) //{ // T_SK_ENTERPRISE_LIBRARY library = new T_SK_ENTERPRISE_LIBRARY(); // library.ORG_ID = item.ORG_ID; // library.MineType = item.MineType; // library.AREA_ID = item.AREA_ID; // library.RISK_NAME = item.RISK_NAME; // library.RISK_DESCRIPTION = item.RISK_DESCRIPTION; // library.TYPE_ID = item.TYPE_ID; // library.EVALUATE_C = item.EVALUATE_C; // library.EVALUATE_E = item.EVALUATE_E; // library.EVALUATE_L = item.EVALUATE_L; // library.EVALUATE_SCORE = item.EVALUATE_SCORE; // library.EVALUATE_LEVEL = item.EVALUATE_LEVEL; // libraryList.Add(library); // if (item.Nav_DoubleDetailMeasures != null && item.Nav_DoubleDetailMeasures.Any()) // { // foreach (var item2 in item.Nav_DoubleDetailMeasures) // { // T_SK_ENTERPRISE_LIBRARY_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_DETAIL(); // detail.ENTERPRISE_LIBRARY_ID = library.ID; // detail.ORG_ID = item2.ORG_ID; // detail.MEASURES_NAME = item2.MEASURES_NAME; // detail.EMERGENCY = item2.EMERGENCY; // detail.NUM = item2.NUM; // detailList.Add(detail); // if (item2.Nav_DetailMeasureContents != null && item2.Nav_DetailMeasureContents.Any()) // { // foreach (var item3 in item2.Nav_DetailMeasureContents) // { // T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT content = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT(); // content.ENTERPRISE_LIBRARY_DETAIL_ID = detail.ID; // content.ORG_ID = item3.ORG_ID; // content.CHECK_CONTENTS_ID = item3.CHECK_CONTENTS_ID; // content.CHECK_CONTENT = item3.CHECK_CONTENT; // content.CHECK_BASIC = item3.CHECK_BASIC; // content.CHECK_STANDARD = item3.CHECK_STANDARD; // content.NUM = item3.NUM; // contentList.Add(content); // if (item3.Nav_DetailMeasureContentHiddens != null && item3.Nav_DetailMeasureContentHiddens.Any()) // { // foreach (var item4 in item3.Nav_DetailMeasureContentHiddens) // { // T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN hidden = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN(); // hidden.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = content.ID; // hidden.ORG_ID = item4.ORG_ID; // hidden.HIDDEN_DESCRIPTION = item4.HIDDEN_DESCRIPTION; // hidden.HIDDEN_LEVEL = item4.HIDDEN_LEVEL; // hidden.RECTIFICATION_MEASURES = item4.RECTIFICATION_MEASURES; // hidden.NUM = item4.NUM; // hiddenList.Add(hidden); // } // } // if (item3.Nav_DetailMeasureContentPosts != null && item3.Nav_DetailMeasureContentPosts.Any()) // { // foreach (var item4 in item3.Nav_DetailMeasureContentPosts) // { // T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART hidden = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); // hidden.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = content.ID; // hidden.ORG_ID = item4.ORG_ID; // hidden.CHECK_CYCLE = item4.CHECK_CYCLE; // hidden.DEPARTMENT_ID = item4.DEPARTMENT_ID; // hidden.CHECK_TYPE = item4.CHECK_TYPE; // hidden.CHECK_TYPE_ID = item4.CHECK_TYPE_ID; // hidden.NUM = item4.NUM; // departList.Add(hidden); // if (item4.Nav_DetailPosts != null && item4.Nav_DetailPosts.Any()) // { // foreach (var item5 in item4.Nav_DetailPosts) // { // T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST depart = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); // depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = hidden.ID; // depart.ORG_ID = item5.ORG_ID; // depart.POST_ID = item5.POST_ID; // postList.Add(depart); // } // } // } // } // } // } // } // } // if (item.Nav_DetailPosts != null && item.Nav_DetailPosts.Any()) // { // foreach (var item3 in item.Nav_DetailPosts) // { // T_SK_ENTERPRISE_LIBRARY_DEPART post = new T_SK_ENTERPRISE_LIBRARY_DEPART(); // post.ENTERPRISE_LIBRARY_ID = library.ID; // post.ORG_ID = item3.ORG_ID; // post.DEPARTMENT_ID = item3.DEPARTMENT_ID; // post.DEPARTMENT_TYPE = item3.DEPARTMENT_TYPE; // post.USER_ID = item3.USER_ID; // libraryDepartList.Add(post); // } // } //} //else //{ // libraryIds.Add(libraryTemp.ID); // libraryDepartIds = libraryDeparts.Where(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID)).Select(m=>m.ID).ToList(); // detailIds = libraryDetails.Where(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID)).Select(m => m.ID).ToList(); // contentIds = libraryContents.Where(t => detailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID)).Select(m => m.ID).ToList(); // hiddenIds = libraryHiddens.Where(t => contentIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID)).Select(m => m.ID).ToList(); // departIds = contentDeparts.Where(t => contentIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID)).Select(m => m.ID).ToList(); // postIds = contentPosts.Where(t => departIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID)).Select(m => m.ID).ToList(); // T_SK_ENTERPRISE_LIBRARY library = new T_SK_ENTERPRISE_LIBRARY(); // library.ORG_ID = item.ORG_ID; // library.MineType = item.MineType; // library.AREA_ID = item.AREA_ID; // library.RISK_NAME = item.RISK_NAME; // library.RISK_DESCRIPTION = item.RISK_DESCRIPTION; // library.TYPE_ID = item.TYPE_ID; // library.EVALUATE_C = item.EVALUATE_C; // library.EVALUATE_E = item.EVALUATE_E; // library.EVALUATE_L = item.EVALUATE_L; // library.EVALUATE_SCORE = item.EVALUATE_SCORE; // library.EVALUATE_LEVEL = item.EVALUATE_LEVEL; // libraryList.Add(library); // if (item.Nav_DoubleDetailMeasures != null && item.Nav_DoubleDetailMeasures.Any()) // { // foreach (var item2 in item.Nav_DoubleDetailMeasures) // { // T_SK_ENTERPRISE_LIBRARY_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_DETAIL(); // detail.ENTERPRISE_LIBRARY_ID = library.ID; // detail.ORG_ID = item2.ORG_ID; // detail.MEASURES_NAME = item2.MEASURES_NAME; // detail.EMERGENCY = item2.EMERGENCY; // detail.NUM = item2.NUM; // detailList.Add(detail); // if (item2.Nav_DetailMeasureContents != null && item2.Nav_DetailMeasureContents.Any()) // { // foreach (var item3 in item2.Nav_DetailMeasureContents) // { // T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT content = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT(); // content.ENTERPRISE_LIBRARY_DETAIL_ID = detail.ID; // content.ORG_ID = item3.ORG_ID; // content.CHECK_CONTENTS_ID = item3.CHECK_CONTENTS_ID; // content.CHECK_CONTENT = item3.CHECK_CONTENT; // content.CHECK_BASIC = item3.CHECK_BASIC; // content.CHECK_STANDARD = item3.CHECK_STANDARD; // content.NUM = item3.NUM; // contentList.Add(content); // if (item3.Nav_DetailMeasureContentHiddens != null && item3.Nav_DetailMeasureContentHiddens.Any()) // { // foreach (var item4 in item3.Nav_DetailMeasureContentHiddens) // { // T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN hidden = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN(); // hidden.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = content.ID; // hidden.ORG_ID = item4.ORG_ID; // hidden.HIDDEN_DESCRIPTION = item4.HIDDEN_DESCRIPTION; // hidden.HIDDEN_LEVEL = item4.HIDDEN_LEVEL; // hidden.RECTIFICATION_MEASURES = item4.RECTIFICATION_MEASURES; // hidden.NUM = item4.NUM; // hiddenList.Add(hidden); // } // } // if (item3.Nav_DetailMeasureContentPosts != null && item3.Nav_DetailMeasureContentPosts.Any()) // { // foreach (var item4 in item3.Nav_DetailMeasureContentPosts) // { // T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART hidden = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); // hidden.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = content.ID; // hidden.ORG_ID = item4.ORG_ID; // hidden.CHECK_CYCLE = item4.CHECK_CYCLE; // hidden.DEPARTMENT_ID = item4.DEPARTMENT_ID; // hidden.CHECK_TYPE = item4.CHECK_TYPE; // hidden.CHECK_TYPE_ID = item4.CHECK_TYPE_ID; // hidden.NUM = item4.NUM; // departList.Add(hidden); // if (item4.Nav_DetailPosts != null && item4.Nav_DetailPosts.Any()) // { // foreach (var item5 in item4.Nav_DetailPosts) // { // T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST depart = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); // depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = hidden.ID; // depart.ORG_ID = item5.ORG_ID; // depart.POST_ID = item5.POST_ID; // postList.Add(depart); // } // } // } // } // } // } // } // } // if (item.Nav_DetailPosts != null && item.Nav_DetailPosts.Any()) // { // foreach (var item3 in item.Nav_DetailPosts) // { // T_SK_ENTERPRISE_LIBRARY_DEPART post = new T_SK_ENTERPRISE_LIBRARY_DEPART(); // post.ENTERPRISE_LIBRARY_ID = library.ID; // post.ORG_ID = item3.ORG_ID; // post.DEPARTMENT_ID = item3.DEPARTMENT_ID; // post.DEPARTMENT_TYPE = item3.DEPARTMENT_TYPE; // post.USER_ID = item3.USER_ID; // libraryDepartList.Add(post); // } // } //} } } } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (postIds != null && postIds.Any()) BantchDeleteEntityNoCommit(postIds); if (departIds != null && departIds.Any()) BantchDeleteEntityNoCommit(departIds); if (hiddenIds != null && hiddenIds.Any()) BantchDeleteEntityNoCommit(hiddenIds); if (contentIds != null && contentIds.Any()) BantchDeleteEntityNoCommit(contentIds); if (detailIds != null && detailIds.Any()) BantchDeleteEntityNoCommit(detailIds); if (libraryDepartIds != null && libraryDepartIds.Any()) BantchDeleteEntityNoCommit(libraryDepartIds); if (libraryIds != null && libraryIds.Any()) BantchDeleteEntityNoCommit(libraryIds); if (libraryList != null && libraryList.Any()) BantchSaveEntityNoCommit(libraryList); if (detailList != null && detailList.Any()) BantchSaveEntityNoCommit(detailList); if (libraryDepartList != null && libraryDepartList.Any()) BantchSaveEntityNoCommit(libraryDepartList); if (contentList != null && contentList.Any()) BantchSaveEntityNoCommit(contentList); if (departList != null && departList.Any()) BantchSaveEntityNoCommit(departList); if (hiddenList != null && hiddenList.Any()) BantchSaveEntityNoCommit(hiddenList); if (postList != null && postList.Any()) BantchSaveEntityNoCommit(postList); }); } return true; } private bool BackUpdate_SKIdentifyEvaluationPlan(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { List identitys = new List(); List identityFiles = new List(); List identityDetails = new List(); List notices = new List(); var requre = this.GetEntity(t => !t.IS_DELETED); var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID, "Nav_Details");// "Nav_Details", "Nav_Files" entity.STATUS = PFStandardStatus.Archived; if (entity.START_DATE.Value.Date == DateTime.Now.Date && entity.Nav_Details != null && entity.Nav_Details.Any()) { entity.ISSEND = true; var detailIds = entity.Nav_Details.Select(t => t.ID).ToList(); var entityUsers = this.GetEntities(t => detailIds.Contains(t.IDENTIFY_EVALUATION_PLAN_DETAIL_ID), new BaseFilter(entity.ORG_ID)); if (entityUsers != null && entityUsers.Any()) { var userIds = entityUsers.Select(t => t.USER_ID).ToList(); var userNames = new List(); if (userIds != null && userIds.Any()) { var departIds = entity.Nav_Details.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); var libraryPosts = this.GetEntities(t => departIds.Contains(t.DEPARTMENT_ID), new BaseFilter(entity.ORG_ID)); var postIds = libraryPosts.Select(t => t.ID).ToList(); var libraryPostDetails = this.GetEntities(t => postIds.Contains(t.ENTERPRISE_LIBRARY_POST_ID), new BaseFilter(entity.ORG_ID)); var libraryIds = libraryPosts.Select(t => t.ENTERPRISE_LIBRARY_ID).ToList(); var librarys = this.GetEntities(t => libraryIds.Contains(t.ID) && t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)); var detailss = this.GetEntities(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(entity.ORG_ID)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(entity.ORG_ID), "Nav_Person"); foreach (var item in userIds) { var user = users.FirstOrDefault(t => t.ID == item); if (user != null) { T_SK_RISK_IDENTIFY ide = new T_SK_RISK_IDENTIFY(); ide.ORG_ID = user.ORG_ID; ide.IDENTIFY_EVALUATION_PLAN_ID = entity.ID; ide.APPLY_DEPARTMENT_ID = user.DEPARTMENT_ID; ide.APPLY_USER_ID = user.ID; ide.YEAR = DateTime.Now.Year.ToString(); ide.ISAUTO = true; ide.CONTENTS = entity.CONTENTS; ide.START_DATE = entity.START_DATE; ide.END_DATE = entity.END_DATE; ide.REQUIRE_ID = requre?.ID; identitys.Add(ide); if (user.Nav_Person != null) { var postDetailIds = libraryPostDetails.Where(t => t.POST_ID == user.Nav_Person.POST_ID).Select(m => m.ENTERPRISE_LIBRARY_POST_ID).Distinct().ToList(); var posts = libraryPosts.Where(t => postDetailIds.Contains(t.ID) && t.DEPARTMENT_ID == user.DEPARTMENT_ID).ToList(); if (posts != null && posts.Any()) { var libraryIdss = posts.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); var libraryss = librarys.Where(t => libraryIdss.Contains(t.ID)).OrderBy(t => t.NUM).ToList(); if (libraryss.Any()) { foreach (var library in libraryss) { T_SK_RISK_IDENTIFY_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_DETAIL(); ideDetail.ORG_ID = entity.ORG_ID; ideDetail.RISK_IDENTIFY_ID = ide.ID; ideDetail.PRODUCTION_UNIT_ID = library?.PRODUCTION_UNIT_ID; ideDetail.MineType = library == null ? SKProductionUnit.Mine : library.MineType; ideDetail.AREA_ID = library?.AREA_ID; ideDetail.RISK_NAME = library?.RISK_NAME; ideDetail.RISK_NAME_ID = library?.RISK_NAME_ID; ideDetail.RISK_DESCRIPTION = library?.RISK_DESCRIPTION; ideDetail.TYPE_ID = library?.TYPE_ID; ideDetail.EMERGENCY = library?.EMERGENCY; var detailList = detailss.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).OrderBy(t => t.NUM).ToList(); if (detailList.Any()) { //foreach (var id2 in detailList) //{ // T_SK_RISK_IDENTIFY_DETAIL_MEASURE mes = new T_SK_RISK_IDENTIFY_DETAIL_MEASURE(); // mes.ORG_ID = filter.OrgId; // mes.RISK_IDENTIFY_DETAIL_ID = ideDetail.ID; // mes.MEASURE = id2.MEASURES_NAME; // mes.EMERGENCY = id2.EMERGENCY; // measures.Add(mes); //} var measuresTemp = detailList.Select(t => t.MEASURES_NAME).Distinct().ToList(); if (measuresTemp.Any()) { if (measuresTemp.Count == 1) { ideDetail.MEASURE = measuresTemp.FirstOrDefault(); } else { var i = 1; foreach (var ite in measuresTemp) { var temp2 = i + "、" + ite; if (i == 1) { ideDetail.MEASURE = temp2; } else { ideDetail.MEASURE = ideDetail.MEASURE + Environment.NewLine + temp2; } i++; } } } //var emergencysTemp = detailList.Select(t => t.EMERGENCY).Distinct().ToList(); //if (emergencysTemp.Any()) //{ // var i = 1; // foreach (var ite in emergencysTemp) // { // var temp2 = i == 1 ? i + "、" + ite : "\r\n" + i + "、" + ite; // ideDetail.EMERGENCY = ideDetail.EMERGENCY + temp2; // i++; // } //} } identityDetails.Add(ideDetail); } } } } var endDate = DateTime.Now.AddHours(24); if (entity.END_DATE != null) { endDate = Convert.ToDateTime(entity.END_DATE.ToString().Replace("0:00:00", "23:59:59")); } var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识表(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", ide.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, endDate, (int)FMNoticeTypeEnum.消息, "SK033"); notices.Add(noticeTask); } } } } } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (identitys != null && identitys.Any()) this.BantchSaveEntityNoCommit(identitys); //if (identityFiles != null && identityFiles.Any()) // this.BantchSaveEntityNoCommit(identityFiles); if (identityDetails != null && identityDetails.Any()) this.BantchSaveEntityNoCommit(identityDetails); //if (detailMeasures != null && detailMeasures.Any()) // this.BantchSaveEntityNoCommit(detailMeasures); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); }); } return true; } private bool BackUpdate_SKRiskIdentify(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID); entity.STATUS = PFStandardStatus.Archived; entity.END_DATE = DateTime.Now; Guid? userId = null; T_SK_RISK_IDENTIFY_RESULT result = null; T_FM_NOTIFICATION_TASK notice = null; List departIds = new List(); List resultDetail = new List(); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)); var posts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(entity.ORG_ID)); var librarys = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID), "Nav_ApproveRole", "Nav_Person"); var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == entity.APPLY_DEPARTMENT_ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user != null) { userId = user.ID; } var currentDepart = departs.FirstOrDefault(t => t.ID == entity.APPLY_DEPARTMENT_ID); if (currentDepart != null) { if (currentDepart.DEPARTMENT_STATUS != 1) { departIds = departs.Where(t => t.DEPARTMENT_STATUS != 1).Select(m => m.ID).ToList(); user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")); if (user != null) { userId = user.ID; } else { user = users.FirstOrDefault(t => t.DEPARTMENT_ID == currentDepart.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部负责人")); if (user != null) { userId = user.ID; } } } else if (currentDepart.DEPARTMENT_TYPE == 10) { departIds.Add(currentDepart.ID); if (user == null) { user = users.FirstOrDefault(t => t.DEPARTMENT_ID == currentDepart.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); if (user != null) { userId = user.ID; } } } else if (currentDepart.DEPARTMENT_TYPE == 15) { departIds.Add(currentDepart.ID); var classIds = departs.Where(t => t.PARENT_ID == currentDepart.ID).Select(t => t.ID).ToList(); departIds.AddRange(classIds); if (user == null) { user = users.FirstOrDefault(t => t.DEPARTMENT_ID == currentDepart.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); if (user != null) { userId = user.ID; } } //DepartmentService.GetDepartmentIds(entity.ORG_ID.Value, new List() { currentDepart.ID }, ref departIds); //departIds.Add(currentDepart.ID); } else if (currentDepart.DEPARTMENT_TYPE == 20) { var parentId = departs.FirstOrDefault(t => t.ID == currentDepart.ID)?.PARENT_ID; departIds.Add((Guid)parentId); var classIds = departs.Where(t => t.PARENT_ID == parentId).Select(t => t.ID).ToList(); departIds.AddRange(classIds); user = users.FirstOrDefault(t => t.DEPARTMENT_ID == parentId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user != null) { userId = user.ID; } else { //车间负责人 var departUser = departs.FirstOrDefault(t => t.ID == parentId); if (departUser != null) { userId = departUser.USER_ID; if (userId != null) { //currentDepart = departUser; user = users.FirstOrDefault(t => t.ID == userId); } } } } else if (currentDepart.DEPARTMENT_TYPE == 5) { departIds = departs.Where(t => t.DEPARTMENT_STATUS != 1).Select(m => m.ID).ToList(); user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")); if (user != null) { userId = user.ID; } else { user = users.FirstOrDefault(t => t.DEPARTMENT_ID == currentDepart.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部负责人")); if (user != null) { userId = user.ID; } } } //当前层级安全员和负责人都找不到,找一次上级安全员和负责人 if (userId == null) { var parentId = departs.FirstOrDefault(t => t.ID == currentDepart.ID)?.PARENT_ID; if (parentId != null) { user = users.FirstOrDefault(t => t.DEPARTMENT_ID == parentId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user != null) { userId = user.ID; } else { //车间负责人 var departUser = departs.FirstOrDefault(t => t.ID == parentId); if (departUser != null) { userId = departUser.USER_ID; if (userId != null) { //currentDepart = departUser; user = users.FirstOrDefault(t => t.ID == userId); } } } } } var requre = this.GetEntity(t => !t.IS_DELETED); var filter = new BaseFilter(entity.ORG_ID); filter.IgnoreDataRule = true; Expression> expression = i => i.IS_DELETED == false && i.IDENTIFY_EVALUATION_PLAN_ID == entity.IDENTIFY_EVALUATION_PLAN_ID && departIds.Contains((Guid)i.APPLY_DEPARTMENT_ID); List identitys = this.GetOrderEntities(expression, filter).ToList(); //var identitys = this.GetEntities(t => t.IDENTIFY_EVALUATION_PLAN_ID == entity.IDENTIFY_EVALUATION_PLAN_ID && departIds.Contains((Guid)t.APPLY_DEPARTMENT_ID)); var identity = identitys.FirstOrDefault(t => t.ID != entity.ID && t.STATUS != PFStandardStatus.Archived && t.STATUS != PFStandardStatus.Close); if (identity == null && userId != null) { result = new T_SK_RISK_IDENTIFY_RESULT(); result.ORG_ID = entity.ORG_ID; result.APPLY_DEPARTMENT_ID = user.DEPARTMENT_ID; result.APPLY_USER_ID = userId; result.IDENTIFY_ID = entity.ID; result.IDENTIFY_EVALUATION_PLAN_ID = entity.IDENTIFY_EVALUATION_PLAN_ID; result.YEAR = entity.YEAR; result.ISAUTO = true; result.CONTENTS = entity.CONTENTS; result.START_DATE = entity.START_DATE; result.END_DATE = entity.END_DATE; result.REQUIRE_ID = entity.REQUIRE_ID != null ? entity.REQUIRE_ID : requre?.ID; result.ISCOMPANY = currentDepart.DEPARTMENT_TYPE == 5 ? SKIsStoreEnum.Yes : SKIsStoreEnum.No; var identityIds = identitys.Select(t => t.ID).ToList(); //Expression> expression2 = i => i.IS_DELETED == false && identityIds.Contains(i.RISK_IDENTIFY_ID); //List list = this.GetOrderEntities(expression2, new BaseFilter(entity.ORG_ID)).ToList(); var list = this.GetEntities(t => identityIds.Contains(t.RISK_IDENTIFY_ID), new BaseFilter(entity.ORG_ID)); var detailList = 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()); if (detailList.Any()) { foreach (var item in detailList) { 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 identifyIds = temp.Select(t => t.RISK_IDENTIFY_ID).ToList(); var departIdss = identitys.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_DEPARTMENT_ID).Distinct().ToList(); var userIdss = identitys.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_USER_ID).Distinct().ToList(); T_SK_RISK_IDENTIFY_RESULT_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_DETAIL(); ideDetail.ORG_ID = entity.ORG_ID; ideDetail.RISK_IDENTIFY_RESULT_ID = result.ID; ideDetail.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; ideDetail.MineType = item.MineType; ideDetail.AREA_ID = item.AREA_ID; ideDetail.RISK_NAME = item.RISK_NAME; ideDetail.RISK_NAME_ID = item.RISK_NAME_ID; ideDetail.RISK_DESCRIPTION = item.RISK_DESCRIPTION; ideDetail.TYPE_ID = item.TYPE_ID; ideDetail.MEASURE = item.MEASURE; ideDetail.EMERGENCY = item.EMERGENCY; ideDetail.ENABLE_STATUS = item.ENABLE_STATUS; ideDetail.MARK = item.MARK; if (departIdss.Any()) { var departTemps = departs.Where(t => departIdss.Contains(t.ID)).Select(m => m.DEPARTMENT_TYPE).Distinct().ToList(); //var postIds = users.Where(t => userIdss.Contains(t.ID) && t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).ToList(); //var postTemps = posts.Where(t => postIds.Contains(t.ID)).Select(m => m.NAME).ToList(); if (departTemps.Any()) { var i = 1; foreach (var ite in departTemps) { var departType = "班组级"; if (ite == 5) { departType = "公司级"; } if (ite == 10) { departType = "部门级"; } if (ite == 15) { departType = "车间级"; } if (ite == 20) { departType = "班组级"; } var temp2 = i == 1 ? i + "、" + departType + ";" : i + "、" + departType + ";"; ideDetail.DEPARTMENT_TYPE = ideDetail.DEPARTMENT_TYPE + temp2; var deTemps = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.NAME).ToList(); var deTempIds = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.ID).ToList(); var temp3 = i == 1 ? i + "、" + string.Join(",", deTemps) + ";" : i + "、" + string.Join(",", deTemps) + ";"; ideDetail.IDENTIFY_DEPARTMENT = ideDetail.IDENTIFY_DEPARTMENT + temp3; var postIds = users.Where(t => t.DEPARTMENT_ID != null && deTempIds.Contains((Guid)t.DEPARTMENT_ID) && userIdss.Contains(t.ID) && t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(m => m.Nav_Person?.POST_ID).ToList(); var postTemps = posts.Where(t => postIds.Contains(t.ID)).Select(m => m.NAME).ToList(); if (postTemps.Any()) { var tempPosts = string.Join(";", postTemps); var temp4 = i == 1 ? i + "、" + tempPosts + ";" : i + "、" + tempPosts + ";"; ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp4; //ideDetail.IDENTIFY_POST = string.Join(";", postTemps); } i++; } //ideDetail.IDENTIFY_DEPARTMENT = string.Join(";", departTemps); } //if (postTemps.Any()) //{ // var i = 1; // foreach (var ite in postTemps) // { // var temp2 = i == 1 ? i + "、" + ite + ";" : i + "、" + ite + ";"; // ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp2; // i++; // } // //ideDetail.IDENTIFY_POST = string.Join(";", postTemps); //} } resultDetail.Add(ideDetail); } } notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", result.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK035"); } } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (result != null) this.UpdateEntityNoCommit(result); if (notice != null) this.UpdateEntityNoCommit(notice); if (resultDetail != null && resultDetail.Count > 0) BantchSaveEntityNoCommit(resultDetail); }); //待办同步 NotificationTaskService.TaskToHead(listAppDetail, null, null, taskFinish); } return true; } private bool BackUpdate_SKRiskIdentifyResult(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { T_FM_NOTIFICATION_TASK notice = null; T_SK_RISK_IDENTIFY_RESULT_SUMMARY sum = null; List summaryDetails = new List(); //List summaryMeasures = new List(); //List summaryDeparts = new List(); //List summaryPosts = new List(); //List summaryFiles = new List(); var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID); entity.STATUS = PFStandardStatus.Archived; //entity.END_DATE = DateTime.Now; Guid? userId = null; List departIds = new List(); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID), "Nav_ApproveRole"); var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == entity.APPLY_DEPARTMENT_ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user != null) { userId = user.ID; } var currentDepart = departs.FirstOrDefault(t => t.ID == entity.APPLY_DEPARTMENT_ID); if (currentDepart != null) { if (currentDepart.DEPARTMENT_STATUS != 1) { //departIds.Add(currentDepart.ID); var otherIds = departs.Where(t => t.DEPARTMENT_STATUS != 1).Select(t => t.ID).ToList(); departIds.AddRange(otherIds); user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")); if (user != null) { userId = user.ID; } else { user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部负责人")); if (user != null) { userId = user.ID; } } } else if (currentDepart.DEPARTMENT_TYPE == 10) { departIds.Add(currentDepart.ID); var shopIds = departs.Where(t => t.PARENT_ID == currentDepart.ID).Select(t => t.ID).ToList(); departIds.AddRange(shopIds); var classIds = departs.Where(t => t.PARENT_ID != null && shopIds.Contains(t.PARENT_ID.Value)).Select(t => t.ID).ToList(); departIds.AddRange(classIds); if (user == null) { user = users.FirstOrDefault(t => t.DEPARTMENT_ID == currentDepart.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); if (user != null) { userId = user.ID; } } } else if (currentDepart.DEPARTMENT_TYPE == 15) { //departIds.Add(currentDepart.ID); var parentId = departs.FirstOrDefault(t => t.ID == currentDepart.ID).PARENT_ID; if (parentId != null) { departIds.Add(parentId.Value); var shopIds = departs.Where(t => t.PARENT_ID == parentId).Select(t => t.ID).ToList(); departIds.AddRange(shopIds); var classIds = departs.Where(t => t.PARENT_ID != null && shopIds.Contains(t.PARENT_ID.Value)).Select(t => t.ID).ToList(); departIds.AddRange(classIds); user = users.FirstOrDefault(t => t.DEPARTMENT_ID == parentId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user != null) { userId = user.ID; } else { //部门负责人 var departUser = departs.FirstOrDefault(t => t.ID == parentId); if (departUser != null) { userId = departUser.USER_ID; if (userId != null) { user = users.FirstOrDefault(t => t.ID == userId); } } } } //DepartmentService.GetDepartmentIds(entity.ORG_ID.Value, new List() { currentDepart.ID }, ref departIds); //departIds.Add(currentDepart.ID); } else if (currentDepart.DEPARTMENT_TYPE == 20) { var parentId = departs.FirstOrDefault(t => t.ID == currentDepart.ID)?.PARENT_ID; if (parentId != null) { var parentId2 = departs.FirstOrDefault(t => t.ID == parentId)?.PARENT_ID; if (parentId2 != null) { departIds.Add((Guid)parentId2); var shopIds = departs.Where(t => t.PARENT_ID == parentId2).Select(t => t.ID).ToList(); departIds.AddRange(shopIds); var classIds = departs.Where(t => t.PARENT_ID != null && shopIds.Contains(t.PARENT_ID.Value)).Select(t => t.ID).ToList(); departIds.AddRange(classIds); user = users.FirstOrDefault(t => t.DEPARTMENT_ID == parentId2 && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user != null) { userId = user.ID; } else { //部门负责人 var departUser = departs.FirstOrDefault(t => t.ID == parentId2); if (departUser != null) { userId = departUser.USER_ID; if (userId != null) { user = users.FirstOrDefault(t => t.ID == userId); } } } } } } else if (currentDepart.DEPARTMENT_TYPE == 5) { departIds = departs.Where(t => t.DEPARTMENT_STATUS != 1).Select(m => m.ID).ToList(); user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")); if (user != null) { userId = user.ID; } else { user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部负责人")); if (user != null) { userId = user.ID; } } } //var departId = departs.FirstOrDefault(t => departIds.Contains(t.ID) && t.DEPARTMENT_TYPE == 0); //if (departId != null) //{ // user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); // if (user != null) // { // userId = user.ID; // } // else // { // user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); // if (user != null) // { // userId = user.ID; // } // } //} } var requre = this.GetEntity(t => !t.IS_DELETED); var filter = new BaseFilter(entity.ORG_ID); filter.IgnoreDataRule = true; Expression> expression = i => i.IS_DELETED == false && i.IDENTIFY_EVALUATION_PLAN_ID == entity.IDENTIFY_EVALUATION_PLAN_ID && departIds.Contains((Guid)i.APPLY_DEPARTMENT_ID); List results = this.GetOrderEntities(expression, filter).ToList(); //var results = GetEntities(i => i.IDENTIFY_EVALUATION_PLAN_ID == entity.IDENTIFY_EVALUATION_PLAN_ID && departIds.Contains((Guid)i.APPLY_DEPARTMENT_ID), new BaseFilter(entity.ORG_ID)); var isEnd = results.FirstOrDefault(t => t.ID != entity.ID && t.STATUS != PFStandardStatus.Archived); var identity = GetEntity(i => i.IDENTIFY_EVALUATION_PLAN_ID == entity.IDENTIFY_EVALUATION_PLAN_ID && departIds.Contains((Guid)i.APPLY_DEPARTMENT_ID) && i.STATUS != PFStandardStatus.Archived && i.STATUS != PFStandardStatus.Close); if (isEnd == null && identity == null && userId != null) { sum = new T_SK_RISK_IDENTIFY_RESULT_SUMMARY(); sum.ORG_ID = entity.ORG_ID; sum.IDENTIFY_EVALUATION_PLAN_ID = entity.IDENTIFY_EVALUATION_PLAN_ID; sum.IDENTIFY_ID = entity.IDENTIFY_ID; sum.IDENTIFY_RESULT_ID = entity.ID; sum.APPLY_DEPARTMENT_ID = user.DEPARTMENT_ID; sum.APPLY_USER_ID = user.ID; sum.YEAR = entity.YEAR; sum.START_DATE = entity.START_DATE; sum.END_DATE = DateTime.Now; sum.CONTENTS = entity.CONTENTS; sum.REQUIRE_ID = entity.REQUIRE_ID != null ? entity.REQUIRE_ID : requre?.ID; sum.ISCOMPANY = entity.ISCOMPANY; var resultIds = results.Select(t => t.ID).ToList(); //Expression> expression2 = i => i.IS_DELETED == false && resultIds.Contains(i.RISK_IDENTIFY_RESULT_ID); //List details = this.GetOrderEntities(expression2, new BaseFilter(entity.ORG_ID), new string[] { "Nav_DetailMeasures", "Nav_DetailDeparts", "Nav_DetailPosts" }).ToList(); var details = GetEntities(i => resultIds.Contains(i.RISK_IDENTIFY_RESULT_ID) && i.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID), "Nav_DetailMeasures", "Nav_DetailDeparts", "Nav_DetailPosts"); var detailList = details.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()); if (detailList.Any()) { foreach (var de in detailList) { T_SK_RISK_IDENTIFY_RESULT_SUMMARY_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_SUMMARY_DETAIL(); ideDetail.ORG_ID = entity.ORG_ID; ideDetail.IDENTIFY_RESULT_SUMMARY_ID = sum.ID; ideDetail.PRODUCTION_UNIT_ID = de.PRODUCTION_UNIT_ID; ideDetail.MineType = de.MineType; ideDetail.AREA_ID = de.AREA_ID; ideDetail.RISK_NAME = de.RISK_NAME; ideDetail.RISK_NAME_ID = de.RISK_NAME_ID; ideDetail.RISK_DESCRIPTION = de.RISK_DESCRIPTION; ideDetail.TYPE_ID = de.TYPE_ID; ideDetail.MEASURE = de.MEASURE; ideDetail.EMERGENCY = de.EMERGENCY; ideDetail.DEPARTMENT_TYPE = de.DEPARTMENT_TYPE; ideDetail.IDENTIFY_DEPARTMENT = de.IDENTIFY_DEPARTMENT; ideDetail.IDENTIFY_POST = de.IDENTIFY_POST; ideDetail.MARK = de.MARK; summaryDetails.Add(ideDetail); } } var param = "部门级"; var dminetype = departs.FirstOrDefault(t => t.ID == user.DEPARTMENT_ID).DEPARTMENT_TYPE; if (dminetype == 5 || sum.ISCOMPANY == SKIsStoreEnum.Yes) { param = "公司级"; } sum.STATUS = PFStandardStatus.Approving; //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.审批流编码; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var serialCode = codes.Split(new char[] { ',' }); InsertApproveSK(serialCode[0], "SK037", param, sum.ID, "SK037_SHOWPRINT", entity.TaskID, true, () => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (sum != null) UpdateEntityNoCommit(sum); if (summaryDetails != null && summaryDetails.Count > 0) BantchSaveEntityNoCommit(summaryDetails); if (notice != null) UpdateEntityNoCommit(notice); }, null, null, null, null, null, "SK035_SHOWPRINT", null, "安全风险辨识结果汇总表审批(" + param + ")"); return true; //notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果汇总表(" + param + ")", sum.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK037"); } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (sum != null) UpdateEntityNoCommit(sum); if (summaryDetails != null && summaryDetails.Count > 0) BantchSaveEntityNoCommit(summaryDetails); if (notice != null) UpdateEntityNoCommit(notice); }); } return true; } private bool BackUpdate_RiskIdentifyResultSummary(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID); entity.STATUS = PFStandardStatus.Archived; //entity.END_DATE = DateTime.Now; //触发评估表 List notices = new List(); List results = new List(); List resultDetails = new List(); List detailMeasures = new List(); List detailDeparts = new List(); List detailPosts = new List(); List detailPostDetails = new List(); //List modelBegins = new List(); List departIds = new List(); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID), "Nav_ApproveRole", "Nav_Person"); var currentDepart = departs.FirstOrDefault(t => t.ID == entity.APPLY_DEPARTMENT_ID); if (currentDepart != null) { if (currentDepart.DEPARTMENT_STATUS != 1) { departIds = departs.Where(t => t.DEPARTMENT_STATUS != 1).Select(m => m.ID).ToList(); } else if (currentDepart.DEPARTMENT_TYPE == 10) { departIds.Add(currentDepart.ID); var shopIds = departs.Where(t => t.PARENT_ID == currentDepart.ID).Select(t => t.ID).ToList(); departIds.AddRange(shopIds); var classIds = departs.Where(t => t.PARENT_ID != null && shopIds.Contains(t.PARENT_ID.Value)).Select(t => t.ID).ToList(); departIds.AddRange(classIds); } else if (currentDepart.DEPARTMENT_TYPE == 15) { departIds.Add(currentDepart.ID); var classIds = departs.Where(t => t.PARENT_ID == currentDepart.ID).Select(t => t.ID).ToList(); departIds.AddRange(classIds); } else if (currentDepart.DEPARTMENT_TYPE == 20) { var parentId = departs.FirstOrDefault(t => t.ID == currentDepart.ID)?.PARENT_ID; if (parentId != null) { departIds.Add((Guid)parentId); var classIds = departs.Where(t => t.PARENT_ID == parentId).Select(t => t.ID).ToList(); departIds.AddRange(classIds); } } else if (currentDepart.DEPARTMENT_TYPE == 5) { departIds = departs.Where(t => t.DEPARTMENT_STATUS != 1).Select(m => m.ID).ToList(); } } var requre = this.GetEntity(t => !t.IS_DELETED); var filter = new BaseFilter(entity.ORG_ID); filter.IgnoreDataRule = true; Expression> expression = i => i.IS_DELETED == false && i.IDENTIFY_EVALUATION_PLAN_ID == entity.IDENTIFY_EVALUATION_PLAN_ID && departIds.Contains((Guid)i.APPLY_DEPARTMENT_ID); List summarys = this.GetOrderEntities(expression, filter, new string[] { "Nav_Details" }).ToList(); //var summarys = GetEntities(i => i.IDENTIFY_EVALUATION_PLAN_ID == entity.IDENTIFY_EVALUATION_PLAN_ID && departIds.Contains((Guid)i.APPLY_DEPARTMENT_ID), new BaseFilter(entity.ORG_ID), "Nav_Details"); if (summarys.Any()) { //var sumIds = summarys.Select(i => i.ID).ToList(); //var posts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(entity.ORG_ID)); var librarys = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)); var libraryIds = librarys.Select(t => t.ID).ToList(); var libraryDeparts = this.GetEntities(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(entity.ORG_ID)); var libraryDetails = this.GetEntities(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(entity.ORG_ID)); var libraryPosts = this.GetEntities(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(entity.ORG_ID), "Nav_PostDetails"); foreach (var bm in summarys) { var user = users.FirstOrDefault(t => t.ID == bm.APPLY_USER_ID); T_SK_RISK_EVALUATION result = new T_SK_RISK_EVALUATION(); result.ORG_ID = entity.ORG_ID; result.IDENTIFY_EVALUATION_PLAN_ID = entity.IDENTIFY_EVALUATION_PLAN_ID; result.APPLY_USER_ID = bm.APPLY_USER_ID; result.APPLY_DEPARTMENT_ID = bm.APPLY_DEPARTMENT_ID; result.YEAR = entity.YEAR; result.START_DATE = entity.START_DATE; result.END_DATE = entity.END_DATE; result.REQUIRE_ID = requre?.ID; result.ISCOMPANY = bm.ISCOMPANY; results.Add(result); if (bm.Nav_Details.Any()) { foreach (var de in bm.Nav_Details) { if (de != null) { var departTemp = librarys.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == de.PRODUCTION_UNIT_ID && t.AREA_ID == de.AREA_ID && t.RISK_NAME == de.RISK_NAME && t.RISK_DESCRIPTION == de.RISK_DESCRIPTION && t.TYPE_ID == de.TYPE_ID); T_SK_RISK_EVALUATION_DETAIL detail = new T_SK_RISK_EVALUATION_DETAIL(); detail.ORG_ID = entity.ORG_ID; detail.RISK_EVALUATION_ID = result.ID; detail.PRODUCTION_UNIT_ID = de.PRODUCTION_UNIT_ID; detail.AREA_ID = de.AREA_ID; detail.RISK_NAME = de.RISK_NAME; detail.RISK_DESCRIPTION = de.RISK_DESCRIPTION; detail.TYPE_ID = de.TYPE_ID; detail.EVALUATE_L = departTemp == null ? 0 : departTemp.EVALUATE_L; detail.EVALUATE_E = departTemp == null ? 0 : departTemp.EVALUATE_E; detail.EVALUATE_C = departTemp == null ? 0 : departTemp.EVALUATE_C; detail.SCOREC_ID = departTemp?.SCOREC_ID; detail.SCOREE_ID = departTemp?.SCOREE_ID; detail.SCOREL_ID = departTemp?.SCOREL_ID; detail.EVALUATE_SCORE = departTemp == null ? 0 : departTemp.EVALUATE_SCORE; detail.EVALUATE_LEVEL = departTemp == null ? SKEvaluateLevelEnum.低风险 : departTemp.EVALUATE_LEVEL; detail.MARK = de.MARK; detail.MEASURE = de.MEASURE; if (departTemp != null) { var libraryDetailTemps = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == departTemp.ID).ToList(); if (libraryDetailTemps.Any()) { var i = 1; foreach (var item in libraryDetailTemps) { T_SK_RISK_EVALUATION_DETAIL_MEASURE dep = new T_SK_RISK_EVALUATION_DETAIL_MEASURE(); dep.MEASURES_NAME = item.MEASURES_NAME; dep.EMERGENCY = item.EMERGENCY; dep.NUM = item.NUM; dep.ORG_ID = item.ORG_ID; dep.RISK_EVALUATION_DETAIL_ID = detail.ID; detailMeasures.Add(dep); var measureTemp = i + "、" + item.MEASURES_NAME + ";"; detail.MEASURE = detail.MEASURE + measureTemp; i++; } } var libraryDepartTemps = libraryDeparts.Where(t => t.ENTERPRISE_LIBRARY_ID == departTemp.ID).ToList(); if (libraryDepartTemps.Any()) { var i = 1; foreach (var item in libraryDepartTemps) { T_SK_RISK_EVALUATION_DETAIL_DEPART dep = new T_SK_RISK_EVALUATION_DETAIL_DEPART(); dep.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; dep.DEPARTMENT_ID = item.DEPARTMENT_ID; dep.USER_ID = item.USER_ID; dep.ORG_ID = item.ORG_ID; dep.RISK_EVALUATION_DETAIL_ID = detail.ID; detailDeparts.Add(dep); var departFirstTemp = departs.FirstOrDefault(t => t.ID == item.DEPARTMENT_ID); var userFirst = users.FirstOrDefault(t => t.ID == departFirstTemp?.USER_ID); var typeTemp = i + "、" + item.DEPARTMENT_TYPE.GetDescription() + ";"; detail.DEPARTMENT_TYPE = detail.DEPARTMENT_TYPE + typeTemp; var departTempx = i + "、" + departFirstTemp?.NAME + ";"; ; detail.IDENTIFY_DEPARTMENT = detail.IDENTIFY_DEPARTMENT + departTempx; var userTemp = i + "、" + userFirst?.NAME + ";"; ; detail.IDENTIFY_USER = detail.IDENTIFY_USER + typeTemp; i++; } } var libraryPostTemps = libraryPosts.Where(t => t.ENTERPRISE_LIBRARY_ID == departTemp.ID).ToList(); if (libraryPostTemps.Any()) { foreach (var item in libraryPostTemps) { T_SK_RISK_EVALUATION_DETAIL_POST dep = new T_SK_RISK_EVALUATION_DETAIL_POST(); dep.DEPARTMENT_ID = item.DEPARTMENT_ID; dep.ORG_ID = item.ORG_ID; dep.RISK_EVALUATION_DETAIL_ID = detail.ID; detailPosts.Add(dep); if (item.Nav_PostDetails != null && item.Nav_PostDetails.Any()) { foreach (var item2 in item.Nav_PostDetails) { T_SK_RISK_EVALUATION_DETAIL_POST_DETAIL depDetail = new T_SK_RISK_EVALUATION_DETAIL_POST_DETAIL(); depDetail.POST_ID = item2.POST_ID; depDetail.ORG_ID = item.ORG_ID; depDetail.RISK_EVALUATION_DETAIL_POST_ID = dep.ID; detailPostDetails.Add(depDetail); } } } } } resultDetails.Add(detail); } } //var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险评估表(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", 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(); //modelBegin.ORG_ID = entity.ORG_ID; //modelBegin.SOURCETYPE = SOURCETYPE.SK037ToMeet; //modelBegin.TABLENAME = "T_SK_RISK_IDENTIFY_RESULT_SUMMARY"; //modelBegin.DATA_ID = entity.ID; //modelBegin.ISBEGIN = false; //modelBegin.USER_ID = user.ID; //modelBegin.CREATE_TIME = DateTime.Now; //modelBegin.CREATER_ID = user.ID; //modelBegins.Add(modelBegin); //触发今日提醒 var noticeDay = NotificationTaskService.InsertUserNoticeTaskModel("请召开《危险源辨识与风险评估》会议,确定风险等级和管控措施(含应急处置、辨识岗位、管控层级、检查内容、检查层级等)", result.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.今日提醒, "PF135"); notices.Add(noticeDay); } } } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (results != null && results.Any()) BantchSaveEntityNoCommit(results); if (resultDetails != null && resultDetails.Any()) BantchSaveEntityNoCommit(resultDetails); if (detailDeparts != null && detailDeparts.Any()) BantchSaveEntityNoCommit(detailDeparts); if (detailMeasures != null && detailMeasures.Any()) BantchSaveEntityNoCommit(detailMeasures); if (detailPosts != null && detailPosts.Any()) BantchSaveEntityNoCommit(detailPosts); if (detailPostDetails != null && detailPostDetails.Any()) BantchSaveEntityNoCommit(detailPostDetails); //if (modelBegins != null && modelBegins.Count > 0) // BantchSaveEntityNoCommit(modelBegins); }); } return true; } private bool BackUpdate_SKRiskEvaluation(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID); entity.STATUS = PFStandardStatus.Archived; //entity.END_DATE = DateTime.Now; //触发评估汇总表 T_FM_NOTIFICATION_TASK notice = null; T_SK_RISK_EVALUATION_SUMMARY result = null; List resultDetails = new List(); List detailMeasures = new List(); List detailDeparts = new List(); List detailPostSums = new List(); List detailPostDetailSums = new List(); //触发风险检查关联表 T_SK_DOUBLE_PREVENT_MECHANISM dou = null; List douDetails = new List(); List detailMes = new List(); List detailPosts = new List(); List detailDeps = new List(); List detailDepDets = new List(); List detailContents = new List(); List contentPosts = new List(); List contentDepartPosts = new List(); List contentHiddenss = new List(); Guid? userId = null; List departIds = new List(); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID), "Nav_ApproveRole"); var userPosts = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(entity.ORG_ID)); var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == entity.APPLY_DEPARTMENT_ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user != null) { userId = user.ID; } var currentDepart = departs.FirstOrDefault(t => t.ID == entity.APPLY_DEPARTMENT_ID); if (currentDepart != null) { if (currentDepart.DEPARTMENT_STATUS != 1) { departIds = departs.Where(t => t.DEPARTMENT_STATUS != 1).Select(m => m.ID).ToList(); user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")); if (user != null) { userId = user.ID; } else { user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部负责人")); if (user != null) { userId = user.ID; } } } else if (currentDepart.DEPARTMENT_TYPE == 10) { departIds.Add(currentDepart.ID); var shopIds = departs.Where(t => t.PARENT_ID == currentDepart.ID).Select(t => t.ID).ToList(); departIds.AddRange(shopIds); var classIds = departs.Where(t => t.PARENT_ID != null && shopIds.Contains(t.PARENT_ID.Value)).Select(t => t.ID).ToList(); departIds.AddRange(classIds); user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); if (user != null) { userId = user.ID; } } else if (currentDepart.DEPARTMENT_TYPE == 15) { //departIds.Add(currentDepart.ID); var parentId = departs.FirstOrDefault(t => t.ID == currentDepart.ID).PARENT_ID; if (parentId != null) { departIds.Add(parentId.Value); var shopIds = departs.Where(t => t.PARENT_ID == parentId).Select(t => t.ID).ToList(); departIds.AddRange(shopIds); var classIds = departs.Where(t => t.PARENT_ID != null && shopIds.Contains(t.PARENT_ID.Value)).Select(t => t.ID).ToList(); departIds.AddRange(classIds); user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.DEPARTMENT_ID == parentId && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user != null) { userId = user.ID; } else { user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.DEPARTMENT_ID == parentId && t.Nav_ApproveRole.NAME.Contains("负责人")); if (user != null) { userId = user.ID; } } } //DepartmentService.GetDepartmentIds(entity.ORG_ID.Value, new List() { currentDepart.ID }, ref departIds); //departIds.Add(currentDepart.ID); } else if (currentDepart.DEPARTMENT_TYPE == 20) { var parentId = departs.FirstOrDefault(t => t.ID == currentDepart.ID)?.PARENT_ID; if (parentId != null) { var parentId2 = departs.FirstOrDefault(t => t.ID == parentId)?.PARENT_ID; if (parentId2 != null) { departIds.Add((Guid)parentId2); var shopIds = departs.Where(t => t.PARENT_ID == parentId2).Select(t => t.ID).ToList(); departIds.AddRange(shopIds); var classIds = departs.Where(t => t.PARENT_ID != null && shopIds.Contains(t.PARENT_ID.Value)).Select(t => t.ID).ToList(); departIds.AddRange(classIds); user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.DEPARTMENT_ID == parentId2 && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user != null) { userId = user.ID; } else { user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.DEPARTMENT_ID == parentId2 && t.Nav_ApproveRole.NAME.Contains("负责人")); if (user != null) { userId = user.ID; } } } } } else if (currentDepart.DEPARTMENT_TYPE == 5) { departIds = departs.Where(t => t.DEPARTMENT_STATUS != 1).Select(m => m.ID).ToList(); user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")); if (user != null) { userId = user.ID; } else { user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部负责人")); if (user != null) { userId = user.ID; } } } } var requre = this.GetEntity(t => !t.IS_DELETED); var filter = new BaseFilter(entity.ORG_ID); filter.IgnoreDataRule = true; Expression> expression = i => i.IS_DELETED == false && i.IDENTIFY_EVALUATION_PLAN_ID == entity.IDENTIFY_EVALUATION_PLAN_ID && departIds.Contains((Guid)i.APPLY_DEPARTMENT_ID); List results = this.GetOrderEntities(expression, filter).ToList(); //var results = GetEntities(i => i.IDENTIFY_EVALUATION_PLAN_ID == entity.IDENTIFY_EVALUATION_PLAN_ID && departIds.Contains((Guid)i.APPLY_DEPARTMENT_ID), new BaseFilter(entity.ORG_ID)); var isEnd = results.FirstOrDefault(t => t.ID != entity.ID && t.STATUS != PFStandardStatus.Archived && t.STATUS != PFStandardStatus.Close); if (isEnd == null && user != null) { result = new T_SK_RISK_EVALUATION_SUMMARY(); result.ORG_ID = entity.ORG_ID; result.IDENTIFY_EVALUATION_PLAN_ID = entity.IDENTIFY_EVALUATION_PLAN_ID; result.APPLY_USER_ID = user.ID; result.APPLY_DEPARTMENT_ID = user.DEPARTMENT_ID; result.YEAR = entity.YEAR; result.START_DATE = entity.START_DATE; result.END_DATE = entity.END_DATE; result.REQUIRE_ID = entity.REQUIRE_ID != null ? entity.REQUIRE_ID : requre?.ID; result.ISCOMPANY = entity.ISCOMPANY; var resultIds = results.Select(t => t.ID).ToList(); var details = GetEntities(i => resultIds.Contains(i.RISK_EVALUATION_ID), new BaseFilter(entity.ORG_ID), "Nav_DetailMeasures", "Nav_DetailDeparts", "Nav_DetailPosts.Nav_PostDetails"); var detailList = details.GroupBy(m => new { m.AREA_ID, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_DESCRIPTION, m.TYPE_ID }).Select(g => g.FirstOrDefault()); if (detailList.Any()) { foreach (var de in detailList) { T_SK_RISK_EVALUATION_SUMMARY_DETAIL detail = new T_SK_RISK_EVALUATION_SUMMARY_DETAIL(); detail.ORG_ID = entity.ORG_ID; detail.RISK_EVALUATION_SUMMARY_ID = result.ID; detail.PRODUCTION_UNIT_ID = de.PRODUCTION_UNIT_ID; detail.MineType = de.MineType; detail.AREA_ID = de.AREA_ID; detail.RISK_NAME = de.RISK_NAME; detail.RISK_NAME_ID = de.RISK_NAME_ID; detail.RISK_DESCRIPTION = de.RISK_DESCRIPTION; detail.TYPE_ID = de.TYPE_ID; detail.EVALUATE_L = de.EVALUATE_L; detail.EVALUATE_E = de.EVALUATE_E; detail.EVALUATE_C = de.EVALUATE_C; detail.SCOREC_ID = de.SCOREC_ID; detail.SCOREE_ID = de.SCOREE_ID; detail.SCOREL_ID = de.SCOREL_ID; detail.EVALUATE_SCORE = de.EVALUATE_SCORE; detail.EMERGENCY = de.EMERGENCY; detail.EVALUATE_LEVEL = de.EVALUATE_LEVEL; detail.MARK = de.MARK; detail.MEASURE = de.MEASURE; resultDetails.Add(detail); if (de.Nav_DetailMeasures != null && de.Nav_DetailMeasures.Any()) { var i = 1; foreach (var item in de.Nav_DetailMeasures.OrderBy(t => t.NUM)) { T_SK_RISK_EVALUATION_SUMMARY_DETAIL_MEASURE dep = new T_SK_RISK_EVALUATION_SUMMARY_DETAIL_MEASURE(); dep.MEASURES_NAME = item.MEASURES_NAME; dep.EMERGENCY = item.EMERGENCY; dep.NUM = item.NUM; dep.ORG_ID = item.ORG_ID; dep.RISK_EVALUATION_SUMMARY_DETAIL_ID = detail.ID; detailMeasures.Add(dep); var measureTemp = i + "、" + item.MEASURES_NAME + ";"; detail.MEASURE = detail.MEASURE + measureTemp; //var emergencyTemp = i + "、" + item.EMERGENCY + ";"; //detail.EMERGENCY = detail.EMERGENCY + emergencyTemp; i++; } } if (de.Nav_DetailDeparts != null && de.Nav_DetailDeparts.Any()) { var i = 1; foreach (var item in de.Nav_DetailDeparts.OrderBy(m => m.DEPARTMENT_TYPE)) { T_SK_RISK_EVALUATION_SUMMARY_DETAIL_DEPART dep = new T_SK_RISK_EVALUATION_SUMMARY_DETAIL_DEPART(); dep.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; dep.DEPARTMENT_ID = item.DEPARTMENT_ID; dep.USER_ID = item.USER_ID; dep.ORG_ID = item.ORG_ID; dep.RISK_EVALUATION_SUMMARY_DETAIL_ID = detail.ID; detailDeparts.Add(dep); var userFirst = users.FirstOrDefault(t => t.ID == item.USER_ID); var departFirstTemp = departs.FirstOrDefault(t => t.ID == item.DEPARTMENT_ID); var typeTemp = i + "、" + item.DEPARTMENT_TYPE.GetDescription() + ";"; detail.DEPARTMENT_TYPE = detail.DEPARTMENT_TYPE + typeTemp; var departTempx = i + "、" + departFirstTemp?.NAME + ";"; detail.IDENTIFY_DEPARTMENT = detail.IDENTIFY_DEPARTMENT + departTempx; var userTemp = i + "、" + userFirst?.NAME + ";"; detail.IDENTIFY_USER = detail.IDENTIFY_USER + typeTemp; i++; } } if (de.Nav_DetailPosts != null && de.Nav_DetailPosts.Any()) { var i = 1; foreach (var item in de.Nav_DetailPosts) { T_SK_RISK_EVALUATION_SUMMARY_DETAIL_POST dep = new T_SK_RISK_EVALUATION_SUMMARY_DETAIL_POST(); dep.DEPARTMENT_ID = item.DEPARTMENT_ID; dep.ORG_ID = item.ORG_ID; dep.RISK_EVALUATION_SUMMARY_DETAIL_ID = detail.ID; detailPostSums.Add(dep); var departFirstTemp = departs.FirstOrDefault(t => t.ID == item.DEPARTMENT_ID); var departTempx = i + "、" + departFirstTemp?.NAME + ";"; detail.EVALUATION_DEPARTMENT = detail.IDENTIFY_DEPARTMENT + departTempx; if (item.Nav_PostDetails != null && item.Nav_PostDetails.Any()) { var postIds = new List(); foreach (var item2 in item.Nav_PostDetails) { T_SK_RISK_EVALUATION_SUMMARY_DETAIL_POST_DETAIL depDetail = new T_SK_RISK_EVALUATION_SUMMARY_DETAIL_POST_DETAIL(); depDetail.POST_ID = item2.POST_ID; depDetail.ORG_ID = item.ORG_ID; depDetail.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID = dep.ID; detailPostDetailSums.Add(depDetail); postIds.Add((Guid)item2.POST_ID); } var postFirstTemp = userPosts.Where(t => postIds.Contains(t.ID)).Select(m => m.NAME).Distinct().ToList(); var postTempx = i + "、" + string.Join(",", postFirstTemp) + ";"; detail.EVALUATION_POST = detail.EVALUATION_POST + departTempx; } i++; } } } } var param = "部门级"; var dminetype = departs.FirstOrDefault(t => t.ID == user.DEPARTMENT_ID).DEPARTMENT_TYPE; if (dminetype == 5 || result.ISCOMPANY == SKIsStoreEnum.Yes) { param = "公司级"; } result.STATUS = PFStandardStatus.Approving; //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.审批流编码; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var serialCode = codes.Split(new char[] { ',' }); var approveTemp = this.GetEntity(t => t.FORM_CODE == "SK041" && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && t.PARAM == param, "Nav_ApproveTempDetails.Nav_ApproveRole"); if (approveTemp != null && approveTemp.Nav_ApproveTempDetails != null && approveTemp.Nav_ApproveTempDetails.Any()) { var approveDetailLast = approveTemp.Nav_ApproveTempDetails.OrderByDescending(t => t.NUM).FirstOrDefault(); var loginUser = users.FirstOrDefault(t => t.ID == APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value); if (approveDetailLast.APPROVE_ROLE_ID == loginUser.APPROVE_ROLE_ID) { result.STATUS = PFStandardStatus.Archived; if (user != null && resultDetails != null && resultDetails.Any()) { var productionId = resultDetails.FirstOrDefault(t => t.PRODUCTION_UNIT_ID != null).PRODUCTION_UNIT_ID; var librarys = this.GetEntities(t => t.ENABLE_STATUS == 0 && t.PRODUCTION_UNIT_ID == productionId, new BaseFilter(entity.ORG_ID)); var libraryIds = librarys.Select(t => t.ID).ToList(); //var libraryDeparts = GetEntities(i => i.IS_DELETED == false && libraryIds.Contains(i.ENTERPRISE_LIBRARY_ID), new BaseFilter(entity.ORG_ID)).ToList(); var libraryDetails = GetEntities(i => i.IS_DELETED == false && libraryIds.Contains(i.ENTERPRISE_LIBRARY_ID), new BaseFilter(entity.ORG_ID)).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(entity.ORG_ID)).ToList(); var contentIds = libraryContents.Select(i => i.ID).ToList(); var contentDeparts = GetEntities(i => i.IS_DELETED == false && contentIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).ToList(); var contentPostIds = contentDeparts.Select(i => i.ID).ToList(); var contentPostss = GetEntities(i => i.IS_DELETED == false && contentPostIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID), new BaseFilter(entity.ORG_ID)).ToList(); var contentHiddens = GetEntities(i => i.IS_DELETED == false && contentIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).ToList(); dou = new T_SK_DOUBLE_PREVENT_MECHANISM(); dou.APPLY_USER_ID = user.ID; dou.APPLY_DEPARTMENT_ID = user.DEPARTMENT_ID; dou.ORG_ID = result.ORG_ID; dou.RISK_EVALUATE_SUMMARY_ID = result.ID; foreach (var item in resultDetails) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL detail = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL(); detail.ORG_ID = item.ORG_ID; detail.DOUBLE_PREVENT_MECHANISM_ID = dou.ID; detail.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; //detail.MineType = item.MineType; detail.AREA_ID = item.AREA_ID; detail.TYPE_ID = item.TYPE_ID; detail.RISK_DESCRIPTION = item.RISK_DESCRIPTION; detail.RISK_NAME = item.RISK_NAME; //detail.RISK_NAME_ID = item.RISK_NAME_ID; detail.EVALUATE_L = item.EVALUATE_L; detail.EVALUATE_E = item.EVALUATE_E; detail.EVALUATE_C = item.EVALUATE_C; detail.SCOREC_ID = item?.SCOREC_ID; detail.SCOREE_ID = item?.SCOREE_ID; detail.SCOREL_ID = item?.SCOREL_ID; detail.EVALUATE_SCORE = item.EVALUATE_SCORE; detail.EVALUATE_LEVEL = item.EVALUATE_LEVEL; detail.EMERGENCY = item.EMERGENCY; detail.MARK = item.MARK; douDetails.Add(detail); var ldeparts = detailDeparts.Where(t => t.RISK_EVALUATION_SUMMARY_DETAIL_ID == item.ID).ToList(); if (ldeparts.Any()) { foreach (var item2 in ldeparts) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_POST post = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_POST(); post.ORG_ID = item2.ORG_ID; post.DOUBLE_PREVENT_MECHANISM_DETAIL_ID = detail.ID; post.DEPARTMENT_TYPE = item2.DEPARTMENT_TYPE; post.DEPARTMENT_ID = item2.DEPARTMENT_ID; post.USER_ID = item2.USER_ID; detailPosts.Add(post); } } var lposts = detailPostSums.Where(t => t.RISK_EVALUATION_SUMMARY_DETAIL_ID == item.ID).ToList(); if (lposts.Any()) { foreach (var item2 in lposts) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_DEPART dep = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_DEPART(); dep.DEPARTMENT_ID = item2.DEPARTMENT_ID; dep.ORG_ID = item.ORG_ID; dep.DOUBLE_PREVENT_MECHANISM_DETAIL_ID = detail.ID; detailDeps.Add(dep); var lpostDetails = detailPostDetailSums.Where(t => t.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID == item2.ID).ToList(); if (lpostDetails != null && lpostDetails.Any()) { foreach (var item3 in lpostDetails) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_DEPART_DETAIL depDetail = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_DEPART_DETAIL(); depDetail.POST_ID = item3.POST_ID; depDetail.ORG_ID = item.ORG_ID; depDetail.MECHANISM_DETAIL_DEPART_ID = dep.ID; detailDepDets.Add(depDetail); } } } } var libraryFirst = librarys.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && t.AREA_ID == item.AREA_ID && t.RISK_NAME == item.RISK_NAME && t.RISK_DESCRIPTION == item.RISK_DESCRIPTION && t.TYPE_ID == item.TYPE_ID); if (libraryFirst != null) { //var ldeparts = libraryDeparts.Where(t => t.ENTERPRISE_LIBRARY_ID == libraryFirst.ID).ToList(); //if (ldeparts.Any()) //{ // foreach (var item2 in ldeparts) // { // T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_POST post = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_POST(); // post.ORG_ID = item2.ORG_ID; // post.DOUBLE_PREVENT_MECHANISM_DETAIL_ID = detail.ID; // post.DEPARTMENT_TYPE = item2.DEPARTMENT_TYPE; // post.DEPARTMENT_ID = item2.DEPARTMENT_ID; // post.USER_ID = item2.USER_ID; // detailPosts.Add(post); // } //} var measures = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == libraryFirst.ID).ToList(); if (measures.Any()) { foreach (var item2 in measures) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES measure = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES(); measure.ORG_ID = item2.ORG_ID; measure.DOUBLE_PREVENT_MECHANISM_DETAIL_ID = detail.ID; measure.MEASURES_NAME = item2.MEASURES_NAME; measure.EMERGENCY = item2.EMERGENCY; measure.NUM = item2.NUM; detailMes.Add(measure); var contents = libraryContents.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == item2.ID).ToList(); if (contents.Any()) { foreach (var item3 in contents) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT content = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT(); content.ORG_ID = item3.ORG_ID; content.DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_ID = measure.ID; content.CHECK_CONTENTS_ID = item3.CHECK_CONTENTS_ID; content.CHECK_CONTENT = item3.CHECK_CONTENT; content.CHECK_BASIC = item3.CHECK_BASIC; content.CHECK_STANDARD = item3.CHECK_STANDARD; content.NUM = item3.NUM; detailContents.Add(content); var contentPostTemps = contentDeparts.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == item3.ID).ToList(); if (contentPostTemps.Any()) { foreach (var item4 in contentPostTemps) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_POST contentPost = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_POST(); contentPost.ORG_ID = item4.ORG_ID; contentPost.DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_ID = content.ID; contentPost.CHECK_TYPE = item4.CHECK_TYPE; contentPost.DEPARTMENT_ID = item4.DEPARTMENT_ID; contentPost.CHECK_CYCLE = item4.CHECK_CYCLE; contentPost.CHECK_TYPE_ID = item4.CHECK_TYPE_ID; contentPost.NUM = item4.NUM; contentPosts.Add(contentPost); var postTemps = contentPostss.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID == item4.ID).ToList(); if (postTemps.Any()) { foreach (var item5 in postTemps) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_DEPART pos = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_DEPART(); pos.ORG_ID = item5.ORG_ID; pos.DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_POST_ID = contentPost.ID; pos.POST_ID = item5.POST_ID; contentDepartPosts.Add(pos); } } } } var contentHiddenTemps = contentHiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == item3.ID).ToList(); if (contentHiddenTemps.Any()) { foreach (var item4 in contentHiddenTemps) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_HIDDEN contentPost = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_HIDDEN(); contentPost.ORG_ID = item4.ORG_ID; contentPost.DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_ID = content.ID; contentPost.HIDDEN_DESCRIPTION = item4.HIDDEN_DESCRIPTION; contentPost.HIDDEN_LEVEL = item4.HIDDEN_LEVEL; contentPost.RECTIFICATION_MEASURES = item4.RECTIFICATION_MEASURES; contentPost.NUM = item4.NUM; contentHiddenss.Add(contentPost); } } } } } } } } notice = NotificationTaskService.InsertUserNoticeTaskModel("风险检查关联表", dou.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK026"); } } } InsertApproveSK(serialCode[0], "SK041", param, result.ID, "SK041_SHOWPRINT", entity.TaskID, true, () => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (result != null) this.UpdateEntityNoCommit(result); if (resultDetails != null && resultDetails.Any()) BantchSaveEntityNoCommit(resultDetails); if (detailDeparts != null && detailDeparts.Any()) BantchSaveEntityNoCommit(detailDeparts); if (detailMeasures != null && detailMeasures.Any()) BantchSaveEntityNoCommit(detailMeasures); if (detailPostSums != null && detailPostSums.Any()) BantchSaveEntityNoCommit(detailPostSums); if (detailPostDetailSums != null && detailPostDetailSums.Any()) BantchSaveEntityNoCommit(detailPostDetailSums); if (notice != null) this.UpdateEntityNoCommit(notice); if (dou != null) this.UpdateEntityNoCommit(dou); if (douDetails != null && douDetails.Count > 0) BantchSaveEntityNoCommit(douDetails); if (detailMes != null && detailMes.Count > 0) BantchSaveEntityNoCommit(detailMes); if (detailPosts != null && detailPosts.Count > 0) BantchSaveEntityNoCommit(detailPosts); if (detailDeps != null && detailDeps.Count > 0) BantchSaveEntityNoCommit(detailDeps); if (detailDepDets != null && detailDepDets.Count > 0) BantchSaveEntityNoCommit(detailDepDets); if (detailContents != null && detailContents.Count > 0) BantchSaveEntityNoCommit(detailContents); if (contentPosts != null && contentPosts.Count > 0) BantchSaveEntityNoCommit(contentPosts); if (contentHiddenss != null && contentHiddenss.Count > 0) BantchSaveEntityNoCommit(contentHiddenss); if (contentDepartPosts != null && contentDepartPosts.Count > 0) BantchSaveEntityNoCommit(contentDepartPosts); }, null, null, null, null, null, "SK039_SHOWPRINT", null, "安全风险评估汇总表审批(" + param + ")"); return true; //notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险评估汇总表(" + param + ")", result.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK041"); } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (result != null) this.UpdateEntityNoCommit(result); if (resultDetails != null && resultDetails.Any()) BantchSaveEntityNoCommit(resultDetails); if (detailDeparts != null && detailDeparts.Any()) BantchSaveEntityNoCommit(detailDeparts); if (detailMeasures != null && detailMeasures.Any()) BantchSaveEntityNoCommit(detailMeasures); if (notice != null) this.UpdateEntityNoCommit(notice); if (dou != null) this.UpdateEntityNoCommit(dou); if (douDetails != null && douDetails.Count > 0) BantchSaveEntityNoCommit(douDetails); if (detailMes != null && detailMes.Count > 0) BantchSaveEntityNoCommit(detailMes); if (detailPosts != null && detailPosts.Count > 0) BantchSaveEntityNoCommit(detailPosts); if (detailContents != null && detailContents.Count > 0) BantchSaveEntityNoCommit(detailContents); if (contentPosts != null && contentPosts.Count > 0) BantchSaveEntityNoCommit(contentPosts); if (contentHiddenss != null && contentHiddenss.Count > 0) BantchSaveEntityNoCommit(contentHiddenss); if (contentDepartPosts != null && contentDepartPosts.Count > 0) BantchSaveEntityNoCommit(contentDepartPosts); }); } return true; } private bool BackUpdate_SKRiskEvaluationSummary(T_PF_APPROVE entityInt, T_PF_APPROVE modelApp, List listAppDetail, T_FM_NOTIFICATION_TASK taskFinish, List listTaskNext, bool isLast = false, bool isApprovel = true) { #region 审批公用 if (modelApp == null && isApprovel) { string taskCodeCheck = String.Empty; bool result = GetApproject2(entityInt, ref modelApp, ref listAppDetail, ref taskFinish, ref taskCodeCheck, ref isLast, ref listTaskNext); if (!result) { throw new Exception("审批失败!"); } } #endregion if (!isLast && isApprovel) { this.UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); }); } else { var entity = this.GetEntity(modelApp != null ? modelApp.DATA_ID : entityInt.DATA_ID, "Nav_Details"); entity.STATUS = PFStandardStatus.Archived; entity.END_DATE = DateTime.Now; //触发风险检查关联表 T_SK_DOUBLE_PREVENT_MECHANISM dou = null; T_FM_NOTIFICATION_TASK notice = null; List details = new List(); List detailMes = new List(); List detailPosts = new List(); List detailDeps = new List(); List detailDepDets = new List(); List detailContents = new List(); List contentPosts = new List(); List contentDepartPosts = new List(); List contentHiddenss = new List(); if (entity.APPLY_USER_ID != null && entity.Nav_Details != null && entity.Nav_Details.Any()) { var sumDetailIds = entity.Nav_Details.Select(t => t.ID).ToList(); var sumDetailPosts = this.GetEntities(t => sumDetailIds.Contains(t.RISK_EVALUATION_SUMMARY_DETAIL_ID), new BaseFilter(entity.ORG_ID)); var sumPostIds = sumDetailPosts.Select(t => t.ID).ToList(); var sumDetailPostDets = this.GetEntities(t => sumPostIds.Contains(t.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID), new BaseFilter(entity.ORG_ID)); var sumDetailDeparts = this.GetEntities(t => sumDetailIds.Contains(t.RISK_EVALUATION_SUMMARY_DETAIL_ID), new BaseFilter(entity.ORG_ID)); var user = this.GetEntity(t => t.ID == entity.APPLY_USER_ID); var productionId = entity.Nav_Details.FirstOrDefault(t => t.PRODUCTION_UNIT_ID != null)?.PRODUCTION_UNIT_ID; var librarys = this.GetEntities(t => t.ENABLE_STATUS == 0 && t.PRODUCTION_UNIT_ID == productionId, new BaseFilter(entity.ORG_ID)); var libraryIds = librarys.Select(t => t.ID).ToList(); //var libraryDeparts = GetEntities(i => i.IS_DELETED == false && libraryIds.Contains(i.ENTERPRISE_LIBRARY_ID), new BaseFilter(entity.ORG_ID)).ToList(); var libraryDetails = GetEntities(i => i.IS_DELETED == false && libraryIds.Contains(i.ENTERPRISE_LIBRARY_ID), new BaseFilter(entity.ORG_ID)).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(entity.ORG_ID)).ToList(); var contentIds = libraryContents.Select(i => i.ID).ToList(); var contentDeparts = GetEntities(i => i.IS_DELETED == false && contentIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).ToList(); var contentPostIds = contentDeparts.Select(i => i.ID).ToList(); var contentPostss = GetEntities(i => i.IS_DELETED == false && contentPostIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID), new BaseFilter(entity.ORG_ID)).ToList(); var contentHiddens = GetEntities(i => i.IS_DELETED == false && contentIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).ToList(); dou = new T_SK_DOUBLE_PREVENT_MECHANISM(); dou.APPLY_USER_ID = entity.APPLY_USER_ID; dou.APPLY_DEPARTMENT_ID = entity.APPLY_DEPARTMENT_ID; dou.ORG_ID = entity.ORG_ID; dou.RISK_EVALUATE_SUMMARY_ID = entity.ID; foreach (var item in entity.Nav_Details) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL detail = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL(); detail.ORG_ID = item.ORG_ID; detail.DOUBLE_PREVENT_MECHANISM_ID = dou.ID; detail.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; //detail.MineType = item.MineType; detail.AREA_ID = item.AREA_ID; detail.TYPE_ID = item.TYPE_ID; detail.RISK_DESCRIPTION = item.RISK_DESCRIPTION; detail.RISK_NAME = item.RISK_NAME; //detail.RISK_NAME_ID = item.RISK_NAME_ID; detail.EVALUATE_L = item.EVALUATE_L; detail.EVALUATE_E = item.EVALUATE_E; detail.EVALUATE_C = item.EVALUATE_C; detail.SCOREC_ID = item?.SCOREC_ID; detail.SCOREE_ID = item?.SCOREE_ID; detail.SCOREL_ID = item?.SCOREL_ID; detail.EVALUATE_SCORE = item.EVALUATE_SCORE; detail.EVALUATE_LEVEL = item.EVALUATE_LEVEL; detail.EMERGENCY = item.EMERGENCY; detail.MARK = item.MARK; details.Add(detail); var ldeparts = sumDetailDeparts.Where(t => t.RISK_EVALUATION_SUMMARY_DETAIL_ID == item.ID).ToList(); if (ldeparts.Any()) { foreach (var item2 in ldeparts) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_POST post = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_POST(); post.ORG_ID = item2.ORG_ID; post.DOUBLE_PREVENT_MECHANISM_DETAIL_ID = detail.ID; post.DEPARTMENT_TYPE = item2.DEPARTMENT_TYPE; post.DEPARTMENT_ID = item2.DEPARTMENT_ID; post.USER_ID = item2.USER_ID; detailPosts.Add(post); } } var lposts = sumDetailPosts.Where(t => t.RISK_EVALUATION_SUMMARY_DETAIL_ID == item.ID).ToList(); if (lposts.Any()) { foreach (var item2 in lposts) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_DEPART dep = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_DEPART(); dep.DEPARTMENT_ID = item2.DEPARTMENT_ID; dep.ORG_ID = item.ORG_ID; dep.DOUBLE_PREVENT_MECHANISM_DETAIL_ID = detail.ID; detailDeps.Add(dep); var lpostDetails = sumDetailPostDets.Where(t => t.RISK_EVALUATION_SUMMARY_DETAIL_POST_ID == item2.ID).ToList(); if (lpostDetails != null && lpostDetails.Any()) { foreach (var item3 in lpostDetails) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_DEPART_DETAIL depDetail = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_DEPART_DETAIL(); depDetail.POST_ID = item3.POST_ID; depDetail.ORG_ID = item.ORG_ID; depDetail.MECHANISM_DETAIL_DEPART_ID = dep.ID; detailDepDets.Add(depDetail); } } } } var libraryFirst = librarys.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == item.PRODUCTION_UNIT_ID && t.AREA_ID == item.AREA_ID && t.RISK_NAME == item.RISK_NAME && t.RISK_DESCRIPTION == item.RISK_DESCRIPTION && t.TYPE_ID == item.TYPE_ID); if (libraryFirst != null) { //var departs = libraryDeparts.Where(t => t.ENTERPRISE_LIBRARY_ID == libraryFirst.ID).ToList(); //if (departs.Any()) //{ // foreach (var item2 in departs) // { // T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_POST post = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_POST(); // post.ORG_ID = item2.ORG_ID; // post.DOUBLE_PREVENT_MECHANISM_DETAIL_ID = detail.ID; // post.DEPARTMENT_TYPE = item2.DEPARTMENT_TYPE; // post.DEPARTMENT_ID = item2.DEPARTMENT_ID; // post.USER_ID = item2.USER_ID; // detailPosts.Add(post); // } //} var measures = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == libraryFirst.ID).ToList(); if (measures.Any()) { foreach (var item2 in measures) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES measure = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES(); measure.ORG_ID = item2.ORG_ID; measure.DOUBLE_PREVENT_MECHANISM_DETAIL_ID = detail.ID; measure.MEASURES_NAME = item2.MEASURES_NAME; measure.EMERGENCY = item2.EMERGENCY; measure.NUM = item2.NUM; detailMes.Add(measure); var contents = libraryContents.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == item2.ID).ToList(); if (contents.Any()) { foreach (var item3 in contents) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT content = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT(); content.ORG_ID = item3.ORG_ID; content.DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_ID = measure.ID; content.CHECK_CONTENTS_ID = item3.CHECK_CONTENTS_ID; content.CHECK_CONTENT = item3.CHECK_CONTENT; content.CHECK_BASIC = item3.CHECK_BASIC; content.CHECK_STANDARD = item3.CHECK_STANDARD; content.NUM = item3.NUM; detailContents.Add(content); var contentPostTemps = contentDeparts.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == item3.ID).ToList(); if (contentPostTemps.Any()) { foreach (var item4 in contentPostTemps) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_POST contentPost = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_POST(); contentPost.ORG_ID = item4.ORG_ID; contentPost.DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_ID = content.ID; contentPost.CHECK_TYPE = item4.CHECK_TYPE; contentPost.DEPARTMENT_ID = item4.DEPARTMENT_ID; contentPost.CHECK_CYCLE = item4.CHECK_CYCLE; contentPost.CHECK_TYPE_ID = item4.CHECK_TYPE_ID; contentPost.NUM = item4.NUM; contentPosts.Add(contentPost); var postTemps = contentPostss.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID == item4.ID).ToList(); if (postTemps.Any()) { foreach (var item5 in postTemps) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_DEPART pos = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_DEPART(); pos.ORG_ID = item5.ORG_ID; pos.DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_POST_ID = contentPost.ID; pos.POST_ID = item5.POST_ID; contentDepartPosts.Add(pos); } } } } var contentHiddenTemps = contentHiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == item3.ID).ToList(); if (contentHiddenTemps.Any()) { foreach (var item4 in contentHiddenTemps) { T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_HIDDEN contentPost = new T_SK_DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_HIDDEN(); contentPost.ORG_ID = item4.ORG_ID; contentPost.DOUBLE_PREVENT_MECHANISM_DETAIL_MEASURES_CONTENT_ID = content.ID; contentPost.CHECK_QUESTION_ID = item4.CHECK_QUESTION_ID; contentPost.HIDDEN_DESCRIPTION = item4.HIDDEN_DESCRIPTION; contentPost.HIDDEN_LEVEL = item4.HIDDEN_LEVEL; contentPost.RECTIFICATION_MEASURES = item4.RECTIFICATION_MEASURES; contentPost.NUM = item4.NUM; contentHiddenss.Add(contentPost); } } } } } } } } notice = NotificationTaskService.InsertUserNoticeTaskModel("风险检查关联表", dou.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK026"); } UnifiedCommit(() => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据 修改的安全库、隐患库 BantchSaveEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); if (listTaskNext != null && listTaskNext.Count > 0) BantchSaveEntityNoCommit(listTaskNext); if (entity != null) this.UpdateEntityNoCommit(entity); if (dou != null) this.UpdateEntityNoCommit(dou); if (notice != null) this.UpdateEntityNoCommit(notice); if (details != null && details.Count > 0) BantchSaveEntityNoCommit(details); if (detailMes != null && detailMes.Count > 0) BantchSaveEntityNoCommit(detailMes); if (detailPosts != null && detailPosts.Count > 0) BantchSaveEntityNoCommit(detailPosts); if (detailDeps != null && detailDeps.Count > 0) BantchSaveEntityNoCommit(detailDeps); if (detailDepDets != null && detailDepDets.Count > 0) BantchSaveEntityNoCommit(detailDepDets); if (detailContents != null && detailContents.Count > 0) BantchSaveEntityNoCommit(detailContents); if (contentPosts != null && contentPosts.Count > 0) BantchSaveEntityNoCommit(contentPosts); if (contentHiddenss != null && contentHiddenss.Count > 0) BantchSaveEntityNoCommit(contentHiddenss); if (contentDepartPosts != null && contentDepartPosts.Count > 0) BantchSaveEntityNoCommit(contentDepartPosts); }); } return true; } /// /// 发布审批流 /// /// 审批流编号 /// 审批流模板配置中的编号(例:PF001) /// 审批流模板配置中的自定义参数 /// 审批流对应主表ID(DATA_ID) /// 审批流对应 APPROVE_CODE(例:FO017_SHOWPRINT) /// 待办ID(传入需要结束的待办ID) /// 是否需要发送通知 /// /// 审批流ID(主表如果有存传值进来 ) /// 审批用户(主表如果有存传值进来 ) /// 自定义审批流程人员信息 /// 自定义审批流程人员部门信息 /// 待办完成 后 已办事项 点击查看页面编号 /// /// 审批流名称 /// public void InsertApproveSK(string serialCode, string fromCode, string param, Guid id, string approveCode, Guid? finishNoticeId, bool sendMessage, Action action, Guid? approveId = null, Guid? approveUserId = null, Dictionary dicApproveUser = null, Dictionary dicApproveDepartMentID = null, string NoticeCode = "", string taskSourceFormCode = "", Guid? operaterID = null, string approveTaskName = "", FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? iBSOperateEnum = null, Guid? DATA_ID_LOG = null, Guid? DATA_ID_SUB = null, DateTime? dtTaskEnd = null, List listDataIdSub = null, int? nextBSOperateEnum = null) { T_PF_APPROVE approve = null; //上个消息 T_FM_NOTIFICATION_TASK finishNotice = null; //发消息 T_FM_NOTIFICATION_TASK notice = null; //细表 List appdetails = new List(); if (operaterID == null) { operaterID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; } string CALLBACK_INTERFACE = string.Empty; List listDATA_ID = new List(); List listBSLog = null; if (sendMessage || approveId != null)// wyw 添加 || approveId != null 先添加审批流 但是不发送通知 { Expression> express = t => t.FORM_CODE == fromCode && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用; if (!string.IsNullOrEmpty(param)) { express = express.And(t => t.PARAM == param); } if (finishNoticeId != null && finishNoticeId != Guid.Empty) { finishNotice = NotificationTaskService.GetTaskFinishModel(finishNoticeId.Value, taskSourceFormCode);//wyw 之前方法 巡回安全检查填写会报错 if (finishNotice != null && finishNotice.SOURCE_DATA_ID.HasValue && finishNotice.SOURCE_DATA_ID != id && operaterID.HasValue) { try { SysLogService.AddAddLog(operaterID.Value, fromCode, finishNoticeId.Value.ToString(), id.ToString(), "可能TaskID串了 结束入参 TaskID:" + finishNoticeId + " 查找TaskID:" + finishNotice.ID.ToString() + " SOURCE_DATA_ID: " + finishNotice.SOURCE_DATA_ID?.ToString() + "入参id: " + id.ToString()); } catch { } } } bool isDefaultChange = false;//是否方法会修改 T_PF_APPROVE_TEMP_DETAIL 中的值 //Dictionary dic = null; var approveTemp = this.GetEntity(express, "Nav_ApproveTempDetails.Nav_ApproveRole"); if (approveTemp != null && approveTemp.Nav_ApproveTempDetails != null && approveTemp.Nav_ApproveTempDetails.Any()) { //wyw 填充自定义流程人员信息 FillApproveTempUser(approveTemp.Nav_ApproveTempDetails, dicApproveUser, ref isDefaultChange); FillApproveTempUser(approveTemp.Nav_ApproveTempDetails, dicApproveDepartMentID, ref isDefaultChange); List listNUM = new List(); if (dicApproveUser != null) { foreach (var item in dicApproveUser) { listNUM.Add(item.Key); } } if (dicApproveDepartMentID != null) { foreach (var item in dicApproveDepartMentID) { listNUM.Add(item.Key); } } approve = new T_PF_APPROVE(); if (approveId != null) { approve.ID = approveId.Value; } //加入审批主表 approve.APPROVE_TEMP_ID = approveTemp.ID; approve.ORG_ID = approveTemp.ORG_ID; approve.APPROVE_STATUS = (int)ApproveStatus.Doing; approve.Nav_ApproveDetails = null; approve.DATA_ID = id; approve.NAME = approveTemp.NAME; approve.APPROVE_CODE = approveCode; approve.CODE = String.IsNullOrEmpty(serialCode) ? DateTime.Now.ToString("yyyyMMddHHmmss") : serialCode; approve.CALLBACK_INTERFACE = approveTemp.CALLBACK_INTERFACE; //一个表单对应多个模板时,保存自定义参数 approve.PARAM = approveTemp.PARAM; var approveRoles = approveTemp.Nav_ApproveTempDetails.Where(t => t.APPROVE_ROLE_ID != null).Select(x => (Guid)x.APPROVE_ROLE_ID).Distinct().ToList(); var ahApproveRole = this.GetEntities(t => t.NAME.Contains("安环"), new BaseFilter(approveTemp.ORG_ID)).Select(m => m.ID).ToList(); if (ahApproveRole != null && ahApproveRole.Any()) approveRoles.AddRange(ahApproveRole); //如果有传人就用传入人的id,如果不是就用当前人 var loginUserId = approveUserId != null ? approveUserId : APT.Infrastructure.Api.AppContext.CurrentSession.UserID; List listUserID = new List(); listUserID.Add(loginUserId.Value); foreach (var item in approveTemp.Nav_ApproveTempDetails) { if (item.DEFAULT_APPROVE_USER_ID != null && !listUserID.Contains(item.DEFAULT_APPROVE_USER_ID.Value)) { listUserID.Add(item.DEFAULT_APPROVE_USER_ID.Value); } } var hm = this.GetEntity(t => t.STATUS == FOPreMeetingStatusEnum.归档); var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(approveTemp.ORG_ID), "Nav_Department", "Nav_ApproveRole").ToList();//((t.APPROVE_ROLE_ID != null && approveRoles.Contains((Guid)t.APPROVE_ROLE_ID)) || listUserID.Contains(t.ID)) approveTemp.Nav_ApproveTempDetails.ForEach(t => { //var user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID); //if (loginUser.Nav_Department.DEPARTMENT_TYPE != (int)FMDepartmentType.公司) // user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID && x.DEPARTMENT_ID == departmentId); 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 = t.NAME; detail.NUM = t.NUM; detail.APPROVE_ROLE_ID = t.APPROVE_ROLE_ID; detail.IS_ALLOW_UPDATE = t.IS_ALLOW_UPDATE; if (listNUM.Contains(t.NUM)) { //如果传参未找到 就是没有 detail.APPROVE_USER_ID = t.DEFAULT_APPROVE_USER_ID != null ? t.DEFAULT_APPROVE_USER_ID : null; } else { if (detail.NAME == "风险管理小组副组长" && hm != null) { detail.APPROVE_USER_ID = hm.DEPUTY_GROUP_LEADER_ID; } else if (detail.NAME == "风险管理小组组长" && hm != null) { detail.APPROVE_USER_ID = hm.GROUP_LEADER_ID; } else { detail.APPROVE_USER_ID = t.DEFAULT_APPROVE_USER_ID != null ? t.DEFAULT_APPROVE_USER_ID : GetApproveUser(t, users, (Guid)loginUserId); } } if (detail.Nav_ApproveUser != null) { detail.Nav_ApproveUser = null; } detail.Nav_ApproveRole = t.Nav_ApproveRole; //if (detail.APPROVE_USER_ID == null) // throw new Exception("审批流未找到" + detail.NAME + ",请联系管理员维护"); if (detail.APPROVE_USER_ID != null) appdetails.Add(detail); }); appdetails.OrderBy(t => t.NUM); var loginUser = users.FirstOrDefault(t => t.ID == loginUserId); var departUser = this.GetEntity(t => (t.USER_ID == loginUserId || t.CHARGEUSER_ID == loginUserId) && (t.NAME.Contains("安全环保") || t.NAME.Contains("安环部"))); if (departUser != null || (loginUser.Nav_ApproveRole != null && loginUser.Nav_ApproveRole.NAME.Contains("安环部负责人")) || (loginUser.Nav_ApproveRole != null && loginUser.Nav_ApproveRole.NAME.Contains("安环部安全员"))) { var tempSafeD = appdetails.FirstOrDefault(m => m.Nav_ApproveRole != null && m.Nav_ApproveRole.NAME.Contains("部门安全员")); var tempSafe = appdetails.FirstOrDefault(m => m.Nav_ApproveRole != null && m.Nav_ApproveRole.NAME.Contains("安环部安全员")); if (tempSafe != null && tempSafeD != null && appdetails.Count() > 1 && tempSafeD.APPROVE_USER_ID == tempSafe.APPROVE_USER_ID) { appdetails.Remove(tempSafe); } var tempChargeD = appdetails.FirstOrDefault(m => m.Nav_ApproveRole != null && m.Nav_ApproveRole.NAME.Contains("部门负责人")); var tempCharge = appdetails.FirstOrDefault(m => m.Nav_ApproveRole != null && m.Nav_ApproveRole.NAME.Contains("安环部负责人")); if (tempCharge != null && tempChargeD != null && appdetails.Count() > 1 && tempChargeD.APPROVE_USER_ID == tempCharge.APPROVE_USER_ID) { appdetails.Remove(tempCharge); } } appdetails.ForEach(i => i.Nav_ApproveRole = null); appdetails.Where(i => i.NUM == appdetails.Min(x => x.NUM)).ForEach(i => i.IS_CURRENT = true); //当前节点 T_PF_APPROVE_DETAIL curentApprove = null; string JsonApproveDetail = string.Empty; GetApproveNodes(appdetails, ref curentApprove, ref JsonApproveDetail); //DealOperateApproveDetail(ref sendMessage, operaterID, ref appdetails, ref CALLBACK_INTERFACE, listDATA_ID, approve, ref curentApprove);//整理操作者审批流相关信息 wyw if (sendMessage) { //所有节点均无审核人,直接归档 if (curentApprove == null) { //将审核流程置为已完成 approve.APPROVE_STATUS = (int)ApproveStatus.Done; LogApprove(approve, loginUserId.Value, JsonApproveDetail);//添加日志 } else { appdetails.Where(i => i.NUM == curentApprove.NUM).ForEach(i => i.IS_CURRENT = true); if (!string.IsNullOrEmpty(JsonApproveDetail)) { //如果人数不一致 LogApproveDetailReduce(approve, loginUserId.Value, JsonApproveDetail, appdetails); } var sendUserId = appdetails.Where(i => i.NUM == curentApprove.NUM).Select(t => (Guid)t.APPROVE_USER_ID).FirstOrDefault(); //var sendUserName = users.Where(i => i.ID == sendUserId).FirstOrDefault().NAME; var ue = users.Where(i => i.ID == sendUserId).FirstOrDefault(); string sendUserName = string.Empty; if (ue != null) { sendUserName = users.Where(i => i.ID == sendUserId).FirstOrDefault().NAME; } else { sendUserName = GetEntity(t => t.ID == sendUserId && t.ENABLE_STATUS == 0)?.NAME; } string taskName = approveTaskName; if (string.IsNullOrEmpty(taskName)) { taskName = approve.NAME; if (!taskName.Contains("待审批")) { taskName += "待审批"; } } var startTime = DateTime.Now; var endTime = DateTime.Now.AddHours(24); if (TASK_TYPE != null && TASK_TYPE.HasValue) { endTime = NotificationTaskService.GetTaskEndTime(TASK_TYPE.Value, approveTemp.ORG_ID.Value, startTime, FREQUENCYE, DateTimeLastest, null); } else { switch (fromCode) { case "HM104": case "HM087": case "HM111": case "HM109": case "HM107": endTime = Convert.ToDateTime(DateTime.Now.AddDays(2).ToString("D").ToString()).AddSeconds(-1); break; case "FO015": case "FO017": case "HM062": case "HM064": case "HM102": case "HM100": case "HM122": case "HM123": endTime = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("D").ToString()).AddSeconds(-1); break; default: break; } } //发消息 notice = NotificationTaskService.InsertUserNoticeTaskModel(taskName, approve.ID, approve.ORG_ID, (Guid)sendUserId, sendUserName, startTime, endTime, (int)FMNoticeTypeEnum.审批, "PF119"); } } } else { throw new Exception("获取审批流信息失败【表单:" + fromCode + (string.IsNullOrEmpty(param) ? "" : "参数:" + param) + "】,请设置对应审批流!"); } if (isDefaultChange) { //如果有改变 DEFAULT_APPROVE_USER_ID 需要还原 approveTemp.Nav_ApproveTempDetails.ForEach(e => { e.DEFAULT_APPROVE_USER_ID = null; }); } if (finishNotice == null && dtTaskEnd != null) { finishNotice = new T_FM_NOTIFICATION_TASK(); finishNotice.ID = Guid.Empty; finishNotice.TASK_ENDDT = dtTaskEnd.Value; } OPERATEPOINT_Enums? nextOPERATEPOINT = null; if (nextBSOperateEnum != null) { nextOPERATEPOINT = (OPERATEPOINT_Enums)(nextBSOperateEnum.Value); } } this.UnifiedCommit(() => { if (action != null) action(); if (approve != null) AddEntityNoCommit(approve); if (appdetails != null && appdetails.Any()) BantchAddEntityNoCommit(appdetails); if (finishNotice != null && finishNotice.ID != Guid.Empty) UpdateEntityNoCommit(finishNotice, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID"); if (notice != null) AddEntityNoCommit(notice); if (listBSLog != null && listBSLog.Any()) BantchSaveEntityNoCommit(listBSLog);//有修改和新增 }); } /// /// 单人顺序审批 填充审批人信息 /// /// 审批模板详情 /// 自定义填充人员信息 private void FillApproveTempUser(ICollection listTempDetail, Dictionary dicApproveUser, ref bool isDefaultChange) { if (listTempDetail == null || listTempDetail.Count < 1 || dicApproveUser == null || dicApproveUser.Count < 1) return; foreach (var item in listTempDetail) { if (dicApproveUser.ContainsKey(item.NUM)) { //if (item.DEFAULT_APPROVE_USER_ID.HasValue) // continue; //isDefaultChange = true; //item.Nav_DefaultApproveUser = dicApproveUser[item.NUM]; //item.DEFAULT_APPROVE_USER_ID = dicApproveUser[item.NUM].ID; //字典有值传进来审核是什么 //item.Nav_DefaultApproveUser = dicApproveUser[item.NUM]; item.DEFAULT_APPROVE_USER_ID = dicApproveUser[item.NUM].ID; isDefaultChange = false; } } } /// /// 单人顺序审批 填充审批人信息 /// /// 审批模板详情 /// 自定义填充人部门ID private void FillApproveTempUser(ICollection listTempDetail, Dictionary dicApproveDepartMentID, ref bool isDefaultChange) { if (listTempDetail == null || listTempDetail.Count < 1 || dicApproveDepartMentID == null || dicApproveDepartMentID.Count < 1) return; T_FM_USER userTemp = null; Guid DEPARTMENT_ID = Guid.Empty; T_FM_DEPARTMENT department = null; foreach (var item in listTempDetail) { if (dicApproveDepartMentID.ContainsKey(item.NUM)) { if (item.DEFAULT_APPROVE_USER_ID.HasValue) continue; DEPARTMENT_ID = dicApproveDepartMentID[item.NUM]; userTemp = this.GetEntity(x => x.APPROVE_ROLE_ID == item.APPROVE_ROLE_ID && DEPARTMENT_ID == (Guid)x.DEPARTMENT_ID);//如果需要循环获取 修改此方法 if (userTemp == null) { do { department = GetEntity(DEPARTMENT_ID); if (department.PARENT_ID == Guid.Empty || department.PARENT_ID == null) { break; } DEPARTMENT_ID = department.PARENT_ID.Value; userTemp = this.GetEntity(x => x.APPROVE_ROLE_ID == item.APPROVE_ROLE_ID && DEPARTMENT_ID == (Guid)x.DEPARTMENT_ID); } while (userTemp == null); } if (userTemp != null) { isDefaultChange = true; //item.Nav_DefaultApproveUser = userTemp; item.DEFAULT_APPROVE_USER_ID = userTemp.ID; } } } } /// /// 根据部门树查找审核人 /// /// /// /// private Guid? GetApproveUser(T_PF_APPROVE_TEMP_DETAIL approveTempDetail, List users, Guid loginUserId) { Guid? approveId = null; if (approveTempDetail.DEPARTMENT_TYPE == (int)FMDepartmentType.Company) { var approveIds = users.Where(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID).Select(t => t.ID).ToList(); if (approveIds.Count() == 0) { if (approveTempDetail.Nav_ApproveRole.NAME == "安环部负责人") { var dep = GetEntity(t => (t.NAME.Contains("安全环保") || t.NAME.Contains("安环部")) && t.DEPARTMENT_TYPE == 0 && t.ENABLE_STATUS == 0); if (dep != null) { if (dep.USER_ID.HasValue) { approveId = dep.USER_ID.Value; } else if (dep.CHARGEUSER_ID.HasValue) { approveId = dep.CHARGEUSER_ID.Value; } } } } else if (approveIds.Count() == 1) { approveId = approveIds.FirstOrDefault(); } else { var user = users.FirstOrDefault(t => t.ID == loginUserId); if (user.DEPARTMENT_ID != null) { List departmentIds = new List(); GetDepartmentIdSK((Guid)user.DEPARTMENT_ID, ref departmentIds); if (departmentIds.Any()) { var dep = GetEntity(t => departmentIds.Contains(t.ID) && t.DEPARTMENT_TYPE != 3 && approveIds.Contains((Guid)t.CHARGEUSER_ID)); if (dep != null) approveId = dep.CHARGEUSER_ID; } } } } else { var user = users.FirstOrDefault(t => t.ID == loginUserId); if (user.DEPARTMENT_ID != null) { List departmentIds = new List(); GetDepartmentIdSK((Guid)user.DEPARTMENT_ID, ref departmentIds); if (departmentIds.Any()) { var charge = this.GetEntity(t => t.NAME == "安环部负责人"); var chargeK = this.GetEntity(t => t.NAME == "安环部科长"); var chargeSafe = this.GetEntity(t => t.NAME == "安环部安全员"); foreach (var item in departmentIds) { var userTemp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item); if (userTemp == null) { if (approveTempDetail.DEPARTMENT_TYPE == (int)FMDepartmentType.Department && approveTempDetail.Nav_ApproveRole != null && approveTempDetail.Nav_ApproveRole.NAME == "部门负责人") { if (charge != null) { var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == charge.ID && x.DEPARTMENT_ID == item); if (temp == null) { var temp2 = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item); if (temp2 != null) { approveId = temp2.ID; break; } else { if (user.Nav_Department != null && user.Nav_Department.DEPARTMENT_TYPE == 0) { var dep = GetEntity(user.DEPARTMENT_ID.Value); if (dep != null) { if (dep.USER_ID.HasValue) { approveId = dep.USER_ID.Value; } else if (dep.CHARGEUSER_ID.HasValue) { approveId = dep.CHARGEUSER_ID.Value; } break; } } else { continue; } } } else { approveId = temp?.ID; break; } } else { if (user.Nav_Department != null && user.Nav_Department.DEPARTMENT_TYPE == 0) { var dep = GetEntity(user.DEPARTMENT_ID.Value); if (dep != null) { if (dep.USER_ID.HasValue) { approveId = dep.USER_ID.Value; } else if (dep.CHARGEUSER_ID.HasValue) { approveId = dep.CHARGEUSER_ID.Value; } break; } else { continue; } } } } else if (approveTempDetail.DEPARTMENT_TYPE == (int)FMDepartmentType.Department && approveTempDetail.Nav_ApproveRole != null && approveTempDetail.Nav_ApproveRole.NAME == "部门安全员") { if (chargeSafe != null) { var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == chargeSafe.ID && x.DEPARTMENT_ID == item); if (temp == null) { var temp2 = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item); if (temp2 != null) { approveId = temp2.ID; break; } else { if (user.Nav_Department != null && user.Nav_Department.DEPARTMENT_TYPE == 0) { var dep = GetEntity(user.DEPARTMENT_ID.Value); if (dep != null) { if (dep.USER_ID.HasValue) { approveId = dep.USER_ID.Value; } else if (dep.CHARGEUSER_ID.HasValue) { approveId = dep.CHARGEUSER_ID.Value; } break; } else { continue; } } } } else { approveId = temp?.ID; break; } } else { if (user.Nav_Department != null && user.Nav_Department.DEPARTMENT_TYPE == 0) { var dep = GetEntity(user.DEPARTMENT_ID.Value); if (dep != null) { if (dep.USER_ID.HasValue) { approveId = dep.USER_ID.Value; } else if (dep.CHARGEUSER_ID.HasValue) { approveId = dep.CHARGEUSER_ID.Value; } break; } else { continue; } } } } else if (approveTempDetail.DEPARTMENT_TYPE == (int)FMDepartmentType.Workshop && approveTempDetail.Nav_ApproveRole != null && approveTempDetail.Nav_ApproveRole.NAME == "车间负责人") { if (chargeK != null) { var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == chargeK.ID && x.DEPARTMENT_ID == item); if (temp == null) { var temp2 = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item); if (temp2 != null) { approveId = temp2.ID; break; } else { if (user.Nav_Department != null && user.Nav_Department.DEPARTMENT_TYPE == 1) { var dep = GetEntity(user.DEPARTMENT_ID.Value); if (dep != null) { if (dep.USER_ID.HasValue) { approveId = dep.USER_ID.Value; } else if (dep.CHARGEUSER_ID.HasValue) { approveId = dep.CHARGEUSER_ID.Value; } break; } } else { continue; } } } else { approveId = temp?.ID; break; } } else { if (user.Nav_Department != null && user.Nav_Department.DEPARTMENT_TYPE == 1) { var dep = GetEntity(user.DEPARTMENT_ID.Value); if (dep != null) { if (dep.USER_ID.HasValue) { approveId = dep.USER_ID.Value; } else if (dep.CHARGEUSER_ID.HasValue) { approveId = dep.CHARGEUSER_ID.Value; } break; } else { continue; } } } } else { if (user.Nav_Department != null && user.Nav_Department.DEPARTMENT_TYPE == approveTempDetail.DEPARTMENT_TYPE && approveTempDetail.Nav_ApproveRole.NAME.Contains("负责人")) { var dep = GetEntity(user.DEPARTMENT_ID.Value); if (dep != null) { if (dep.USER_ID.HasValue) { approveId = dep.USER_ID.Value; } else if (dep.CHARGEUSER_ID.HasValue) { approveId = dep.CHARGEUSER_ID.Value; } break; } else { continue; } } else { continue; } } } else { approveId = userTemp?.ID; break; } } } } } return approveId; } /// /// 返回所有部门节点 /// private void GetDepartmentIdSK(Guid departmentId, ref List departmentIds) { departmentIds.Add(departmentId); var department = GetEntity(t => t.ID == departmentId); if (department.PARENT_ID != null) { GetDepartmentIdSK((Guid)department.PARENT_ID, ref departmentIds); } } /// /// 获取下个审核节点、审核人 /// /// /// /// /// static void GetApproveNodes(List approveDetails, ref T_PF_APPROVE_DETAIL approveNode, ref string JsonApproveDetail) { if (approveDetails == null || approveDetails.Count() == 0) return; var curentNode = approveDetails.FirstOrDefault(i => i.NUM == approveDetails.Min(x => x.NUM)); if (curentNode.APPROVE_USER_ID == null) { if (string.IsNullOrEmpty(JsonApproveDetail)) { JsonApproveDetail = " APPROVE_DETAIL:" + JsonConvert.SerializeObject(approveDetails); } approveDetails.Remove(curentNode); approveNode = null; if (!approveDetails.Any()) return; GetApproveNodes(approveDetails, ref approveNode, ref JsonApproveDetail); } else { approveNode = curentNode; return; } } /// /// 审批流未匹配到人员 /// /// /// /// public void LogApprove(T_PF_APPROVE approve, Guid loginUserId, string detail) { string data = "APPROVE:" + JsonConvert.SerializeObject(approve); string rep = ",\"CREATER_ID\":null,\"MODIFIER_ID\":null,\"DbConn\":null,\"Nav_Org\":null,\"TaskID\":\"00000000-0000-0000-0000-000000000000\",\"Nav_SysParams\":null"; string rep2 = ",\"ENTITY_ORG_TPYE\":0,\"FORM_ID\":null,\"FLOW_STATUS\":0,\"FLOW_SEND_STATUS\":0,\"FLOW_ID\":null"; detail = detail.Replace(rep, "").Replace(rep2, "").Replace(",\"Nav_Approve\":null", "").Replace(",\"CONTEXT\":null", "").Replace(",\"Nav_ApproveUser\":null", "").Replace(",\"IS_DELETED\":false", ""); SysLogService.AddLog(approve.ORG_ID.Value, loginUserId, PFSysLogTypeEnum.ExceptionApprove, "PF119", "审批流未找到审批人员", string.IsNullOrEmpty(approve.CALLBACK_INTERFACE) ? "" : "未执行回调:" + (approve.CALLBACK_INTERFACE + "(" + approve.DATA_ID + ")"), data + detail); } /// /// 处理操作者 相关审批流 /// /// /// /// /// /// /// /// private static void DealOperateApproveDetail(ref bool isSendMessage, Guid? operaterID, ref List appdetails, ref string CALLBACK_INTERFACE, List listDATA_ID, T_PF_APPROVE approve, ref T_PF_APPROVE_DETAIL curentApprove) { if (appdetails != null && appdetails.Count > 0) { appdetails = appdetails.OrderBy(e => e.NUM).ToList(); var approveOperater = appdetails.FirstOrDefault(e => e.APPROVE_USER_ID == operaterID); if (approveOperater != null) { //设置为已审批 approveOperater.IS_CURRENT = false; approveOperater.NODE_APPROVE_STATUS = (int)NodeApproveStatus.Done; approveOperater.NODE_APPROVE_TIME = DateTime.Now; approveOperater.MODIFY_TIME = approveOperater.NODE_APPROVE_TIME; curentApprove = appdetails.FirstOrDefault(e => e.NUM == approveOperater.NUM && e.ID != approveOperater.ID);//即使此节点是多人 也暂时用选择的第一个人 if (approveOperater.NUM == appdetails.Max(e => e.NUM)) { //最后一个节点 if (curentApprove == null) { //执行审批结束方法 //本次不需要发送待办了 isSendMessage = false; approve.APPROVE_STATUS = (int)ApproveStatus.Done; //直接完成 //url: re.Data + "?id=" + this.state.data.DATA_ID, //approveTemp.CALLBACK_INTERFACE //approve.DATA_ID if (string.IsNullOrEmpty(CALLBACK_INTERFACE)) { CALLBACK_INTERFACE = approve.CALLBACK_INTERFACE; } listDATA_ID.Add(approve.DATA_ID.ToString()); } } else { //非最后节点 if (curentApprove == null)//本节点没数据了 { //找下一个审批节点 //curentApprove = appdetails.FirstOrDefault(e => e.NUM == (approveOperater.NUM + 1)); var appdetailsMore = appdetails.FindAll(e => e.NUM > approveOperater.NUM).OrderBy(e => e.NUM); if (appdetailsMore != null && appdetailsMore.Any()) { curentApprove = appdetailsMore.ToList()[0]; } } } if (approveOperater.NUM > 1) { //删除 前面的节点 for (int i = appdetails.Count - 1; i > -1; i--) { if (appdetails[i].NUM < approveOperater.NUM) { appdetails.Remove(appdetails[i]); } } } } } } /// /// 审批流 和审批模板不一致 添加日志 /// /// /// /// /// public void LogApproveDetailReduce(T_PF_APPROVE approve, Guid loginUserId, string detail, List appdetailsTemp) { string data = "APPROVE:" + JsonConvert.SerializeObject(approve); string detailUser = " APPROVE_DETAIL_USER:{" + JsonConvert.SerializeObject(appdetailsTemp); string rep = ",\"CREATER_ID\":null,\"MODIFIER_ID\":null,\"DbConn\":null,\"Nav_Org\":null,\"TaskID\":\"00000000-0000-0000-0000-000000000000\",\"Nav_SysParams\":null"; string rep2 = ",\"ENTITY_ORG_TPYE\":0,\"FORM_ID\":null,\"FLOW_STATUS\":0,\"FLOW_SEND_STATUS\":0,\"FLOW_ID\":null"; detailUser = detailUser.Replace(rep, "").Replace(rep2, "").Replace(",\"Nav_Approve\":null", "").Replace(",\"CONTEXT\":null", "").Replace(",\"Nav_ApproveUser\":null", "").Replace(",\"IS_DELETED\":false", ""); detail = detail.Replace(rep, "").Replace(rep2, "").Replace(",\"Nav_Approve\":null", "").Replace(",\"CONTEXT\":null", "").Replace(",\"Nav_ApproveUser\":null", "").Replace(",\"IS_DELETED\":false", ""); if (detailUser.Length > 1990)//数据截断 不然报错 { detailUser = detailUser.Substring(0, 1990); } SysLogService.AddLog(approve.ORG_ID.Value, loginUserId, PFSysLogTypeEnum.ExceptionApproveDetailReduce, "PF119", "审批流明细减少", detailUser, data + detail); } #endregion } }