using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.SC.PE; using APT.MS.Domain.Entities.SC.PM; using APT.MS.Domain.Entities.SC.PT; using APT.MS.Domain.Enums; using APT.Utility; using APT.WebApi.Models; using Google.Protobuf.WellKnownTypes; using log4net.Filter; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Server.IISIntegration; using MySqlX.XDevAPI.Common; using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; namespace APT.PP.WebApi.Controllers.Api { /// /// 绩效测量与评价 /// [Route("api/PP/PEController")] [TypeFilter(typeof(CustomActionFilterAttribute))] public class PEController : AuthorizeApiController { IFMNotificationTaskService NotificationTaskService { get; set; } public PEController(IFMNotificationTaskService notificationTaskService) { NotificationTaskService = notificationTaskService; } /// /// 触发纠正与预防措施通知单 /// /// [HttpPost, Route("CorrectivePreventiveSync")] public JsonActionResult CorrectivePreventiveSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; T_FM_NOTIFICATION_TASK sendNotice = null; T_PE_CORRECTIVE_PREVENTIVE corrective = 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.CorrectivePreventive, newFilter); if (timeSet != null) { switch (timeSet.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: 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) { if (!string.IsNullOrEmpty(filter.Parameter1)) { if (DateTime.Now.Hour.ToString() == filter.Parameter1) isSend = true; else isSend = false; } var safe = this.GetEntity(t => t.USER_ID == userInfo.ID && t.CREATE_TIME.Value.Date == DateTime.Now.Date); if (safe == null) { corrective = new T_PE_CORRECTIVE_PREVENTIVE(); corrective.ORG_ID = filter.GetOrgId(); corrective.USER_ID = userInfo.ID; corrective.DEPARTMENT_ID = userInfo.DEPARTMENT_ID; corrective.STATUS = PFStandardStatus.Draft; sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("纠正与预防措施通知单", corrective.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PE005"); } } } UnifiedCommit(() => { if (corrective != null) UpdateEntityNoCommit(corrective); if (sendNotice != null) UpdateEntityNoCommit(sendNotice); }); return true; }); } /// /// 触发安全绩效监测计划表 /// /// [HttpPost, Route("SafetyMonitorPlanSync")] public JsonActionResult SafetyMonitorPlanSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var year = dtNow.Year; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; List sendNotices = new List(); List monitorPlans = new List(); List monitorPlanDetails = new List(); 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.SafetyMonitorPlan, newFilter); if (timeSet != null) { switch (timeSet.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: 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; //if (month == 1) // year = year - 1; } 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; } //if ((month == 1 && day == timeSet.DATA) || (month == 4 && day == timeSet.DATA) || (month == 7 && day == timeSet.DATA) || (month == 10 && day == timeSet.DATA)) //{ // isSend = true; // if (month == 1 && day == timeSet.DATA) // year = year - 1; //} break; default: break; } } if (isSend) { if (!string.IsNullOrEmpty(filter.Parameter1)) { if (DateTime.Now.Hour.ToString() == filter.Parameter1) isSend = true; else isSend = false; } //newFilter.SelectField = new List { "ID", "NAME" }; //var productUnit = this.GetEntities(t => t.PARENT_ID == null, newFilter).Distinct().ToList(); //if (productUnit != null && productUnit.Any()) //{ // foreach (var item in productUnit) // { // } //} var safe = this.GetEntity(t => t.USER_ID == userInfo.ID && t.CREATE_TIME.Value.Date == DateTime.Now.Date); if (safe == null) { T_PE_SAFETY_MONITOR_PLAN monitorPlan = new T_PE_SAFETY_MONITOR_PLAN(); monitorPlan.ORG_ID = filter.GetOrgId(); monitorPlan.USER_ID = userInfo.ID; monitorPlan.DEPARTMENT_ID = userInfo.DEPARTMENT_ID; monitorPlan.STATUS = PFStandardStatus.Draft; monitorPlan.YEAR = year.ToString(); monitorPlan.PRODUCTION_UNIT_ID = null; monitorPlans.Add(monitorPlan); newFilter.SelectField = new List { "ORG_ID", "ID" }; var monitorProjects = this.GetEntities(t => !t.IS_DELETED, newFilter).ToList(); if (monitorProjects != null && monitorProjects.Any()) { foreach (var project in monitorProjects) { T_PE_SAFETY_MONITOR_PLAN_DETAIL detail = new T_PE_SAFETY_MONITOR_PLAN_DETAIL(); detail.ORG_ID = project.ORG_ID; detail.SAFETY_MONITOR_PLAN_ID = monitorPlan.ID; detail.PROJECT_ID = project.ID; detail.ASSESSMENT_CYCLE = PTAssessmentCycleEnums.Year; monitorPlanDetails.Add(detail); } } T_FM_NOTIFICATION_TASK sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("年度安全绩效监测计划", monitorPlan.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PE019"); sendNotices.Add(sendNotice); } } } UnifiedCommit(() => { if (monitorPlans != null && monitorPlans.Any()) this.BantchSaveEntityNoCommit(monitorPlans); if (monitorPlanDetails != null && monitorPlanDetails.Any()) this.BantchSaveEntityNoCommit(monitorPlanDetails); if (sendNotices != null && sendNotices.Any()) this.BantchSaveEntityNoCommit(sendNotices); }); return true; }); } /// /// 触发安全绩效监测记录表 /// /// [HttpPost, Route("SafetyMonitorRecordSync")] public JsonActionResult SafetyMonitorRecordSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var year = dtNow.Year; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; var isSend = true; List sendNotices = new List(); var newFilter = new BaseFilter(filter.OrgId); //newFilter.SelectField = new List { "YEAR", "ID" }; var monitorPlan = this.GetEntities(e => (e.YEAR == year.ToString()) && e.STATUS == PFStandardStatus.Archived && e.IS_RUN == DisableStatusEnum.否, new BaseFilter(filter.OrgId), "Nav_Details").ToList(); if (monitorPlan.Count < 1) return true; List monitorPlanList = new List(); List monitorPlanDetails = new List(); List monitorRecords = new List(); List monitorRecordDetails = new List(); var timeSet = GetEntities(i => i.SET_TYPE == PTSetTypeEnum.SafetyMonitorRecord, new BaseFilter(filter.OrgId)); if (timeSet != null && timeSet.Any()) { if (isSend) { if (!string.IsNullOrEmpty(filter.Parameter1)) { if (DateTime.Now.Hour.ToString() == filter.Parameter1) isSend = true; else isSend = false; } var monitorPlanIds = monitorPlan.Select(t => t.ID).ToList(); foreach (var itemSet in timeSet) { var monitorPlanNew = new List(); //newFilter.SelectField = new List { "SAFETY_MONITOR_PLAN_ID" }; //var monitorRecordTemp = GetEntities(i => monitorPlanIds.Contains(i.SAFETY_MONITOR_PLAN_ID.Value), new BaseFilter(filter.OrgId)).ToList(); //var existIds = monitorRecordTemp.Select(t => t.SAFETY_MONITOR_PLAN_ID).Distinct().ToList(); switch (itemSet.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: case BSPLANCHECKFREQUENCYEnum.HalfYear: if ((itemSet.MONTH == month && itemSet.DATA == day) || ((itemSet.MONTH + 6) == month && (itemSet.DATA + 183) == day)) { monitorPlanNew = monitorPlan.Where(t => t.YEAR == year.ToString()).ToList();//&& !existIds.Contains(t.ID) if (monitorPlanNew != null && monitorPlanNew.Any()) { foreach (var item in monitorPlanNew) { item.IS_RUN = DisableStatusEnum.是; if (item.Nav_Details != null && item.Nav_Details.Any()) { var temp = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.HalfYear).ToList(); monitorPlanDetails.AddRange(temp); } monitorPlanList.Add(item); } } } break; case BSPLANCHECKFREQUENCYEnum.Year: if (itemSet.MONTH == month && itemSet.DATA == day) { monitorPlanNew = monitorPlan.Where(t => t.YEAR == year.ToString()).ToList();//&& !existIds.Contains(t.ID) if (monitorPlanNew != null && monitorPlanNew.Any()) { foreach (var item in monitorPlanNew) { item.IS_RUN = DisableStatusEnum.是; if (item.Nav_Details != null && item.Nav_Details.Any()) { var temp = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Year).ToList(); monitorPlanDetails.AddRange(temp); } monitorPlanList.Add(item); } } } break; case BSPLANCHECKFREQUENCYEnum.Date: monitorPlanNew = monitorPlan.Where(t => t.YEAR == year.ToString()).ToList();//&& !existIds.Contains(t.ID) if (monitorPlanNew != null && monitorPlanNew.Any()) { foreach (var item in monitorPlanNew) { item.IS_RUN = DisableStatusEnum.是; if (item.Nav_Details != null && item.Nav_Details.Any()) { var temp = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Day).ToList(); monitorPlanDetails.AddRange(temp); } monitorPlanList.Add(item); } } break; case BSPLANCHECKFREQUENCYEnum.Week: if (itemSet.WEEKDATA != null && (int)itemSet.WEEKDATA.Value == (int)week) { monitorPlanNew = monitorPlan.Where(t => t.YEAR == year.ToString()).ToList();// && !existIds.Contains(t.ID) if (monitorPlanNew != null && monitorPlanNew.Any()) { foreach (var item in monitorPlanNew) { item.IS_RUN = DisableStatusEnum.是; if (item.Nav_Details != null && item.Nav_Details.Any()) { var temp = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Week).ToList(); monitorPlanDetails.AddRange(temp); } monitorPlanList.Add(item); } } } break; case BSPLANCHECKFREQUENCYEnum.Month: if (itemSet.DATA == day) { monitorPlanNew = monitorPlan.Where(t => t.YEAR == year.ToString()).ToList();// && !existIds.Contains(t.ID) if (monitorPlanNew != null && monitorPlanNew.Any()) { foreach (var item in monitorPlanNew) { item.IS_RUN = DisableStatusEnum.是; if (item.Nav_Details != null && item.Nav_Details.Any()) { var temp = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Month).ToList(); monitorPlanDetails.AddRange(temp); } monitorPlanList.Add(item); } } } break; case BSPLANCHECKFREQUENCYEnum.Quarter: if (itemSet.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && itemSet.DATA == day) { monitorPlanNew = monitorPlan.Where(t => t.YEAR == year.ToString()).ToList();//&& !existIds.Contains(t.ID) if (monitorPlanNew != null && monitorPlanNew.Any()) { foreach (var item in monitorPlanNew) { item.IS_RUN = DisableStatusEnum.是; if (item.Nav_Details != null && item.Nav_Details.Any()) { var temp = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter).ToList(); monitorPlanDetails.AddRange(temp); } monitorPlanList.Add(item); } } } } if (itemSet.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && itemSet.DATA == day) { monitorPlanNew = monitorPlan.Where(t => t.YEAR == year.ToString()).ToList();//&& !existIds.Contains(t.ID) if (monitorPlanNew != null && monitorPlanNew.Any()) { foreach (var item in monitorPlanNew) { item.IS_RUN = DisableStatusEnum.是; if (item.Nav_Details != null && item.Nav_Details.Any()) { var temp = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter).ToList(); monitorPlanDetails.AddRange(temp); } monitorPlanList.Add(item); } } } } if (itemSet.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && itemSet.DATA == day) { monitorPlanNew = monitorPlan.Where(t => t.YEAR == year.ToString()).ToList();//&& !existIds.Contains(t.ID) if (monitorPlanNew != null && monitorPlanNew.Any()) { foreach (var item in monitorPlanNew) { item.IS_RUN = DisableStatusEnum.是; if (item.Nav_Details != null && item.Nav_Details.Any()) { var temp = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter).ToList(); monitorPlanDetails.AddRange(temp); } monitorPlanList.Add(item); } } } } break; default: break; } } } } if (monitorPlanDetails != null && monitorPlanDetails.Any()) { var userIds = monitorPlanDetails.Select(t => t.USER_ID).Distinct().ToList(); newFilter.SelectField = new List { "DEPARTMENT_ID", "ID", "NAME" }; var users = this.GetEntities(t => userIds.Contains(t.ID) && t.ENABLE_STATUS == 0, newFilter).Distinct().ToList(); var planTemps = monitorPlanDetails.GroupBy(t => new { t.SAFETY_MONITOR_PLAN_ID, t.ASSESSMENT_CYCLE, t.USER_ID }).ToList(); foreach (var detailP in planTemps) { var userInfo = users.FirstOrDefault(t => t.ID == detailP.Key.USER_ID); T_PE_SAFETY_MONITOR_RECORD monitorRecord = new T_PE_SAFETY_MONITOR_RECORD(); monitorRecord.ORG_ID = filter.GetOrgId(); monitorRecord.USER_ID = detailP.Key.USER_ID; monitorRecord.DEPARTMENT_ID = userInfo?.DEPARTMENT_ID; monitorRecord.STATUS = PFStandardStatus.Draft; monitorRecord.SAFETY_MONITOR_PLAN_ID = detailP.Key.SAFETY_MONITOR_PLAN_ID; monitorRecord.ASSESSMENT_CYCLE = detailP.Key.ASSESSMENT_CYCLE; monitorRecords.Add(monitorRecord); var details = monitorPlanDetails.Where(t => t.SAFETY_MONITOR_PLAN_ID == detailP.Key.SAFETY_MONITOR_PLAN_ID && t.ASSESSMENT_CYCLE == detailP.Key.ASSESSMENT_CYCLE && t.USER_ID == detailP.Key.USER_ID).ToList(); if (details != null && details.Any()) { foreach (var detailR in details) { T_PE_SAFETY_MONITOR_RECORD_DETAIL detail = new T_PE_SAFETY_MONITOR_RECORD_DETAIL(); detail.ORG_ID = monitorRecord.ORG_ID; detail.SAFETY_MONITOR_RECORD_ID = monitorRecord.ID; detail.PROJECT_ID = detailR.PROJECT_ID; detail.CONTENTS = detailR.CONTENTS; detail.STANDARD = detailR.STANDARD; detail.METHOD = detailR.METHOD; detail.RESULT_DISCUSS = PTResultDiscussEnums.Unfinished; monitorRecordDetails.Add(detail); } } var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("安全绩效监测记录表-" + detailP.Key.ASSESSMENT_CYCLE.GetDescription(), monitorRecord.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PE021"); sendNotices.Add(sendNotice); } } UnifiedCommit(() => { if (monitorPlanList != null && monitorPlanList.Any()) this.BantchUpdateEntityNoCommit(monitorPlanList); if (monitorRecords != null && monitorRecords.Any()) this.BantchSaveEntityNoCommit(monitorRecords); if (monitorRecordDetails != null && monitorRecordDetails.Any()) this.BantchSaveEntityNoCommit(monitorRecordDetails); if (sendNotices != null && sendNotices.Any()) this.BantchSaveEntityNoCommit(sendNotices); }); return true; }); } /// /// 触发安全评价计划讨论会(今日提醒) /// /// [HttpPost, Route("SafetyEvaluationPlanSync")] public JsonActionResult SafetyEvaluationPlanSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; T_FM_NOTIFICATION_TASK sendNotice = null; bool isSend = false; 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) { var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA" }; var timeSet = GetEntity(i => i.SET_TYPE == PTSetTypeEnum.SafetyPlanMeetting, newFilter); if (timeSet != null) { switch (timeSet.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: 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; //if (month == 1) // year = year - 1; } 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; } //if ((month == 1 && day == timeSet.DATA) || (month == 4 && day == timeSet.DATA) || (month == 7 && day == timeSet.DATA) || (month == 10 && day == timeSet.DATA)) //{ // isSend = true; // if (month == 1 && day == timeSet.DATA) // year = year - 1; //} break; default: break; } } } if (isSend) sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("请召开安全标准化内部评价计划讨论会。", Guid.NewGuid(), filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.今日提醒, "PF135"); UnifiedCommit(() => { if (sendNotice != null) UpdateEntityNoCommit(sendNotice); }); return true; }); } /// /// 触发安全标准化内部评价记录表 /// /// [HttpPost, Route("SafetyEvaluationRecordSync")] public JsonActionResult SafetyEvaluationRecordSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var year = dtNow.Year; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; var newFilter = new BaseFilter(filter.OrgId); var evaluationPlan = this.GetEntities(t => t.START_TIME.Value.Year == year && t.START_TIME.Value.Month == month && t.START_TIME.Value.Day == day && t.IS_RUN == DisableStatusEnum.否, new BaseFilter(filter.OrgId), "Nav_Details", "Nav_Details.Nav_EvaluationUser").ToList(); if (evaluationPlan.Count < 1) return true; List recordList = new List(); List recordDetailList = new List(); List recordUserList = new List(); List notices = new List(); newFilter.SelectField = new List { "ID", "NAME" }; var userList = this.GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, newFilter).ToList(); foreach (var item in evaluationPlan) { item.IS_RUN = DisableStatusEnum.是; if (item.Nav_Details != null && item.Nav_Details.Any()) { List userIds = new List(); List userNames = new List(); T_PE_SAFETY_EVALUATION_RECORD record = new T_PE_SAFETY_EVALUATION_RECORD(); record.ORG_ID = filter.OrgId; record.EVALUATION_PLAN_ID = item.ID; record.STATUS = PFStandardStatus.Draft; recordList.Add(record); var group = 1; var standardizedIds = item.Nav_Details.Select(t => t.STANDARDIZED_ID).Distinct().ToList(); var standardized = this.GetEntities(t => standardizedIds.Contains(t.PRIMARY_ELEMENTS_ID), new BaseFilter(filter.OrgId)); foreach (var itemDetail in item.Nav_Details) { var evaluationItem = standardized.Where(t => t.PRIMARY_ELEMENTS_ID == itemDetail.STANDARDIZED_ID).ToList(); if (evaluationItem != null && evaluationItem.Any()) { evaluationItem.ForEach(t => { T_PE_SAFETY_EVALUATION_RECORD_DETAIL detail = new T_PE_SAFETY_EVALUATION_RECORD_DETAIL(); detail.ORG_ID = t.ORG_ID; detail.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; detail.SAFETY_EVALUATION_RECORD_ID = record.ID; detail.PRIMARY_ELEMENTS_ID = t.PRIMARY_ELEMENTS_ID; detail.SECOND_ELEMENTS_ID = t.SECOND_ELEMENTS_ID; detail.THREE_ELEMENTS_ID = t.THREE_ELEMENTS_ID; detail.EVALUATION_ITEM = t.EVALUATION_ITEM; detail.CONTENTS = t.CONTENTS; detail.STANDARDIZED_SCORE = t.STANDARDIZED_SCORE; detail.NON_STANDARDIZED_SCORE = t.NON_STANDARDIZED_SCORE; detail.EVALUATION_RESULT = PEEvaluationResultEnum.Conform; detail.NUM = t.NUM; recordDetailList.Add(detail); }); } if (itemDetail.Nav_EvaluationUser != null && itemDetail.Nav_EvaluationUser.Any()) { foreach (var userDetail in itemDetail.Nav_EvaluationUser) { T_PE_SAFETY_EVALUATION_RECORD_USER user = new T_PE_SAFETY_EVALUATION_RECORD_USER(); user.SAFETY_EVALUATION_RECORD_ID = record.ID; user.ORG_ID = filter.OrgId; user.USER_ID = userDetail.USER_ID; user.DEAL_STATUS = FOUserShiftStatusEnum.待处理; user.GROUP_NO = group; user.ROW_NO = userDetail.ROW_NO; recordUserList.Add(user); if (userDetail.ROW_NO == 1) userIds.Add(userDetail.USER_ID.Value); } } group++; } userIds = userIds.Distinct().ToList(); if (userIds != null && userIds.Any()) { foreach (var user in userIds) { var userName = userList.FirstOrDefault(t => t.ID == user); userNames.Add(userName?.NAME); } //发消息 var notice = NotificationTaskService.InsertUserNoticeTaskModels("安全标准化内部评价记录表", record.ID, filter.OrgId, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PE029"); notices.AddRange(notice); } } } if (notices != null && notices.Any()) { //recordUserList = recordUserList.Distinct(t => new { t.SAFETY_EVALUATION_RECORD_ID, t.USER_ID }).ToList(); } else { recordList = null; recordDetailList = null; recordUserList = null; } UnifiedCommit(() => { if (evaluationPlan != null && evaluationPlan.Any()) BantchSaveEntityNoCommit(evaluationPlan); if (recordList != null && recordList.Any()) BantchSaveEntityNoCommit(recordList); if (recordDetailList != null && recordDetailList.Any()) BantchAddEntityNoCommit(recordDetailList); if (recordUserList != null && recordUserList.Any()) BantchAddEntityNoCommit(recordUserList); if (notices != null && notices.Any()) BantchAddEntityNoCommit(notices); }); return true; }); } /// /// 同步考评项目导入子表到考评类目评分子表 /// /// [HttpPost, Route("StandardizedScoreSync")] public JsonActionResult StandardizedScoreSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { List standardScoreItems = new List(); var standardScore = this.GetEntities(t => true, new BaseFilter(filter.OrgId)).ToList(); if (standardScore != null && standardScore.Any()) { foreach (var item in standardScore) { T_PE_STANDARDIZED_SCORE_IMPORT_ITEM score = new T_PE_STANDARDIZED_SCORE_IMPORT_ITEM(); score.ORG_ID = item.ORG_ID; score.NUM=item.NUM; score.CONTENTS = item.CONTENTS; score.STANDARDIZED_SCORE = item.STANDARDIZED_SCORE; score.NON_STANDARDIZED_SCORE = item.NON_STANDARDIZED_SCORE; score.EVALUATION_ITEM = item.EVALUATION_ITEM; score.STANDARDIZED_SCORE_IMPORT_ID = item.THREE_ELEMENTS_ID != null ? item.THREE_ELEMENTS_ID : (item.SECOND_ELEMENTS_ID != null ? item.SECOND_ELEMENTS_ID : (item.PRIMARY_ELEMENTS_ID !=null ? item.PRIMARY_ELEMENTS_ID:item.PRODUCTION_UNIT_ID)); standardScoreItems.Add(score); } } UnifiedCommit(() => { if (standardScoreItems != null && standardScoreItems.Any()) BantchSaveEntityNoCommit(standardScoreItems); }); return true; }); } /// /// 触发安全标准化内部评价记录表 /// /// [HttpPost, Route("SafetyEvaluationRecordNewSync")] public JsonActionResult SafetyEvaluationRecordNewSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var year = dtNow.Year; var month = dtNow.Month; var day = dtNow.Day; var hour = dtNow.Hour; var newFilter = new BaseFilter(filter.OrgId); var evaluationPlan = this.GetEntities(t => t.START_TIME.Value.Year == year && t.START_TIME.Value.Month == month && t.START_TIME.Value.Day == day && t.START_TIME.Value.Hour == hour && t.IS_RUN == DisableStatusEnum.否, new BaseFilter(filter.OrgId), "Nav_Details.Nav_EvaluationMethod", "Nav_Details.Nav_EvaluationUser").ToList(); if (evaluationPlan.Count < 1) return true; List recordList = new List(); List recordDetailList = new List(); List recordUserList = new List(); List recordMethodList = new List(); List notices = new List(); newFilter.SelectField = new List { "ID", "NAME" }; var userList = this.GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, newFilter).ToList(); foreach (var item in evaluationPlan) { item.IS_RUN = DisableStatusEnum.是; if (item.Nav_Details != null && item.Nav_Details.Any()) { List userIds = new List(); List userNames = new List(); var standardizedIds = item.Nav_Details.Select(t => t.STANDARDIZED_ID).Distinct().ToList(); var standardized = this.GetEntities(t => standardizedIds.Contains(t.PRIMARY_ELEMENTS_ID), new BaseFilter(filter.OrgId)); var group = 1; foreach (var itemDetail in item.Nav_Details) { var firstDetail = item.Nav_Details.FirstOrDefault(t => t.ID == itemDetail.ID); T_PE_SAFETY_EVALUATION_RECORD record = new T_PE_SAFETY_EVALUATION_RECORD(); record.ORG_ID = filter.OrgId; record.EVALUATION_PLAN_ID = item.ID; record.EVALUATION_PLAN_DETAIL_ID = itemDetail.ID; record.STATUS = PFStandardStatus.Draft; recordList.Add(record); var evaluationItem = standardized.Where(t => t.PRIMARY_ELEMENTS_ID == itemDetail.STANDARDIZED_ID).ToList(); if (evaluationItem != null && evaluationItem.Any()) { evaluationItem.ForEach(t => { T_PE_SAFETY_EVALUATION_RECORD_DETAIL detail = new T_PE_SAFETY_EVALUATION_RECORD_DETAIL(); detail.ORG_ID = t.ORG_ID; detail.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; detail.SAFETY_EVALUATION_RECORD_ID = record.ID; detail.PRIMARY_ELEMENTS_ID = t.PRIMARY_ELEMENTS_ID; detail.SECOND_ELEMENTS_ID = t.SECOND_ELEMENTS_ID; detail.THREE_ELEMENTS_ID = t.THREE_ELEMENTS_ID; detail.EVALUATION_ITEM = t.EVALUATION_ITEM; detail.CONTENTS = t.CONTENTS; detail.STANDARDIZED_SCORE = t.STANDARDIZED_SCORE > 0 ? t.STANDARDIZED_SCORE : t.NON_STANDARDIZED_SCORE; detail.NON_STANDARDIZED_SCORE = t.NON_STANDARDIZED_SCORE; detail.RESULT_SCORE = t.STANDARDIZED_SCORE > 0 ? t.STANDARDIZED_SCORE : t.NON_STANDARDIZED_SCORE; detail.EVALUATION_RESULT = PEEvaluationResultEnum.Conform; detail.NUM = t.NUM; detail.DESCRIPTION = t.DESCRIPTION; recordDetailList.Add(detail); if (firstDetail != null && firstDetail.Nav_EvaluationMethod != null && firstDetail.Nav_EvaluationMethod.Any()) { firstDetail.Nav_EvaluationMethod.ForEach(t2 => { T_PE_SAFETY_EVALUATION_RECORD_METHOD method = new T_PE_SAFETY_EVALUATION_RECORD_METHOD(); method.ORG_ID = detail.ORG_ID; method.SAFETY_EVALUATION_RECORD_DETAIL_ID = detail.ID; method.METHOD_ID = t2.METHOD_ID; recordMethodList.Add(method); }); } }); } if (itemDetail.Nav_EvaluationUser != null && itemDetail.Nav_EvaluationUser.Any()) { foreach (var userDetail in itemDetail.Nav_EvaluationUser) { T_PE_SAFETY_EVALUATION_RECORD_USER user = new T_PE_SAFETY_EVALUATION_RECORD_USER(); user.SAFETY_EVALUATION_RECORD_ID = record.ID; user.ORG_ID = filter.OrgId; user.USER_ID = userDetail.USER_ID; user.DEAL_STATUS = FOUserShiftStatusEnum.待处理; user.GROUP_NO = group; user.ROW_NO = userDetail.ROW_NO; recordUserList.Add(user); if (userDetail.ROW_NO == 1 && userDetail.USER_ID.HasValue) { //userIds.Add(userDetail.USER_ID.Value); var userName = userList.FirstOrDefault(t => t.ID == userDetail.USER_ID.Value)?.NAME; var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全标准化内部评价记录表", record.ID, filter.OrgId, userDetail.USER_ID.Value, userName, item.START_TIME.Value, item.END_TIME.Value, (int)FMNoticeTypeEnum.消息, "PE029"); notices.Add(notice); } } } group++; } //userIds = userIds.Distinct().ToList(); //if (userIds != null && userIds.Any()) //{ // foreach (var user in userIds) // { // var userName = userList.FirstOrDefault(t => t.ID == user); // userNames.Add(userName?.NAME); // } // //发消息 // var notice = NotificationTaskService.InsertUserNoticeTaskModels("安全标准化内部评价记录表", record.ID, filter.OrgId, userIds, userNames, DateTime.Now, // DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "PE029"); // notices.AddRange(notice); //} } } if (notices != null && notices.Any()) { //recordUserList = recordUserList.Distinct(t => new { t.SAFETY_EVALUATION_RECORD_ID, t.USER_ID }).ToList(); } else { recordList = null; recordDetailList = null; recordUserList = null; recordMethodList = null; } UnifiedCommit(() => { if (evaluationPlan != null && evaluationPlan.Any()) BantchSaveEntityNoCommit(evaluationPlan); if (recordList != null && recordList.Any()) BantchSaveEntityNoCommit(recordList); if (recordDetailList != null && recordDetailList.Any()) BantchAddEntityNoCommit(recordDetailList); if (recordUserList != null && recordUserList.Any()) BantchAddEntityNoCommit(recordUserList); if (recordMethodList != null && recordMethodList.Any()) BantchAddEntityNoCommit(recordMethodList); if (notices != null && notices.Any()) BantchAddEntityNoCommit(notices); }); return true; }); } /// /// 触发安全标准化内部评价计划表 /// /// [HttpPost, Route("SafetyEvaluationRecordPlanSync")] public JsonActionResult SafetyEvaluationRecordPlanSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var year = dtNow.Year; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; List sendNotices = new List(); List monitorPlans = new List(); 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.SafetyEvaluationPlan, newFilter); if (timeSet != null) { switch (timeSet.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: 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; //if (month == 1) // year = year - 1; } 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; } //if ((month == 1 && day == timeSet.DATA) || (month == 4 && day == timeSet.DATA) || (month == 7 && day == timeSet.DATA) || (month == 10 && day == timeSet.DATA)) //{ // isSend = true; // if (month == 1 && day == timeSet.DATA) // year = year - 1; //} break; default: break; } } if (isSend) { if (!string.IsNullOrEmpty(filter.Parameter1)) { if (DateTime.Now.Hour.ToString() == filter.Parameter1) isSend = true; else isSend = false; } //newFilter.SelectField = new List { "ID", "NAME" }; //var productUnit = this.GetEntities(t => t.PARENT_ID == null, newFilter).Distinct().ToList(); //if (productUnit != null && productUnit.Any()) //{ // foreach (var item in productUnit) // { // } //} var safe = this.GetEntity(t => t.CREATE_TIME.Value.Date == DateTime.Now.Date); if (safe == null) { T_PE_SAFETY_EVALUATION_PLAN monitorPlan = new T_PE_SAFETY_EVALUATION_PLAN(); monitorPlan.ORG_ID = filter.GetOrgId(); monitorPlan.PRODUCTION_UNIT_ID = null; monitorPlan.DEPARTMENT_ID = userInfo.DEPARTMENT_ID; monitorPlan.STATUS = PFStandardStatus.Draft; monitorPlan.YEAR = year.ToString(); monitorPlan.IS_RUN = DisableStatusEnum.否; monitorPlans.Add(monitorPlan); T_FM_NOTIFICATION_TASK sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("安全标准化内部评价计划表", monitorPlan.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PE027"); sendNotices.Add(sendNotice); } } } UnifiedCommit(() => { if (monitorPlans != null && monitorPlans.Any()) this.BantchSaveEntityNoCommit(monitorPlans); if (sendNotices != null && sendNotices.Any()) this.BantchSaveEntityNoCommit(sendNotices); }); return true; }); } } }