using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.IServices.FM; using APT.BaseData.Domain.IServices; using APT.Infrastructure.Core; using APT.Utility; using Microsoft.AspNetCore.Mvc; using APT.WebApi.Models; using System; using System.Collections.Generic; using APT.MS.Domain.Entities.SK; using APT.MS.Domain.Enums.SK; using APT.MS.Domain.Enums; using APT.MS.Domain.Entities.SC.PT; using System.Linq; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.ApiModel; using NPOI.SS.Formula.Functions; using System.Threading.Tasks; using static Microsoft.AspNetCore.Razor.Language.TagHelperMetadata; using log4net.Filter; using Microsoft.Extensions.DependencyModel; using NPOI.Util; using System.Numerics; using IdentityModel; using InfluxData.Net.InfluxDb.Models.Responses; using NPOI.POIFS.FileSystem; using System.Security.Principal; using Microsoft.AspNetCore.Http; using APT.MS.Domain.Entities.BS; using Org.BouncyCastle.Utilities; using System.Reflection.Metadata; using MySqlX.XDevAPI.Common; using System.Collections.Immutable; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Asn1.Tsp; using System.Runtime.Intrinsics.X86; using static Google.Protobuf.WireFormat; using NPOI.HSSF.UserModel; using System.Runtime.Intrinsics.Arm; using APT.MS.Domain.Entities.LR; using System.Linq.Expressions; using System.Security.Policy; using Microsoft.Extensions.Hosting; using System.Security.Cryptography; using System.Collections; using Microsoft.Extensions.Logging; namespace APT.PP.WebApi.Controllers.Api { public class CheckListNew { public Guid? PRODUCTION_UNIT_ID { get; set; } public SKProductionUnit Mine { get; set; } public SKPLANCHECKFREQUENCYEnum Cycle { get; set; } public SKDepartmentTypeEnum DepartType { get; set; } public string MineType { get; set; } public string CheckType { get; set; } public Guid? CheckTypeId { get; set; } public string CheckCycle { get; set; } public string CheckLevel { get; set; } public int Num { get; set; } public Guid? CheckDepartId { get; set; } public string CheckDepart { get; set; } public string CheckPost { get; set; } public Guid? CheckPostId { get; set; } public List details { get; set; } } public class CheckListDetail { public string RISK_NAME { get; set; } public Guid? RISK_AREA_ID { get; set; } public string RISK_AREA_NAME { get; set; } public Guid? CHECK_CONTENTS_ID { get; set; } public string CHECK_CONTENTS_NAME { get; set; } public string CHECKPROOF { get; set; } public string CHECKSTANDARD { get; set; } } [Route("api/PP/SKController")] [TypeFilter(typeof(CustomActionFilterAttribute))] public class SKController : AuthorizeApiController { IFMNotificationTaskService NotificationTaskService { get; set; } public SKController(IFMNotificationTaskService notificationTaskService) { NotificationTaskService = notificationTaskService; } /// /// 触发安全检查通知 /// /// /// [HttpPost, Route("SafeCheckNotice")] public JsonActionResult SafeCheckNotice([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; List setList = new List(); //查配置表,有配才执行 var timeSets = GetEntities(i => i.SET_TYPE == SKSetTypeEnum.SecurityNotice && i.ENABLE_STATUS == 0 && i.RUNSETTIME.Value.Hour == DateTime.Now.Hour, new BaseFilter(filter.OrgId)).ToList(); if (timeSets != null && timeSets.Any()) { foreach (var set in timeSets) { switch (set.PLANCHECKFREQUENCY) { case SKPLANCHECKFREQUENCYEnum.Year: if (set.MONTH == month && set.DATA == day) { setList.Add(SKPLANCHECKFREQUENCYEnum.Year); } break; case SKPLANCHECKFREQUENCYEnum.HalfYear: if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) { setList.Add(SKPLANCHECKFREQUENCYEnum.HalfYear); } break; case SKPLANCHECKFREQUENCYEnum.Date: setList.Add(SKPLANCHECKFREQUENCYEnum.Date); break; //case SKPLANCHECKFREQUENCYEnum.Class: // setList.Add(SKPLANCHECKFREQUENCYEnum.Class); // break; case SKPLANCHECKFREQUENCYEnum.Week: if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week) { setList.Add(SKPLANCHECKFREQUENCYEnum.Week); } break; case SKPLANCHECKFREQUENCYEnum.Month: if (set.DATA == day) { setList.Add(SKPLANCHECKFREQUENCYEnum.Month); } break; case SKPLANCHECKFREQUENCYEnum.Quarter: if (set.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day) { setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); } } if (set.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day) { setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); } } if (set.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day) { setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); } } break; default: break; } } } List notices = new List(); List safeNotices = new List(); List safeDetialNotices = new List(); List records = new List(); List recordDetails = new List(); List recordDetailUsers = new List(); if (setList != null && setList.Any()) { var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); var cycles = setList.Distinct().ToList(); var libraryDeparts = this.GetEntities(t => cycles.Contains(t.CHECK_CYCLE), new BaseFilter(filter.OrgId)); var ldepartIds = libraryDeparts.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); var libraryContents = this.GetEntities(t => ldepartIds.Contains(t.ID), new BaseFilter(filter.OrgId)); var detailsIds = libraryContents.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_ID).Distinct().ToList(); var libraryDetails = this.GetEntities(t => detailsIds.Contains(t.ID), new BaseFilter(filter.OrgId)); var libraryIds = libraryDetails.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); var librarys = this.GetEntities(t => libraryIds.Contains(t.ID), new BaseFilter(filter.OrgId)); if (libraryContents != null && libraryContents.Any()) { foreach (var content in libraryContents) { var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID); var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); content.MineType = libraryTemp.MineType; content.AREA_ID = libraryTemp.AREA_ID; } } if (libraryDeparts != null && libraryDeparts.Any()) { foreach (var depart in libraryDeparts) { var departTemp = libraryContents.FirstOrDefault(t => t.ID == depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID); var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == departTemp.ENTERPRISE_LIBRARY_DETAIL_ID); var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); depart.MineType = libraryTemp.MineType; } var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); var libraryNoPost = libraryDeparts.ToList(); if (libraryNoPost.Any()) { var groups = libraryNoPost.GroupBy(t => new { t.MineType, t.CHECK_TYPE_ID, t.CHECK_CYCLE, t.CHECK_TYPE }).ToList(); if (groups != null && groups.Any()) { foreach (var group in groups) { var departName = checkTypes.FirstOrDefault(t => t.ID == group.Key.CHECK_TYPE_ID)?.NAME; var departContent = libraryNoPost.Where(t => t.MineType == group.Key.MineType && t.CHECK_TYPE_ID == group.Key.CHECK_TYPE_ID && t.CHECK_CYCLE == group.Key.CHECK_CYCLE && t.CHECK_TYPE == group.Key.CHECK_TYPE).ToList(); var contentIds = departContent.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList(); var departList = departs.Where(t => t.DEPARTMENT_TYPE == 10).ToList(); if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.部门级) { departList = departs.Where(t => t.DEPARTMENT_TYPE == 10).ToList(); } if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.车间级) { departList = departs.Where(t => t.DEPARTMENT_TYPE == 15).ToList(); } if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.班组级) { departList = departs.Where(t => t.DEPARTMENT_TYPE == 20 && teamDepartIds.Contains(t.ID)).ToList(); } if (group.Key.CHECK_TYPE == SKDepartmentTypeEnum.公司级) { departList = departs.Where(t => t.NAME.Contains("安全环保")).ToList(); } var departIds = departList.Select(t => t.ID).ToList(); foreach (var departId in departIds) { var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user == null) { user = users.FirstOrDefault(t => t.DEPARTMENT_ID == departId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); } if (user != null) { T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); safeNotice.ORG_ID = filter.OrgId; safeNotice.APPLY_DEPARTMENT_ID = departId; safeNotice.APPLY_USER_ID = user.ID; safeNotice.MineType = group.Key.MineType; safeNotice.CHECK_TYPE_ID = group.Key.CHECK_TYPE_ID; safeNotice.PLANCHECKFREQUENCY = group.Key.CHECK_CYCLE; safeNotice.DEPARTMENT_TYPE = group.Key.CHECK_TYPE; safeNotice.STATUS = PFStandardStatus.Draft; safeNotice.ISAUTO = true; safeNotices.Add(safeNotice); if (content != null && content.Any()) { foreach (var item in content) { T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); detail.ORG_ID = filter.OrgId; detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; detail.RISK_AREA_ID = item.AREA_ID; detail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; detail.CHECKCONTENT = item.CHECK_CONTENT; detail.CHECKPROOF = item.CHECK_BASIC; detail.CHECKSTANDARD = item.CHECK_STANDARD; safeDetialNotices.Add(detail); } } var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全检查通知(" + departName + ")", safeNotice.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK006"); notices.Add(notice); } } } } } //var libraryPost = libraryDeparts.Where(t => t.CHECK_TYPE == SKDepartmentTypeEnum.岗位级).ToList(); //if (libraryPost.Any()) //{ // var groups = libraryPost.GroupBy(t => new { t.MineType, t.CHECK_TYPE_ID, t.CHECK_CYCLE, t.CHECK_TYPE }).ToList(); // if (groups != null && groups.Any()) // { // foreach (var group in groups) // { // var departName = checkTypes.FirstOrDefault(t => t.ID == group.Key.CHECK_TYPE_ID)?.NAME; // var departContent = libraryNoPost.Where(t => t.MineType == group.Key.MineType && t.CHECK_TYPE_ID == group.Key.CHECK_TYPE_ID && t.CHECK_CYCLE == group.Key.CHECK_CYCLE && t.CHECK_TYPE == group.Key.CHECK_TYPE).ToList(); // var contentIds = departContent.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); // var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList(); // foreach (var depart in shiftClassList) // { // if (depart.Nav_DepartmentSchedulingDetail != null && depart.Nav_DepartmentSchedulingDetail.Any()) // { // var personIds = depart.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).ToList(); // foreach (var personId in personIds) // { // var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart.DEPARTMENT_ID && t.PERSON_ID == personId); // if (user != null) // { // //触发安全检查记录表 // T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); // record.ORG_ID = filter.OrgId; // record.MineType = group.Key.MineType; // record.APPLY_DEPARTMENT_ID = depart.ID; // record.APPLY_USER_ID = user.ID; // record.CHECK_TYPE_ID = group.Key.CHECK_TYPE_ID; // record.PLANCHECKFREQUENCY = group.Key.CHECK_CYCLE; // record.DEPARTMENT_TYPE = group.Key.CHECK_TYPE; // record.CHECK_TIME = DateTime.Now; // record.CHECK_PERSON = user.NAME; // record.ISAUTO = true; // record.STATUS = PFStandardStatus.Draft; // records.Add(record); // if (content != null && content.Any()) // { // foreach (var item in content) // { // T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); // detail.ORG_ID = filter.OrgId; // detail.SECURITY_INSPECTION_RECORD_ID = record.ID; // detail.RISK_AREA_ID = item.AREA_ID; // detail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; // detail.CHECKCONTENT = item.CHECK_CONTENT; // detail.CHECKPROOF = item.CHECK_BASIC; // detail.CHECKSTANDARD = item.CHECK_STANDARD; // recordDetails.Add(detail); // T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER userA = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); // userA.ORG_ID = filter.OrgId; // userA.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; // userA.USER_ID = user.ID; // recordDetailUsers.Add(userA); // } // } // var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK010"); // notices.Add(notice); // } // } // } // } // } // } //} } } UnifiedCommit(() => { if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (safeNotices != null && safeNotices.Any()) BantchSaveEntityNoCommit(safeNotices); if (safeDetialNotices != null && safeDetialNotices.Any()) BantchSaveEntityNoCommit(safeDetialNotices); //if (records != null && records.Any()) // BantchSaveEntityNoCommit(records); //if (recordDetails != null && recordDetails.Any()) // BantchSaveEntityNoCommit(recordDetails); //if (recordDetailUsers != null && recordDetailUsers.Any()) // BantchSaveEntityNoCommit(recordDetailUsers); }); } 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("SafeCheckNoticeRecordOld")] public JsonActionResult SafeCheckNoticeRecordOld([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 = false; List tasks = new List(); List noticeTasks = new List(); List records = new List(); List recordFiles = new List(); List recordDetails = new List(); List recordDetailUsers = new List(); List recordDetailBasics = new List(); //查通知表,检查时间到期的 var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId)); filter.IgnoreDataRule = true; Expression> expression = i => i.IS_DELETED == false && i.CHECK_TIME != null && i.CHECK_TIME.Value.Date == DateTime.Now.Date && i.CHECK_TIME.Value.Hour == DateTime.Now.Hour; List notices = this.GetOrderEntities(expression, filter, new string[] { "Nav_CheckNoticeFiles", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailUsers", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailBasics" }).ToList(); var noticeExsisIds = notices.Select(t => t.ID).ToList(); Expression> expression2 = i => i.IS_DELETED == false && i.SECURITY_INSPECTION_NOTICE_ID != null && noticeExsisIds.Contains((Guid)i.SECURITY_INSPECTION_NOTICE_ID); List recordExsis = this.GetOrderEntities(expression2, filter).ToList(); var recordExsisIds = recordExsis.Select(t => t.SECURITY_INSPECTION_NOTICE_ID).Distinct().ToList(); notices = notices.Where(t => !recordExsisIds.Contains(t.ID)).ToList(); if (notices != null && notices.Any()) { foreach (var item in notices) { List userIds = new List(); var departName = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID)?.NAME; //触发安全检查记录表 T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); record.SECURITY_INSPECTION_NOTICE_ID = item.ID; record.ORG_ID = item.ORG_ID; record.MineType = item.MineType; record.APPLY_DEPARTMENT_ID = item.APPLY_DEPARTMENT_ID; record.APPLY_USER_ID = item.APPLY_USER_ID; record.CHECK_TYPE_ID = item.CHECK_TYPE_ID; record.PLANCHECKFREQUENCY = item.PLANCHECKFREQUENCY; record.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; record.CHECK_TIME = item.CHECK_TIME; record.CHECK_PERSON = item.CHECK_PERSON; record.ISAUTO = true; record.STATUS = PFStandardStatus.Draft; records.Add(record); if (item.Nav_CheckNoticeFiles != null && item.Nav_CheckNoticeFiles.Any()) { foreach (var item2 in item.Nav_CheckNoticeFiles) { T_SK_SECURITY_INSPECTION_RECORD_FILE file = new T_SK_SECURITY_INSPECTION_RECORD_FILE(); file.ORG_ID = item2.ORG_ID; file.SECURITY_INSPECTION_RECORD_ID = record.ID; file.IMG_FILE_ID = item2.IMG_FILE_ID; recordFiles.Add(file); } } if (item.Nav_CheckNoticeDetails != null && item.Nav_CheckNoticeDetails.Any()) { foreach (var item2 in item.Nav_CheckNoticeDetails) { T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); detail.ORG_ID = item2.ORG_ID; detail.SECURITY_INSPECTION_RECORD_ID = record.ID; detail.RISK_AREA_ID = item2.RISK_AREA_ID; detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; detail.CHECKCONTENT = item2.CHECKCONTENT; detail.CHECKPROOF = item2.CHECKPROOF; detail.CHECKSTANDARD = item2.CHECKSTANDARD; recordDetails.Add(detail); if (item2.Nav_CheckNoticeDetailUsers != null && item2.Nav_CheckNoticeDetailUsers.Any()) { foreach (var item3 in item2.Nav_CheckNoticeDetailUsers) { T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); user.ORG_ID = item3.ORG_ID; user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; user.USER_ID = item3.USER_ID; recordDetailUsers.Add(user); userIds.Add((Guid)user.USER_ID); } item2.Nav_CheckNoticeDetailUsers = null; } if (item2.Nav_CheckNoticeDetailBasics != null && item2.Nav_CheckNoticeDetailBasics.Any()) { foreach (var item3 in item2.Nav_CheckNoticeDetailBasics) { T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC(); user.ORG_ID = item3.ORG_ID; user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; user.LAW_ID = item3.LAW_ID; recordDetailBasics.Add(user); } item2.Nav_CheckNoticeDetailBasics = null; } } } userIds = userIds.Distinct().ToList(); if (userIds.Any()) { foreach (var userId in userIds) { var userFirst = users.FirstOrDefault(t => t.ID == userId); if (userFirst != null) { var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, userFirst.ID, userFirst.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK010"); noticeTasks.Add(noticeTask); } } } item.Nav_CheckNoticeDetails = null; item.Nav_CheckNoticeFiles = null; } var noticeIds = notices.Select(i => i.ID).ToList(); tasks = this.GetEntities(t => noticeIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); tasks.ForEach(t => t.NOTICE_STATUS = 4); var sourceIds = tasks.Select(i => i.SOURCE_DATA_ID).ToList(); notices.Where(t => sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Close); notices.Where(t => !sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Archived); } UnifiedCommit(() => { if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (tasks != null && tasks.Any()) BantchSaveEntityNoCommit(tasks); if (noticeTasks != null && noticeTasks.Any()) BantchSaveEntityNoCommit(noticeTasks); if (records != null && records.Any()) BantchSaveEntityNoCommit(records); if (recordFiles != null && recordFiles.Any()) BantchSaveEntityNoCommit(recordFiles); if (recordDetails != null && recordDetails.Any()) BantchSaveEntityNoCommit(recordDetails); if (recordDetailUsers != null && recordDetailUsers.Any()) BantchSaveEntityNoCommit(recordDetailUsers); if (recordDetailBasics != null && recordDetailBasics.Any()) BantchSaveEntityNoCommit(recordDetailBasics); }); } 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("SafeCheckNoticeRecord")] public JsonActionResult SafeCheckNoticeRecord([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; //DateTime minTime = dt.AddMinutes(0); //DateTime maxTime = dt.AddMinutes(60); if (filter.Parameter1 != null) { dtNow = DateTime.Parse(filter.Parameter1); } //filter.IgnoreDataRule = false; List tasks = new List(); List noticeTasks = new List(); List records = new List(); List recordFiles = new List(); List recordDetails = new List(); List recordDetailUsers = new List(); List recordDetailBasics = new List(); //查通知表,检查时间到期的 var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId)); filter.IgnoreDataRule = true; var baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; baseFilter.SelectField = new string[] { "ID", "MineType", "CHECK_TYPE_ID","APPLY_DEPARTMENT_ID","APPLY_USER_ID","PLANCHECKFREQUENCY","DEPARTMENT_TYPE","CHECK_TIME","CHECK_PERSON", "Nav_CheckNoticeDetails.RISK_AREA_ID","Nav_CheckNoticeDetails.CHECK_CONTENTS_ID","Nav_CheckNoticeDetails.CHECKCONTENT","Nav_CheckNoticeDetails.CHECKPROOF","Nav_CheckNoticeDetails.CHECKSTANDARD", "Nav_CheckNoticeFiles.IMG_FILE_ID", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailUsers.USER_ID", "Nav_CheckNoticeDetails.Nav_CheckNoticeDetailBasics.LAW_ID" }; //指定字段,包括导航属性 Expression> expression = i => i.IS_DELETED == false && i.CHECK_TIME != null && i.CHECK_TIME.Value.Date == DateTime.Now.Date && i.CHECK_TIME.Value.Hour == dtNow.Hour; List notices = this.GetOrderEntities(expression, baseFilter).ToList(); var noticeExsisIds = notices.Select(t => t.ID).ToList(); baseFilter.SelectField = new string[] { "ID", "SECURITY_INSPECTION_NOTICE_ID" }; //指定字段,包括导航属性 Expression> expression2 = i => i.IS_DELETED == false && i.SECURITY_INSPECTION_NOTICE_ID != null && noticeExsisIds.Contains((Guid)i.SECURITY_INSPECTION_NOTICE_ID); List recordExsis = this.GetOrderEntities(expression2, baseFilter).ToList(); var recordExsisIds = recordExsis.Select(t => t.SECURITY_INSPECTION_NOTICE_ID).Distinct().ToList(); notices = notices.Where(t => !recordExsisIds.Contains(t.ID)).ToList(); //排班表 //var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == DateTime.Now.Date && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); if (notices != null && notices.Any()) { foreach (var item in notices) { var departName = checkTypes.FirstOrDefault(t => t.ID == item.CHECK_TYPE_ID)?.NAME; var userTempIds = new List(); if (item.Nav_CheckNoticeDetails != null && item.Nav_CheckNoticeDetails.Any()) { foreach (var detail in item.Nav_CheckNoticeDetails) { var tempIds = detail.Nav_CheckNoticeDetailUsers.Select(t => (Guid)t.USER_ID).ToList(); userTempIds.AddRange(tempIds); } userTempIds = userTempIds.Distinct().ToList(); } if (userTempIds.Any()) { foreach (var userItem in userTempIds) { //触发安全检查记录表 T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); record.SECURITY_INSPECTION_NOTICE_ID = item.ID; record.ORG_ID = filter.GetOrgId(); record.MineType = item.MineType; record.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; record.APPLY_DEPARTMENT_ID = item.APPLY_DEPARTMENT_ID; record.APPLY_USER_ID = item.APPLY_USER_ID; record.CHECK_TYPE_ID = item.CHECK_TYPE_ID; record.PLANCHECKFREQUENCY = item.PLANCHECKFREQUENCY; record.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE; record.CHECK_TIME = item.CHECK_TIME; record.ISAUTO = true; record.STATUS = PFStandardStatus.Draft; record.RECORD_USER_ID = userItem; if (item.Nav_CheckNoticeFiles != null && item.Nav_CheckNoticeFiles.Any()) { foreach (var item2 in item.Nav_CheckNoticeFiles) { T_SK_SECURITY_INSPECTION_RECORD_FILE file = new T_SK_SECURITY_INSPECTION_RECORD_FILE(); file.ORG_ID = filter.GetOrgId(); file.SECURITY_INSPECTION_RECORD_ID = record.ID; file.IMG_FILE_ID = item2.IMG_FILE_ID; recordFiles.Add(file); } } var userIds = new List(); var noticeDetails = item.Nav_CheckNoticeDetails?.Where(c => c.Nav_CheckNoticeDetailUsers != null && c.Nav_CheckNoticeDetailUsers.FirstOrDefault(m => m.USER_ID == userItem)?.USER_ID == userItem).OrderBy(t => t.NUM).ToList(); if (noticeDetails != null && noticeDetails.Any()) { var i = 1; foreach (var item2 in noticeDetails) { T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); detail.ORG_ID = filter.GetOrgId(); detail.SECURITY_INSPECTION_RECORD_ID = record.ID; detail.RISK_AREA_ID = item2.RISK_AREA_ID; detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; detail.CHECKCONTENT = item2.CHECKCONTENT; detail.CHECKPROOF = item2.CHECKPROOF; detail.CHECKSTANDARD = item2.CHECKSTANDARD; detail.NUM = i; recordDetails.Add(detail); if (item2.Nav_CheckNoticeDetailUsers != null && item2.Nav_CheckNoticeDetailUsers.Any()) { foreach (var item3 in item2.Nav_CheckNoticeDetailUsers) { T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); user.ORG_ID = filter.GetOrgId(); user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; user.USER_ID = item3.USER_ID; if (item3.USER_ID == userItem) { user.ISMAINCHECK = true; } else { user.ISCHECK = true; user.CHECKTIME = DateTime.Now; } userIds.Add((Guid)user.USER_ID); recordDetailUsers.Add(user); } //item2.Nav_CheckNoticeDetailUsers = null; } if (item2.Nav_CheckNoticeDetailBasics != null && item2.Nav_CheckNoticeDetailBasics.Any()) { foreach (var item3 in item2.Nav_CheckNoticeDetailBasics) { T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC basic = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC(); basic.ORG_ID = filter.GetOrgId(); basic.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; basic.LAW_ID = item3.LAW_ID; recordDetailBasics.Add(basic); } //item2.Nav_CheckNoticeDetailBasics = null; } i++; } } var userNames = users.Where(t => userIds.Contains(t.ID)).Select(m => m.NAME).Distinct().ToList(); record.CHECK_PERSON = string.Join(",", userNames); records.Add(record); var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录(" + departName + ")", record.ID, filter.OrgId, userItem, users.FirstOrDefault(t => t.ID == userItem)?.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK010"); noticeTasks.Add(noticeTask); } } } var noticeIds = notices.Select(i => i.ID).ToList(); tasks = this.GetEntities(t => noticeIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); tasks.ForEach(t => t.NOTICE_STATUS = 4); var sourceIds = tasks.Select(i => i.SOURCE_DATA_ID).ToList(); notices.ForEach(m => { m.Nav_CheckNoticeDetails = null; m.Nav_CheckNoticeFiles = null; }); notices.Where(t => sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Close); notices.Where(t => !sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Archived); } UnifiedCommit(() => { if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (tasks != null && tasks.Any()) BantchSaveEntityNoCommit(tasks); if (noticeTasks != null && noticeTasks.Any()) BantchSaveEntityNoCommit(noticeTasks); if (records != null && records.Any()) BantchSaveEntityNoCommit(records); if (recordFiles != null && recordFiles.Any()) BantchSaveEntityNoCommit(recordFiles); if (recordDetails != null && recordDetails.Any()) BantchSaveEntityNoCommit(recordDetails); if (recordDetailUsers != null && recordDetailUsers.Any()) BantchSaveEntityNoCommit(recordDetailUsers); if (recordDetailBasics != null && recordDetailBasics.Any()) BantchSaveEntityNoCommit(recordDetailBasics); }); } 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; }); } /// /// 安全检查记录检查时间第二天12点未处理的自动转为已办 /// /// /// [HttpPost, Route("CloseSafeCheckRecord")] public JsonActionResult CloseSafeCheckRecord([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; //查记录表,检查时间第二天12点自动转为已办 List tasks = new List(); var baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; baseFilter.SelectField = new string[] { "ID", "MineType", "CHECK_TYPE_ID","APPLY_DEPARTMENT_ID","APPLY_USER_ID","PLANCHECKFREQUENCY","DEPARTMENT_TYPE","CHECK_TIME","CHECK_PERSON", "SECURITY_INSPECTION_NOTICE_ID","STATUS","TYPE_ID", "Nav_CheckRecordDetails.SECURITY_INSPECTION_RECORD_ID","Nav_CheckRecordDetails.CHECK_RESULT","Nav_CheckRecordDetails.CHECK_QUESTION_ID", "Nav_CheckRecordDetails.HIDDEN_DESCRIPTION","Nav_CheckRecordDetails.HIDDEN_LEVEL","Nav_CheckRecordDetails.HIDDEN_PLACE","Nav_CheckRecordDetails.MARK", "Nav_CheckRecordDetails.RISK_AREA_ID","Nav_CheckRecordDetails.CHECK_CONTENTS_ID","Nav_CheckRecordDetails.CHECKCONTENT","Nav_CheckRecordDetails.CHECKPROOF","Nav_CheckRecordDetails.CHECKSTANDARD", "Nav_CheckRecordFiles.IMG_FILE_ID","Nav_CheckRecordFiles.SECURITY_INSPECTION_RECORD_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailFiles.IMG_FILE_ID", "Nav_CheckRecordDetails.Nav_CheckRecordDetailFiles.SECURITY_INSPECTION_RECORD_DETAIL_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.USER_ID", "Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.ISMAINCHECK","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.CHECKTIME","Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.ISCHECK", "Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.SECURITY_INSPECTION_RECORD_DETAIL_ID","Nav_CheckRecordDetails.Nav_CheckRecordDetailBasics.SECURITY_INSPECTION_RECORD_DETAIL_ID", "Nav_CheckRecordDetails.Nav_CheckRecordDetailBasics.LAW_ID" }; //指定字段,包括导航属性 var records = GetEntities(i => i.CHECK_TIME.Value.AddDays(1).Date == DateTime.Now.Date && DateTime.Now.Hour == 12, baseFilter).ToList(); if (records != null && records.Any()) { var noticeIds = records.Select(i => i.ID).ToList(); tasks = this.GetEntities(t => noticeIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); tasks.ForEach(t => t.NOTICE_STATUS = 4); var sourceIds = tasks.Select(i => i.SOURCE_DATA_ID).ToList(); records.Where(t => sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Close); records.Where(t => !sourceIds.Contains(t.ID)).ForEach(m => m.STATUS = PFStandardStatus.Archived); } UnifiedCommit(() => { if (records != null && records.Any()) BantchSaveEntityNoCommit(records); 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; }); } /// /// 触发安全风险辨识与评估计划 /// /// /// [HttpPost, Route("RiskEvaluationPlan")] public JsonActionResult RiskEvaluationPlan([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; List setList = new List(); //查配置表,有配才执行 var timeSets = GetEntities(i => i.SET_TYPE == SKSetTypeEnum.RiskEvaluationPlan && i.ENABLE_STATUS == 0 && i.RUNSETTIME.Value.Hour == DateTime.Now.Hour, new BaseFilter(filter.OrgId)).ToList(); if (timeSets != null && timeSets.Any()) { foreach (var set in timeSets) { switch (set.PLANCHECKFREQUENCY) { case SKPLANCHECKFREQUENCYEnum.Year: if (set.MONTH == month && set.DATA == day) { setList.Add(SKPLANCHECKFREQUENCYEnum.Year); } break; case SKPLANCHECKFREQUENCYEnum.HalfYear: if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) { setList.Add(SKPLANCHECKFREQUENCYEnum.HalfYear); } break; case SKPLANCHECKFREQUENCYEnum.Date: setList.Add(SKPLANCHECKFREQUENCYEnum.Date); break; //case SKPLANCHECKFREQUENCYEnum.Class: // setList.Add(SKPLANCHECKFREQUENCYEnum.Class); // break; case SKPLANCHECKFREQUENCYEnum.Week: if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week) { setList.Add(SKPLANCHECKFREQUENCYEnum.Week); } break; case SKPLANCHECKFREQUENCYEnum.Month: if (set.DATA == day) { setList.Add(SKPLANCHECKFREQUENCYEnum.Month); } break; case SKPLANCHECKFREQUENCYEnum.Quarter: if (set.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day) { setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); } } if (set.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day) { setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); } } if (set.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day) { setList.Add(SKPLANCHECKFREQUENCYEnum.Quarter); } } break; default: break; } } } List deppartList = new List(); List notices = new List(); List plans = new List(); List planDetails = new List(); List planDetailUsers = new List(); var userInfos = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_ApproveRole"); var userInfo = userInfos.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员"); if (userInfo == null) { userInfo = userInfos.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人"); } if (userInfo != null) { DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.JobSite, filter.OrgId.Value, DateTime.Now, null, null); if (setList != null && setList.Any()) { var departMentTemps = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); var topDepart = departMentTemps.FirstOrDefault(t => t.PARENT_ID == null); //deppartList.Add(topDepart); var departMents = GetSons(departMentTemps, topDepart.ID).OrderBy(t => t.PARENT_ID).ThenBy(t => t.NUM); var comDeparts = departMents.Where(t => t.DEPARTMENT_TYPE == 5).ToList(); deppartList.AddRange(comDeparts); var bmDeparts = departMents.Where(t => t.DEPARTMENT_TYPE == 10).ToList(); foreach (var bm in bmDeparts) { deppartList.Add(bm); var cjDepart = departMents.Where(t => t.PARENT_ID == bm.ID).OrderBy(t => t.NUM).ToList(); if (cjDepart.Any()) { foreach (var cj in cjDepart) { deppartList.Add(cj); var bzDepart = departMents.Where(t => t.PARENT_ID == cj.ID).OrderBy(t => t.NUM).ToList(); if (bzDepart.Any()) { deppartList.AddRange(bzDepart); } } } } foreach (var set in setList) { T_SK_IDENTIFY_EVALUATION_PLAN plan = new T_SK_IDENTIFY_EVALUATION_PLAN(); plan.ORG_ID = filter.OrgId; plan.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; plan.APPLY_USER_ID = userInfo.ID; plan.YEAR = DateTime.Now.Year.ToString(); plan.START_DATE = DateTime.Now; //plan.END_DATE = dtEnd; plan.ISAUTO = true; plans.Add(plan); if (deppartList.Any()) { int i = 1; foreach (var item in deppartList) { var userFirst = userInfos.FirstOrDefault(t => t.DEPARTMENT_ID == item.ID); if (userFirst != null) { T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL detail = new T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL(); detail.ORG_ID = filter.OrgId; detail.IDENTIFY_EVALUATION_PLAN_ID = plan.ID; detail.DEPARTMENT_ID = item.ID; detail.NUM = i; var users = userInfos.Where(t => t.DEPARTMENT_ID == item.ID).ToList(); if (users.Any()) { var userNames = users.Select(t => t.NAME).ToList(); detail.USERS = string.Join(",", userNames); foreach (var item2 in users) { T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL_USER user = new T_SK_IDENTIFY_EVALUATION_PLAN_DETAIL_USER(); user.ORG_ID = filter.OrgId; user.USER_ID = item2.ID; user.IDENTIFY_EVALUATION_PLAN_DETAIL_ID = detail.ID; planDetailUsers.Add(user); } } planDetails.Add(detail); i++; } } } var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识与评估计划(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", plan.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "SK031"); notices.Add(noticeTask); } } } UnifiedCommit(() => { if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (plans != null && plans.Any()) BantchSaveEntityNoCommit(plans); if (planDetails != null && planDetails.Any()) BantchSaveEntityNoCommit(planDetails); if (planDetailUsers != null && planDetailUsers.Any()) BantchSaveEntityNoCommit(planDetailUsers); }); } 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; }); } public List GetSons(List list, Guid Fid) { var query = list.Where(p => p.ID == Fid).OrderBy(t => t.NUM).ToList(); var list2 = query.Concat(GetSonList(list, Fid)).ToList(); return list2; } public List GetSonList(List list, Guid Fid) { var query = list.Where(p => p.PARENT_ID == Fid).OrderBy(t => t.NUM).ToList(); return query.ToList().Concat(query.ToList().SelectMany(t => GetSonList(list, t.ID))).ToList(); } /// /// 补触发安全风险辨识表 /// /// /// [HttpPost, Route("RiskEvaluationAdd")] public JsonActionResult RiskEvaluationAdd([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; List notices = new List(); List identitys = new List(); List files = new List(); List details = new List(); var plan = this.GetEntity(t => t.STATUS == PFStandardStatus.Archived, "Nav_Details.Nav_DetailUsers"); filter.IgnoreDataRule = true; Expression> expression = t => t.IDENTIFY_EVALUATION_PLAN_ID == plan.ID; List oldidentitys = this.GetOrderEntities(expression, filter).ToList(); var applyUserIds = oldidentitys.Select(t => t.APPLY_USER_ID).Distinct().ToList(); //var plans = this.GetEntities(t => t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived, new BaseFilter(filter.OrgId), "Nav_Details.Nav_DetailUsers"); if (plan != null) { var libraryPosts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); var libraryPostDetails = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); var librarys = this.GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); var detailss = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Person"); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); //var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId)).ToList(); //var schedulingIds = shiftClassList.Select(t => t.ID).ToList(); //var shiftClassDetailList = this.GetEntities(s => schedulingIds.Contains(s.DEPARTMENT_SCHEDULING_ID), new BaseFilter(filter.OrgId)).ToList(); //var personIds = shiftClassDetailList.Select(t => t.PERSON_ID).Distinct().ToList(); //var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); //var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); //var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); var requre = this.GetEntity(t => !t.IS_DELETED); if (plan != null && plan.Nav_Details != null && plan.Nav_Details.Any()) { foreach (var item in plan.Nav_Details) { if (item.Nav_DetailUsers != null && item.Nav_DetailUsers.Any()) { foreach (var item2 in item.Nav_DetailUsers) { var user = users.FirstOrDefault(t => t.ID == item2.USER_ID && !applyUserIds.Contains(item2.USER_ID)); if (user != null) { T_SK_RISK_IDENTIFY ide = new T_SK_RISK_IDENTIFY(); ide.ORG_ID = user.ORG_ID; ide.IDENTIFY_EVALUATION_PLAN_ID = plan.ID; ide.APPLY_DEPARTMENT_ID = item.DEPARTMENT_ID; ide.APPLY_USER_ID = user.ID; ide.YEAR = DateTime.Now.Year.ToString(); ide.ISAUTO = true; ide.CONTENTS = plan.CONTENTS; ide.START_DATE = plan.START_DATE; ide.END_DATE = plan.END_DATE; ide.REQUIRE_ID = requre?.ID; identitys.Add(ide); if (user.Nav_Person != null) { var postDetailIds = libraryPostDetails.Where(t => t.POST_ID == user.Nav_Person.POST_ID).Select(m => m.ENTERPRISE_LIBRARY_POST_ID).Distinct().ToList(); var posts = libraryPosts.Where(t => postDetailIds.Contains(t.ID) && t.DEPARTMENT_ID == user.DEPARTMENT_ID).ToList(); if (posts != null && posts.Any()) { var libraryIdss = posts.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); var libraryss = librarys.Where(t => libraryIdss.Contains(t.ID)).OrderBy(t => t.NUM).ToList(); if (libraryss.Any()) { foreach (var library in libraryss) { T_SK_RISK_IDENTIFY_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_DETAIL(); ideDetail.ORG_ID = filter.OrgId; ideDetail.RISK_IDENTIFY_ID = ide.ID; ideDetail.PRODUCTION_UNIT_ID = library?.PRODUCTION_UNIT_ID; ideDetail.MineType = library == null ? SKProductionUnit.Mine : library.MineType; ideDetail.AREA_ID = library?.AREA_ID; ideDetail.RISK_DESCRIPTION = library?.RISK_DESCRIPTION; ideDetail.TYPE_ID = library?.TYPE_ID; ideDetail.RISK_NAME = library?.RISK_NAME; ideDetail.RISK_NAME_ID = library?.RISK_NAME_ID; ideDetail.EMERGENCY = library?.EMERGENCY; var detailList = detailss.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).OrderBy(t => t.NUM).ToList(); if (detailList.Any()) { var measuresTemp = detailList.Select(t => t.MEASURES_NAME).Distinct().ToList(); if (measuresTemp.Any()) { if (measuresTemp.Count == 1) { ideDetail.MEASURE = measuresTemp.FirstOrDefault(); } else { var i = 1; foreach (var ite in measuresTemp) { var temp2 = i + "、" + ite; if (i == 1) { ideDetail.MEASURE = temp2; } else { ideDetail.MEASURE = ideDetail.MEASURE + Environment.NewLine + temp2; } i++; } } } //var emergencysTemp = detailList.Select(t => t.EMERGENCY).Distinct().ToList(); //if (emergencysTemp.Any()) //{ // var i = 1; // foreach (var ite in emergencysTemp) // { // var temp2 = i == 1 ? i + "、" + ite + ";" : i + "、" + ite + ";"; // ideDetail.EMERGENCY = ideDetail.EMERGENCY + temp2; // i++; // } //} } details.Add(ideDetail); } } } } var endtime = plan.END_DATE != null ? (DateTime)plan.END_DATE : DateTime.Now.AddDays(1); var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识表(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", ide.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK033"); notices.Add(noticeTask); } } } } } } UnifiedCommit(() => { if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (identitys != null && identitys.Any()) BantchSaveEntityNoCommit(identitys); if (files != null && files.Any()) BantchSaveEntityNoCommit(files); if (details != null && details.Any()) BantchSaveEntityNoCommit(details); }); } 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("RiskEvaluation")] public JsonActionResult RiskEvaluation([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; List notices = new List(); List identitys = new List(); List files = new List(); List details = new List(); filter.IgnoreDataRule = true; Expression> expression = t => t.IS_DELETED == false && t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived; List plans = this.GetOrderEntities(expression, filter, new string[] { "Nav_Details.Nav_DetailUsers" }).ToList(); //var plans = this.GetEntities(t => t.ISSEND == false && t.START_DATE.Value.Date == dtNow.Date && t.STATUS == PFStandardStatus.Archived, new BaseFilter(filter.OrgId), "Nav_Details.Nav_DetailUsers"); if (plans != null && plans.Any()) { var libraryPosts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); var libraryPostDetails = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); var librarys = this.GetEntities(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); var detailss = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_Person"); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); //var shiftClassList = this.GetEntities(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId)).ToList(); //var schedulingIds = shiftClassList.Select(t => t.ID).ToList(); //var shiftClassDetailList = this.GetEntities(s => schedulingIds.Contains(s.DEPARTMENT_SCHEDULING_ID), new BaseFilter(filter.OrgId)).ToList(); //var personIds = shiftClassDetailList.Select(t => t.PERSON_ID).Distinct().ToList(); //var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); //var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); //var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); var requre = this.GetEntity(t => !t.IS_DELETED); foreach (var plan in plans) { if (plan != null && plan.Nav_Details != null && plan.Nav_Details.Any()) { foreach (var item in plan.Nav_Details) { if (item.Nav_DetailUsers != null && item.Nav_DetailUsers.Any()) { foreach (var item2 in item.Nav_DetailUsers) { var user = users.FirstOrDefault(t => t.ID == item2.USER_ID); if (user != null) { //var userDepart = departs.FirstOrDefault(t => t.ID == user.DEPARTMENT_ID); //if (userDepart.DEPARTMENT_TYPE == 2) //{ // //if (teamDepartIds.Contains(user.DEPARTMENT_ID) && personIds.Contains((Guid)user.PERSON_ID)) // { // T_SK_RISK_IDENTIFY ide = new T_SK_RISK_IDENTIFY(); // ide.ORG_ID = user.ORG_ID; // ide.IDENTIFY_EVALUATION_PLAN_ID = plan.ID; // ide.APPLY_DEPARTMENT_ID = item.DEPARTMENT_ID; // ide.APPLY_USER_ID = user.ID; // ide.YEAR = DateTime.Now.Year.ToString(); // ide.ISAUTO = true; // ide.CONTENTS = plan.CONTENTS; // ide.START_DATE = plan.START_DATE; // ide.END_DATE = plan.END_DATE; // ide.REQUIRE_ID = requre?.ID; // identitys.Add(ide); // if (user.Nav_Person != null) // { // var postDetailIds = libraryPostDetails.Where(t => t.POST_ID == user.Nav_Person.POST_ID).Select(m => m.ENTERPRISE_LIBRARY_POST_ID).Distinct().ToList(); // var posts = libraryPosts.Where(t => postDetailIds.Contains(t.ID) && t.DEPARTMENT_ID == user.DEPARTMENT_ID).ToList(); // if (posts != null && posts.Any()) // { // var libraryIdss = posts.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); // var libraryss = librarys.Where(t => libraryIdss.Contains(t.ID)).OrderBy(t => t.NUM).ToList(); // if (libraryss.Any()) // { // foreach (var library in libraryss) // { // T_SK_RISK_IDENTIFY_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_DETAIL(); // ideDetail.ORG_ID = filter.OrgId; // ideDetail.RISK_IDENTIFY_ID = ide.ID; // ideDetail.MineType = library == null ? SKProductionUnit.Mine : library.MineType; // ideDetail.AREA_ID = library?.AREA_ID; // ideDetail.RISK_NAME = library?.RISK_NAME; // ideDetail.RISK_NAME_ID = library?.RISK_NAME_ID; // ideDetail.RISK_DESCRIPTION = library?.RISK_DESCRIPTION; // ideDetail.TYPE_ID = library?.TYPE_ID; // ideDetail.EMERGENCY = library?.EMERGENCY; // var detailList = detailss.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).OrderBy(t => t.NUM).ToList(); // if (detailList.Any()) // { // var measuresTemp = detailList.Select(t => t.MEASURES_NAME).Distinct().ToList(); // if (measuresTemp.Any()) // { // if (measuresTemp.Count == 1) // { // ideDetail.MEASURE = measuresTemp.FirstOrDefault(); // } // else // { // var i = 1; // foreach (var ite in measuresTemp) // { // var temp2 = i + "、" + ite + ";"; // ideDetail.MEASURE = ideDetail.MEASURE + Environment.NewLine + temp2; // i++; // } // } // } // //var emergencysTemp = detailList.Select(t => t.EMERGENCY).Distinct().ToList(); // //if (emergencysTemp.Any()) // //{ // // var i = 1; // // foreach (var ite in emergencysTemp) // // { // // var temp2 = i == 1 ? i + "、" + ite + ";" : i + "、" + ite + ";"; // // ideDetail.EMERGENCY = ideDetail.EMERGENCY + temp2; // // i++; // // } // //} // } // details.Add(ideDetail); // } // } // } // } // var endtime = plan.END_DATE != null ? (DateTime)plan.END_DATE : DateTime.Now.AddDays(1); // var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识表(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", ide.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK033"); // notices.Add(noticeTask); // } //} //else //{ T_SK_RISK_IDENTIFY ide = new T_SK_RISK_IDENTIFY(); ide.ORG_ID = user.ORG_ID; ide.IDENTIFY_EVALUATION_PLAN_ID = plan.ID; ide.APPLY_DEPARTMENT_ID = item.DEPARTMENT_ID; ide.APPLY_USER_ID = user.ID; ide.YEAR = DateTime.Now.Year.ToString(); ide.ISAUTO = true; ide.CONTENTS = plan.CONTENTS; ide.START_DATE = plan.START_DATE; ide.END_DATE = plan.END_DATE; ide.REQUIRE_ID = requre?.ID; identitys.Add(ide); if (user.Nav_Person != null) { var postDetailIds = libraryPostDetails.Where(t => t.POST_ID == user.Nav_Person.POST_ID).Select(m => m.ENTERPRISE_LIBRARY_POST_ID).Distinct().ToList(); var posts = libraryPosts.Where(t => postDetailIds.Contains(t.ID) && t.DEPARTMENT_ID == user.DEPARTMENT_ID).ToList(); if (posts != null && posts.Any()) { var libraryIdss = posts.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); var libraryss = librarys.Where(t => libraryIdss.Contains(t.ID)).OrderBy(t => t.NUM).ToList(); if (libraryss.Any()) { foreach (var library in libraryss) { T_SK_RISK_IDENTIFY_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_DETAIL(); ideDetail.ORG_ID = filter.OrgId; ideDetail.RISK_IDENTIFY_ID = ide.ID; ideDetail.PRODUCTION_UNIT_ID = library?.PRODUCTION_UNIT_ID; ideDetail.MineType = library == null ? SKProductionUnit.Mine : library.MineType; ideDetail.AREA_ID = library?.AREA_ID; ideDetail.RISK_DESCRIPTION = library?.RISK_DESCRIPTION; ideDetail.TYPE_ID = library?.TYPE_ID; ideDetail.RISK_NAME = library?.RISK_NAME; ideDetail.RISK_NAME_ID = library?.RISK_NAME_ID; ideDetail.EMERGENCY = library?.EMERGENCY; var detailList = detailss.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).OrderBy(t => t.NUM).ToList(); if (detailList.Any()) { var measuresTemp = detailList.Select(t => t.MEASURES_NAME).Distinct().ToList(); if (measuresTemp.Any()) { if (measuresTemp.Count == 1) { ideDetail.MEASURE = measuresTemp.FirstOrDefault(); } else { var i = 1; foreach (var ite in measuresTemp) { var temp2 = i + "、" + ite; if (i == 1) { ideDetail.MEASURE = temp2; } else { ideDetail.MEASURE = ideDetail.MEASURE + Environment.NewLine + temp2; } i++; } } } //var emergencysTemp = detailList.Select(t => t.EMERGENCY).Distinct().ToList(); //if (emergencysTemp.Any()) //{ // var i = 1; // foreach (var ite in emergencysTemp) // { // var temp2 = i == 1 ? i + "、" + ite + ";" : i + "、" + ite + ";"; // ideDetail.EMERGENCY = ideDetail.EMERGENCY + temp2; // i++; // } //} } details.Add(ideDetail); } } } } var endtime = plan.END_DATE != null ? (DateTime)plan.END_DATE : DateTime.Now.AddDays(1); var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识表(" + DateTime.Now.ToShortDateString().Replace("/", "") + ")", ide.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK033"); notices.Add(noticeTask); //} } } } } plan.ISSEND = true; } } } UnifiedCommit(() => { if (plans != null && plans.Any()) BantchSaveEntityNoCommit(plans); if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (identitys != null && identitys.Any()) BantchSaveEntityNoCommit(identitys); if (files != null && files.Any()) BantchSaveEntityNoCommit(files); if (details != null && details.Any()) BantchSaveEntityNoCommit(details); }); } 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("CloseRiskIdentify")] public JsonActionResult CloseRiskIdentify([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; List notices = new List(); List tasks = new List(); //List plans = new List(); List identitys = new List(); List results = new List(); List resultDetails = new List(); var requre = this.GetEntity(t => !t.IS_DELETED); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId), "Nav_ApproveRole", "Nav_Person"); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); var userPosts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); var baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; baseFilter.SelectField = new string[] { "ID" }; //指定字段,包括导航属性 Expression> expression = i => i.END_DATE.Value.Date == DateTime.Now.Date && i.STATUS == PFStandardStatus.Archived; List planTemps = this.GetOrderEntities(expression, baseFilter).ToList(); var planIds = planTemps.Select(t => t.ID).ToList(); var newFilter = new BaseFilter(filter.GetOrgId()); newFilter.IgnoreDataRule = true; Expression> expressionTemp = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID); List identityResults = this.GetOrderEntities(expressionTemp, newFilter).ToList(); Expression> newexpression = i => planIds.Contains((Guid)i.IDENTIFY_EVALUATION_PLAN_ID); List identityTemps = this.GetOrderEntities(newexpression, newFilter).ToList(); identitys = identityTemps.Where(t => t.STATUS != PFStandardStatus.Archived && t.STATUS != PFStandardStatus.Close).ToList(); var identityPlanIds = identitys.Select(t => t.IDENTIFY_EVALUATION_PLAN_ID).Distinct().ToList(); //plans = planTemps.Where(t => identityPlanIds.Contains(t.ID)).ToList(); var identityIds = identitys.Select(i => i.ID).ToList(); tasks = this.GetEntities(t => identityIds.Contains((Guid)t.SOURCE_DATA_ID) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); var identityTempIds = identityTemps.Select(t => t.ID).ToList(); var details = GetEntities(i => identityTempIds.Contains(i.RISK_IDENTIFY_ID), new BaseFilter(filter.OrgId)).ToList(); if (planIds != null && planIds.Any() && dtNow.Hour <= 20)//&& dtNow.Hour >= 16 { //plans.ForEach(t => t.STATUS = PFStandardStatus.Close); identitys.ForEach(m => m.STATUS = PFStandardStatus.Close); identitys.ForEach(m => m.END_DATE = DateTime.Now); tasks.ForEach(t => t.NOTICE_STATUS = 4); tasks.ForEach(t => t.SOURCE_FORMCODE = "SK033_SHOWPRINT"); foreach (var plan in planIds) { var ides = identityTemps.Where(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan).ToList(); if (ides.Any()) { //找出所有职能部门 var departListIds = new List(); //公司默认职能部门 var company = departs.FirstOrDefault(t => t.PARENT_ID == null); departListIds.Add(company.ID); var tempids = departs.Where(t => t.DEPARTMENT_STATUS == 0).Select(m => m.ID).ToList(); departListIds.AddRange(tempids); //职能口统一汇总给安环部安全员 if (departListIds.Any()) { var user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")); if (user == null) { user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部负责人")); } if (user != null) { //判断是否已触发过 var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.Yes); if (exsisRecird == null) { var ideIds = ides.Where(m => departListIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.ID).ToList(); var deTemp = ides.FirstOrDefault(t => departListIds.Contains((Guid)t.APPLY_DEPARTMENT_ID)); T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT(); result.ORG_ID = filter.OrgId; result.APPLY_DEPARTMENT_ID = user?.DEPARTMENT_ID; result.APPLY_USER_ID = user.ID; result.IDENTIFY_ID = deTemp.ID; result.IDENTIFY_EVALUATION_PLAN_ID = plan; result.YEAR = DateTime.Now.Year.ToString(); result.ISAUTO = true; result.ISCOMPANY = SKIsStoreEnum.Yes; result.CONTENTS = deTemp.CONTENTS; result.START_DATE = DateTime.Now; result.END_DATE = DateTime.Now; result.REQUIRE_ID = requre?.ID; results.Add(result); var list = details.Where(t => ideIds.Contains(t.RISK_IDENTIFY_ID)).ToList(); //汇总去重 var detailListYes = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.Yes).GroupBy(m => new { m.AREA_ID, m.MineType,m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList(); var detailListNo = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.No).GroupBy(m => new { m.AREA_ID, m.MineType, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList(); detailListYes.AddRange(detailListNo); if (detailListYes.Any()) { foreach (var item in detailListYes) { var temp = list.Where(m =>m.PRODUCTION_UNIT_ID == item.Key.PRODUCTION_UNIT_ID && m.AREA_ID == item.Key.AREA_ID && m.MineType == item.Key.MineType && m.RISK_NAME == item.Key.RISK_NAME && m.RISK_NAME_ID == item.Key.RISK_NAME_ID && m.RISK_DESCRIPTION == item.Key.RISK_DESCRIPTION && m.TYPE_ID == item.Key.TYPE_ID).ToList(); //只取有效的部门岗位 var tempYes = temp.FirstOrDefault(t => t.ENABLE_STATUS == SKEnableStatusEnum.Yes); var identifyIds = temp.Where(m => m.ENABLE_STATUS == 0).Select(t => t.RISK_IDENTIFY_ID).ToList(); var departIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_DEPARTMENT_ID).Distinct().ToList(); var userIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_USER_ID).Distinct().ToList(); T_SK_RISK_IDENTIFY_RESULT_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_DETAIL(); ideDetail.ORG_ID = filter.OrgId; ideDetail.RISK_IDENTIFY_RESULT_ID = result.ID; ideDetail.PRODUCTION_UNIT_ID = item.Key.PRODUCTION_UNIT_ID; ideDetail.MineType = item.Key.MineType; ideDetail.AREA_ID = item.Key.AREA_ID; ideDetail.RISK_NAME = item.Key.RISK_NAME; ideDetail.RISK_NAME_ID = item.Key.RISK_NAME_ID; ideDetail.RISK_DESCRIPTION = item.Key.RISK_DESCRIPTION; ideDetail.TYPE_ID = item.Key.TYPE_ID; ideDetail.MEASURE = tempYes != null ? tempYes.MEASURE : temp[0]?.MEASURE; ideDetail.EMERGENCY = tempYes != null ? tempYes.EMERGENCY : temp[0]?.EMERGENCY; ideDetail.ENABLE_STATUS = tempYes != null ? tempYes.ENABLE_STATUS : temp[0].ENABLE_STATUS; if (departIdss.Any()) { var departTemps = departs.Where(t => departIdss.Contains(t.ID)).Select(m => m.DEPARTMENT_TYPE).Distinct().ToList(); if (departTemps.Any()) { var i = 1; foreach (var ite in departTemps) { var departType = "公司级"; if (ite == 0) { departType = "部门级"; } if (ite == 1) { departType = "车间级"; } if (ite == 2) { departType = "班组级"; } var temp2 = i == 1 ? i + "、" + departType + ";" : i + "、" + departType + ";"; ideDetail.DEPARTMENT_TYPE = ideDetail.DEPARTMENT_TYPE + temp2; var deTemps = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.NAME).ToList(); var deTempIds = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.ID).ToList(); var temp3 = i == 1 ? i + "、" + string.Join(",", deTemps) + ";" : i + "、" + string.Join(",", deTemps) + ";"; ideDetail.IDENTIFY_DEPARTMENT = ideDetail.IDENTIFY_DEPARTMENT + temp3; var postIdss = users.Where(t => t.DEPARTMENT_ID != null && deTempIds.Contains((Guid)t.DEPARTMENT_ID) && userIdss.Contains(t.ID) && t.Nav_Person != null).ToList(); var postIds = postIdss.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(m => m.Nav_Person.POST_ID).ToList(); var postTemps = userPosts.Where(t => postIds.Contains(t.ID)).Select(m => m.NAME).ToList(); if (postTemps.Any()) { var tempPosts = string.Join(";", postTemps); var temp4 = i == 1 ? i + "、" + tempPosts + ";" : i + "、" + tempPosts + ";"; ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp4; //ideDetail.IDENTIFY_POST = string.Join(";", postTemps); } i++; } //ideDetail.IDENTIFY_DEPARTMENT = string.Join(";", departTemps); } //if (postTemps.Any()) //{ // var i = 1; // foreach (var ite in postTemps) // { // var temp2 = i == 1 ? i + "、" + ite + ";" : i + "、" + ite + ";"; // ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp2; // i++; // } // //ideDetail.IDENTIFY_POST = string.Join(";", postTemps); //} } resultDetails.Add(ideDetail); } } var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(职能口)", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK035"); notices.Add(notice); } } } //非职能口 var departIds = ides.Where(m => !departListIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.APPLY_DEPARTMENT_ID).Distinct().ToList(); if (departIds.Any()) { //部门级给部门安全员 var departClass = departs.Where(t => departIds.Contains(t.ID) && (t.DEPARTMENT_TYPE == 10 || t.DEPARTMENT_TYPE == 5)).ToList(); if (departClass.Any()) { var tempIds = departClass.Select(t => t.ID).ToList(); if (tempIds.Any()) { //循环每个部门 foreach (var de in tempIds) { var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user == null) { user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); } if (user != null) { //判断是否已触发过 var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.No); if (exsisRecird == null) { var deTemp = ides.FirstOrDefault(t => t.APPLY_DEPARTMENT_ID == de); T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT(); result.ORG_ID = filter.OrgId; result.APPLY_DEPARTMENT_ID = user?.DEPARTMENT_ID; result.APPLY_USER_ID = user.ID; result.IDENTIFY_ID = deTemp.ID; result.IDENTIFY_EVALUATION_PLAN_ID = plan; result.YEAR = DateTime.Now.Year.ToString(); result.ISAUTO = true; result.ISCOMPANY = SKIsStoreEnum.No; result.CONTENTS = deTemp.CONTENTS; result.START_DATE = DateTime.Now; result.END_DATE = DateTime.Now; result.REQUIRE_ID = requre?.ID; results.Add(result); //只汇总部门级所有人的明细 var ideIds = ides.Where(m => m.APPLY_DEPARTMENT_ID == de).Select(t => t.ID).ToList(); var list = details.Where(t => ideIds.Contains(t.RISK_IDENTIFY_ID)).ToList(); //汇总去重 var detailListYes = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.Yes).GroupBy(m => new { m.AREA_ID, m.MineType,m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList(); var detailListNo = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.No).GroupBy(m => new { m.AREA_ID, m.MineType, m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList(); detailListYes.AddRange(detailListNo); if (detailListYes.Any()) { foreach (var item in detailListYes) { var temp = list.Where(m => m.PRODUCTION_UNIT_ID == item.Key.PRODUCTION_UNIT_ID && m.AREA_ID == item.Key.AREA_ID && m.MineType == item.Key.MineType && m.RISK_NAME == item.Key.RISK_NAME && m.RISK_NAME_ID == item.Key.RISK_NAME_ID && m.RISK_DESCRIPTION == item.Key.RISK_DESCRIPTION && m.TYPE_ID == item.Key.TYPE_ID).ToList(); //只取有效的部门岗位 var tempYes = temp.FirstOrDefault(t => t.ENABLE_STATUS == SKEnableStatusEnum.Yes); var identifyIds = temp.Where(m => m.ENABLE_STATUS == 0).Select(t => t.RISK_IDENTIFY_ID).ToList(); var departIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_DEPARTMENT_ID).Distinct().ToList(); var userIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_USER_ID).Distinct().ToList(); T_SK_RISK_IDENTIFY_RESULT_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_DETAIL(); ideDetail.ORG_ID = filter.OrgId; ideDetail.RISK_IDENTIFY_RESULT_ID = result.ID; ideDetail.MineType = item.Key.MineType; ideDetail.PRODUCTION_UNIT_ID = item.Key.PRODUCTION_UNIT_ID; ideDetail.AREA_ID = item.Key.AREA_ID; ideDetail.RISK_NAME = item.Key.RISK_NAME; ideDetail.RISK_NAME_ID = item.Key.RISK_NAME_ID; ideDetail.RISK_DESCRIPTION = item.Key.RISK_DESCRIPTION; ideDetail.TYPE_ID = item.Key.TYPE_ID; ideDetail.MEASURE = tempYes != null ? tempYes.MEASURE : temp[0]?.MEASURE; ideDetail.EMERGENCY = tempYes != null ? tempYes.EMERGENCY : temp[0]?.EMERGENCY; ideDetail.ENABLE_STATUS = tempYes != null ? tempYes.ENABLE_STATUS : temp[0].ENABLE_STATUS; //ideDetail.DEPARTMENT_TYPE = "岗位级"; if (departIdss.Any()) { var departTemps = departs.Where(t => departIdss.Contains(t.ID)).Select(m => m.DEPARTMENT_TYPE).Distinct().ToList(); if (departTemps.Any()) { var i = 1; foreach (var ite in departTemps) { var departType = "公司级"; if (ite == 0) { departType = "部门级"; } if (ite == 1) { departType = "车间级"; } if (ite == 2) { departType = "班组级"; } var temp2 = i == 1 ? i + "、" + departType + ";" : i + "、" + departType + ";"; ideDetail.DEPARTMENT_TYPE = ideDetail.DEPARTMENT_TYPE + temp2; var deTemps = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.NAME).ToList(); var deTempIds = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.ID).ToList(); var temp3 = i == 1 ? i + "、" + string.Join(",", deTemps) + ";" : i + "、" + string.Join(",", deTemps) + ";"; ideDetail.IDENTIFY_DEPARTMENT = ideDetail.IDENTIFY_DEPARTMENT + temp3; var postIdss = users.Where(t => t.DEPARTMENT_ID != null && deTempIds.Contains((Guid)t.DEPARTMENT_ID) && userIdss.Contains(t.ID) && t.Nav_Person != null).ToList(); var postIds = postIdss.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(m => m.Nav_Person.POST_ID).ToList(); var postTemps = userPosts.Where(t => postIds.Contains(t.ID)).Select(m => m.NAME).ToList(); if (postTemps.Any()) { var tempPosts = string.Join(";", postTemps); var temp4 = i == 1 ? i + "、" + tempPosts + ";" : i + "、" + tempPosts + ";"; ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp4; //ideDetail.IDENTIFY_POST = string.Join(";", postTemps); } i++; } //ideDetail.IDENTIFY_DEPARTMENT = string.Join(";", departTemps); } //if (postTemps.Any()) //{ // var i = 1; // foreach (var ite in postTemps) // { // var temp2 = i == 1 ? i + "、" + ite + ";" : i + "、" + ite + ";"; // ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp2; // i++; // } // //ideDetail.IDENTIFY_POST = string.Join(";", postTemps); //} } resultDetails.Add(ideDetail); } } var param = departs.FirstOrDefault(t => t.ID == de)?.NAME; if (string.IsNullOrEmpty(param)) { param = "部门级"; } var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(" + param + ")", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK035"); notices.Add(notice); } } } } } //车间级和班组级汇总给车间安全员 var shopClass = departs.Where(t => departIds.Contains(t.ID) && t.DEPARTMENT_TYPE == 15).ToList(); if (shopClass.Any()) { var tempIds = shopClass.Select(t => t.ID).ToList(); var classTempInfos = departs.Where(t => t.PARENT_ID != null && tempIds.Contains((Guid)t.PARENT_ID) && t.DEPARTMENT_TYPE == 20).ToList(); if (tempIds.Any()) { //每个车间汇总班组和车间 foreach (var de in tempIds) { var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user == null) { user = users.FirstOrDefault(t => t.DEPARTMENT_ID == de && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); } if (user != null) { //判断是否已触发过 var exsisRecird = identityResults.FirstOrDefault(t => t.IDENTIFY_EVALUATION_PLAN_ID == plan && t.APPLY_DEPARTMENT_ID == user.DEPARTMENT_ID && t.APPLY_USER_ID == user.ID && t.ISCOMPANY == SKIsStoreEnum.No); if (exsisRecird == null) { var classIds = classTempInfos.Where(t => t.PARENT_ID == de).Select(t => t.ID).ToList(); //departListIds.AddRange(classIds); var deTemp = ides.FirstOrDefault(t => t.APPLY_DEPARTMENT_ID == de); T_SK_RISK_IDENTIFY_RESULT result = new T_SK_RISK_IDENTIFY_RESULT(); result.ORG_ID = filter.OrgId; result.APPLY_DEPARTMENT_ID = user?.DEPARTMENT_ID; result.APPLY_USER_ID = user.ID; result.IDENTIFY_ID = deTemp.ID; result.IDENTIFY_EVALUATION_PLAN_ID = plan; result.YEAR = DateTime.Now.Year.ToString(); result.ISAUTO = true; result.ISCOMPANY = SKIsStoreEnum.No; result.CONTENTS = deTemp.CONTENTS; result.START_DATE = DateTime.Now; result.END_DATE = DateTime.Now; result.REQUIRE_ID = requre?.ID; results.Add(result); var ideIds = ides.Where(m => m.APPLY_DEPARTMENT_ID == de || classIds.Contains((Guid)m.APPLY_DEPARTMENT_ID)).Select(t => t.ID).ToList(); var list = details.Where(t => ideIds.Contains(t.RISK_IDENTIFY_ID)).ToList(); //汇总去重 var detailListYes = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.Yes).GroupBy(m => new { m.AREA_ID, m.MineType,m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList(); var detailListNo = list.Where(m => m.ENABLE_STATUS == SKEnableStatusEnum.No).GroupBy(m => new { m.AREA_ID, m.MineType,m.PRODUCTION_UNIT_ID, m.RISK_NAME, m.RISK_NAME_ID, m.RISK_DESCRIPTION, m.TYPE_ID }).ToList(); detailListYes.AddRange(detailListNo); if (detailListYes.Any()) { foreach (var item in detailListYes) { var temp = list.Where(m => m.PRODUCTION_UNIT_ID == item.Key.PRODUCTION_UNIT_ID && m.AREA_ID == item.Key.AREA_ID && m.MineType == item.Key.MineType && m.RISK_NAME == item.Key.RISK_NAME && m.RISK_NAME_ID == item.Key.RISK_NAME_ID && m.RISK_DESCRIPTION == item.Key.RISK_DESCRIPTION && m.TYPE_ID == item.Key.TYPE_ID).ToList(); //只取有效的部门岗位 var tempYes = temp.FirstOrDefault(t => t.ENABLE_STATUS == SKEnableStatusEnum.Yes); var identifyIds = temp.Where(m => m.ENABLE_STATUS == 0).Select(t => t.RISK_IDENTIFY_ID).ToList(); var departIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_DEPARTMENT_ID).Distinct().ToList(); var userIdss = identityTemps.Where(t => identifyIds.Contains(t.ID)).Select(m => m.APPLY_USER_ID).Distinct().ToList(); T_SK_RISK_IDENTIFY_RESULT_DETAIL ideDetail = new T_SK_RISK_IDENTIFY_RESULT_DETAIL(); ideDetail.ORG_ID = filter.OrgId; ideDetail.RISK_IDENTIFY_RESULT_ID = result.ID; ideDetail.PRODUCTION_UNIT_ID = item.Key.PRODUCTION_UNIT_ID; ideDetail.MineType = item.Key.MineType; ideDetail.AREA_ID = item.Key.AREA_ID; ideDetail.RISK_NAME = item.Key.RISK_NAME; ideDetail.RISK_NAME_ID = item.Key.RISK_NAME_ID; ideDetail.RISK_DESCRIPTION = item.Key.RISK_DESCRIPTION; ideDetail.TYPE_ID = item.Key.TYPE_ID; ideDetail.MEASURE = tempYes != null ? tempYes.MEASURE : temp[0]?.MEASURE; ideDetail.EMERGENCY = tempYes != null ? tempYes.EMERGENCY : temp[0]?.EMERGENCY; ideDetail.ENABLE_STATUS = tempYes != null ? tempYes.ENABLE_STATUS : temp[0].ENABLE_STATUS; //ideDetail.DEPARTMENT_TYPE = "岗位级"; if (departIdss.Any()) { var departTemps = departs.Where(t => departIdss.Contains(t.ID)).Select(m => m.DEPARTMENT_TYPE).Distinct().ToList(); if (departTemps.Any()) { var i = 1; foreach (var ite in departTemps) { var departType = "公司级"; if (ite == 0) { departType = "部门级"; } if (ite == 1) { departType = "车间级"; } if (ite == 2) { departType = "班组级"; } var temp2 = i == 1 ? i + "、" + departType + ";" : i + "、" + departType + ";"; ideDetail.DEPARTMENT_TYPE = ideDetail.DEPARTMENT_TYPE + temp2; var deTemps = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.NAME).ToList(); var deTempIds = departs.Where(t => departIdss.Contains(t.ID) && t.DEPARTMENT_TYPE == ite).Select(m => m.ID).ToList(); var temp3 = i == 1 ? i + "、" + string.Join(",", deTemps) + ";" : i + "、" + string.Join(",", deTemps) + ";"; ideDetail.IDENTIFY_DEPARTMENT = ideDetail.IDENTIFY_DEPARTMENT + temp3; var postIdss = users.Where(t => t.DEPARTMENT_ID != null && deTempIds.Contains((Guid)t.DEPARTMENT_ID) && userIdss.Contains(t.ID) && t.Nav_Person != null).ToList(); var postIds = postIdss.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(m => m.Nav_Person.POST_ID).ToList(); var postTemps = userPosts.Where(t => postIds.Contains(t.ID)).Select(m => m.NAME).ToList(); if (postTemps.Any()) { var tempPosts = string.Join(";", postTemps); var temp4 = i == 1 ? i + "、" + tempPosts + ";" : i + "、" + tempPosts + ";"; ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp4; //ideDetail.IDENTIFY_POST = string.Join(";", postTemps); } i++; } } //if (postTemps.Any()) //{ // var i = 1; // foreach (var ite in postTemps) // { // var temp2 = i == 1 ? i + "、" + ite + ";" : i + "、" + ite + ";"; // ideDetail.IDENTIFY_POST = ideDetail.IDENTIFY_POST + temp2; // i++; // } //} } resultDetails.Add(ideDetail); } } var param = departs.FirstOrDefault(t => t.ID == de)?.NAME; if (string.IsNullOrEmpty(param)) { param = "车间级"; } var notice = NotificationTaskService.InsertUserNoticeTaskModel("安全风险辨识结果表(" + param + ")", result.ID, filter.OrgId, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK035"); notices.Add(notice); } } } } } } } } } UnifiedCommit(() => { //if (plans != null && plans.Any()) // BantchSaveEntityNoCommit(plans); if (identitys != null && identitys.Any()) BantchSaveEntityNoCommit(identitys); if (tasks != null && tasks.Any()) BantchSaveEntityNoCommit(tasks); if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (results != null && results.Any()) BantchSaveEntityNoCommit(results); if (resultDetails != null && resultDetails.Any()) BantchSaveEntityNoCommit(resultDetails); }); } 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("LibrarySync")] public JsonActionResult LibrarySync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List ldeparts = new List(); List contentDeparts = new List(); List contentPosts = new List(); var contentBS = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var posts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var libraryIds = librarys.Select(i => i.ID).ToList(); var libraryDetails = GetEntities(i => i.IS_DELETED == false && libraryIds.Contains(i.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)).ToList(); var detailIds = libraryDetails.Select(i => i.ID).ToList(); var libraryContents = GetEntities(i => i.IS_DELETED == false && detailIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId)).ToList(); if (librarys != null && librarys.Any()) { foreach (var library in librarys) { if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险) { library.DEPARTMENT_TYPE = "3,0,1,2"; } if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险) { library.DEPARTMENT_TYPE = "0,1,2"; } if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险) { library.DEPARTMENT_TYPE = "1,2"; } if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险) { library.DEPARTMENT_TYPE = "2"; } var tempPosts = imports.Where(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION).ToList(); if (tempPosts.Any()) { //foreach (var de in tempPosts) //{ // var checkCycle = SKPLANCHECKFREQUENCYEnum.None; // if (!string.IsNullOrEmpty(de.CHECK_CYCLE)) // { // switch (de.CHECK_CYCLE) // { // case "每日": // checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; // case "每周": // checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break; // case "每月": // checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break; // case "每季度": // checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break; // case "每班": // checkCycle = SKPLANCHECKFREQUENCYEnum.Class; break; // default: // checkCycle = SKPLANCHECKFREQUENCYEnum.None; break; // break; // } // } // if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL)) // { // var departList = de.CHECK_DEPARTMENT.Split(';').ToList(); // var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); // if (depart.Any()) // { // foreach (var deTemp in depart) // { // if (deTemp != null) // { // T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART(); // dep.ORG_ID = filter.OrgId; // dep.ENTERPRISE_LIBRARY_ID = library.ID; // dep.DEPARTMENT_ID = deTemp.ID; // dep.DEPARTMENT_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum.岗位级 : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; // dep.USER_ID = deTemp.USER_ID; // ldeparts.Add(dep); // } // } // } // } //} var measureTemps = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).ToList(); if (measureTemps.Any()) { foreach (var temp in measureTemps) { var contentTemps = libraryContents.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == temp.ID).ToList(); if (contentTemps.Any()) { foreach (var ctemp in contentTemps) { var contentDepartTemps = tempPosts.Where(t => t.MEASURES_NAME == temp.MEASURES_NAME && t.CHECK_CONTENT == ctemp.CHECK_CONTENT).ToList(); if (contentDepartTemps.Any()) { foreach (var de in contentDepartTemps) { var checkCycle = SKPLANCHECKFREQUENCYEnum.Date; if (!string.IsNullOrEmpty(de.CHECK_CYCLE)) { switch (de.CHECK_CYCLE) { case "每日": checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; case "每周": checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break; case "每月": checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break; case "每季度": checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break; case "每班": checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; default: checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; break; } } if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL)) { var departList = de.CHECK_DEPARTMENT.Split(';').ToList(); var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); if (depart.Any()) { int j = 1; foreach (var deTemp in depart) { if (deTemp != null) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); dep.ORG_ID = filter.OrgId; dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = ctemp.ID; dep.DEPARTMENT_ID = deTemp.ID; dep.CHECK_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum.班组级 : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; dep.CHECK_CYCLE = checkCycle; dep.CHECK_TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == de.CHECK_TYPE)?.ID; dep.NUM = j; if (dep.CHECK_TYPE == SKDepartmentTypeEnum.公司级) { var userTemp = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员"); if (userTemp != null) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; post.POST_ID = userTemp.Nav_Person?.POST_ID; contentPosts.Add(post); } } if (dep.CHECK_TYPE == SKDepartmentTypeEnum.部门级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.车间级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级) { var userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (userTemp == null) { userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); } if (userTemp != null) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; post.POST_ID = userTemp.Nav_Person?.POST_ID; contentPosts.Add(post); } } if (dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级 && !string.IsNullOrEmpty(de.CHECK_POST)) { var postLists = de.CHECK_POST.Split(';').ToList(); var postIds = posts.Where(t => postLists.Contains(t.NAME)).Select(t => t.ID).ToList(); //var userTemps = users.Where(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_Person != null && t.Nav_Person.POST_ID != null && postIds.Contains((Guid)t.Nav_Person.POST_ID)).Select(m=>m.Nav_Person.POST_ID).Distinct().ToList(); if (postIds.Any()) { foreach (var item in postIds) { if (item != null) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; post.POST_ID = item; contentPosts.Add(post); } } } } contentDeparts.Add(dep); j++; } } } } } } } } } } } } } UnifiedCommit(() => { //if (librarys != null && librarys.Any()) // BantchSaveEntityNoCommit(librarys); //if (ldeparts != null && ldeparts.Any()) // BantchSaveEntityNoCommit(ldeparts); if (contentDeparts != null && contentDeparts.Any()) BantchSaveEntityNoCommit(contentDeparts); if (contentPosts != null && contentPosts.Any()) BantchSaveEntityNoCommit(contentPosts); }); } 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("BasicLibrarySync")] public JsonActionResult BasicLibrarySync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List measures = new List(); List contents = new List(); var contentBS = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); if (librarys != null && librarys.Any()) { foreach (var library in librarys) { if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险) { library.DEPARTMENT_TYPE = "3,0,1,2"; } if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险) { library.DEPARTMENT_TYPE = "0,1,2"; } if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险) { library.DEPARTMENT_TYPE = "1,2"; } if (library.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险) { library.DEPARTMENT_TYPE = "2"; } var tempPosts = imports.Where(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION).ToList(); if (tempPosts.Any()) { var measureTemps = tempPosts.Select(t => t.MEASURES_NAME).Distinct().ToList(); if (measureTemps.Any()) { var i = 1; foreach (var temp in measureTemps) { T_SK_BASIC_LIBRARY_DETAIL measure = new T_SK_BASIC_LIBRARY_DETAIL(); measure.ORG_ID = filter.OrgId; measure.BASIC_LIBRARY_ID = library.ID; measure.MEASURES_NAME = temp; measure.NUM = i; measures.Add(measure); var contentTemps = tempPosts.Where(t => t.MEASURES_NAME == temp).Select(m => m.CHECK_CONTENT).Distinct().ToList(); if (contentTemps.Any()) { foreach (var ctemp in contentTemps) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT content = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT(); content.ORG_ID = filter.OrgId; content.BASIC_LIBRARY_DETAIL_ID = measure.ID; var contentFist = contentBS.FirstOrDefault(t => t.CHECKCONTENT == ctemp); content.CHECK_CONTENT = ctemp; content.CHECK_CONTENTS_ID = contentFist?.ID; content.NUM = i; contents.Add(content); } } i++; } } } } } UnifiedCommit(() => { if (librarys != null && librarys.Any()) BantchSaveEntityNoCommit(librarys); if (measures != null && measures.Any()) BantchSaveEntityNoCommit(measures); if (contents != null && contents.Any()) BantchSaveEntityNoCommit(contents); }); } 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("BasicLibraryHiddenSync")] public JsonActionResult BasicLibraryHiddenSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List hiddens = new List(); var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); if (contents != null && contents.Any()) { foreach (var content in contents) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN measure = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN(); measure.ORG_ID = filter.OrgId; measure.BASIC_LIBRARY_DETAIL_CONTENT_ID = content.ID; measure.HIDDEN_LEVEL = SKHiddenLevel.General; measure.NUM = content.NUM; if (content.CHECK_CONTENT.Contains("是否未")) { measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "").Replace("?", "。"); measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否未", "").Replace("?", "。"); } if (content.CHECK_CONTENT.Contains("是否不")) { measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "").Replace("?", "。"); measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否不", "").Replace("?", ""); } if (content.CHECK_CONTENT.Contains("是否")) { measure.HIDDEN_DESCRIPTION = content.CHECK_CONTENT.Replace("是否", "未").Replace("?", "。"); measure.RECTIFICATION_MEASURES = content.CHECK_CONTENT.Replace("是否", "").Replace("?", "。"); } hiddens.Add(measure); } } UnifiedCommit(() => { if (hiddens != null && hiddens.Any()) BantchSaveEntityNoCommit(hiddens); }); } 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("LibraryPostSync")] public JsonActionResult LibraryPostSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List posts = new List(); List postDetails = new List(); var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var libraryDetails = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var libraryContents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var departs = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_DetailPosts").ToList(); if (librarys != null && librarys.Any()) { foreach (var library in librarys) { var detailIds = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).Select(t => t.ID).ToList(); var contentId = libraryContents.FirstOrDefault(t => detailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID))?.ID; var departList = departs.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == contentId).ToList(); if (departList.Any()) { foreach (var depart in departList) { T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_ID = library.ID; post.DEPARTMENT_ID = depart.DEPARTMENT_ID; if (depart.Nav_DetailPosts != null && depart.Nav_DetailPosts.Any()) { foreach (var postTemp in depart.Nav_DetailPosts) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; detail.POST_ID = postTemp.POST_ID; postDetails.Add(detail); } } posts.Add(post); } } } } UnifiedCommit(() => { if (posts != null && posts.Any()) BantchSaveEntityNoCommit(posts); if (postDetails != null && postDetails.Any()) BantchSaveEntityNoCommit(postDetails); }); } 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("LibraryDepartSync")] public JsonActionResult LibraryDepartSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List ldeparts = new List(); var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); if (librarys != null && librarys.Any()) { foreach (var library in librarys) { var tempPosts = imports.FirstOrDefault(t => t.MineType == library.MINE_NAME && t.AREA_NAME == library.AREA_NAME && t.TYPE_NAME == library.TYPE_NAME && t.RISK_NAME == library.RISK_NAME && t.RISK_DESCRIPTION == library.RISK_DESCRIPTION); if (tempPosts != null) { var departList = tempPosts.DEPARTMENT_NAME.Split(";").Distinct().ToList(); var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); if (depart.Any()) { foreach (var temp in depart) { if (temp != null) { T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART(); dep.ORG_ID = filter.OrgId; dep.ENTERPRISE_LIBRARY_ID = library.ID; dep.DEPARTMENT_ID = temp.ID; dep.DEPARTMENT_TYPE = (SKDepartmentTypeEnum)temp.DEPARTMENT_TYPE; dep.USER_ID = temp.USER_ID; ldeparts.Add(dep); } } } } } } UnifiedCommit(() => { if (librarys != null && librarys.Any()) BantchSaveEntityNoCommit(librarys); if (ldeparts != null && ldeparts.Any()) BantchSaveEntityNoCommit(ldeparts); }); } 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("LibraryNumSync")] public JsonActionResult LibraryNumSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var libraryDetails = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var contentDeparts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var hiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); if (librarys != null && librarys.Any()) { foreach (var library in librarys) { var details = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == library.ID).ToList(); if (details.Any()) { var i = 1; foreach (var detail in details) { detail.NUM = i; i++; var contentList = contents.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == detail.ID).ToList(); if (contentList.Any()) { var j = 1; foreach (var content in contentList) { content.NUM = j; j++; var departList = contentDeparts.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == content.ID).ToList(); if (departList.Any()) { var k = 1; foreach (var depart in departList) { depart.NUM = k; k++; } } var hiddenList = hiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == content.ID).ToList(); if (hiddenList.Any()) { var k = 1; foreach (var hidden in hiddenList) { hidden.NUM = k; k++; } } } } } } } } UnifiedCommit(() => { if (libraryDetails != null && libraryDetails.Any()) BantchUpdateEntityNoCommit(libraryDetails, "NUM"); if (contents != null && contents.Any()) BantchUpdateEntityNoCommit(contents, "NUM"); if (contentDeparts != null && contentDeparts.Any()) BantchUpdateEntityNoCommit(contentDeparts, "NUM"); if (hiddens != null && hiddens.Any()) BantchUpdateEntityNoCommit(hiddens, "NUM"); }); } 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("LibraryPostNewSync")] public JsonActionResult LibraryPostNewSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List posts = new List(); List postLists = new List(); List postDetails = new List(); List postDetailLists = new List(); var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); var postInfos = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var libraryImports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); if (libraryImports != null && libraryImports.Any()) { foreach (var library in libraryImports) { var depart = departs.FirstOrDefault(t => t.NAME == library.DEPARTMENT_NAME); var postInfo = postInfos.FirstOrDefault(t => t.NAME == library.POST_NAME); if (!string.IsNullOrEmpty(library.RISK_NAME1)) { var nameList = library.RISK_NAME1.Split("\n").ToList(); if (nameList != null && nameList.Any()) { foreach (var name in nameList) { var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME1 && t.RISK_NAME == name); if (libraryFirst != null && depart != null) { T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; post.DEPARTMENT_ID = depart.ID; posts.Add(post); if (postInfo != null) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; detail.POST_ID = postInfo.ID; detail.Nav_LibraryPost = post; postDetails.Add(detail); } } } } } if (!string.IsNullOrEmpty(library.RISK_NAME2)) { var nameList = library.RISK_NAME2.Split("\n").ToList(); if (nameList != null && nameList.Any()) { foreach (var name in nameList) { var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME2 && t.RISK_NAME == name); if (libraryFirst != null && depart != null) { T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; post.DEPARTMENT_ID = depart.ID; posts.Add(post); if (postInfo != null) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; detail.POST_ID = postInfo.ID; detail.Nav_LibraryPost = post; postDetails.Add(detail); } } } } } if (!string.IsNullOrEmpty(library.RISK_NAME3)) { var nameList = library.RISK_NAME3.Split("\n").ToList(); if (nameList != null && nameList.Any()) { foreach (var name in nameList) { var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME3 && t.RISK_NAME == name); if (libraryFirst != null && depart != null) { T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; post.DEPARTMENT_ID = depart.ID; posts.Add(post); if (postInfo != null) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; detail.POST_ID = postInfo.ID; detail.Nav_LibraryPost = post; postDetails.Add(detail); } } } } } if (!string.IsNullOrEmpty(library.RISK_NAME4)) { var nameList = library.RISK_NAME4.Split("\n").ToList(); if (nameList != null && nameList.Any()) { foreach (var name in nameList) { var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME4 && t.RISK_NAME == name); if (libraryFirst != null && depart != null) { T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; post.DEPARTMENT_ID = depart.ID; posts.Add(post); if (postInfo != null) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; detail.POST_ID = postInfo.ID; detail.Nav_LibraryPost = post; postDetails.Add(detail); } } } } } if (!string.IsNullOrEmpty(library.RISK_NAME5)) { var nameList = library.RISK_NAME5.Split("\n").ToList(); if (nameList != null && nameList.Any()) { foreach (var name in nameList) { var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME5 && t.RISK_NAME == name); if (libraryFirst != null && depart != null) { T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; post.DEPARTMENT_ID = depart.ID; posts.Add(post); if (postInfo != null) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; detail.POST_ID = postInfo.ID; detail.Nav_LibraryPost = post; postDetails.Add(detail); } } } } } if (!string.IsNullOrEmpty(library.RISK_NAME6)) { var nameList = library.RISK_NAME6.Split("\n").ToList(); if (nameList != null && nameList.Any()) { foreach (var name in nameList) { var libraryFirst = librarys.FirstOrDefault(t => t.MINE_NAME == library.MineType && t.AREA_NAME == library.AREA_NAME6 && t.RISK_NAME == name); if (libraryFirst != null && depart != null) { T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_ID = libraryFirst.ID; post.DEPARTMENT_ID = depart.ID; posts.Add(post); if (postInfo != null) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; detail.POST_ID = postInfo.ID; detail.Nav_LibraryPost = post; postDetails.Add(detail); } } } } } } } if (posts.Any()) { var temps = posts.GroupBy(t => new { t.ENTERPRISE_LIBRARY_ID, t.DEPARTMENT_ID }).Select(m => m.FirstOrDefault()).ToList(); if (temps.Any()) { foreach (var item in temps) { if (item != null) { T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID; post.DEPARTMENT_ID = item.DEPARTMENT_ID; postLists.Add(post); var details = postDetails.Where(t => t.Nav_LibraryPost != null && t.Nav_LibraryPost.DEPARTMENT_ID == item.DEPARTMENT_ID && t.Nav_LibraryPost.ENTERPRISE_LIBRARY_ID == item.ENTERPRISE_LIBRARY_ID).Select(m => m.POST_ID).Distinct().ToList(); if (details != null && details.Any()) { foreach (var xx in details) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; detail.POST_ID = xx; postDetailLists.Add(detail); } } } } } } UnifiedCommit(() => { if (postLists != null && postLists.Any()) BantchSaveEntityNoCommit(postLists); if (postDetailLists != null && postDetailLists.Any()) BantchSaveEntityNoCommit(postDetailLists); }); } 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("RiskSync")] public JsonActionResult RiskSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List posts = new List(); var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var areaList = librarys.Select(t => t.AREA_NAME).Distinct().ToList(); if (areaList != null && areaList.Any()) { foreach (var area in areaList) { T_SK_RISK_AREA post = new T_SK_RISK_AREA(); post.ORG_ID = filter.OrgId; post.NAME = area; posts.Add(post); } } UnifiedCommit(() => { if (posts != null && posts.Any()) BantchSaveEntityNoCommit(posts); }); } 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("ContentSync")] public JsonActionResult ContentSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List posts = new List(); List details = new List(); var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var contentIds = contents.Select(t => t.ID).ToList(); var hiddens = GetEntities(i => contentIds.Contains(i.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(filter.OrgId)).ToList(); var contentNames = contents.Select(t => t.CHECK_CONTENT).Distinct().ToList(); if (contentNames != null && contentNames.Any()) { foreach (var area in contentNames) { T_SK_CHECK_CONTENTS post = new T_SK_CHECK_CONTENTS(); post.ORG_ID = filter.OrgId; post.CHECKCONTENT = area; posts.Add(post); var id = contents.FirstOrDefault(t => t.CHECK_CONTENT == area).ID; var hiddenList = hiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == id).ToList(); if (hiddenList != null && hiddenList.Any()) { foreach (var hid in hiddenList) { T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); hi.ORG_ID = filter.OrgId; hi.CHECK_CONTENTS_ID = post.ID; hi.DESCREPTION = hid.HIDDEN_DESCRIPTION; hi.QUESTION_LEVEL = hid.HIDDEN_LEVEL; hi.DEMAND = hid.RECTIFICATION_MEASURES; details.Add(hi); } } } } UnifiedCommit(() => { if (posts != null && posts.Any()) BantchSaveEntityNoCommit(posts); if (details != null && details.Any()) BantchSaveEntityNoCommit(details); }); } 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("SafeCheckNoticeNew")] public JsonActionResult SafeCheckNoticeNew([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; List setList = new List(); //查配置表,有配才执行 var timeSets = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea", "Nav_CheckType").ToList(); if (timeSets != null && timeSets.Any()) { foreach (var set in timeSets) { switch (set.CHECK_CYCLE) { case SKPLANCHECKFREQUENCYEnum.Year: if (set.MONTH == month && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.HalfYear: if (((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.Date: setList.Add(set); break; //case SKPLANCHECKFREQUENCYEnum.Class: // setList.Add(set); break; case SKPLANCHECKFREQUENCYEnum.Week: if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.Month: if (set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.Quarter: if (set.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } } if (set.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } } if (set.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } } break; default: break; } } } List notices = new List(); List safeNotices = new List(); List safeDetialNotices = new List(); //List records = new List(); //List recordDetails = new List(); //List recordDetailUsers = new List(); if (setList != null && setList.Any()) { var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); var checkCycles = setList.Select(t => t.CHECK_CYCLE).Distinct().ToList(); var checkTypeIds = setList.Select(t => t.CHECK_TYPE_ID).Distinct().ToList(); var checkTypeEnums = setList.Select(t => t.CHECK_TYPE).Distinct().ToList(); var libraryDeparts = this.GetEntities(t => checkCycles.Contains(t.CHECK_CYCLE) && checkTypeIds.Contains(t.CHECK_TYPE_ID) && checkTypeEnums.Contains(t.CHECK_TYPE), new BaseFilter(filter.OrgId)); var ldepartIds = libraryDeparts.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); var libraryContents = this.GetEntities(t => ldepartIds.Contains(t.ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail").OrderBy(t => t.Nav_LibraryDetail?.NUM).ThenBy(m => m.NUM); var detailsIds = libraryContents.Select(t => t.ENTERPRISE_LIBRARY_DETAIL_ID).Distinct().ToList(); var libraryDetails = this.GetEntities(t => detailsIds.Contains(t.ID), new BaseFilter(filter.OrgId)); var libraryIds = libraryDetails.Select(t => t.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); var librarys = this.GetEntities(t => libraryIds.Contains(t.ID), new BaseFilter(filter.OrgId)); if (libraryContents != null && libraryContents.Any()) { foreach (var content in libraryContents) { var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID); var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); content.MineType = libraryTemp.MineType; content.AREA_ID = libraryTemp.AREA_ID; } } //if (libraryDeparts != null && libraryDeparts.Any()) //{ // foreach (var depart in libraryDeparts) // { // var departTemp = libraryContents.FirstOrDefault(t => t.ID == depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID); // var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == departTemp.ENTERPRISE_LIBRARY_DETAIL_ID); // var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); // depart.MineType = libraryTemp.MineType; // } //} DateTime dt = DateTime.Now; if (filter.Parameter1 != null) { dt = DateTime.Parse(filter.Parameter1); } DateTime minTime = dt.AddMinutes(0); DateTime maxTime = dt.AddMinutes(60); var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); var personIds = new List(); if (shiftClassList != null && shiftClassList.Any()) { foreach (var item in shiftClassList) { if (item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any()) { var ids = item.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).Distinct().ToList(); personIds.AddRange(ids); } } } var baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; //指定字段,包括导航属性 //Expression> expression = i => i.IS_DELETED == false && i.CREATE_TIME.Value.Date == dt.Date; //List noticeExsiss = this.GetOrderEntities(expression, baseFilter).ToList(); foreach (var item in setList) { List userIds = new List(); List mineTypes = new List(); var departTemps = departs.ToList(); //先查给谁 if (item.USER_ID_SEND != null) { //特别指定的人 userIds.Add((Guid)item.USER_ID_SEND); } else { if (item.MineType != SKProductionUnit.All) { //非全公司,过滤生产单元 departTemps = departTemps.Where(t => t.MineType == (int)item.MineType).ToList(); } //if (item.CHECK_TYPE != SKDepartmentTypeEnum.岗位级) { //非岗位级,过滤部门层级 departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == (int)item.CHECK_TYPE).ToList(); } //else //{ // //岗位级默认班组 // departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == 2); //} //if (item.Nav_ListSetDepObject != null && item.Nav_ListSetDepObject.Any()) //{ // //检查部门范围过滤 // var departIds = item.Nav_ListSetDepObject.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); // departTemps = departTemps.Where(t => departIds.Contains(t.ID)); //} if (item.Nav_ListDepOut != null && item.Nav_ListDepOut.Any()) { //排除组织过滤 var departIds = item.Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); departTemps = departTemps.Where(t => !departIds.Contains(t.ID)).ToList(); } if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Head) { //发给负责人 var userTempIds = departTemps.Where(m => m.USER_ID != null).Select(t => (Guid)t.USER_ID).Distinct().ToList(); userIds.AddRange(userTempIds); } if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Hon) { //发给安全员 var departIds = departTemps.Select(t => t.ID).ToList(); var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")).Select(m => m.ID).ToList(); userIds.AddRange(userTempIds); } if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.SafeHon) { //发给安环部安全员 var departIds = departTemps.Select(t => t.ID).ToList(); var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")).Select(m => m.ID).ToList(); userIds.AddRange(userTempIds); } if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.ClassMonitor) { //发给班长 var userTempIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20 && m.USER_ID != null).Select(t => (Guid)t.USER_ID).ToList(); userIds.AddRange(userTempIds); } //if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Post) //{ // //发给岗位工 // var departIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 2).Select(t => t.ID).ToList(); // var userTempIds = users.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)&& t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID)).Select(m => m.ID).ToList(); // userIds.AddRange(userTempIds); //} } if (userIds.Any()) { //var areaIds = item.Nav_ListArea.Select(t => t.AREA_ID).Distinct().ToList(); foreach (var id in userIds) { var userInfo = users.FirstOrDefault(t => t.ID == id); if (userInfo != null) { var departInfo = departs.FirstOrDefault(t => t.ID == userInfo.DEPARTMENT_ID); if (departInfo.MineType == 0) { var minetypes = new List { SKProductionUnit.MineChoose, SKProductionUnit.Mine, SKProductionUnit.Minelast }; foreach (var type in minetypes) { //三张安全检查通知表 //var ex = noticeExsiss.FirstOrDefault(t => t.MineType == type && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.CHECK_TYPE); //if (ex == null) { T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); safeNotice.ORG_ID = filter.OrgId; safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; safeNotice.APPLY_USER_ID = userInfo.ID; safeNotice.MineType = type; safeNotice.CHECK_TYPE_ID = item.CHECK_TYPE_ID; safeNotice.PLANCHECKFREQUENCY = item.CHECK_CYCLE; safeNotice.DEPARTMENT_TYPE = item.CHECK_TYPE; safeNotice.STATUS = PFStandardStatus.Draft; safeNotice.ISAUTO = true; safeNotices.Add(safeNotice); var contentIds = libraryDeparts.Where(t => t.CHECK_CYCLE == item.CHECK_CYCLE && t.CHECK_TYPE == item.CHECK_TYPE && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); var content = libraryContents.Where(t => contentIds.Contains(t.ID) && t.MineType == type).ToList(); //if (item.MineType != 0) //{ // content = libraryContents.Where(t => t.MineType == item.MineType).ToList(); //} //if (areaIds != null && areaIds.Any()) //{ // content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList(); //} if (content != null && content.Any()) { foreach (var item2 in content) { var i = 1; var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); if (repeat == null) { T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); detail.ORG_ID = filter.OrgId; detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; detail.RISK_AREA_ID = item2.AREA_ID; detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; detail.CHECKCONTENT = item2.CHECK_CONTENT; detail.CHECKPROOF = item2.CHECK_BASIC; detail.CHECKSTANDARD = item2.CHECK_STANDARD; detail.NUM = i; safeDetialNotices.Add(detail); i++; } } } var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); var endtime = DateTime.Now.AddHours(24); if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week) { endtime = DateTime.Now.AddDays(7); } if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month) { endtime = DateTime.Now.AddMonths(1); } if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear) { endtime = DateTime.Now.AddMonths(6); } if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year) { endtime = DateTime.Now.AddMonths(12); } if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter) { endtime = DateTime.Now.AddMonths(3); } var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CHECK_TYPE.GetDescription() + "安全检查通知" + date + item.Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); notices.Add(notice); } } } else { //一个人一张安全检查通知表 //var ex = noticeExsiss.FirstOrDefault(t => t.MineType == (SKProductionUnit)departInfo.MineType && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.CHECK_TYPE && t.CREATE_TIME.Value.Date == dt.Date); //if (ex == null) { T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); safeNotice.ORG_ID = filter.OrgId; safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; safeNotice.APPLY_USER_ID = userInfo.ID; safeNotice.MineType = (SKProductionUnit)departInfo.MineType; safeNotice.CHECK_TYPE_ID = item.CHECK_TYPE_ID; safeNotice.PLANCHECKFREQUENCY = item.CHECK_CYCLE; safeNotice.DEPARTMENT_TYPE = item.CHECK_TYPE; safeNotice.STATUS = PFStandardStatus.Draft; safeNotice.ISAUTO = true; safeNotices.Add(safeNotice); var contentIds = libraryDeparts.Where(t => t.CHECK_CYCLE == item.CHECK_CYCLE && t.CHECK_TYPE == item.CHECK_TYPE && t.CHECK_TYPE_ID == item.CHECK_TYPE_ID && t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); var content = libraryContents.Where(t => contentIds.Contains(t.ID)).ToList(); //if (item.MineType != 0) //{ // content = libraryContents.Where(t => t.MineType == item.MineType).ToList(); //} //if (areaIds != null && areaIds.Any()) //{ // content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList(); //} if (content != null && content.Any()) { foreach (var item2 in content) { var i = 1; var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); if (repeat == null) { T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); detail.ORG_ID = filter.OrgId; detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; detail.RISK_AREA_ID = item2.AREA_ID; detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; detail.CHECKCONTENT = item2.CHECK_CONTENT; detail.CHECKPROOF = item2.CHECK_BASIC; detail.CHECKSTANDARD = item2.CHECK_STANDARD; detail.NUM = i; safeDetialNotices.Add(detail); i++; } } } var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); var endtime = DateTime.Now.AddHours(24); if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week) { endtime = DateTime.Now.AddDays(7); } if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month) { endtime = DateTime.Now.AddMonths(1); } if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear) { endtime = DateTime.Now.AddMonths(6); } if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year) { endtime = DateTime.Now.AddMonths(12); } if (item.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter) { endtime = DateTime.Now.AddMonths(3); } var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CHECK_TYPE.GetDescription() + "安全检查通知" + date + item.Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); notices.Add(notice); } } } } } } } UnifiedCommit(() => { if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (safeNotices != null && safeNotices.Any()) BantchSaveEntityNoCommit(safeNotices); if (safeDetialNotices != null && safeDetialNotices.Any()) BantchSaveEntityNoCommit(safeDetialNotices); //if (records != null && records.Any()) // BantchSaveEntityNoCommit(records); //if (recordDetails != null && recordDetails.Any()) // BantchSaveEntityNoCommit(recordDetails); //if (recordDetailUsers != null && recordDetailUsers.Any()) // BantchSaveEntityNoCommit(recordDetailUsers); }); } 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("UserPostSync")] public JsonActionResult UserPostSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List contentPostIds = new List(); List notices = new List(); var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); var userPosts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var postIds = users.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null).Select(t => t.Nav_Person.POST_ID).Distinct().ToList(); var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_PostDetails").ToList(); if (contents != null && contents.Any()) { foreach (var content in contents) { if (content.Nav_PostDetails != null && content.Nav_PostDetails.Any()) { var postTempIds = content.Nav_PostDetails.Where(m => m.POST_ID != null).Select(t => (Guid)t.POST_ID).Distinct().ToList(); contentPostIds.AddRange(postTempIds); } } } contentPostIds = contentPostIds.Where(t => t != null).Distinct().ToList(); var tempIds = postIds.Where(t => t.Value != null && !contentPostIds.Contains(t.Value)).Distinct().ToList(); var userTemps = users.Where(t => t.Nav_Person != null && tempIds.Contains(t.Nav_Person.POST_ID)).ToList(); var departIds = userTemps.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); if (departIds.Any() && DateTime.Now.Day == 1) { foreach (var depart in departIds) { var user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (user == null) { user = users.FirstOrDefault(t => t.DEPARTMENT_ID == depart && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); } if (user != null) { var userPostTempIds = userTemps.Where(t => t.DEPARTMENT_ID == depart).Select(m => m.Nav_Person.POST_ID).Distinct().ToList(); var userPostNames = userPosts.Where(t => userPostTempIds.Contains(t.ID)).Select(m => m.NAME).Distinct().ToList(); var postNames = string.Join("。", userPostNames); var sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("请到知识库-双重预防机制库-企业库,维护岗位(" + postNames + ")的风险信息!", user.ID, user.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddDays(10), (int)FMNoticeTypeEnum.今日提醒, "PF135"); notices.Add(sendNotice); } } } UnifiedCommit(() => { if (notices != null && notices.Any()) BantchSaveEntityNoCommit(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("LibraryMainSync")] public JsonActionResult LibraryMainSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List librarys = new List(); List ldeparts = new List(); List lposts = new List(); List lpostDetails = new List(); List libraryDetails = new List(); List contents = new List(); List contentDeparts = new List(); List contentPosts = new List(); List contentHiddens = new List(); List contentBasics = new List(); var areaList = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var contentBS = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var posts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var laws = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole").ToList(); var departs = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); var imports = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var importMeasures = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var importHiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var importPosts = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); if (imports != null && imports.Any()) { var a = 1; foreach (var import in imports) { T_SK_ENTERPRISE_LIBRARY lib = new T_SK_ENTERPRISE_LIBRARY(); lib.ORG_ID = import.ORG_ID; lib.MINE_NAME = import.MineType; lib.NUM = a; if (!string.IsNullOrEmpty(import.MineType)) { switch (import.MineType) { case "全公司": lib.MineType = 0; break; case "露天矿": lib.MineType = (SKProductionUnit)30; break; case "选矿厂": lib.MineType = (SKProductionUnit)10; break; case "尾矿库": lib.MineType = (SKProductionUnit)20; break; case "职能口": lib.MineType = (SKProductionUnit)31; break; case "非金属": lib.MineType = (SKProductionUnit)32; break; case "地下矿": lib.MineType = (SKProductionUnit)40; break; default: lib.MineType = 0; break; } } lib.AREA_NAME = import.AREA_NAME; lib.AREA_ID = areaList.FirstOrDefault(t => t.NAME == import.AREA_NAME)?.ID; lib.RISK_NAME = import.RISK_NAME; lib.RISK_DESCRIPTION = import.RISK_DESCRIPTION; lib.TYPE_NAME = import.TYPE_NAME; lib.TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == import.TYPE_NAME)?.ID; lib.EVALUATE_L = decimal.Parse(import.EVALUATE_L); lib.EVALUATE_E = decimal.Parse(import.EVALUATE_E); lib.EVALUATE_C = decimal.Parse(import.EVALUATE_C); lib.EVALUATE_SCORE = decimal.Parse(import.EVALUATE_SCORE); if (lib.EVALUATE_SCORE > 320) { lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.重大风险; } else if (lib.EVALUATE_SCORE >= 160 && lib.EVALUATE_SCORE < 320) { lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.较大风险; } else if (lib.EVALUATE_SCORE >= 70 && lib.EVALUATE_SCORE < 160) { lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.一般风险; } else { lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.低风险; } if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险) { lib.DEPARTMENT_TYPE = "3,0,1,2"; } if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险) { lib.DEPARTMENT_TYPE = "0,1,2"; } if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险) { lib.DEPARTMENT_TYPE = "1,2"; } if (lib.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险) { lib.DEPARTMENT_TYPE = "2"; } lib.EMERGENCY = import.EMERGENCY; librarys.Add(lib); if (!string.IsNullOrEmpty(import.DEPARTMENT_NAME)) { var departList = import.DEPARTMENT_NAME.Split(';').ToList(); var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); if (depart.Any()) { foreach (var deTemp in depart) { if (deTemp != null) { T_SK_ENTERPRISE_LIBRARY_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DEPART(); dep.ORG_ID = filter.OrgId; dep.ENTERPRISE_LIBRARY_ID = lib.ID; dep.DEPARTMENT_ID = deTemp.ID; dep.DEPARTMENT_TYPE = (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; dep.USER_ID = deTemp.USER_ID; ldeparts.Add(dep); } } } } var importPostTemps = importPosts.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION).ToList(); if (importPostTemps.Any()) { foreach (var de in importPostTemps) { if (!string.IsNullOrEmpty(de.DEPARTMENT_NAME) && !string.IsNullOrEmpty(de.POST_NAME)) { T_SK_ENTERPRISE_LIBRARY_POST dep = new T_SK_ENTERPRISE_LIBRARY_POST(); dep.ORG_ID = filter.OrgId; dep.ENTERPRISE_LIBRARY_ID = lib.ID; dep.DEPARTMENT_ID = departs.FirstOrDefault(t => t.NAME == de.DEPARTMENT_NAME)?.ID; lposts.Add(dep); if (!string.IsNullOrEmpty(de.POST_NAME)) { var postList = de.POST_NAME.Split(';').ToList(); var depart = posts.Where(t => postList.Contains(t.NAME)).ToList(); if (depart.Any()) { foreach (var deTemp in depart) { if (deTemp != null) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL dep2 = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); dep2.ORG_ID = filter.OrgId; dep2.ENTERPRISE_LIBRARY_POST_ID = dep.ID; dep2.POST_ID = deTemp.ID; lpostDetails.Add(dep2); } } } } } } } var importMeasureTemps = importMeasures.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION).ToList(); if (importMeasureTemps.Any()) { var temps = importMeasureTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY }).Select(m => m.FirstOrDefault()).ToList(); if (temps.Any()) { var i = 1; foreach (var item in temps) { if (item != null) { T_SK_ENTERPRISE_LIBRARY_DETAIL post = new T_SK_ENTERPRISE_LIBRARY_DETAIL(); post.ORG_ID = filter.OrgId; post.ENTERPRISE_LIBRARY_ID = lib.ID; post.MEASURES_NAME = item.MEASURES_NAME; post.NUM = i; libraryDetails.Add(post); var detailTemps = importMeasureTemps.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.EMERGENCY == item.EMERGENCY).ToList(); var details = detailTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY, t.CHECK_CONTENT, t.CHECK_BASIC, t.CHECK_STANDARD }).Select(m => m.FirstOrDefault()).ToList(); if (details != null && details.Any()) { var j = 1; foreach (var xx in details) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT detail = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_DETAIL_ID = post.ID; detail.CHECK_BASIC = xx.CHECK_BASIC; detail.CHECK_STANDARD = xx.CHECK_STANDARD; detail.CHECK_CONTENT = xx.CHECK_CONTENT; detail.NUM = j; detail.CHECK_CONTENTS_ID = contentBS.FirstOrDefault(t => t.CHECKCONTENT == xx.CHECK_CONTENT)?.ID; contents.Add(detail); j++; if (!string.IsNullOrEmpty(xx.CHECK_BASIC)) { var postList = xx.CHECK_BASIC.Split(';').ToList(); var depart = laws.Where(t => postList.Contains(t.NAME)).ToList(); if (depart.Any()) { foreach (var deTemp in depart) { if (deTemp != null) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC dep2 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC(); dep2.ORG_ID = filter.OrgId; dep2.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID; dep2.LAW_ID = deTemp.ID; contentBasics.Add(dep2); } } } } var hiddenTemps = importHiddens.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.CHECK_CONTENT == item.CHECK_CONTENT).ToList(); var hiddens = hiddenTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.CHECK_CONTENT, t.HIDDEN_DESCRIPTION, t.HIDDEN_LEVEL, t.HIDDEN_RECITIFY }).Select(m => m.FirstOrDefault()).ToList(); if (hiddens != null && hiddens.Any()) { var d = 1; foreach (var de in hiddens) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN(); dep.ORG_ID = filter.OrgId; dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID; dep.HIDDEN_DESCRIPTION = de.HIDDEN_DESCRIPTION; dep.HIDDEN_LEVEL = de.HIDDEN_LEVEL == "重大" ? SKHiddenLevel.Major : SKHiddenLevel.General; dep.RECTIFICATION_MEASURES = de.HIDDEN_RECITIFY; dep.NUM = d; contentHiddens.Add(dep); d++; } } var levelTemps = detailTemps.Where(t => t.MineType == import.MineType && t.AREA_NAME == import.AREA_NAME && t.TYPE_NAME == import.TYPE_NAME && t.RISK_NAME == import.RISK_NAME && t.RISK_DESCRIPTION == import.RISK_DESCRIPTION && t.MEASURES_NAME == item.MEASURES_NAME && t.EMERGENCY == item.EMERGENCY && t.CHECK_CONTENT == item.CHECK_CONTENT && t.CHECK_BASIC == item.CHECK_BASIC && t.CHECK_STANDARD == item.CHECK_STANDARD).ToList(); var levels = levelTemps.GroupBy(t => new { t.MineType, t.AREA_NAME, t.TYPE_NAME, t.RISK_NAME, t.RISK_DESCRIPTION, t.MEASURES_NAME, t.EMERGENCY, t.CHECK_CONTENT, t.CHECK_BASIC, t.CHECK_STANDARD, t.CHECK_DEPARTMENT, t.CHECK_LEVEL, t.CHECK_POST, t.CHECK_TYPE, t.CHECK_OBJECT, t.CHECK_CYCLE }).Select(m => m.FirstOrDefault()).ToList(); if (levels != null && levels.Any()) { foreach (var de in levels) { var checkCycle = SKPLANCHECKFREQUENCYEnum.Date; if (!string.IsNullOrEmpty(de.CHECK_CYCLE)) { switch (de.CHECK_CYCLE) { case "每日": checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; case "每周": checkCycle = SKPLANCHECKFREQUENCYEnum.Week; break; case "每月": checkCycle = SKPLANCHECKFREQUENCYEnum.Month; break; case "每季度": checkCycle = SKPLANCHECKFREQUENCYEnum.Quarter; break; case "每班": checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; default: checkCycle = SKPLANCHECKFREQUENCYEnum.Date; break; break; } } if (!string.IsNullOrEmpty(de.CHECK_DEPARTMENT) && !string.IsNullOrEmpty(de.CHECK_LEVEL)) { var departList = de.CHECK_DEPARTMENT.Split(';').ToList(); var depart = departs.Where(t => departList.Contains(t.NAME)).ToList(); if (depart.Any()) { int c = 1; foreach (var deTemp in depart) { if (deTemp != null) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); dep.ORG_ID = filter.OrgId; dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = detail.ID; dep.DEPARTMENT_ID = deTemp.ID; dep.CHECK_TYPE = de.CHECK_LEVEL == "岗位级" ? SKDepartmentTypeEnum.班组级 : (SKDepartmentTypeEnum)deTemp.DEPARTMENT_TYPE; dep.CHECK_CYCLE = checkCycle; dep.CHECK_TYPE_ID = checkTypes.FirstOrDefault(t => t.NAME == de.CHECK_TYPE)?.ID; dep.NUM = c; if (dep.CHECK_TYPE == SKDepartmentTypeEnum.公司级) { var userTemp = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员"); if (userTemp != null) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post1 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); post1.ORG_ID = filter.OrgId; post1.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; post1.POST_ID = userTemp.Nav_Person?.POST_ID; contentPosts.Add(post1); } } if (dep.CHECK_TYPE == SKDepartmentTypeEnum.部门级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.车间级 || dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级) { var userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")); if (userTemp == null) { userTemp = users.FirstOrDefault(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("负责人")); } if (userTemp != null) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post2 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); post2.ORG_ID = filter.OrgId; post2.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; post2.POST_ID = userTemp.Nav_Person?.POST_ID; contentPosts.Add(post2); } } if (dep.CHECK_TYPE == SKDepartmentTypeEnum.班组级 && !string.IsNullOrEmpty(de.CHECK_POST)) { var postLists = de.CHECK_POST.Split(';').ToList(); var postIds = posts.Where(t => postLists.Contains(t.NAME)).Select(t => t.ID).ToList(); //var userTemps = users.Where(t => t.DEPARTMENT_ID == deTemp.ID && t.Nav_Person != null && t.Nav_Person.POST_ID != null && postIds.Contains((Guid)t.Nav_Person.POST_ID)).Select(m=>m.Nav_Person.POST_ID).Distinct().ToList(); if (postIds.Any()) { foreach (var itemTemp in postIds) { if (itemTemp != null) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST post3 = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST(); post3.ORG_ID = filter.OrgId; post3.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID; post3.POST_ID = itemTemp; contentPosts.Add(post3); } } } } contentDeparts.Add(dep); j++; } } } } } } } } i++; } } } } a++; } } UnifiedCommit(() => { if (librarys != null && librarys.Any()) BantchSaveEntityNoCommit(librarys); if (ldeparts != null && ldeparts.Any()) BantchSaveEntityNoCommit(ldeparts); if (lposts != null && lposts.Any()) BantchSaveEntityNoCommit(lposts); if (lpostDetails != null && lpostDetails.Any()) BantchSaveEntityNoCommit(lpostDetails); if (libraryDetails != null && libraryDetails.Any()) BantchSaveEntityNoCommit(libraryDetails); if (contents != null && contents.Any()) BantchSaveEntityNoCommit(contents); if (contentHiddens != null && contentHiddens.Any()) BantchSaveEntityNoCommit(contentHiddens); if (contentBasics != null && contentBasics.Any()) BantchSaveEntityNoCommit(contentBasics); if (contentDeparts != null && contentDeparts.Any()) BantchSaveEntityNoCommit(contentDeparts); if (contentPosts != null && contentPosts.Any()) BantchSaveEntityNoCommit(contentPosts); }); } 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("RiskNameSync")] public JsonActionResult RiskNameSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List posts = new List(); var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var areaList = librarys.Select(t => t.RISK_NAME).Distinct().ToList(); if (areaList != null && areaList.Any()) { foreach (var area in areaList) { T_SK_RISK_NAME post = new T_SK_RISK_NAME(); post.ORG_ID = filter.OrgId; post.NAME = area; posts.Add(post); } } UnifiedCommit(() => { if (posts != null && posts.Any()) BantchSaveEntityNoCommit(posts); }); } 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("LibraryRiskNameSync")] public JsonActionResult LibraryRiskNameSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { var riskNames = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var librarys = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var libraryBasics = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); if (librarys != null && librarys.Any()) { foreach (var item in librarys) { var name = riskNames.FirstOrDefault(t => t.NAME == item.RISK_NAME); if (name != null) { item.RISK_NAME_ID = name.ID; } } } if (libraryBasics != null && libraryBasics.Any()) { foreach (var item in libraryBasics) { var name = riskNames.FirstOrDefault(t => t.NAME == item.RISK_NAME); if (name != null) { item.RISK_NAME_ID = name.ID; } } } UnifiedCommit(() => { if (librarys != null && librarys.Any()) BantchSaveEntityNoCommit(librarys); if (libraryBasics != null && libraryBasics.Any()) BantchSaveEntityNoCommit(libraryBasics); }); } 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("PostContentSync")] public JsonActionResult PostContentSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { var dt = DateTime.Now; //DateTime minTime = dt.AddMinutes(0); //DateTime maxTime = dt.AddMinutes(60); if (filter.Parameter1 != null) { dt = DateTime.Parse(filter.Parameter1); } List notices = new List(); List records = new List(); List recordDetails = new List(); List recordDetailUsers = new List(); List recordBasics = new List(); var checkType = this.GetEntity(t => t.NAME == "岗位排查"); var timeSets = GetEntities(i => i.ENABLE_STATUS == 0 && i.CHECK_TYPE_ID == checkType.ID, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea").ToList(); List departIds = new List(); if (timeSets.Any()) { foreach (var item in timeSets) { if (item.Nav_ListDepOut != null && item.Nav_ListDepOut.Any()) { var ids = item.Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).ToList(); departIds.AddRange(ids); } } } DateTime minTime = dt.AddMinutes(0); DateTime maxTime = dt.AddMinutes(60); var teamInfos = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); var teamIds = teamInfos.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)).Select(t => t.ID).Distinct().ToList(); var classFilter = new BaseFilter(filter.GetOrgId()); classFilter.SelectField = new string[] { "TEAM_ID", "DEPARTMENT_ID", "Nav_DepartmentSchedulingDetail.Nav_Person.POST_ID", "Nav_DepartmentSchedulingDetail.Nav_Person.Nav_User.ID", "Nav_DepartmentSchedulingDetail.Nav_Person.Nav_User.NAME", "START_TIME", "END_TIME" }; var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, classFilter).ToList(); //var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null && !teamIds.Contains((Guid)s.TEAM_ID), classFilter).ToList(); var teamIdTemps = shiftClassList.Where(s => !teamIds.Contains((Guid)s.TEAM_ID)).Select(t => t.TEAM_ID).ToList(); var teamDepartIds = teamInfos.Where(t => teamIdTemps.Contains(t.ID)).Select(m => m.DEPARTMENT_ID).Distinct().ToList(); var checkSets = GetEntities(i => teamDepartIds.Contains(i.DEPARTMENT_ID), new BaseFilter(filter.OrgId), "Nav_CheckSetContents.Nav_ContentsAreas", "Nav_CheckSetContents.Nav_ContentsHiddens", "Nav_CheckSetContents.Nav_ContentsBasics").ToList(); if (shiftClassList.Any()) { foreach (var item in shiftClassList) { var team = teamInfos.FirstOrDefault(t => t.ID == item.TEAM_ID); if (team != null && item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any()) { foreach (var item2 in item.Nav_DepartmentSchedulingDetail) { var set = checkSets.FirstOrDefault(t => t.DEPARTMENT_ID == team.DEPARTMENT_ID && t.POST_ID == item2.Nav_Person?.POST_ID); if (set != null && set.Nav_CheckSetContents != null && set.Nav_CheckSetContents.Any()) { T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); record.ORG_ID = filter.OrgId; record.ID = Guid.NewGuid(); record.MineType = set.MineType; record.APPLY_USER_ID = item2.Nav_Person.Nav_User.ID; record.APPLY_DEPARTMENT_ID = team.DEPARTMENT_ID; record.PLANCHECKFREQUENCY = SKPLANCHECKFREQUENCYEnum.Date; record.DEPARTMENT_TYPE = SKDepartmentTypeEnum.班组级; record.CHECK_TYPE_ID = checkType?.ID; record.CHECK_TIME = item.START_TIME; record.RECORD_USER_ID = item2.Nav_Person.Nav_User.ID; record.CHECK_PERSON = item2.Nav_Person.Nav_User.NAME; records.Add(record); var noticeTask = NotificationTaskService.InsertUserNoticeTaskModel(team.NAME + item2.Nav_Person?.Nav_Post?.NAME + "岗位排查表", record.ID, filter.GetOrgId(), (Guid)record.APPLY_USER_ID, item2.Nav_Person.Nav_User.NAME, item.START_TIME, item.END_TIME, (int)FMNoticeTypeEnum.消息, "SK010"); notices.Add(noticeTask); var temps = new List(); if (set.Nav_CheckSetContents != null && set.Nav_CheckSetContents.Any()) { foreach (var content in set.Nav_CheckSetContents) { if (content.Nav_ContentsAreas.Any()) { foreach (var area in content.Nav_ContentsAreas) { T_SK_CHECK_SET_CONTENTS temp = new T_SK_CHECK_SET_CONTENTS(); temp = content; temp.AREA_ID = area.AREA_ID; temps.Add(temp); } } } } if (temps.Any()) { foreach (var content in temps) { T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ID = Guid.NewGuid(); detail.SECURITY_INSPECTION_RECORD_ID = record.ID; detail.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; detail.CHECKCONTENT = content.CHECK_CONTENT; detail.CHECKSTANDARD = content.CHECK_STANDARD; detail.RISK_AREA_ID = content.AREA_ID; recordDetails.Add(detail); T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER user = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); user.ORG_ID = filter.OrgId; user.ID = Guid.NewGuid(); user.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; user.USER_ID = record.APPLY_USER_ID; user.ISMAINCHECK = true; recordDetailUsers.Add(user); if (content.Nav_ContentsBasics.Any()) { foreach (var basic in content.Nav_ContentsBasics) { T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC ba = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_BASIC(); ba.ORG_ID = filter.OrgId; ba.ID = Guid.NewGuid(); ba.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; ba.LAW_ID = basic.LAW_ID; recordBasics.Add(ba); } } } } } } } } } UnifiedCommit(() => { if (records != null && records.Any()) BantchSaveEntityNoCommit(records); if (recordDetails != null && recordDetails.Any()) BantchSaveEntityNoCommit(recordDetails); if (recordDetailUsers != null && recordDetailUsers.Any()) BantchSaveEntityNoCommit(recordDetailUsers); if (recordBasics != null && recordBasics.Any()) BantchSaveEntityNoCommit(recordBasics); if (notices != null && notices.Any()) BantchSaveEntityNoCommit(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("ContentSyncNew")] public JsonActionResult ContentSyncNew([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List posts = new List(); List details = new List(); //var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); //var contentIds = contents.Select(t => t.ID).ToList(); //var hiddens = GetEntities(i => contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList(); //var contentTempIds = hiddens.Select(t => t.CHECK_CONTENTS_ID).Distinct().ToList(); //var contentNames = contents.Where(t=> !contentTempIds.Contains(t.ID)).ToList(); //if (contentNames != null && contentNames.Any()) //{ // foreach (var area in contentNames) // { // T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); // hi.ORG_ID = filter.OrgId; // hi.CHECK_CONTENTS_ID = area.ID; // hi.DESCREPTION = area.CHECKCONTENT.Replace("是否","未"); // hi.QUESTION_LEVEL = SKHiddenLevel.General; // hi.DEMAND = area.CHECKCONTENT.Replace("是否", "应"); // details.Add(hi); // } //} //var setContents = GetEntities(i => i.CHECK_CONTENTS_ID == null, new BaseFilter(filter.OrgId)).ToList(); //var setContentIds = setContents.Select(t => t.ID).ToList(); //var setHiddens = GetEntities(i => setContentIds.Contains((Guid)i.CHECK_CONTENTS_SET_ID), new BaseFilter(filter.OrgId)).ToList(); //if (setContents != null && setContents.Any()) //{ // foreach (var area in setContents) // { // T_SK_CHECK_CONTENTS post = new T_SK_CHECK_CONTENTS(); // post.ORG_ID = filter.OrgId; // post.CHECKCONTENT = area.CHECK_CONTENT; // posts.Add(post); // var hiddenList = setHiddens.Where(t => t.CHECK_CONTENTS_SET_ID == area.ID).ToList(); // if (hiddenList != null && hiddenList.Any()) // { // foreach (var hid in hiddenList) // { // T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); // hi.ORG_ID = filter.OrgId; // hi.CHECK_CONTENTS_ID = post.ID; // hi.DESCREPTION = hid.HIDDEN_DESCRIPTION; // hi.QUESTION_LEVEL = hid.HIDDEN_LEVEL; // hi.DEMAND = hid.RECTIFICATION_MEASURES; // details.Add(hi); // } // } // } //} var setHiddens = GetEntities(i => i.CHECK_QUESTION_ID == null, new BaseFilter(filter.OrgId)).ToList(); var setContentIds = setHiddens.Select(t => t.CHECK_CONTENTS_SET_ID).Distinct().ToList(); var setContents = GetEntities(i => setContentIds.Contains(i.ID), new BaseFilter(filter.OrgId)).ToList(); var contentIds = setContents.Select(t => t.CHECK_CONTENTS_ID).Distinct().ToList(); var contents = GetEntities(i => contentIds.Contains(i.ID), new BaseFilter(filter.OrgId)).ToList(); var hiddens = GetEntities(i => contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList(); if (setHiddens != null && setHiddens.Any()) { foreach (var area in setHiddens) { var content = setContents.FirstOrDefault(t => t.ID == area.CHECK_CONTENTS_SET_ID); if (content != null) { T_SK_CHECK_QUESTION hi = new T_SK_CHECK_QUESTION(); hi.ORG_ID = filter.OrgId; hi.CHECK_CONTENTS_ID = content.CHECK_CONTENTS_ID; hi.DESCREPTION = area.HIDDEN_DESCRIPTION; hi.QUESTION_LEVEL = area.HIDDEN_LEVEL; hi.DEMAND = area.RECTIFICATION_MEASURES; details.Add(hi); } } } UnifiedCommit(() => { if (posts != null && posts.Any()) BantchSaveEntityNoCommit(posts); if (details != null && details.Any()) BantchSaveEntityNoCommit(details); }); } 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("RiskIdentityZN")] public JsonActionResult RiskIdentityZN([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List posts = new List(); List postDetails = new List(); var departments = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_User").ToList(); var users = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person").ToList(); List departName = new List { "矿山部", "选矿部", "非金属资源部", "设备能源部" }; var idList = new List(); var allIdList = new List(); var depaerts = departments.Where(t => departName.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 departIds = departments.Select(t => t.ID).ToList(); var userIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID)).Select(m => m.ID).ToList(); var wfm = users.FirstOrDefault(t => t.NAME == "王福铭"); var baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; baseFilter.SelectField = new string[] { "ID" }; //指定字段,包括导航属性 var identity = this.GetEntity(t => t.APPLY_USER_ID == wfm.ID); var identityDetail = this.GetEntities(t => t.RISK_IDENTIFY_ID == identity.ID, new BaseFilter(identity.ORG_ID)); var minetype = identityDetail.Select(t => t.MineType).Distinct().ToList(); var areaId = identityDetail.Select(t => t.AREA_ID).Distinct().ToList(); var typeId = identityDetail.Select(t => t.TYPE_ID).Distinct().ToList(); var riskName = identityDetail.Select(t => t.RISK_NAME).Distinct().ToList(); var librarys = this.GetEntities(t => minetype.Contains(t.MineType) && areaId.Contains(t.AREA_ID) && typeId.Contains(t.TYPE_ID) && riskName.Contains(t.RISK_NAME), new BaseFilter(filter.OrgId)); var libraryIds = librarys.Select(t => t.ID).ToList(); var libraryIdentity = this.GetEntities(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId), "Nav_PostDetails"); if (libraryIds != null && libraryIds.Any()) { foreach (var iden in libraryIds) { foreach (var depart in departIds) { var postIds = users.Where(t => t.DEPARTMENT_ID == depart && t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).Distinct().ToList(); var identityPost = libraryIdentity.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_ID == iden && t.DEPARTMENT_ID == depart); if (identityPost == null) { T_SK_ENTERPRISE_LIBRARY_POST post = new T_SK_ENTERPRISE_LIBRARY_POST(); post.ORG_ID = filter.OrgId; post.DEPARTMENT_ID = depart; post.ENTERPRISE_LIBRARY_ID = iden; posts.Add(post); if (postIds != null && postIds.Any()) { foreach (var po in postIds) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_POST_ID = post.ID; detail.POST_ID = po; postDetails.Add(detail); } } } else { foreach (var po in postIds) { var exsist = identityPost.Nav_PostDetails == null ? null : identityPost.Nav_PostDetails.FirstOrDefault(t => t.POST_ID == po && t.ENTERPRISE_LIBRARY_POST_ID == identityPost.ID); if (exsist != null) { T_SK_ENTERPRISE_LIBRARY_POST_DETAIL detail = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL(); detail.ORG_ID = filter.OrgId; detail.ENTERPRISE_LIBRARY_POST_ID = identityPost.ID; detail.POST_ID = po; postDetails.Add(detail); } } } } } } //Expression> expression = i => i.IS_DELETED == false && i.APPLY_USER_ID !=null && userIds.Contains((Guid)i.APPLY_USER_ID) && i.APPLY_USER_ID != wfm.ID; //List riskIdetitys = this.GetOrderEntities(expression, baseFilter).ToList(); //var riskIdentityIds = riskIdetitys.Select(t => t.ID).ToList(); //var identityDetails = GetEntities(i => riskIdentityIds.Contains(i.RISK_IDENTIFY_ID), new BaseFilter(filter.OrgId)).ToList(); //var deleteIds = identityDetails.Select(t => t.ID).ToList(); //if (riskIdentityIds != null && riskIdentityIds.Any()) //{ // foreach (var iden in riskIdentityIds) // { // if (identityDetail != null && identityDetail.Any()) // { // foreach (var detail in identityDetail) // { // T_SK_RISK_IDENTIFY_DETAIL hi = new T_SK_RISK_IDENTIFY_DETAIL(); // hi.ORG_ID = filter.OrgId; // hi.RISK_IDENTIFY_ID = iden; // hi.MineType = detail.MineType; // hi.AREA_ID = detail.AREA_ID; // hi.NUM = detail.NUM; // hi.RISK_NAME = detail.RISK_NAME; // hi.RISK_DESCRIPTION = detail.RISK_DESCRIPTION; // hi.RISK_NAME_ID = detail.RISK_NAME_ID; // hi.TYPE_ID = detail.TYPE_ID; // hi.MEASURE = detail.MEASURE; // hi.EMERGENCY = detail.EMERGENCY; // identDetails.Add(hi); // } // } // } //} UnifiedCommit(() => { if (posts != null && posts.Any()) BantchSaveEntityNoCommit(posts); if (postDetails != null && postDetails.Any()) BantchSaveEntityNoCommit(postDetails); //if (deleteIds != null && deleteIds.Any()) // BantchDeleteEntityNoCommit(deleteIds); //if (identDetails != null && identDetails.Any()) // BantchSaveEntityNoCommit(identDetails); }); } 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("ContentAreaUpdate")] public JsonActionResult ContentAreaUpdate([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { var contents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); var contentIds = contents.Select(t => t.ID).ToList(); var libraryContents = this.GetEntities(t => t.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)t.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail.Nav_Library.Nav_Area"); if (libraryContents.Any()) { foreach (var con in libraryContents) { con.AREA_ID = con.Nav_LibraryDetail?.Nav_Library?.AREA_ID; con.Nav_Area = con.Nav_LibraryDetail?.Nav_Library?.Nav_Area; con.MineType = con.Nav_LibraryDetail != null && con.Nav_LibraryDetail.Nav_Library != null ? con.Nav_LibraryDetail.Nav_Library.MineType : SKProductionUnit.Mine; } } if (contents.Any()) { foreach (var con in contents) { var item = libraryContents.Where(t => t.CHECK_CONTENTS_ID == con.ID).ToList(); if (item.Count() == 1) { con.AREA_ID = item.FirstOrDefault().AREA_ID; con.MineType = item.FirstOrDefault().MineType; } if (item.Count() > 1) { var areas = item.Select(t => t.Nav_Area.NAME).Distinct().ToList(); con.CHECK_STANDARD = string.Join(",", areas); } } } UnifiedCommit(() => { if (contents != null && contents.Any()) BantchSaveEntityNoCommit(contents); }); } 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("ContentAreaUpdateNew")] public JsonActionResult ContentAreaUpdateNew([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { var contents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)); var contentIds = contents.Select(t => t.ID).ToList(); var libraryContents = this.GetEntities(t => t.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)t.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId), "Nav_CheckSet", "Nav_ContentsAreas.Nav_Area"); if (contents.Any()) { foreach (var con in contents) { var item = libraryContents.Where(t => t.CHECK_CONTENTS_ID == con.ID).ToList(); if (item.Count() == 1) { con.AREA_ID = item.FirstOrDefault().Nav_ContentsAreas?.FirstOrDefault()?.AREA_ID; con.MineType = item.FirstOrDefault().Nav_CheckSet?.MineType; } if (item.Count() > 1) { var areaList = new List(); foreach (var area in item) { foreach (var ar in area.Nav_ContentsAreas) { areaList.Add(ar.Nav_Area.NAME); } } var areas = areaList.Distinct().ToList(); if (areas.Count() == 1) { con.AREA_ID = item.FirstOrDefault().Nav_ContentsAreas?.FirstOrDefault()?.AREA_ID; } else { con.CHECK_STANDARD = string.Join(",", areas); } con.MineType = item.FirstOrDefault().Nav_CheckSet?.MineType; } } } UnifiedCommit(() => { if (contents != null && contents.Any()) BantchSaveEntityNoCommit(contents); }); } 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("ContentHiddenSync")] public JsonActionResult ContentHiddenSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { List details = new List(); var contents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var hiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var contentIds = contents.Select(t => t.ID).ToList(); var detailContents = GetEntities(i => i.CHECK_CONTENTS_ID != null && contentIds.Contains((Guid)i.CHECK_CONTENTS_ID), new BaseFilter(filter.OrgId)).ToList(); if (detailContents != null && detailContents.Any()) { foreach (var detail in detailContents) { var quests = hiddens.Where(t => t.CHECK_CONTENTS_ID == detail.CHECK_CONTENTS_ID).ToList(); if (quests != null && quests.Any()) { foreach (var item in quests) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN hi = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN(); hi.ORG_ID = filter.OrgId; hi.BASIC_LIBRARY_DETAIL_CONTENT_ID = detail.ID; hi.CHECK_QUESTION_ID = item.ID; hi.HIDDEN_DESCRIPTION = item.DESCREPTION; hi.HIDDEN_LEVEL = item.QUESTION_LEVEL; hi.RECTIFICATION_MEASURES = item.DEMAND; hi.NUM = item.NUM; details.Add(hi); } } } } UnifiedCommit(() => { if (details != null && details.Any()) BantchSaveEntityNoCommit(details); }); } 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("SafeCheckNoticeYL")] public JsonActionResult SafeCheckNoticeYL([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; List setList = new List(); //查配置表,有配才执行 var timeSets = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_ListSetDepObject", "Nav_ListDepOut", "Nav_ListArea", "Nav_CheckType").ToList(); if (timeSets != null && timeSets.Any()) { foreach (var set in timeSets) { switch (set.CHECK_CYCLE) { case SKPLANCHECKFREQUENCYEnum.Year: if (set.MONTH == month && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.HalfYear: if (((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.Date: setList.Add(set); break; //case SKPLANCHECKFREQUENCYEnum.Class: // setList.Add(set); break; case SKPLANCHECKFREQUENCYEnum.Week: if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.Month: if (set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.Quarter: if (set.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } } if (set.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } } if (set.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day && set.CHECKTIME.Value.Hour == dtNow.Hour) { setList.Add(set); } } break; default: break; } } } List notices = new List(); List safeNotices = new List(); List safeDetialNotices = new List(); //List records = new List(); //List recordDetails = new List(); //List recordDetailUsers = new List(); var baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; //指定字段,包括导航属性 if (setList != null && setList.Any()) { var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); DateTime dt = DateTime.Now; if (filter.Parameter1 != null) { dt = DateTime.Parse(filter.Parameter1); } Expression> expression = i => i.IS_DELETED == false && i.CREATE_TIME.Value.Date == dt.Date; List noticeExsiss = this.GetOrderEntities(expression, baseFilter).ToList(); DateTime minTime = dt.AddMinutes(0); DateTime maxTime = dt.AddMinutes(60); var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); //var personIds = new List(); //if (shiftClassList != null && shiftClassList.Any()) //{ // foreach (var item in shiftClassList) // { // if (item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any()) // { // var ids = item.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).Distinct().ToList(); // personIds.AddRange(ids); // } // } //} var libPosts = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_Department"); var libDepartIds = libPosts.Select(t => t.DEPARTMENT_ID).Distinct(); var librarys = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); var libraryIds = librarys.Select(t => t.ID).ToList(); var libraryDetails = this.GetEntities(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)); var detailsIds = libraryDetails.Select(t => t.ID).ToList(); var libraryContents = this.GetEntities(t => detailsIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId), "Nav_LibraryDetail").OrderBy(t => t.Nav_LibraryDetail?.NUM).ThenBy(m => m.NUM); if (libraryContents != null && libraryContents.Any()) { foreach (var content in libraryContents) { var detailTemp = libraryDetails.FirstOrDefault(t => t.ID == content.ENTERPRISE_LIBRARY_DETAIL_ID); var libraryTemp = librarys.FirstOrDefault(t => t.ID == detailTemp.ENTERPRISE_LIBRARY_ID); content.MineType = libraryTemp.MineType; content.AREA_ID = libraryTemp.AREA_ID; } } var groupSets = setList.GroupBy(t => new { t.CHECK_CYCLE, t.CHECK_TYPE_ID, t.CHECK_TYPE }).ToList(); foreach (var item in groupSets) { List userIds = new List(); List mineTypes = new List(); //取配置的辨识部门,没配的不触发 var departTemps = departs.Where(t => libDepartIds.Contains(t.ID)).ToList(); //先查给谁 if (item.FirstOrDefault().USER_ID_SEND != null) { //特别指定的人 userIds.Add((Guid)item.FirstOrDefault().USER_ID_SEND); } else { //if (item.FirstOrDefault().CHECK_TYPE != SKDepartmentTypeEnum.岗位级) //{ // //非岗位级,过滤部门层级 // departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == (int)item.CHECK_TYPE).ToList(); //} //else //{ // //岗位级默认班组 // departTemps = departTemps.Where(t => t.DEPARTMENT_TYPE == 2); //} //if (item.Nav_ListSetDepObject != null && item.Nav_ListSetDepObject.Any()) //{ // //检查部门范围过滤 // var departIds = item.Nav_ListSetDepObject.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); // departTemps = departTemps.Where(t => departIds.Contains(t.ID)); //} if (item.FirstOrDefault().Nav_ListDepOut != null && item.FirstOrDefault().Nav_ListDepOut.Any()) { //排除组织过滤 var departIds = item.FirstOrDefault().Nav_ListDepOut.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); departTemps = departTemps.Where(t => !departIds.Contains(t.ID)).ToList(); } if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Head) { //发给负责人 var userTempIds = departTemps.Where(m => m.USER_ID != null).Select(t => (Guid)t.USER_ID).Distinct().ToList(); userIds.AddRange(userTempIds); } if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Hon) { //发给安全员 var departIds = departTemps.Select(t => t.ID).ToList(); var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && departIds.Contains((Guid)t.DEPARTMENT_ID) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安全员")).Select(m => m.ID).ToList(); userIds.AddRange(userTempIds); } if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.SafeHon) { //发给安环部安全员 var departIds = departTemps.Select(t => t.ID).ToList(); var userTempIds = users.Where(t => t.DEPARTMENT_ID != null && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME.Contains("安环部安全员")).Select(m => m.ID).ToList(); userIds.AddRange(userTempIds); } if (item.FirstOrDefault().PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.ClassMonitor) { //发给班长 var userTempIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 20 && m.USER_ID != null).Select(t => (Guid)t.USER_ID).ToList(); userIds.AddRange(userTempIds); } //if (item.PLANCHECKOBJECT == SKPLANCHECKOBJECTEnum.Post) //{ // //发给岗位工 // var departIds = departTemps.Where(m => teamDepartIds.Contains(m.ID) && m.DEPARTMENT_TYPE == 2).Select(t => t.ID).ToList(); // var userTempIds = users.Where(t => departIds.Contains((Guid)t.DEPARTMENT_ID)&& t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID)).Select(m => m.ID).ToList(); // userIds.AddRange(userTempIds); //} } if (userIds.Any()) { //var areaIds = item.Nav_ListArea.Select(t => t.AREA_ID).Distinct().ToList(); foreach (var id in userIds) { var userInfo = users.FirstOrDefault(t => t.ID == id); if (userInfo != null) { var departInfo = departs.FirstOrDefault(t => t.ID == userInfo.DEPARTMENT_ID); { //一个人一张安全检查通知表 var ex = noticeExsiss.FirstOrDefault(t => t.CHECK_TYPE_ID == item.Key.CHECK_TYPE_ID && t.APPLY_DEPARTMENT_ID == userInfo.DEPARTMENT_ID && t.APPLY_USER_ID == userInfo.ID && t.PLANCHECKFREQUENCY == item.Key.CHECK_CYCLE && t.DEPARTMENT_TYPE == item.Key.CHECK_TYPE && t.CREATE_TIME.Value.Date == dt.Date); if (ex == null) { T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); safeNotice.ORG_ID = filter.OrgId; safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; safeNotice.APPLY_USER_ID = userInfo.ID; safeNotice.MineType = (SKProductionUnit)departInfo.MineType; safeNotice.CHECK_TYPE_ID = item.Key.CHECK_TYPE_ID; safeNotice.PLANCHECKFREQUENCY = item.Key.CHECK_CYCLE; safeNotice.DEPARTMENT_TYPE = item.Key.CHECK_TYPE; safeNotice.STATUS = PFStandardStatus.Draft; safeNotice.ISAUTO = true; safeNotices.Add(safeNotice); var libIds = libPosts.Where(t => t.DEPARTMENT_ID == userInfo.DEPARTMENT_ID).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); var libDetailIds = libraryDetails.Where(t => libIds.Contains(t.ENTERPRISE_LIBRARY_ID)).Select(m => m.ID).ToList(); var content = libraryContents.Where(t => libDetailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID)).ToList(); //if (item.MineType != 0) //{ // content = libraryContents.Where(t => t.MineType == item.MineType).ToList(); //} //if (areaIds != null && areaIds.Any()) //{ // content = libraryContents.Where(t => t.AREA_ID != null && areaIds.Contains((Guid)t.AREA_ID)).ToList(); //} if (content != null && content.Any()) { foreach (var item2 in content) { var i = 1; var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); if (repeat == null) { T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); detail.ORG_ID = filter.OrgId; detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; detail.RISK_AREA_ID = item2.AREA_ID; detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; detail.CHECKCONTENT = item2.CHECK_CONTENT; detail.CHECKPROOF = item2.CHECK_BASIC; detail.CHECKSTANDARD = item2.CHECK_STANDARD; detail.NUM = i; safeDetialNotices.Add(detail); i++; } } } var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); var endtime = DateTime.Now.AddHours(24); if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week) { endtime = DateTime.Now.AddDays(7); } if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month) { endtime = DateTime.Now.AddMonths(1); } if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear) { endtime = DateTime.Now.AddMonths(6); } if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year) { endtime = DateTime.Now.AddMonths(12); } if (item.Key.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter) { endtime = DateTime.Now.AddMonths(3); } var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.Key.CHECK_TYPE.GetDescription() + "安全检查通知" + date + item.FirstOrDefault().Nav_CheckType?.NAME, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); notices.Add(notice); } } } } } } } UnifiedCommit(() => { if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (safeNotices != null && safeNotices.Any()) BantchSaveEntityNoCommit(safeNotices); if (safeDetialNotices != null && safeDetialNotices.Any()) BantchSaveEntityNoCommit(safeDetialNotices); //if (records != null && records.Any()) // BantchSaveEntityNoCommit(records); //if (recordDetails != null && recordDetails.Any()) // BantchSaveEntityNoCommit(recordDetails); //if (recordDetailUsers != null && recordDetailUsers.Any()) // BantchSaveEntityNoCommit(recordDetailUsers); }); } 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("CheckTypeSync")] public JsonActionResult CheckTypeSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { try { //List details = new List(); var checkTypes = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var hiddens = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId)).ToList(); var detailContents = GetEntities(i => i.IS_DELETED == false, new BaseFilter(filter.OrgId), "Nav_DetailContent.Nav_LibraryDetail.Nav_Library", "Nav_CheckType").ToList(); if (detailContents != null && detailContents.Any()) { foreach (var detail in detailContents) { var minetype = detail?.Nav_DetailContent?.Nav_LibraryDetail?.Nav_Library?.MineType; var itemType = detail?.Nav_CheckType?.NAME; var firstType = checkTypes.FirstOrDefault(t => t.MineType == minetype && t.NAME == itemType); if (firstType != null) { detail.CHECK_TYPE_ID = firstType.ID; } } } UnifiedCommit(() => { if (detailContents != null && detailContents.Any()) BantchSaveEntityNoCommit(detailContents); }); } 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("SafeCheckNoticeNeww")] public JsonActionResult SafeCheckNoticeNeww([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; List setList = new List(); //查配置表,有配才执行 var timeSets = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); if (timeSets != null && timeSets.Any()) { foreach (var set in timeSets) { switch (set.CHECK_CYCLE) { case SKPLANCHECKFREQUENCYEnum.Year: if (set.MONTH == month && set.DATA == day) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.HalfYear: if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.Date: setList.Add(set); break; //case SKPLANCHECKFREQUENCYEnum.Class: // setList.Add(set); break; case SKPLANCHECKFREQUENCYEnum.Week: if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.Month: if (set.DATA == day) { setList.Add(set); } break; case SKPLANCHECKFREQUENCYEnum.Quarter: if (set.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day) { setList.Add(set); } } if (set.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day) { setList.Add(set); } } if (set.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day) { setList.Add(set); } } break; default: break; } } } List notices = new List(); List safeNotices = new List(); List safeDetialNotices = new List(); List records = new List(); List recordDetails = new List(); List recordDetailUsers = new List(); List list = new List(); List detailContents = new List(); if (setList != null && setList.Any()) { var checkTypes = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); var checkTypeIds = checkTypes.Where(t => t.NAME == "岗位排查").Select(m => m.ID).ToList(); var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_User"); var users = this.GetEntities(t => t.ENABLE_STATUS == 0 && t.DEPARTMENT_ID != null && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole"); var checkCycles = setList.Select(t => t.CHECK_CYCLE).Distinct().ToList(); var librarys = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Area").ToList(); var libraryDetails = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)).ToList(); var contents = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_Contents").ToList(); var contentDeparts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_CheckType", "Nav_Department").ToList(); var posts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(filter.OrgId), "Nav_PostDetails.Nav_Post").ToList(); if (librarys != null && librarys.Any()) { foreach (var item in librarys) { var libraryPost = posts.Where(t => t.ENTERPRISE_LIBRARY_ID == item.ID).ToList(); var details = libraryDetails.Where(t => t.ENTERPRISE_LIBRARY_ID == item.ID).ToList(); var detailIds = details.Select(t => t.ID).ToList(); var contentTemps = contents.Where(t => detailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID)).ToList(); var contentTempIds = contentTemps.Select(t => t.ID).ToList(); var contentDepartTemps = contentDeparts.Where(t => contentTempIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID)).ToList(); if (contentDepartTemps != null && contentDepartTemps.Any()) { foreach (var depart in contentDepartTemps) { var first = libraryPost.FirstOrDefault(t => t.DEPARTMENT_ID == depart.DEPARTMENT_ID)?.Nav_PostDetails?.Select(m => m.Nav_Post).OrderBy(n => n?.NAME).ToList(); var contentFirst = contentTemps.FirstOrDefault(t => t.ID == depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID); if (first != null && first.Any()) { foreach (var post in first) { //没角色的才取岗位 var userRole = users.FirstOrDefault(t => t.Nav_Person != null && t.Nav_Person.POST_ID != null && t.Nav_Person.POST_ID == post?.ID); if (userRole == null || (userRole != null && userRole.APPROVE_ROLE_ID == null)) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART de = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); de.POST_NAME = post?.NAME; de.MineType = item.MineType; de.AREA_NAME = item.Nav_Area?.NAME; de.ENTERPRISE_LIBRARY_DETAIL_ID = contentFirst?.ENTERPRISE_LIBRARY_DETAIL_ID; de.ENTERPRISE_LIBRARY_ID = item.ID; de.TYPE_NAME = depart.Nav_CheckType?.NAME; de.DEPART_NAME = depart.Nav_Department?.NAME; de.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID; de.CHECK_CYCLE = depart.CHECK_CYCLE; de.CHECK_TYPE_ID = depart.CHECK_TYPE_ID; de.DEPARTMENT_ID = depart.DEPARTMENT_ID; de.CHECK_TYPE = depart.CHECK_TYPE; de.POST_ID = post?.ID; detailContents.Add(de); } } } else { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART de = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART(); de.POST_NAME = "未配置辨识岗位"; de.MineType = item.MineType; de.AREA_NAME = item.Nav_Area?.NAME; de.ENTERPRISE_LIBRARY_DETAIL_ID = contentFirst?.ENTERPRISE_LIBRARY_DETAIL_ID; de.ENTERPRISE_LIBRARY_ID = item.ID; de.TYPE_NAME = depart.Nav_CheckType?.NAME; de.DEPART_NAME = depart.Nav_Department?.NAME; de.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = depart.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID; de.CHECK_CYCLE = depart.CHECK_CYCLE; de.CHECK_TYPE_ID = depart.CHECK_TYPE_ID; de.DEPARTMENT_ID = depart.DEPARTMENT_ID; de.CHECK_TYPE = depart.CHECK_TYPE; detailContents.Add(de); } } } } } if (detailContents != null && detailContents.Any()) { foreach (var item in contents) { var detailLib = libraryDetails.FirstOrDefault(t => t.ID == item.ENTERPRISE_LIBRARY_DETAIL_ID); var lib = librarys.FirstOrDefault(t => t.ID == detailLib?.ENTERPRISE_LIBRARY_ID); item.RISK_NAME = lib?.RISK_NAME; item.AREA_ID = lib?.AREA_ID; item.Nav_Area = lib?.Nav_Area; } foreach (var item in detailContents) { if (checkTypeIds != null && checkTypeIds.Any() && item.CHECK_TYPE_ID != null && checkTypeIds.Contains((Guid)item.CHECK_TYPE_ID)) { } else { if (item.CHECK_TYPE == SKDepartmentTypeEnum.班组级) { item.POST_NAME = "班组负责人"; } else if (item.CHECK_TYPE == SKDepartmentTypeEnum.车间级) { item.POST_NAME = "车间安全员"; } else if (item.CHECK_TYPE == SKDepartmentTypeEnum.部门级) { item.POST_NAME = "部门安全员"; } else { item.POST_NAME = "安环部安全员"; } var user = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == item.POST_NAME); if (user != null) { item.POST_ID = user.Nav_Person?.POST_ID; } } } var group = detailContents.Where(m => checkCycles.Contains(m.CHECK_CYCLE)).GroupBy(t => new { t.MineType, t.CHECK_TYPE, t.CHECK_CYCLE, t.DEPART_NAME, t.DEPARTMENT_ID, t.CHECK_TYPE_ID, t.TYPE_NAME, t.POST_NAME, t.POST_ID }).ToList(); foreach (var item in group) { CheckListNew listNew = new CheckListNew(); listNew.Mine = item.Key.MineType; listNew.Cycle = item.Key.CHECK_CYCLE; listNew.DepartType = item.Key.CHECK_TYPE; listNew.MineType = item.Key.MineType.GetDescription(); listNew.CheckType = item.Key.TYPE_NAME; listNew.CheckCycle = item.Key.CHECK_CYCLE.GetDescription(); listNew.CheckLevel = item.Key.CHECK_TYPE.GetDescription(); listNew.Num = (int)item.Key.CHECK_TYPE; listNew.CheckDepart = item.Key.DEPART_NAME; listNew.CheckPostId = item.Key.POST_ID; listNew.CheckPost = item.Key.POST_NAME; listNew.CheckDepartId = item.Key.DEPARTMENT_ID; listNew.CheckTypeId = item.Key.CHECK_TYPE_ID; var depathaveIds = detailContents.Where(t => t.DEPARTMENT_ID == item.Key.DEPARTMENT_ID && t.CHECK_TYPE_ID == item.Key.CHECK_TYPE_ID && t.CHECK_TYPE == item.Key.CHECK_TYPE && t.CHECK_CYCLE == item.Key.CHECK_CYCLE && t.MineType == item.Key.MineType && t.POST_NAME == item.Key.POST_NAME && t.POST_ID == item.Key.POST_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList(); var temps = contents.Where(t => depathaveIds.Contains(t.ID)).Distinct().ToList(); if (temps.Any()) { List listDetail = new List(); foreach (var tem in temps) { CheckListDetail checkListDetail = new CheckListDetail(); checkListDetail.CHECK_CONTENTS_ID = tem.CHECK_CONTENTS_ID; checkListDetail.CHECK_CONTENTS_NAME = tem.Nav_Contents?.CHECKCONTENT; checkListDetail.RISK_NAME = tem.RISK_NAME; checkListDetail.RISK_AREA_ID = tem.AREA_ID; checkListDetail.RISK_AREA_NAME = tem.Nav_Area?.NAME; checkListDetail.CHECKPROOF = tem.CHECK_BASIC; checkListDetail.CHECKSTANDARD = tem.CHECK_STANDARD; listDetail.Add(checkListDetail); } listNew.details = listDetail.OrderBy(t => t.RISK_AREA_NAME).ThenBy(m => m.RISK_NAME).ToList(); } list.Add(listNew); } list = list.Where(m => m.CheckDepartId != null).OrderBy(y => y.MineType).ThenBy(x => x.Num).ThenBy(n => n.CheckDepart).ToList(); } DateTime dt = DateTime.Now; if (filter.Parameter1 != null) { dt = DateTime.Parse(filter.Parameter1); } DateTime minTime = dt.AddMinutes(0); DateTime maxTime = dt.AddMinutes(60); var shiftClassList = this.GetEntities(s => s.START_TIME > minTime && s.START_TIME <= maxTime && s.START_TIME != s.END_TIME && s.Nav_Team.ENABLE_STATUS == 0 && s.TEAM_ID != null, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList(); var teamIds = shiftClassList.Select(t => t.TEAM_ID).Distinct().ToList(); var teamInfos = this.GetEntities(t => teamIds.Contains(t.ID), new BaseFilter(filter.OrgId)); var teamDepartIds = teamInfos.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); var personIds = new List(); if (shiftClassList != null && shiftClassList.Any()) { foreach (var item in shiftClassList) { if (item.Nav_DepartmentSchedulingDetail != null && item.Nav_DepartmentSchedulingDetail.Any()) { var ids = item.Nav_DepartmentSchedulingDetail.Select(t => t.PERSON_ID).Distinct().ToList(); personIds.AddRange(ids); } } } var baseFilter = new BaseFilter(filter.GetOrgId()); baseFilter.IgnoreDataRule = true; baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; //指定字段,包括导航属性 Expression> expression = i => i.IS_DELETED == false && i.CREATE_TIME > minTime && i.CREATE_TIME <= maxTime; List noticeExsiss = this.GetOrderEntities(expression, baseFilter).ToList(); baseFilter.SelectField = new string[] { "MineType", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE" }; Expression> expressionR = i => i.IS_DELETED == false && i.CREATE_TIME > minTime && i.CREATE_TIME <= maxTime; List recordExsiss = this.GetOrderEntities(expressionR, baseFilter).ToList(); //取岗位排查表 var postCheckList = list.Where(t => t.CheckTypeId != null && checkTypeIds.Contains((Guid)t.CheckTypeId)).ToList(); if (postCheckList != null && postCheckList.Any()) { foreach (var item in postCheckList) { //触发安全检查记录给对应的岗位工(有排班才触发) var userInfo = users.FirstOrDefault(t => t.DEPARTMENT_ID == item.CheckDepartId && teamDepartIds.Contains(t.DEPARTMENT_ID) && t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID) && t.Nav_Person != null && t.Nav_Person.POST_ID == item.CheckPostId); if (userInfo != null) { //判断是否重复触发 var exist = recordExsiss.FirstOrDefault(t => t.APPLY_USER_ID == userInfo.ID && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle); if (exist == null) { T_SK_SECURITY_INSPECTION_RECORD record = new T_SK_SECURITY_INSPECTION_RECORD(); record.ORG_ID = filter.OrgId; record.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; record.APPLY_USER_ID = userInfo.ID; record.MineType = item.Mine; record.CHECK_TYPE_ID = item.CheckTypeId; record.PLANCHECKFREQUENCY = item.Cycle; record.DEPARTMENT_TYPE = item.DepartType; record.STATUS = PFStandardStatus.Draft; record.ISAUTO = true; records.Add(record); if (item.details != null && item.details.Any()) { foreach (var item2 in item.details) { var i = 1; //var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); //if (repeat == null) { T_SK_SECURITY_INSPECTION_RECORD_DETAIL detail = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL(); detail.ORG_ID = filter.OrgId; detail.SECURITY_INSPECTION_RECORD_ID = record.ID; detail.RISK_AREA_ID = item2.RISK_AREA_ID; detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; detail.CHECKCONTENT = item2.CHECK_CONTENTS_NAME; detail.CHECKPROOF = item2.CHECKPROOF; detail.CHECKSTANDARD = item2.CHECKSTANDARD; detail.NUM = i; recordDetails.Add(detail); i++; T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER deUser = new T_SK_SECURITY_INSPECTION_RECORD_DETAIL_USER(); deUser.ORG_ID = filter.OrgId; deUser.SECURITY_INSPECTION_RECORD_DETAIL_ID = detail.ID; deUser.USER_ID = userInfo.ID; deUser.ISMAINCHECK = true; recordDetailUsers.Add(deUser); } } } var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); var endtime = DateTime.Now.AddHours(24); if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Week) { endtime = DateTime.Now.AddDays(7); } if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Month) { endtime = DateTime.Now.AddMonths(1); } if (item.Cycle == SKPLANCHECKFREQUENCYEnum.HalfYear) { endtime = DateTime.Now.AddMonths(6); } if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Year) { endtime = DateTime.Now.AddMonths(12); } if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Quarter) { endtime = DateTime.Now.AddMonths(3); } var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CheckCycle + "岗位排查记录" + date, record.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK010"); notices.Add(notice); } } } } //取非岗位排查 var checkList = list.Where(t => t.CheckTypeId != null && !checkTypeIds.Contains((Guid)t.CheckTypeId)).ToList(); if (checkList != null && checkList.Any()) { foreach (var item in checkList) { var setTime = setList.FirstOrDefault(t => t.MineType == item.Mine && t.CHECK_CYCLE == item.Cycle); var userInfo = users.FirstOrDefault(t => t.DEPARTMENT_ID == item.CheckDepartId && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == item.CheckPost); //触发安全检查通知给对应的审批角色 if (item.CheckPost == "安环部安全员") { userInfo = users.FirstOrDefault(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == item.CheckPost); } if (item.CheckPost == "班组负责人") { //判断排班 userInfo = users.FirstOrDefault(t => t.DEPARTMENT_ID == item.CheckDepartId && teamDepartIds.Contains(t.DEPARTMENT_ID) && t.PERSON_ID != null && personIds.Contains((Guid)t.PERSON_ID) && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == item.CheckPost); } if (userInfo == null && item.CheckDepartId != null && item.CheckPost != "班组负责人") { userInfo = departs.FirstOrDefault(t => t.ID == (Guid)item.CheckDepartId)?.Nav_User; } if (userInfo != null) { //判断是否重复触发 var exist = noticeExsiss.FirstOrDefault(t => t.APPLY_USER_ID == userInfo.ID && t.CHECK_TYPE_ID == item.CheckTypeId && t.PLANCHECKFREQUENCY == item.Cycle); if ((exist == null && item.CheckPost == "班组负责人") || (exist == null && item.CheckPost != "班组负责人" && setTime != null && dtNow.Hour == setTime.CHECKTIME.Value.Hour)) { T_SK_SECURITY_INSPECTION_NOTICE safeNotice = new T_SK_SECURITY_INSPECTION_NOTICE(); safeNotice.ORG_ID = filter.OrgId; safeNotice.APPLY_DEPARTMENT_ID = userInfo.DEPARTMENT_ID; safeNotice.APPLY_USER_ID = userInfo.ID; safeNotice.MineType = item.Mine; safeNotice.CHECK_TYPE_ID = item.CheckTypeId; safeNotice.PLANCHECKFREQUENCY = item.Cycle; safeNotice.DEPARTMENT_TYPE = item.DepartType; safeNotice.STATUS = PFStandardStatus.Draft; safeNotice.ISAUTO = true; safeNotices.Add(safeNotice); if (item.details != null && item.details.Any()) { foreach (var item2 in item.details) { var i = 1; //var repeat = safeDetialNotices.FirstOrDefault(t => t.SECURITY_INSPECTION_NOTICE_ID == safeNotice.ID && t.RISK_AREA_ID == item2.AREA_ID && t.CHECK_CONTENTS_ID == item2.CHECK_CONTENTS_ID); //if (repeat == null) { T_SK_SECURITY_INSPECTION_NOTICE_DETAIL detail = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); detail.ORG_ID = filter.OrgId; detail.SECURITY_INSPECTION_NOTICE_ID = safeNotice.ID; detail.RISK_AREA_ID = item2.RISK_AREA_ID; detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; detail.CHECKCONTENT = item2.CHECK_CONTENTS_NAME; detail.CHECKPROOF = item2.CHECKPROOF; detail.CHECKSTANDARD = item2.CHECKSTANDARD; detail.NUM = i; safeDetialNotices.Add(detail); } } } var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.Day.PadLeft(2, '0'); var endtime = DateTime.Now.AddHours(24); if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Week) { endtime = DateTime.Now.AddDays(7); } if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Month) { endtime = DateTime.Now.AddMonths(1); } if (item.Cycle == SKPLANCHECKFREQUENCYEnum.HalfYear) { endtime = DateTime.Now.AddMonths(6); } if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Year) { endtime = DateTime.Now.AddMonths(12); } if (item.Cycle == SKPLANCHECKFREQUENCYEnum.Quarter) { endtime = DateTime.Now.AddMonths(3); } var notice = NotificationTaskService.InsertUserNoticeTaskModel(item.CheckCycle + "安全检查通知" + date, safeNotice.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); notices.Add(notice); } } } } } UnifiedCommit(() => { if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (safeNotices != null && safeNotices.Any()) BantchSaveEntityNoCommit(safeNotices); if (safeDetialNotices != null && safeDetialNotices.Any()) BantchSaveEntityNoCommit(safeDetialNotices); if (records != null && records.Any()) BantchSaveEntityNoCommit(records); if (recordDetails != null && recordDetails.Any()) BantchSaveEntityNoCommit(recordDetails); if (recordDetailUsers != null && recordDetailUsers.Any()) BantchSaveEntityNoCommit(recordDetailUsers); }); } 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; }); } } }