using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Entities; using APT.Infrastructure.Core; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System; using System.Linq; using APT.BaseData.Domain.IServices.FM; using APT.MS.Domain.Enums; using System.Collections.Generic; using APT.BaseData.Domain.Enums.PF; using APT.MS.Domain.Entities.OG; using InfluxData.Net.InfluxDb.Models.Responses; using Newtonsoft.Json.Schema; using APT.MS.Domain.Entities.SC.SC; using APT.MS.Domain.Entities.SC.PT; using APT.BaseData.Domain.Enums; using APT.BaseData.Services.Services.FM; using APT.MS.Domain.Entities.SC.OG; using APT.MS.Domain.Entities.SC; using ICSharpCode.SharpZipLib.Core; using APT.MS.Domain.Entities.SE; using Google.Protobuf.WellKnownTypes; using APT.WebApi.Models; namespace APT.PP.WebApi.Controllers.Api.PP { /// /// 组织保障后台任务 /// [Route("api/PP/OGController")] [TypeFilter(typeof(CustomActionFilterAttribute))] public class OGController : AuthorizeApiController { IFMNotificationTaskService NotificationTaskService { get; set; } public OGController(IFMNotificationTaskService notificationTaskService) { NotificationTaskService = notificationTaskService; } /// /// 安全教育模块所有跑批 /// /// [HttpPost, Route("OGTask")] public JsonActionResult OGTask([FromBody] KeywordFilter filter) { return SafeExecute(() => { //每年1月10日触发安全生产责任制签订表 CheckSafePdtPersonalSigned(filter); //定时触发考核记录 CheckSafeAccessRecord(filter); //每年6月1日征集员工意见触发给各部门级部门安全员,同一部门安全员多于1人时只需1人提交 CheckCreateEmployeeCollection(filter); //回收意见 CheckEmployeeCollectionFinish(filter); //工余事件触发 CheckCreateEventGet(filter); //工余事件完成 CheckEventGetFinish(filter); //工余事件上报及处理汇总 CheckEventReportSum(filter); //创建相关方提醒 CreateReleatedAlert(filter); return true; }); } private void CreateReleatedAlert(KeywordFilter filter) { var baseFilter1 = new BaseFilter(filter.GetOrgId()); var baseFilter2 = new BaseFilter(filter.GetOrgId()); var baseFilter3 = new BaseFilter(filter.GetOrgId()); baseFilter1.Include = new string[] { "Nav_Related.Nav_User" }; baseFilter2.Include = new string[] { "Nav_Qualification.Nav_Related.Nav_User", "Nav_Item" }; baseFilter3.Include = new string[] { "Nav_Related.Nav_User" }; var compareDay = DateTime.Now.AddMonths(3); var releated1 = GetEntities(t => t.END_TIME.Value.Year == compareDay.Year && t.END_TIME.Value.Month == compareDay.Month && t.END_TIME.Value.Day == compareDay.Day, baseFilter1); var releated2 = GetEntities(t => t.VALID_PERIOD.Value.Year == compareDay.Year && t.VALID_PERIOD.Value.Month == compareDay.Month && t.VALID_PERIOD.Value.Day == compareDay.Day, baseFilter2); var releated3 = GetEntities(t => t.VALIDITY_TIME.Value.Year == compareDay.Year && t.VALIDITY_TIME.Value.Month == compareDay.Month && t.VALIDITY_TIME.Value.Day == compareDay.Day, baseFilter3); var allSendUserTitles = new List(); var allSendDataIds = new List(); var allSendUserIds = new List(); var allSendUserNames = new List(); if (releated1.Any()) { foreach (var item in releated1) { allSendUserTitles.Add("相关方《"+item.Nav_Related.NAME + "》合同/协议表中的" +item.NAME+"将于"+item.END_TIME.Value.ToShortDateString()+ "到期,请及时处理!"); allSendDataIds.Add(item.ID); allSendUserIds.Add((Guid)item.Nav_Related.USER_ID); allSendUserNames.Add(item.Nav_Related.Nav_User.NAME); } } if (releated2.Any()) { foreach (var item in releated2) { allSendUserTitles.Add("相关方《" + item.Nav_Qualification.Nav_Related.NAME+"》资质情况表中的" + item.Nav_Item.NAME+ "将于" + item.VALID_PERIOD.Value.ToShortDateString() + "到期,请及时处理!"); allSendDataIds.Add(item.ID); allSendUserIds.Add((Guid)item.Nav_Qualification.Nav_Related.USER_ID); allSendUserNames.Add(item.Nav_Qualification.Nav_Related.Nav_User.NAME); } } if (releated3.Any()) { foreach (var item in releated3) { allSendUserTitles.Add("相关方《" + item.Nav_Related.NAME + "》人员信息表中" + item.NAME+"的" + item.CERTIFICATE_NAME +"证书将于"+ item.VALIDITY_TIME.Value.ToShortDateString() + "到期,请及时处理!"); allSendDataIds.Add(item.ID); allSendUserIds.Add((Guid)item.Nav_Related.USER_ID); allSendUserNames.Add(item.Nav_Related.Nav_User.NAME); } } if (allSendDataIds.Any()) { var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, filter.GetOrgId(), allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(1).Date, (int)FMNoticeTypeEnum.今日提醒, "PF135"); UnifiedCommit(() => { if (sendNotices.Any()) BantchAddEntityNoCommit(sendNotices); }); } } public void CheckSafePdtPersonalSigned([FromBody] KeywordFilter filter) { //检查配置是否存在,并验证是否在同一天 var dt = DateTime.Now; DateTime startTime; var config = GetEntity(t => true); if (config == null) { startTime = new DateTime(dt.Year, 1, 10); } else if (config.SAFE_PDT_PERSONAL_SIGNED_TRIGGER_TIME != null) { startTime = (DateTime)config.SAFE_PDT_PERSONAL_SIGNED_TRIGGER_TIME; } else { return; } if (dt.Month != startTime.Month || dt.Day != startTime.Day) { return; } var pdtCount = GetEntities(t => t.ANNUAL == dt.Year, new BaseFilter(filter.GetOrgId())).ToList(); if (pdtCount.Any()) { return; } var pdtList = new List(); var pdtListDetail = new List(); var allSendUserTitles = new List(); var allSendDataIds = new List(); var allSendUserIds = new List(); var allSendUserNames = new List(); BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.Include = new string[] { "Nav_Post.Nav_Depts.Nav_Posts", "Nav_Post.Nav_Depts.Nav_Department" }; baseFilter.IgnoreDataRule = true; var standardPost = GetEntities(t => t.TYPE == SCType.安全生产责任制 && t.STATUS == SCSystemEditStatus.已归档 && t.FILE_STATUS == SCSystemFileStatus.有效, baseFilter); BaseFilter userFilter = new BaseFilter(filter.GetOrgId()); userFilter.Include = new string[] { "Nav_User.Nav_Department" }; var allPersons = GetEntities(t => t.Nav_User.ENABLE_STATUS == 0, userFilter); foreach (var t1 in standardPost) { foreach (var t2 in t1.Nav_Post.Nav_Depts) { var chargeUser = GetEntity(t => t.DEPARTMENT_ID == t1.Nav_Post.DEPARTMENT_ID && t.Nav_Person.POST_ID == t1.Nav_Post.DEPOST_ID && t.ENABLE_STATUS == 0); T_OG_SAFE_PDT_SIGNED record = new T_OG_SAFE_PDT_SIGNED { ID = Guid.NewGuid(), ORG_ID = filter.GetOrgId(), STATUS = (int)PFStandardStatus.Draft, TRIGGER_TYPE = OGPersonalSignedTriggerType.任务触发, STANDARD_ID = t1.ID, FILE_CONTENT = t1.FILE_CONTENT, DEPARTMENT_ID = t2.DEPARTMENT_ID, ANNUAL = DateTime.Now.Year }; if (chargeUser != null) { record.CHARGE_USER_ID = chargeUser.ID; } pdtList.Add(record); var posts = t2.Nav_Posts.Select(t => t.DEPOST_ID).ToList(); var currPostPersons = allPersons.Where(t => t.POST_ID != null && t.DEPARTMENT_ID == t2.DEPARTMENT_ID && posts.Contains((Guid)t.POST_ID)); if (currPostPersons != null && currPostPersons.Any()) { foreach (var item in currPostPersons) { T_OG_SAFE_PDT_SIGNED_POST post = new T_OG_SAFE_PDT_SIGNED_POST { SAFE_PDT_SIGNED_ID = record.ID, ID = Guid.NewGuid(), ORG_ID = filter.GetOrgId(), USER_ID = item.Nav_User.ID, POST_ID = item.POST_ID, CHARGE_USER_ID = record.CHARGE_USER_ID }; allSendUserTitles.Add(DateTime.Now.ToShortDateString() + "安全生产责任制个人签订表"); allSendDataIds.Add(record.ID); allSendUserIds.Add(item.Nav_User.ID); allSendUserNames.Add(item.Nav_User.NAME); pdtListDetail.Add(post); } } } } var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, filter.GetOrgId(), allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(7), 1, "OG001_SHOWPRINT"); UnifiedCommit(() => { if (pdtList != null && pdtList.Any()) BantchAddEntityNoCommit(pdtList); if (pdtListDetail != null && pdtListDetail.Any()) BantchAddEntity(pdtListDetail); if (sendNotices != null && sendNotices.Any()) BantchAddEntityNoCommit(sendNotices); }); } public JsonActionResult CheckSafeAccessRecord([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 timeSet = this.GetEntities(e => e.STATUS == OGAssessPlanInputStatus.已提交 && e.IS_DELETED == false && (e.ANNUAL == year || e.ANNUAL == (year - 1)), new BaseFilter(filter.OrgId), new string[] { "Nav_SafeAssessItem", "Nav_User", "Nav_Post" }).ToList(); if (timeSet.Count < 1) return true; List monitorList = new List(); List monitorDetailList = new List(); List detailContentList = new List(); List notices = new List(); foreach (var item in timeSet) { if (item.Nav_User != null && item.Nav_User.APPROVE_ROLE_ID != null && item.Nav_SafeAssessItem != null && item.Nav_SafeAssessItem.Any()) { //年度 if (item.CYCLE == PTAssessmentCycleEnums.Year && item.ANNUAL == (year - 1)) { if (month == 1 && day == 1) { monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Year, year - 1, ref notices)); } } //上半年度 List monthTemp = new List() { 1, 2, 3, 4, 5, 6 }; if (item.CYCLE == PTAssessmentCycleEnums.HalfYear && item.ANNUAL == year && monthTemp.Contains(item.CREATE_TIME.Value.Month)) { if (month == 7 && day == 1) { monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.HalfYear, year, ref notices)); } } //下半年度 monthTemp = new List() { 7, 8, 9, 10, 11, 12 }; if (item.CYCLE == PTAssessmentCycleEnums.HalfYear && item.ANNUAL == (year - 1) && monthTemp.Contains(item.CREATE_TIME.Value.Month)) { if (month == 1 && day == 1) { monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.HalfYear, year - 1, ref notices)); } } //季度(第四季度) monthTemp = new List() { 12 }; if (item.CYCLE == PTAssessmentCycleEnums.Quarter && item.ANNUAL == (year - 1) && monthTemp.Contains(item.CREATE_TIME.Value.Month)) { if (month == 1 && day == 1) { monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Quarter, year - 1, ref notices)); } } //季度(第1、2、3季度) if (item.CYCLE == PTAssessmentCycleEnums.Quarter && item.ANNUAL == year && monthTemp.Contains(item.CREATE_TIME.Value.Month)) { if ((month == 4 && day == 1) || (month == 7 && day == 1) || (month == 10 && (day == 28 || day == 29))) { monthTemp = new List() { month - 1 }; monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Quarter, year, ref notices)); } } //月度 monthTemp = new List() { month - 1 }; if (item.CYCLE == PTAssessmentCycleEnums.Month && item.ANNUAL == year && monthTemp.Contains(item.CREATE_TIME.Value.Month)) { if (month != 1 && day == 1) { monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Month, year, ref notices)); } } //月度(第十二月) monthTemp = new List() { 12 }; if (item.CYCLE == PTAssessmentCycleEnums.Month && item.ANNUAL == (year - 1) && monthTemp.Contains(item.CREATE_TIME.Value.Month)) { if (month == 1 && day == 1) { monitorList.Add(CreateDepartMonitorNew(item, item.Nav_SafeAssessItem, PTAssessmentCycleEnums.Month, year - 1, 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_SafeAssessRecordItem != null && t1.Nav_SafeAssessRecordItem.Any()) { detailContentList.AddRange(t1.Nav_SafeAssessRecordItem); t1.Nav_SafeAssessRecordItem = null; } }); monitorDetailList.AddRange(t.Nav_Details); t.Nav_Details = null; } }); } UnifiedCommit(() => { if (monitorList != null && monitorList.Any()) BantchSaveEntityNoCommit(monitorList); if (monitorDetailList != null && monitorDetailList.Any()) BantchAddEntityNoCommit(monitorDetailList); if (detailContentList != null && detailContentList.Any()) BantchAddEntityNoCommit(detailContentList); if (notices != null && notices.Any()) BantchAddEntityNoCommit(notices); }); return true; }); } /// /// 触发班组监测与考核记录表 /// /// /// /// private T_OG_SAFE_ASSESS_RECORD CreateDepartMonitorNew(T_OG_SAFE_ASSESS_PLAN_INPUT item, ICollection details, PTAssessmentCycleEnums cycle, int year, ref List notices) { var record = new T_OG_SAFE_ASSESS_RECORD(); record.ORG_ID = item.ORG_ID; record.TIME = DateTime.Now; record.USER_ID = item.USER_ID; record.DEPARTMENT_ID = item.DEPARTMENT_ID; record.ANNUAL = year; record.CYCLE = cycle; record.STATUS = PFStandardStatus.Draft; var filter = new BaseFilter(item.ORG_ID); filter.SelectField = new string[] { "DEPOST_ID" }; var allPosts = GetEntities(t => t.POST_ID == item.POST_ID, filter).Select(t => t.DEPOST_ID); var userPost = new BaseFilter(item.ORG_ID); userPost.Include = new string[] { "Nav_User" }; var allUserPosts = GetEntities(t => allPosts.Contains((Guid)t.POST_ID) && t.DEPARTMENT_ID == item.DEPARTMENT_ID, userPost); var monitorDetails = new List(); var contents = new List(); foreach (var post in allUserPosts) { T_OG_SAFE_ASSESS_RECORD_DETAIL detail = new T_OG_SAFE_ASSESS_RECORD_DETAIL(); detail.ORG_ID = record.ORG_ID; detail.POST_ID = item.POST_ID; detail.SAFE_ASSESS_RECORD_ID = record.ID; detail.USER_ID = post.Nav_User.ID; foreach (var d in details) { T_OG_SAFE_ASSESS_RECORD_ITEM content = new T_OG_SAFE_ASSESS_RECORD_ITEM(); content.ORG_ID = record.ORG_ID; content.RECORD_DETAIL_ID = detail.ID; content.ROW_NO = d.ROW_NO; content.ASSESS_ITEM_ID = d.ID; contents.Add(content); detail.Nav_SafeAssessRecordItem = contents; monitorDetails.Add(detail); } } record.Nav_Details = monitorDetails; string title = ""; if (record.CYCLE == PTAssessmentCycleEnums.Day) { title = "每天"; } if (record.CYCLE == PTAssessmentCycleEnums.Week) { title = "每周"; } if (record.CYCLE == PTAssessmentCycleEnums.Month) { title = DateTime.Now.Month + "月"; } if (record.CYCLE == PTAssessmentCycleEnums.Quarter) { int month = DateTime.Now.Month; if (month >= 1 && month <= 3) { title = "第一季度"; } else if (month >= 4 && month <= 6) { title = "第二季度"; } else if (month >= 7 && month <= 9) { title = "第三季度"; } else if (month >= 10 && month <= 12) { title = "第四季度"; } } if (record.CYCLE == PTAssessmentCycleEnums.HalfYear) { int month = DateTime.Now.Month; if (month >= 1 && month <= 6) { title = "上半年"; } else if (month >= 7 && month <= 12) { title = "下半年"; } } if (record.CYCLE == PTAssessmentCycleEnums.Year) { title = "年"; } record.CYCLE_NAME = DateTime.Now.Year + title; //发消息 notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("(" + record.CYCLE_NAME + item.Nav_Post.NAME + ")安全生产责任制考核记录", record.ID, record.ORG_ID, item.USER_ID.Value, item?.Nav_User?.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "OG008")); return record; } //创建员工意见征集 private void CheckCreateEmployeeCollection([FromBody] KeywordFilter filter) { var dt = DateTime.Now; DateTime startTime; var config = GetEntity(t => true); if (config == null||config.EMPLOYEE_OPINION_TIME==null) { startTime = new DateTime(dt.Year, 6, 1); } else { startTime = (DateTime)config.EMPLOYEE_OPINION_TIME; } if (dt.Month == startTime.Month && dt.Day == startTime.Day) { var data = GetEntities(t => t.START_TIME.Value.Month == startTime.Month && t.START_TIME.Value.Day == startTime.Day, new BaseFilter(filter.GetOrgId())).ToList(); if (data.Count > 0) { return; } var users = GetEntities(t => t.Nav_ApproveRole.NAME == "部门安全员" || t.Nav_ApproveRole.NAME == "车间安全员" || t.Nav_ApproveRole.NAME == "安环部负责人" || t.Nav_ApproveRole.NAME == "安环部安全员", new BaseFilter(filter.GetOrgId()), new string[] { "Nav_ApproveRole", "Nav_Department" }).ToList(); List employeeOpinions = new List(); var allSendUserTitles = new List(); var allSendDataIds = new List(); var allSendUserIds = new List(); var allSendUserNames = new List(); var safeUser = users.Where(t => t.Nav_ApproveRole.NAME == "部门安全员"); if (safeUser.Count() == 0) { safeUser = users.Where(t => t.Nav_ApproveRole.NAME == "车间安全员"); } safeUser.ForEach(user => { var ahSafe = users.FirstOrDefault(t => t.Nav_ApproveRole.NAME == "安环部负责人"); if (ahSafe == null) { ahSafe = users.FirstOrDefault(t => t.Nav_ApproveRole.NAME == "安环部安全员"); } var employeeOpinion = new T_OG_EMPLOYEE_OPINION_COLLECTION { ID = Guid.NewGuid(), AH_CHARGE_USER_ID = ahSafe.ID, DEPARTMENT_ID = user.DEPARTMENT_ID, USER_ID = user.ID, CHARGE_USER_ID = user.Nav_Department.USER_ID, CREATER_ID = user.ID, START_TIME = DateTime.Now, ORG_ID = filter.GetOrgId(), }; employeeOpinions.Add(employeeOpinion); allSendUserTitles.Add("员工意见征集"); allSendDataIds.Add(employeeOpinion.ID); allSendUserIds.Add(user.ID); allSendUserNames.Add(user.NAME); }); var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, filter.GetOrgId(), allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(1), 1, "OG060"); UnifiedCommit(() => { if (employeeOpinions != null && employeeOpinions.Any()) BantchAddEntityNoCommit(employeeOpinions); if (sendNotices != null && sendNotices.Any()) BantchAddEntityNoCommit(sendNotices); }); } } //回收员工意见 private void CheckEmployeeCollectionFinish([FromBody] KeywordFilter filter) { var dt = DateTime.Now; BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; var data = GetEntities(t => t.STATUS == OGEmployeeOpinionStatus.意见征集中 && t.END_TIME.Value <= dt, baseFilter).ToList(); if (data.Count == 0) return; var allSendUserTitles = new List(); var allSendDataIds = new List(); var allSendUserIds = new List(); var allSendUserNames = new List(); data.ForEach(it => { it.STATUS = OGEmployeeOpinionStatus.汇总中; }); data.ForEach(it => { allSendUserTitles.Add("员工意见征集汇总"); allSendDataIds.Add(it.ID); allSendUserIds.Add(it.USER_ID.Value); allSendUserNames.Add(GetEntity(it.USER_ID.Value).NAME); }); var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, filter.GetOrgId(), allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(1), 1, "OG059_REPORT"); UnifiedCommit(() => { BantchSaveEntityNoCommit(data); BantchAddEntityNoCommit(sendNotices); }); } private void CheckCreateEventGet([FromBody] KeywordFilter filter) { //3月1日、9月1日触发给安环部负责人,触发时间和频率可以在基础设置调整 var config = GetEntity(t => true); var mm1 = 0; var dd1 = 0; var mm2 = 0; var dd2 = 0; if (config != null) { if (config.EVENT_GET_TIME != null) { mm1 = config.EVENT_GET_TIME.Value.Month; dd1 = config.EVENT_GET_TIME.Value.Day; } if (config.EVENT_GET_TIME_1 != null) { mm2 = config.EVENT_GET_TIME_1.Value.Month; dd2 = config.EVENT_GET_TIME_1.Value.Day; } } var dt = DateTime.Now; if ((dt.Month != mm1 || dt.Day != dd1) && (dt.Month != mm2 || dt.Day != dd2)) return; var mm = dt.Month; var dd = dt.Day; BaseFilter baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; var data = GetEntities(t => t.START_TIME != null && t.START_TIME.Value.Month == mm && t.START_TIME.Value.Day == dd && t.BACK, baseFilter).ToList(); if (data.Count > 0) { return; } var AHUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部负责人"); if( AHUser == null ) { AHUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部安全员"); } var evt = new T_OG_EVENT_GET { ID = Guid.NewGuid(), ORG_ID = filter.GetOrgId(), USER_ID = AHUser.ID, START_TIME = dt, DEPARTMENT_ID = AHUser.DEPARTMENT_ID, BACK = true, }; var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("工余事件征集", evt.ID, evt.ORG_ID, AHUser.ID, AHUser.NAME, DateTime.Now, DateTime.Now.AddDays(1), 1, "OG030"); UnifiedCommit(() => { AddEntityNoCommit(evt); if (sendNotice != null) AddEntityNoCommit(sendNotice); }); } public void CheckEventGetFinish([FromBody] KeywordFilter filter) { var dt = DateTime.Now; var reportGet = GetEntity(t => t.START_TIME.Value.Year == dt.Year && t.STATUS == OGEventStatus.征集中, new string[] { "Nav_Details.Nav_Items" }); if (reportGet == null) return; var mm = reportGet.END_TIME.Value.Month; var dd = reportGet.END_TIME.Value.Day; if (dt.Month != mm || dt.Day != dd) return; var AHUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部负责人"); if (AHUser == null) { AHUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部安全员"); }; reportGet.STATUS = OGEventStatus.汇总中; int count = 0; var allDetails = reportGet.Nav_Details.Where(t => t.STATUS == OGEventGetUserStatus.完成); foreach (var item in allDetails) { count += item.Nav_Items.Count(); } reportGet.EVENT_COUNT = count; var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("工余事件征集汇总", reportGet.ID, filter.GetOrgId(), AHUser.ID, AHUser.NAME, DateTime.Now, DateTime.Now.AddDays(1), 0, "OG030_SHOWPRINT"); UnifiedCommit(() => { UpdateEntityNoCommit(reportGet); AddEntityNoCommit(sendNotice); }); } public void CheckEventReportSum([FromBody] KeywordFilter filter) { var last = GetEntity(t => t.TIME < DateTime.Now.AddMonths(-1)); if (last == null) { var total = GetCount(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); var num = GetCount(t => t.IS_DELETED == false && t.STATUS == PFStandardStatus.Archived, new BaseFilter(filter.GetOrgId())); T_OG_EVENT_REPORT_SUM sum = new T_OG_EVENT_REPORT_SUM(); if (total > 0) { sum.RATIO = num / total * 100; sum.SUM_YEAR = DateTime.Now.Year; sum.TIME = DateTime.Now; sum.ORG_ID = filter.GetOrgId(); UnifiedCommit(() => { AddEntityNoCommit(sum); }); } } } //检查相关方是否证件到期 private void CheckReleateExpire(KeywordFilter filter) { var baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.Include = new string[] { "Nav_User" }; var allTrain = GetEntities(t => t.IS_DELETED == false, baseFilter); var overTime = allTrain.Where(t => t.REVIEW_DATE == DateTime.Now.Date.AddMonths(3)); //overTime = allTrain.Where(t => t.REVIEW_DATE == DateTime.Parse("2023-05-02").AddMonths(3)); var equalTime = allTrain.Where(t => t.REVIEW_DATE == DateTime.Now.Date); var AHUser = GetEntity(t => t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0); if (AHUser != null) { var allSendUserTitles = new List(); var allSendDataIds = new List(); var allSendUserIds = new List(); var allSendUserNames = new List(); if (overTime.Any()) { foreach (var item in overTime) { allSendUserTitles.Add(item.Nav_User.NAME + item.Nav_User.CODE + "《" + item.CERTIFICATE_NAME + "》证书将于" + item.REVIEW_DATE.ToShortDateString() + "到期复审,请提前安排委外培训"); allSendDataIds.Add(item.ID); allSendUserIds.Add(item.USER_ID); allSendUserNames.Add(item.Nav_User.NAME); allSendUserTitles.Add(item.Nav_User.NAME + item.Nav_User.CODE + "《" + item.CERTIFICATE_NAME + "》证书将于" + item.REVIEW_DATE.ToShortDateString() + "到期复审,请提前安排委外培训"); allSendDataIds.Add(item.ID); allSendUserIds.Add(AHUser.ID); allSendUserNames.Add(AHUser.NAME); } } if (equalTime.Any()) { foreach (var item in equalTime) { allSendUserTitles.Add(item.Nav_User.NAME + item.Nav_User.CODE + "《" + item.CERTIFICATE_NAME + "》证书于" + item.REVIEW_DATE.ToShortDateString() + "到期,请到换证培训更新复审日期!"); allSendDataIds.Add(item.ID); allSendUserIds.Add(AHUser.ID); allSendUserNames.Add(AHUser.NAME); } } if (allSendDataIds.Any()) { var sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(allSendUserTitles, allSendDataIds, filter.GetOrgId(), allSendUserIds, allSendUserNames, DateTime.Now, DateTime.Now.AddDays(1).Date, (int)FMNoticeTypeEnum.今日提醒, "PF135"); UnifiedCommit(() => { if (sendNotices.Any()) BantchAddEntityNoCommit(sendNotices); }); } } } } }