using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.SE; using APT.MS.Domain.Enums; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Linq; using System; using APT.MS.Domain.Entities.FO; using APT.MS.Domain.Entities.SC.PT; using APT.BaseData.Domain.Entities; using APT.MS.Domain.Entities.SC; using System.Linq.Expressions; using APT.BaseData.Domain.Enums; using System.Net.WebSockets; using Microsoft.CodeAnalysis.Differencing; using Org.BouncyCastle.Crypto.Modes.Gcm; using NPOI.SS.Formula.Functions; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.ApiModel.PF; using System.Reflection.Metadata; using System.Threading.Tasks; using APT.WebApi.Models; using log4net.Filter; using APT.MS.Domain.Entities.SC.PE; using APT.PP.WebApi.Controllers.Api.PP; using System.ComponentModel.Design; using System.Threading; using APT.MS.Domain.Entities.BS; using System.Collections; namespace APT.PP.WebApi.Controllers.Api { /// /// 方针与目标管理跑批任务 /// [Route("api/PP/PTController")] [TypeFilter(typeof(CustomActionFilterAttribute))] public class PTController : AuthorizeApiController { IFMNotificationTaskService NotificationTaskService { get; set; } public PTController(IFMNotificationTaskService notificationTaskService) { NotificationTaskService = notificationTaskService; } [HttpPost, Route("MonitorSync")] public JsonActionResult MonitorSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { var dateTime = DateTime.Parse("2024-12-01"); List noticeList = new List(); Expression> expression = e => e.IS_DELETED == false && e.STATUS == PFStandardStatus.Archived && e.CREATE_TIME >= dateTime; var monitors = this.GetEntities(expression, filter,new string[] { "Nav_Details" }); if (monitors != null && monitors.Any()) { var monitor = monitors.Where(e => e.IS_DELETED == false && e.STATUS == PFStandardStatus.Archived && e.CREATE_TIME >= dateTime).ToList(); var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); foreach (var item in monitor) { if (item.Nav_Details != null && item.Nav_Details.Any()) { var userIds = item.Nav_Details.Where(t => t.USER_ID != null).Select(m =>(Guid)m.USER_ID).Distinct().ToList(); var userNames = users.Where(t => userIds.Contains(t.ID)).Select(m => m.NAME).ToList(); //发消息 var notices = NotificationTaskService.InsertUserNoticeTaskModels("(月度)个人监测与考核记录-查阅", item.ID, item.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PT029_SHOWPRINT"); noticeList.AddRange(notices); } } } UnifiedCommit(() => { if (noticeList != null && noticeList.Any()) BantchAddEntityNoCommit(noticeList); }); } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.StackTrace)) throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); else throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } return true; }); } /// /// 方针与目标模块所有跑批 /// /// [HttpPost, Route("SafetyPolicySync")] public JsonActionResult SafetyPolicySync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { //触发安全方针调查表 CreateSafePolicy(filter); ////触发安全生产目标与指标制定 CreateIndicatorFormulation(filter); ////触发安全生产方针征集表 //CreateSafePolicyCollect(filter); } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.StackTrace)) throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); else throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } return true; }); } /// /// 触发安全生产方针征集表 /// /// [HttpPost, Route("SafePolicyCollectSync")] public JsonActionResult SafePolicyCollectSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { ////触发安全生产方针征集表 CreateSafePolicyCollect(filter); } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.StackTrace)) throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); else throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } return true; }); } /// /// 触发班组监测与考核记录表 /// /// [HttpPost, Route("MonitorAssessmentSync")] public JsonActionResult MonitorAssessmentSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { var dtNow = DateTime.Now; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; Expression> expression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0; var timeSet = this.GetOrderEntities(expression, filter).ToList(); if (timeSet.Count < 1) return true; List runList = new List(); List monitorList = new List(); List monitorDetailList = new List(); List detailContentList = new List(); List notices = new List(); foreach (var item in timeSet) { switch (item.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: case BSPLANCHECKFREQUENCYEnum.Year: if (item.MONTH == month && item.DATA == day) runList.Add(item); break; case BSPLANCHECKFREQUENCYEnum.HalfYear: if ((item.MONTH == month && item.DATA == day) || ((item.MONTH + 6) == month && (item.DATA + 183) == day)) runList.Add(item); break; case BSPLANCHECKFREQUENCYEnum.Date: runList.Add(item); break; case BSPLANCHECKFREQUENCYEnum.Week: if (item.WEEKDATA != null && (int)item.WEEKDATA.Value == (int)week) runList.Add(item); break; case BSPLANCHECKFREQUENCYEnum.Month: if (item.DATA == day) runList.Add(item); break; case BSPLANCHECKFREQUENCYEnum.Quarter: if (item.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && day == item.DATA) { runList.Add(item); } } else if (item.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && day == item.DATA) { runList.Add(item); } } else if (item.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && day == item.DATA) { runList.Add(item); } } break; default: break; } } if (runList != null && runList.Any()) { Expression> departExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0; var departInfos = this.GetOrderEntities(departExpression, filter, new string[] { "Nav_User" }).ToList(); Expression> userExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0; var userInfos = this.GetOrderEntities(userExpression, filter, new string[] { "Nav_Department" }).ToList(); Expression> detailExpression = e => e.IS_DELETED == false; var tempDetails = this.GetOrderEntities(detailExpression, filter, new string[] { "Nav_Contents" }).ToList(); foreach (var item in runList) { var type = PTAssessmentCycleEnums.Year; switch (item.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: case BSPLANCHECKFREQUENCYEnum.Year: type = PTAssessmentCycleEnums.Year; break; //case BSPLANCHECKFREQUENCYEnum.HalfYear: // type = PTAssessmentCycleEnums.Year; // break; case BSPLANCHECKFREQUENCYEnum.Date: type = PTAssessmentCycleEnums.Day; break; case BSPLANCHECKFREQUENCYEnum.Week: type = PTAssessmentCycleEnums.Week; break; case BSPLANCHECKFREQUENCYEnum.Month: type = PTAssessmentCycleEnums.Month; break; case BSPLANCHECKFREQUENCYEnum.Quarter: type = PTAssessmentCycleEnums.Quarter; break; default: break; } var departType = -1; switch (item.DEPARTMENT_TYPE) { case FMDepartmentType.公司: departType = 0; break; case FMDepartmentType.部门: departType = 1; break; case FMDepartmentType.车间: departType = 2; break; case FMDepartmentType.班组: departType = -1; break; default: departType = -1; break; } monitorList.AddRange(CreateDepartMonitor(item, type, departInfos, userInfos, tempDetails, departType, ref notices)); } } if (monitorList != null && monitorList.Any()) { monitorList.ForEach(t => { if (t.Nav_Details != null && t.Nav_Details.Any()) { t.Nav_Details.ForEach(t1 => { if (t1.Nav_Contents != null && t1.Nav_Contents.Any()) { detailContentList.AddRange(t1.Nav_Contents); t1.Nav_Contents = null; } }); monitorDetailList.AddRange(t.Nav_Details); t.Nav_Details = null; } }); } UnifiedCommit(() => { if (monitorList != null && monitorList.Any()) BantchAddEntityNoCommit(monitorList); if (monitorDetailList != null && monitorDetailList.Any()) BantchAddEntityNoCommit(monitorDetailList); if (detailContentList != null && detailContentList.Any()) BantchAddEntityNoCommit(detailContentList); if (notices != null && notices.Any()) BantchAddEntityNoCommit(notices); }); } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.StackTrace)) throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); else throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } return true; }); } /// /// 触发班组监测与考核记录表(新) /// /// [HttpPost, Route("MonitorAssessmentNewSync")] public JsonActionResult MonitorAssessmentNewSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { var dtNow = DateTime.Now; var year = dtNow.Year; var month = dtNow.Month; var day = dtNow.Day; var week = dtNow.DayOfWeek; filter.IgnoreDataRule = true; //var planAudits = this.GetEntities(e => e.STATUS == PFStandardStatus.Archived && e.IS_DELETED == false && e.YEAR == year.ToString(), filter, "Nav_User", "Nav_Details", "Nav_Details.Nav_Contents").GroupBy(m=>new { m.DEPARTMENT_ID,m.DEPARTMENT_TYPE }).Select(y=>y.OrderByDescending(t => t.CREATE_TIME).FirstOrDefault()).ToList(); //if (planAudits.Count < 1) //{ // year = year - 1; // planAudits = this.GetEntities(e => e.STATUS == PFStandardStatus.Archived && e.IS_DELETED == false && e.YEAR == year.ToString(), filter, "Nav_User", "Nav_Details", "Nav_Details.Nav_Contents").GroupBy(m => new { m.DEPARTMENT_ID,m.DEPARTMENT_TYPE}).Select(y => y.OrderByDescending(t => t.CREATE_TIME).FirstOrDefault()).ToList(); //} //if (planAudits.Count < 1) // return true; List monitorList = new List(); List monitorDetailList = new List(); List monitorUserList = new List(); List detailContentList = new List(); List notices = new List(); var timeSet = GetEntities(i => i.SET_TYPE == PTSetTypeEnum.MonitorAssessment && i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); if (timeSet.Count < 1) return true; bool isSend = false;var cycle = PTAssessmentCycleEnums.Year; var departments = this.GetEntities(t => t.ENABLE_STATUS==0, new BaseFilter(filter.OrgId), "Nav_User").ToList(); if (filter.OrgId.ToString() == "b043b28b-bbc3-c452-6052-4fba1457abfa") { var idList = new List(); var allIdList = new List(); var nameList = new List(); nameList.Add("安全环保管理部"); nameList.Add("办公室"); nameList.Add("设备能源部"); nameList.Add("财务部"); nameList.Add("企业管理部"); nameList.Add("营销部"); nameList.Add("技术管理部"); nameList.Add("总经理班子"); nameList.Add("矿山部"); var depaerts = departments.Where(t => nameList.Contains(t.NAME)).ToList(); if (depaerts.Any()) { foreach (var item in depaerts) { allIdList.Add(item.ID); var depatIds = departments.Where(t => t.PARENT_ID == item.ID).Select(m => m.ID).ToList(); if (depatIds.Any()) { idList.AddRange(depatIds); allIdList.AddRange(depatIds); } } } if (idList.Any()) { var depatIds = departments.Where(t => t.PARENT_ID != null && idList.Contains((Guid)t.PARENT_ID)).Select(m => m.ID).ToList(); if (depatIds.Any()) { allIdList.AddRange(depatIds); } } if (allIdList.Any()) { departments = departments.Where(t => !allIdList.Contains(t.ID)).ToList(); } } var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); var contents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Contents").ToList(); foreach (var set in timeSet) { switch (set.PLANCHECKFREQUENCY) { case BSPLANCHECKFREQUENCYEnum.Year: cycle = PTAssessmentCycleEnums.Year; if (set.MONTH == month && set.DATA == day) { isSend = true; } break; case BSPLANCHECKFREQUENCYEnum.HalfYear: cycle = PTAssessmentCycleEnums.HalfYear; if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) { isSend = true; } break; case BSPLANCHECKFREQUENCYEnum.Date: cycle = PTAssessmentCycleEnums.Day; isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Week: cycle = PTAssessmentCycleEnums.Week; if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week) { isSend = true; } break; case BSPLANCHECKFREQUENCYEnum.Month: cycle = PTAssessmentCycleEnums.Month; if (set.DATA == day) { isSend = true; } break; case BSPLANCHECKFREQUENCYEnum.Quarter: cycle = PTAssessmentCycleEnums.Quarter; if (set.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day) { isSend = true; } } if (set.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day) { isSend = true; } } if (set.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day) { isSend = true; } } break; default: break; } if (isSend) { if (set.DEPARTMENT_TYPE == FMDepartmentType.公司) { var depart = departments.FirstOrDefault(t => t.NAME.Contains("安全环保") && t.DEPARTMENT_TYPE != 1 && t.DEPARTMENT_TYPE != 2); if (depart != null) { var departList = departments.Where(t => t.DEPARTMENT_TYPE == 3 || t.DEPARTMENT_TYPE == 0).ToList(); var companyId = departList.FirstOrDefault(t => t.DEPARTMENT_TYPE == 3).ID; var userIds = departList.Where(t => t.DEPARTMENT_TYPE != 3).Select(m => m.USER_ID).ToList(); var userList = users.Where(t => userIds.Contains(t.ID) || t.DEPARTMENT_ID == companyId).ToList(); if (!departList.Any() && !userList.Any()) { } else { monitorList.Add(CreateDepartMonitorNew(depart, departList, userList, contents, cycle, year.ToString(), ref notices)); } } } else if (set.DEPARTMENT_TYPE == FMDepartmentType.班组) { var departList = departments.Where(t => t.DEPARTMENT_TYPE == 2).ToList(); if (departList.Any()) { foreach (var item in departList) { var userList = users.Where(t => t.DEPARTMENT_ID == item.ID && t.ID != item.USER_ID).ToList(); if (userList.Any()) { monitorList.Add(CreateDepartMonitorNew(item, null, userList, contents, cycle, year.ToString(), ref notices)); } } } } else { var departs = departments.Where(t => t.DEPARTMENT_TYPE == (int)set.DEPARTMENT_TYPE).ToList(); if (departs.Any()) { foreach (var item in departs) { var departList = departments.Where(t => t.PARENT_ID == item.ID).ToList(); var childUserIds = departList.Select(t => t.USER_ID).ToList(); var userList = users.Where(t => t.DEPARTMENT_ID == item.ID || childUserIds.Contains(t.ID)).ToList(); if (!departList.Any() && !userList.Any()) { } else { monitorList.Add(CreateDepartMonitorNew(item, departList, userList, contents, cycle, year.ToString(), ref notices)); } } } } //年度 //var dataYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Year && t.YEAR == year.ToString()).ToList(); //if (dataYears.Count() > 0) //{ // monitorList.Add(CreateDepartMonitorNew(item, dataYears, PTAssessmentCycleEnums.Year, year.ToString(), ref notices)); //} ////上半年度 //List monthTemp = new List() { 1, 2, 3, 4, 5, 6 }; //var dataHalfYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.HalfYear && t.YEAR == year.ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList(); //if (dataHalfYears.Count() > 0) //{ // monitorList.Add(CreateDepartMonitorNew(item, dataHalfYears, PTAssessmentCycleEnums.HalfYear, year.ToString(), ref notices)); //} ////下半年度 //monthTemp = new List() { 7, 8, 9, 10, 11, 12 }; //var dataHalfSecondYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.HalfYear && t.YEAR == (year - 1).ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList(); //if (dataHalfSecondYears.Count() > 0) //{ // if (month == 1 && day == 1) // { // monitorList.Add(CreateDepartMonitorNew(item, dataHalfSecondYears, PTAssessmentCycleEnums.HalfYear, (year - 1).ToString(), ref notices)); // } //} ////季度(第四季度) //monthTemp = new List() { 12 }; //var dataThirdQuarterYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter && t.YEAR == (year - 1).ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList(); //if (dataThirdQuarterYears.Count() > 0) //{ // if (month == 1 && day == 1) // { // monitorList.Add(CreateDepartMonitorNew(item, dataThirdQuarterYears, PTAssessmentCycleEnums.Quarter, (year - 1).ToString(), ref notices)); // } //} ////季度(第1、2、3季度) //var dataQuarterYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter && t.YEAR == year.ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList(); //if (dataQuarterYears.Count() > 0) //{ // if ((month == 4 && day == 1) || (month == 7 && day == 1) || (month == 10 && (day == 28 || day == 29))) // { // monthTemp = new List() { month - 1 }; // monitorList.Add(CreateDepartMonitorNew(item, dataQuarterYears, PTAssessmentCycleEnums.Quarter, year.ToString(), ref notices)); // } //} ////月度 //monthTemp = new List() { month - 1 }; //var dataMonthYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Month && t.YEAR == year.ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList(); //if (dataMonthYears.Count() > 0) //{ // if (month != 1 && day == 1) // { // monitorList.Add(CreateDepartMonitorNew(item, dataMonthYears, PTAssessmentCycleEnums.Month, year.ToString(), ref notices)); // } //} ////月度(第十二月) //monthTemp = new List() { 12 }; //var dataLastMonthYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Month && t.YEAR == (year - 1).ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList(); //if (dataLastMonthYears.Count() > 0) //{ // if (month == 1 && day == 1) // { // monitorList.Add(CreateDepartMonitorNew(item, dataLastMonthYears, PTAssessmentCycleEnums.Month, (year - 1).ToString(), ref notices)); // } //} } } if (monitorList != null && monitorList.Any()) { monitorList = monitorList.Where(t => t != null).ToList(); monitorList.ForEach(t => { if (t != null && t.Nav_Details != null && t.Nav_Details.Any()) { t.Nav_Details.ForEach(t1 => { if (t1 != null && t1.Nav_Contents != null && t1.Nav_Contents.Any()) { detailContentList.AddRange(t1.Nav_Contents); t1.Nav_Contents = null; } }); monitorDetailList.AddRange(t.Nav_Details); t.Nav_Details = null; } if (t != null && t.Nav_MonitorUser != null && t.Nav_MonitorUser.Any()) { monitorUserList.AddRange(t.Nav_MonitorUser); t.Nav_MonitorUser = null; } }); } UnifiedCommit(() => { //if (planAuditList != null && planAuditList.Any()) // BantchSaveEntityNoCommit(planAuditList); if (monitorList != null && monitorList.Any()) BantchSaveEntityNoCommit(monitorList); if (monitorDetailList != null && monitorDetailList.Any()) BantchAddEntityNoCommit(monitorDetailList); if (monitorUserList != null && monitorUserList.Any()) BantchAddEntityNoCommit(monitorUserList); if (detailContentList != null && detailContentList.Any()) BantchAddEntityNoCommit(detailContentList); if (notices != null && notices.Any()) BantchAddEntityNoCommit(notices); }); } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.StackTrace)) throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); else throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } return true; }); } /// /// 触发年度监测汇总表 /// /// [HttpPost, Route("YearMonitorSummarySync")] public JsonActionResult YearMonitorSummarySync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { var dtNow = DateTime.Now; var year = dtNow.Year; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; T_PT_ANNUAL_MONOTOR_SUMMARY summary = null; List summaryDetailList = new List(); List detailContentList = new List(); T_FM_NOTIFICATION_TASK notice = null; if (month == 1 && day == 15) { var userInfo = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0); if (userInfo == null && filter.OrgId.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) { Expression> expression = e => e.IS_DELETED == false && e.YEAR == (year - 1).ToString() && e.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter; var monitorAssessment = this.GetOrderEntities(expression, filter).ToList(); if (monitorAssessment.Count < 1) return true; summary = new T_PT_ANNUAL_MONOTOR_SUMMARY(); summary.ORG_ID = filter.OrgId; summary.YEAR = (year - 1).ToString(); summary.SET_TIME = dtNow; summary.STATUS = PFStandardStatus.Sign; Expression> departExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0; var departmentIds = this.GetOrderEntities(departExpression, filter).Select(t => new { t.ID, t.DEPARTMENT_TYPE }).Distinct().ToList(); if (departmentIds != null && departmentIds.Any()) { foreach (var department in departmentIds) { T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL detail = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL(); detail.ORG_ID = filter.OrgId; detail.MONITOR_SUMMARY_ID = summary.ID; detail.DEPARTMENT_ID = department.ID; detail.DEPARTMENT_TYPE = (FMDepartmentType)department.DEPARTMENT_TYPE; summaryDetailList.Add(detail); } } Expression> userExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0; var userIds = this.GetOrderEntities(userExpression, filter, "Nav_Department").Where(m => m.DEPARTMENT_ID != null).Select(t => new { t.ID, t.DEPARTMENT_ID, DEPARTMENT_TYPE = t.Nav_Department.DEPARTMENT_TYPE }).Distinct().ToList(); if (userIds != null && userIds.Any()) { foreach (var user in userIds) { T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL detail = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL(); detail.ORG_ID = filter.OrgId; detail.MONITOR_SUMMARY_ID = summary.ID; detail.DEPARTMENT_ID = user.DEPARTMENT_ID; detail.USER_ID = user.ID; detail.DEPARTMENT_TYPE = (FMDepartmentType)user.DEPARTMENT_TYPE; summaryDetailList.Add(detail); } } if (departmentIds.Count() == 0 && userIds.Count() == 0) summary = null; if (summaryDetailList != null && summaryDetailList.Any()) { var monitorIds = monitorAssessment.Select(t => t.ID).ToList(); var monitorDetails = this.GetEntities(t => monitorIds.Contains(t.MONITOR_ASSESSMENT_ID), new BaseFilter(filter.OrgId), "Nav_Contents").ToList(); foreach (var summaryDetail in summaryDetailList) { //第一季度 var firtstQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == (year - 1) && t.CREATE_TIME.Value.Month == 4 && t.CREATE_TIME.Value.Day == 1); if (firtstQuarter != null && firtstQuarter.Nav_Contents != null && firtstQuarter.Nav_Contents.Any()) { summaryDetail.FIRST_SCORE = firtstQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE); foreach (var c in firtstQuarter.Nav_Contents) { T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT(); content.ORG_ID = c.ORG_ID; content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID; content.ROW_NO = c.ROW_NO; content.METHOD = c.METHOD; content.SCORE = c.SCORE; content.NAME = c.NAME; content.QUARTER_TYPE = PTQuarterTypeEnum.FirstQuarter; detailContentList.Add(content); } } //第二季度 var secondQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == (year - 1) && t.CREATE_TIME.Value.Month == 7 && t.CREATE_TIME.Value.Day == 1); if (secondQuarter != null && secondQuarter.Nav_Contents != null && secondQuarter.Nav_Contents.Any()) { summaryDetail.SECOND_SCORE = secondQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE); foreach (var c in secondQuarter.Nav_Contents) { T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT(); content.ORG_ID = c.ORG_ID; content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID; content.ROW_NO = c.ROW_NO; content.METHOD = c.METHOD; content.SCORE = c.SCORE; content.NAME = c.NAME; content.QUARTER_TYPE = PTQuarterTypeEnum.SecondQuarter; detailContentList.Add(content); } } //第三季度 var thirdQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == (year - 1) && t.CREATE_TIME.Value.Month == 10 && t.CREATE_TIME.Value.Day == 11); if (thirdQuarter != null && thirdQuarter.Nav_Contents != null && thirdQuarter.Nav_Contents.Any()) { summaryDetail.THIRD_SCORE = thirdQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE); foreach (var c in thirdQuarter.Nav_Contents) { T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT(); content.ORG_ID = c.ORG_ID; content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID; content.ROW_NO = c.ROW_NO; content.METHOD = c.METHOD; content.SCORE = c.SCORE; content.NAME = c.NAME; content.QUARTER_TYPE = PTQuarterTypeEnum.ThirdQuarter; detailContentList.Add(content); } } //第四季度 var fourthQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == year && t.CREATE_TIME.Value.Month == 1 && t.CREATE_TIME.Value.Day == 1); if (fourthQuarter != null && fourthQuarter.Nav_Contents != null && fourthQuarter.Nav_Contents.Any()) { summaryDetail.FOURTH_SCORE = fourthQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE); foreach (var c in fourthQuarter.Nav_Contents) { T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT(); content.ORG_ID = c.ORG_ID; content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID; content.ROW_NO = c.ROW_NO; content.METHOD = c.METHOD; content.SCORE = c.SCORE; content.NAME = c.NAME; content.QUARTER_TYPE = PTQuarterTypeEnum.FourthQuarter; detailContentList.Add(content); } } //年度 summaryDetail.YEAR_SCORE = (summaryDetail.FIRST_SCORE ?? 0) + (summaryDetail.SECOND_SCORE ?? 0) + (summaryDetail.THIRD_SCORE ?? 0) + (summaryDetail.FOURTH_SCORE ?? 0); } } notice = NotificationTaskService.InsertUserNoticeTaskModel("年度监测汇总表", summary.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PT036_SHOWPRINT"); } } UnifiedCommit(() => { if (summary != null) UpdateEntityNoCommit(summary); if (summaryDetailList != null && summaryDetailList.Any()) BantchAddEntityNoCommit(summaryDetailList); if (detailContentList != null && detailContentList.Any()) BantchAddEntityNoCommit(detailContentList); if (notice != null) UpdateEntityNoCommit(notice); }); } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.StackTrace)) throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); else throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } return true; }); } /// /// 清除安全生产方针调查表待办 /// /// [HttpPost, Route("DealSafePolicySync")] public JsonActionResult DealSafePolicySync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { var miniTime = DateTime.Now.ToString("yyyy/MM/dd 00:00:00", System.Globalization.DateTimeFormatInfo.InvariantInfo); var maxTime = DateTime.Now.ToString("yyyy/MM/dd 23:59:59", System.Globalization.DateTimeFormatInfo.InvariantInfo); var tasks = new List(); var safetys = GetEntities(i => i.COMPLETE_DATE >= Convert.ToDateTime(miniTime) && i.COMPLETE_DATE <= Convert.ToDateTime(maxTime) && i.IS_DEAL == 0, new BaseFilter(filter.OrgId)); if (safetys != null && safetys.Any()) { var createTime = safetys.FirstOrDefault().CREATE_TIME; safetys.ForEach(t => { t.IS_DEAL = 1; if (t.CREATE_TIME < createTime) createTime = t.CREATE_TIME; }); var safetyIds = safetys.Select(i => i.ID).ToList(); tasks = this.GetEntities(t => t.CREATE_TIME > createTime && safetyIds.Contains(t.SOURCE_DATA_ID.Value) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); if (tasks != null && tasks.Any()) { tasks.ForEach(t => { t.NOTICE_STATUS = 4; }); } } UnifiedCommit(() => { if (safetys != null && safetys.Any()) BantchSaveEntityNoCommit(safetys); if (tasks != null && tasks.Any()) BantchSaveEntityNoCommit(tasks); }); } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.StackTrace)) throw new Exception("错误日志:[StackTrace]" + ex.StackTrace); else throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message); } return true; }); } /// /// 触发安全生产方针征集表 /// /// private void CreateSafePolicyCollect([FromBody] KeywordFilter filter) { var miniTime = DateTime.Now.ToString("yyyy/MM/dd 00:00:00", System.Globalization.DateTimeFormatInfo.InvariantInfo); var maxTime = DateTime.Now.ToString("yyyy/MM/dd 23:59:59", System.Globalization.DateTimeFormatInfo.InvariantInfo); filter.IgnoreDataRule = true; var safetyLists = GetEntities(i => i.COMPLETE_DATE >= Convert.ToDateTime(miniTime) && i.COMPLETE_DATE <= Convert.ToDateTime(maxTime) && i.IS_RUN == 0, filter).ToList(); List sendNotices = null; //List survey = null; if (safetyLists != null && safetyLists.Any()) { var userInfo = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0); if (userInfo == null && filter.OrgId.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) { sendNotices = new List(); safetyLists.ForEach(t => { t.IS_RUN = 1; //survey.Add(t); sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("安全生产方针征集表", t.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PT014_SHOWPRINT")); }); } } UnifiedCommit(() => { if (safetyLists != null && safetyLists.Any()) BantchSaveEntityNoCommit(safetyLists); if (sendNotices != null && sendNotices.Any()) BantchAddEntityNoCommit(sendNotices); }); } /// /// 触发安全方针调查表 /// /// private void CreateSafePolicy([FromBody] KeywordFilter filter) { var dtNow = DateTime.Now; var year = dtNow.Year; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; T_FM_NOTIFICATION_TASK sendNotice = null; T_PT_SAFETY_POLICY_SURVEY safety = null; var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "ID", "NAME" }; var userInfo = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0, newFilter); if (userInfo == null && filter.OrgId.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) { bool isSend = false; newFilter.SelectField = new List { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA" }; var timeSet = GetEntity(i => i.SET_TYPE == PTSetTypeEnum.SafePolicy && i.ENABLE_STATUS == 0, newFilter); if (timeSet != null && dtNow.Hour == 8) { switch (timeSet.PLANCHECKFREQUENCY) { case BSPLANCHECKFREQUENCYEnum.Year: if (timeSet.MONTH == month && timeSet.DATA == day) { isSend = true; } break; case BSPLANCHECKFREQUENCYEnum.HalfYear: if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day)) { isSend = true; } break; case BSPLANCHECKFREQUENCYEnum.Date: isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Week: if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Month: if (timeSet.DATA == day) { isSend = true; } break; case BSPLANCHECKFREQUENCYEnum.Quarter: if (timeSet.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day) isSend = true; } break; default: break; } } if (isSend) { var safe = this.GetEntity(t => t.USER_ID == userInfo.ID && t.CREATE_TIME.Value.Date == dtNow.Date); if (safe == null) { safety = new T_PT_SAFETY_POLICY_SURVEY(); safety.ORG_ID = filter.GetOrgId(); safety.USER_ID = userInfo.ID; safety.DEPARTMENT_ID = userInfo.DEPARTMENT_ID; safety.YEAR = DateTime.Now.Year.ToString(); sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("安全生产方针调查表", safety.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PT014"); } } } UnifiedCommit(() => { if (safety != null) UpdateEntityNoCommit(safety); if (sendNotice != null) UpdateEntityNoCommit(sendNotice); }); } /// /// 触发安全生产目标与指标制定 /// /// private void CreateIndicatorFormulation([FromBody] KeywordFilter filter) { var dtNow = DateTime.Now; var year = dtNow.Year; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; T_FM_NOTIFICATION_TASK sendNotice = null; T_PT_INDICATOR_FORMULATION indicator = null; var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "ID", "NAME" }; var userInfo = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0, newFilter); if (userInfo == null && filter.OrgId.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) { bool isSend = false; newFilter.SelectField = new List { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA" }; var timeSet = GetEntity(i => i.SET_TYPE == PTSetTypeEnum.IndicatorForm && i.ENABLE_STATUS == 0, newFilter); if (timeSet != null && dtNow.Hour == 8) { switch (timeSet.PLANCHECKFREQUENCY) { case BSPLANCHECKFREQUENCYEnum.Year: if (timeSet.MONTH == month && timeSet.DATA == day) { isSend = true; } break; case BSPLANCHECKFREQUENCYEnum.HalfYear: if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day)) { isSend = true; } break; case BSPLANCHECKFREQUENCYEnum.Date: isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Week: if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Month: if (timeSet.DATA == day) { isSend = true; } break; case BSPLANCHECKFREQUENCYEnum.Quarter: if (timeSet.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day) isSend = true; } break; default: break; } } if (isSend) { var safe = this.GetEntity(t => t.USER_ID == userInfo.ID && t.CREATE_TIME.Value.Date == dtNow.Date); if (safe == null) { indicator = new T_PT_INDICATOR_FORMULATION(); indicator.ORG_ID = filter.GetOrgId(); indicator.USER_ID = userInfo.ID; indicator.DEPARTMENT_ID = userInfo.DEPARTMENT_ID; indicator.YEAR = DateTime.Now.Year.ToString(); indicator.NAME = "安全生产目标与指标制定"; sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("安全生产目标与指标制定表", indicator.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PT017"); } } } UnifiedCommit(() => { if (indicator != null) UpdateEntityNoCommit(indicator); if (sendNotice != null) UpdateEntityNoCommit(sendNotice); }); } /// /// 触发班组监测与考核记录表 /// /// /// /// /// /// /// /// private List CreateDepartMonitor(T_PT_TIME_SET item, PTAssessmentCycleEnums type, List departInfos, List userInfos, List tempDetails, int departType, ref List notices) { var result = new List(); var departAlls = departInfos.Where(t => t.DEPARTMENT_TYPE == (int)item.DEPARTMENT_TYPE).ToList(); if (departAlls != null && departAlls.Any()) { //var userIds = departmentInfos.Select(t => t.USER_ID).Distinct().ToList(); foreach (var depart in departAlls) { if (depart.USER_ID != null) { T_PT_MONITOR_ASSESSMENT newDepart = new T_PT_MONITOR_ASSESSMENT(); newDepart.ORG_ID = depart.ORG_ID; newDepart.DEPARTMENT_TYPE = (FMDepartmentType)depart.DEPARTMENT_TYPE; newDepart.SET_TIME = DateTime.Now; newDepart.USER_ID = depart.USER_ID; newDepart.DEPARTMENT_ID = depart.ID; newDepart.YEAR = DateTime.Now.Year.ToString(); newDepart.ASSESSMENT_CYCLE = type; var details = new List(); var departIds = departInfos.Where(t => t.DEPARTMENT_TYPE == departType && t.PARENT_ID == depart.ID).Select(t => t.ID).ToList(); var userInfoTemps = userInfos.Where(t => t.DEPARTMENT_ID == depart.ID).ToList(); var userIds = userInfoTemps.Select(t => t.ID).ToList(); if (departIds.Any()) { foreach (var department in departIds) { //细表 T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL(); detail.ORG_ID = newDepart.ORG_ID; detail.DEPARTMENT_ID = department; detail.MONITOR_ASSESSMENT_ID = newDepart.ID; details.Add(detail); } } if (userInfoTemps.Any()) { foreach (var user in userInfoTemps) { //细表 T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL(); detail.ORG_ID = newDepart.ORG_ID; detail.DEPARTMENT_ID = user.DEPARTMENT_ID; detail.USER_ID = user.ID; detail.MONITOR_ASSESSMENT_ID = newDepart.ID; details.Add(detail); } } var temps = tempDetails.Where(t => (t.DEPARTMENT_ID != null && departIds.Contains(t.DEPARTMENT_ID.Value)) || (t.USER_ID != null && userIds.Contains(t.USER_ID.Value))).ToList(); if (details != null && details.Any()) { details.ForEach(t => { var tempCurrent = tempDetails.FirstOrDefault(t1 => t1.DEPARTMENT_ID == t.DEPARTMENT_ID && t1.USER_ID == t.USER_ID && t1.YEAR == newDepart.YEAR); if (tempCurrent != null && tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any()) { var contents = new List(); tempCurrent.Nav_Contents.ForEach(t1 => { T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT content = new T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT(); content.ORG_ID = t1.ORG_ID; content.MONITOR_ASSESSMENT_DETAIL_ID = t.ID; content.ROW_NO = t1.ROW_NO; content.METHOD = t1.METHOD; content.SCORE = t1.SCORE; content.NAME = t1.NAME; contents.Add(content); }); t.Nav_Contents = contents; } //details.Add(t); }); newDepart.Nav_Details = details; } result.Add(newDepart); var name = Enum.GetName(typeof(FMDepartmentType), depart.DEPARTMENT_TYPE); //发消息 notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(name + "监测与考核记录", newDepart.ID, newDepart.ORG_ID, newDepart.USER_ID.Value, depart?.Nav_User?.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PT029")); } } } return result; } /// /// 触发班组监测与考核记录表 /// /// /// /// /// /// private T_PT_MONITOR_ASSESSMENT CreateDepartMonitorNew(T_FM_DEPARTMENT depart, List departments, List users, List contentList, PTAssessmentCycleEnums cycle, string year, ref List notices) { T_PT_MONITOR_ASSESSMENT monitor = null; if (depart != null && depart.USER_ID != null) { monitor = new T_PT_MONITOR_ASSESSMENT(); monitor.ORG_ID = depart.ORG_ID; monitor.DEPARTMENT_TYPE = (FMDepartmentType)depart.DEPARTMENT_TYPE; monitor.SET_TIME = DateTime.Now; monitor.USER_ID = depart.USER_ID; monitor.DEPARTMENT_ID = depart.ID; monitor.YEAR = year; monitor.ASSESSMENT_CYCLE = cycle; monitor.STATUS = PFStandardStatus.Draft; var monitorUsers = new List(); T_PT_MONITOR_ASSESSMENT_USER user = new T_PT_MONITOR_ASSESSMENT_USER(); user.ORG_ID = depart.ORG_ID; user.MONITOR_ASSESSMENT_ID = monitor.ID; user.USER_ID = depart.USER_ID; monitorUsers.Add(user); monitor.Nav_MonitorUser = monitorUsers; var monitorDetails = new List(); if (departments != null && departments.Any()) { foreach (var d in departments) { T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL(); detail.ORG_ID = monitor.ORG_ID; detail.DEPARTMENT_ID = d.ID; detail.USER_ID = null; detail.MONITOR_ASSESSMENT_ID = monitor.ID; var con = contentList.FirstOrDefault(t => t.DEPARTMENT_ID == d.ID && t.USER_ID == null); if (con != null && con.Nav_Contents != null && con.Nav_Contents.Any()) { var contents = new List(); foreach (var c in con.Nav_Contents) { T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT content = new T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT(); content.ORG_ID = c.ORG_ID; content.MONITOR_ASSESSMENT_DETAIL_ID = detail.ID; content.ROW_NO = c.ROW_NO; content.METHOD = c.METHOD; content.SCORE = c.SCORE; content.NAME = c.NAME; contents.Add(content); } detail.Nav_Contents = contents; } monitorDetails.Add(detail); } } if (users != null && users.Any()) { foreach (var d in users) { T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL(); detail.ORG_ID = monitor.ORG_ID; detail.DEPARTMENT_ID = d.DEPARTMENT_ID; detail.USER_ID = d.ID; detail.MONITOR_ASSESSMENT_ID = monitor.ID; var con = contentList.FirstOrDefault(t => t.DEPARTMENT_ID == d.DEPARTMENT_ID && t.USER_ID == d.ID); if (con != null && con.Nav_Contents != null && con.Nav_Contents.Any()) { var contents = new List(); foreach (var c in con.Nav_Contents) { T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT content = new T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT(); content.ORG_ID = c.ORG_ID; content.MONITOR_ASSESSMENT_DETAIL_ID = detail.ID; content.ROW_NO = c.ROW_NO; content.METHOD = c.METHOD; content.SCORE = c.SCORE; content.NAME = c.NAME; contents.Add(content); } detail.Nav_Contents = contents; } monitorDetails.Add(detail); } } monitor.Nav_Details = monitorDetails; var name = Enum.GetName(typeof(FMDepartmentType), depart.DEPARTMENT_TYPE); var cycleName = monitor.ASSESSMENT_CYCLE.GetDescription(); //发消息 notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("(" + cycleName + ")" + name + "监测与考核记录", monitor.ID, monitor.ORG_ID, depart.USER_ID.Value, depart?.Nav_User?.NAME, DateTime.Now, DateTime.Now.AddDays(3), (int)FMNoticeTypeEnum.消息, "PT029")); } return monitor; } } }