using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.SC.PE; using APT.MS.Domain.Entities.SC.PT; using APT.MS.Domain.Enums; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System; using System.Linq; using APT.MS.Domain.Entities.SC.PR; using InfluxData.Net.InfluxDb.Models.Responses; using NPOI.SS.Formula.Functions; using APT.BaseData.Domain.ApiModel; using APT.BaseData.Domain.Enums; using APT.MS.Domain.Entities.SC; using APT.BaseData.Services.Services.FM; using APT.WebApi.Models; namespace APT.PP.WebApi.Controllers.Api { /// /// 生产工艺 /// [Route("api/PP/PRController")] [TypeFilter(typeof(CustomActionFilterAttribute))] public class PRController : AuthorizeApiController { IFMNotificationTaskService NotificationTaskService { get; set; } IFMDepartmentService DepartmentService { get; set; } /// /// 生产工艺 /// /// public PRController(IFMNotificationTaskService notificationTaskService, IFMDepartmentService departmentService) { NotificationTaskService = notificationTaskService; DepartmentService = departmentService; } /// /// 触发滑坡滚石监控处理 /// /// [HttpPost, Route("RollStoneSync")] public JsonActionResult RollStoneSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; bool isSend = false; List sendNotices = new List(); List stones = new List(); var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "PLANCHECKFREQUENCY", "MONTH", "DATA", "POST_ID", "WEEKDATA", "RUNSETTIME", "USER_ID", "Nav_User", "DEPARTMENT_ID" }; var timeSet = GetEntity(i => i.SET_TYPE == PTSetTypeEnum.RollStone, newFilter); if (timeSet != null) { switch (timeSet.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: case BSPLANCHECKFREQUENCYEnum.Year: if (timeSet.MONTH == month && timeSet.DATA == day) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.HalfYear: if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day)) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Date: isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Week: if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Month: if (timeSet.DATA == day) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Quarter: if (timeSet.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day) isSend = true; } break; default: break; } } if (isSend) { if (dtNow.Hour == timeSet.RUNSETTIME.Value.Hour) { //newFilter.SelectField = new List { "ID","USER_ID", "NAME" }; //var userInfo = this.GetEntities(t => (t.NAME == "矿山现场班长" || t.NAME == "金宇现场班长") && t.USER_ID!=null, newFilter, "Nav_User"); //if (userInfo != null && userInfo.Any()) if (timeSet.POST_ID != null) { var userInfo = this.GetEntity(t => t.Nav_Person != null && t.Nav_Person.POST_ID == timeSet.POST_ID && t.DEPARTMENT_ID == timeSet.DEPARTMENT_ID); //var user = userInfo.FirstOrDefault(m => m.USER_ID == t); if (userInfo != null) { T_PR_LANDSLIDE_ROLLSTONE_MONITOR stone = new T_PR_LANDSLIDE_ROLLSTONE_MONITOR(); stone.ORG_ID = filter.GetOrgId(); stone.USER_ID = userInfo.ID; stone.STATUS = PFStandardStatus.Draft; stones.Add(stone); sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("滑坡滚石监控处理记录表", stone.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "PR007")); //var userIds = userInfo.Select(t => t.USER_ID).Distinct().ToList(); //if (userIds != null && userIds.Any()) //{ // userIds.ForEach(t => // { // }); //} } } } } UnifiedCommit(() => { if (stones != null && stones.Any()) BantchSaveEntityNoCommit(stones); if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); }); return true; }); } /// /// 触发年度生产作业计划 /// /// [HttpPost, Route("YearProductionPlanSync")] public JsonActionResult YearProductionPlanSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; bool isSend = false; List sendNotices = new List(); T_SC_MT_MEETING met = null; var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA", "RUNSETTIME", "USER_ID", "Nav_User", "DEPARTMENT_ID" }; var timeSet = GetEntity(i => i.SET_TYPE == PTSetTypeEnum.YearProductionPlan, newFilter); if (timeSet != null) { switch (timeSet.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: case BSPLANCHECKFREQUENCYEnum.Year: if (timeSet.MONTH == month && timeSet.DATA == day) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.HalfYear: if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day)) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Date: isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Week: if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Month: if (timeSet.DATA == day) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Quarter: if (timeSet.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day) isSend = true; } break; default: break; } } if (isSend) { //var userInfo = this.GetEntity(t => t.NAME == "企管部负责人", "Nav_User"); if (timeSet.POST_ID != null) { var userInfo = this.GetEntity(t => t.Nav_Person != null && t.Nav_Person.POST_ID == timeSet.POST_ID && t.DEPARTMENT_ID == timeSet.DEPARTMENT_ID); if (userInfo != null) { met = new T_SC_MT_MEETING(); met.ORG_ID = timeSet.ORG_ID; met.STATUS = PFStandardStatus.Draft; met.MEETINGTYPE = SCMEETINGTYPE.Ordinary; met.NAME = "年度作业计划讨论会"; met.CREACTTYPE = CREACTTYPEEnum.YearPlanAdd; met.USER_ID_HOST = userInfo.ID; met.USER_ID_ORIGINATOR = userInfo.ID; met.DEPARTMENT_ID = timeSet.DEPARTMENT_ID.Value; met.Nav_ListThemes = null; met.Nav_ListMeetingContent = null; met.Nav_ListPAll = null; met.Nav_ListPReView = null; met.Nav_Files = null; met.Nav_FilesOfficialseal = null; met.Nav_FilesRecord = null; sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("年度作业计划讨论会", met.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "SC032")); sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("请编制下年度作业计划并召开年度作业计划讨论会。", met.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.今日提醒, "PF135")); } } } UnifiedCommit(() => { if (met != null) UpdateEntityNoCommit(met); if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); }); return true; }); } /// /// 触发月度生产作业计划 /// /// [HttpPost, Route("MonthProductionPlanSync")] public JsonActionResult MonthProductionPlanSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var month = dtNow.Month; var day = dtNow.Day; var time = dtNow.TimeOfDay; var week = dtNow.DayOfWeek; bool isSend = false; T_FM_NOTIFICATION_TASK sendNotice = null; var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA", "RUNSETTIME", "USER_ID", "Nav_User" }; var timeSet = GetEntity(i => i.SET_TYPE == PTSetTypeEnum.MonthProductionPlan, newFilter); if (timeSet != null) { switch (timeSet.PLANCHECKFREQUENCY) { //case BSPLANCHECKFREQUENCYEnum.OneTime: case BSPLANCHECKFREQUENCYEnum.Year: if (timeSet.MONTH == month && timeSet.DATA == day) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.HalfYear: if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day)) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Date: isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Week: if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Month: if (timeSet.DATA == day) isSend = true; break; case BSPLANCHECKFREQUENCYEnum.Quarter: if (timeSet.MONTH == 1) { if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 2) { if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day) isSend = true; } if (timeSet.MONTH == 3) { if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day) isSend = true; } break; default: break; } } if (isSend) { //newFilter.SelectField = new List { "USER_ID" }; //var userInfo = this.GetEntity(t => t.NAME == "企管部负责人", newFilter, "Nav_User"); if (timeSet.POST_ID != null) { var userInfo = this.GetEntity(t => t.Nav_Person != null && t.Nav_Person.POST_ID == timeSet.POST_ID && t.DEPARTMENT_ID == timeSet.DEPARTMENT_ID); if (userInfo != null) { sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("请上传下月度生产作业计划至文件库。", Guid.NewGuid(), filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.今日提醒, "PF135"); } } } UnifiedCommit(() => { if (sendNotice != null) UpdateEntityNoCommit(sendNotice); }); return true; }); } /// /// 触发测绘处理记录今日提醒 /// /// [HttpPost, Route("MapProcessSync")] public JsonActionResult MapProcessSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; List sendNotices = new List(); var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "DEPARTMENT_ID", "TIME", "IS_RUN" }; var records = GetEntities(i => i.TIME.Value.Month == dtNow.AddMonths(6).Month && i.IS_RUN == DisableStatusEnum.否, newFilter); if (records != null && records.Any()) { var departmentIds = records.Select(i => i.DEPARTMENT_ID).Distinct().ToList(); newFilter.SelectField = new List { "ID", "USER_ID" }; var userInfos = GetEntities(i => departmentIds.Contains(i.ID) && i.USER_ID.HasValue, newFilter, "Nav_User"); foreach (var item in records) { var userInfo = userInfos.FirstOrDefault(t => t.ID == item.DEPARTMENT_ID); if (userInfo != null) { item.IS_RUN = DisableStatusEnum.是; sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("请上传水文地质勘察报告。\n 请上传排土场检测报告或安全评价报告。", item.ID, filter.GetOrgId(), userInfo.USER_ID.Value, userInfo.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.今日提醒, "PF135")); } } } UnifiedCommit(() => { if (records != null && records.Any()) BantchSaveEntityNoCommit(records); if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); }); return true; }); } /// /// 触发生产运行记录表 /// /// [HttpPost, Route("ProductionSync")] public JsonActionResult ProductionSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var schedulingInfos = new List(); var records = new List(); var sendNotices = new List(); var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "DEPARTMENT_ID", "OPERATION_STEP_ID" }; var departmentStepLink = GetEntities(i => true, newFilter); if (departmentStepLink != null && departmentStepLink.Any()) { var departmentIds = departmentStepLink.Select(i => i.DEPARTMENT_ID).Distinct().ToList(); newFilter.SelectField = new List { "ID", "NAME", "USER_ID" }; var departInfos = GetEntities(i => departmentIds.Contains(i.ID), newFilter); newFilter.SelectField = new List { "ID", "NAME", "DEPARTMENT_ID" }; var teamInfos = GetEntities(i => departmentIds.Contains(i.DEPARTMENT_ID), newFilter); if (teamInfos != null && teamInfos.Any()) { var teamIds = teamInfos.Select(i => i.ID).ToList(); //newFilter.SelectField = new List { "ID","DATE_TIME", "TEAM_ID", "START_TIME", "END_TIME" }; schedulingInfos = GetEntities(i => i.TEAM_ID.HasValue && teamIds.Contains(i.TEAM_ID.Value) && i.DATE_TIME == dtNow.Date && i.IS_RUN == FMTureOrFalse.否, new BaseFilter(filter.OrgId)).ToList();//&& i.START_TIME.Hour == dtNow.AddHours(1).Hour if (schedulingInfos != null && schedulingInfos.Any()) { var chargeIds = departInfos.Where(t => t.USER_ID != null).Select(i => i.USER_ID).Distinct().ToList(); newFilter.SelectField = new List { "NAME", "ID" }; var userInfos = GetEntities(i => chargeIds.Contains(i.ID) && i.ENABLE_STATUS == 0, newFilter); foreach (var item in schedulingInfos) { var teamInfo = teamInfos.FirstOrDefault(t => t.ID == item.TEAM_ID); var departInfo = departInfos.FirstOrDefault(t => t.ID == teamInfo?.DEPARTMENT_ID); var userInfo = userInfos.FirstOrDefault(t => t.ID == departInfo?.USER_ID); if (userInfo != null) { item.IS_RUN = FMTureOrFalse.是; var links = departmentStepLink.Where(t => t.DEPARTMENT_ID == teamInfo?.DEPARTMENT_ID).ToList(); if (links != null && links.Any()) { links.ForEach(t => { T_PR_PRODUCTION_OPERATION_RECORD record = new T_PR_PRODUCTION_OPERATION_RECORD(); record.ORG_ID = t.ORG_ID; record.OPERATION_STEP_ID = t.OPERATION_STEP_ID; //record.TIME = DateTime.Now; record.USER_ID = userInfo.ID; record.STATUS = PFStandardStatus.Draft; records.Add(record); sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("生产运行记录表", record.ID, filter.OrgId, userInfo.ID, userInfo.NAME, DateTime.Now, item.END_TIME.AddHours(1), (int)FMNoticeTypeEnum.消息, "PR019")); }); } } } } } } UnifiedCommit(() => { if (schedulingInfos != null && schedulingInfos.Any()) BantchSaveEntityNoCommit(schedulingInfos); if (records != null && records.Any()) BantchSaveEntityNoCommit(records); if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); }); return true; }); } /// /// 触发生产运行记录表(选矿) /// /// [HttpPost, Route("ProductionRecordSync")] public JsonActionResult ProductionRecordSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var schedulingInfos = new List(); var sendNotices = new List(); var expRecords = new List(); var labRecords = new List(); var dutyRecords = new List(); var tunRecords = new List(); var conRecords = new List(); var sanRecords = new List(); var thoRecords = new List(); var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "DEPARTMENT_ID", "TEAM_ID" }; schedulingInfos = GetEntities(i => i.DATE_TIME == dtNow.Date && i.END_TIME.Hour == dtNow.AddHours(1).Hour, new BaseFilter(filter.OrgId)).ToList();//&& i.START_TIME.Hour == dtNow.AddHours(1).Hour if (schedulingInfos != null && schedulingInfos.Any()) { var teamIds = schedulingInfos.Select(i => i.TEAM_ID).Distinct().ToList(); newFilter.SelectField = new List { "DEPARTMENT_ID" }; var teamInfos = GetEntities(i => teamIds.Contains(i.ID), newFilter); var departmentIds = teamInfos.Select(i => i.DEPARTMENT_ID).Distinct().ToList(); var allDepartInfos = GetEntities(i => i.ENABLE_STATUS == 0 && i.USER_ID != null, new BaseFilter(filter.OrgId), "Nav_User"); var departInfos = allDepartInfos.Where(i => departmentIds.Contains(i.ID) && i.USER_ID != null).ToList(); if (departInfos != null && departInfos.Any()) { var userIds = departInfos.Select(i => i.USER_ID).ToList(); //newFilter.SelectField = new List { "NAME", "ID", "PERSON_ID" }; var userInfos = GetEntities(i => userIds.Contains(i.ID) && i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person").ToList(); if (userInfos != null && userInfos.Any()) { var postIds = userInfos.Where(t => t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).Distinct().ToList(); //newFilter.SelectField = new List { "ID", "POST_ID" }; var postFormLinks = GetEntities(i => postIds.Contains(i.POST_ID), new BaseFilter(filter.OrgId), "Nav_Codes", "Nav_Departments").ToList(); if (postFormLinks != null && postFormLinks.Any()) { foreach (var item in postFormLinks) { if (item.Nav_Codes != null && item.Nav_Codes.Any()) { foreach (var code in item.Nav_Codes) { var name = ""; var recordId = Guid.NewGuid(); switch (code.CODE) { case "PR056": name = "实验运行记录"; T_PR_EXPERIMENTAL_OPERATION_RECORD record = new T_PR_EXPERIMENTAL_OPERATION_RECORD(); record.CODE = DateTime.Now.Year.ToString().PadLeft(4, '0') + DateTime.Now.Month.ToString().PadLeft(2, '0') + DateTime.Now.Day.ToString().PadLeft(2, '0') + new Random().Next().ToString(); record.ORG_ID = code.ORG_ID; recordId = record.ID; expRecords.Add(record); break; case "PR058": name = "化验运行记录"; T_PR_LABORATORY_OPERATION_RECORD record2 = new T_PR_LABORATORY_OPERATION_RECORD(); record2.ORG_ID = code.ORG_ID; recordId = record2.ID; labRecords.Add(record2); break; case "PR060": name = "选矿一部值班运行记录"; T_PR_DUTY_OPERATION_RECORD record3 = new T_PR_DUTY_OPERATION_RECORD(); record3.ORG_ID = code.ORG_ID; recordId = record3.ID; dutyRecords.Add(record3); break; case "PR062": name = "钨预选运行记录"; T_PR_TUNGPRE_OPERATION_RECORD record4 = new T_PR_TUNGPRE_OPERATION_RECORD(); record4.ORG_ID = code.ORG_ID; recordId = record4.ID; tunRecords.Add(record4); break; case "PR064": name = "控制室运行记录"; T_PR_CONTROLROOM_OPERATION_RECORD record5 = new T_PR_CONTROLROOM_OPERATION_RECORD(); record5.ORG_ID = code.ORG_ID; recordId = record5.ID; conRecords.Add(record5); break; case "PR066": name = "尾砂泵运行记录"; T_PR_SANDPUMP_OPERATION_RECORD record6 = new T_PR_SANDPUMP_OPERATION_RECORD(); record6.ORG_ID = code.ORG_ID; recordId = record6.ID; sanRecords.Add(record6); break; case "PR068": name = "万吨砂泵运行记录"; T_PR_THOUSANDPUMP_OPERATION_RECORD record7 = new T_PR_THOUSANDPUMP_OPERATION_RECORD(); record7.ORG_ID = code.ORG_ID; recordId = record7.ID; thoRecords.Add(record7); break; default: break; } if (item.Nav_Departments != null && item.Nav_Departments.Any()) { var departIds = item.Nav_Departments.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); var sendUserIds = allDepartInfos.Where(t => departIds.Contains(t.ID) && t.USER_ID != null).ToList(); if (sendUserIds != null && sendUserIds.Any()) { sendUserIds.ForEach(t => { sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel(name, recordId, filter.OrgId, t.USER_ID.Value, t.Nav_User.NAME, DateTime.Now, DateTime.Now.AddHours(1), (int)FMNoticeTypeEnum.消息, code.CODE)); }); } } } } } } } } } UnifiedCommit(() => { //if (schedulingInfos != null && schedulingInfos.Any()) // BantchSaveEntityNoCommit(schedulingInfos); if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); if (expRecords != null && expRecords.Any()) BantchSaveEntityNoCommit(expRecords); if (labRecords != null && labRecords.Any()) BantchSaveEntityNoCommit(labRecords); if (dutyRecords != null && dutyRecords.Any()) BantchSaveEntityNoCommit(dutyRecords); if (tunRecords != null && tunRecords.Any()) BantchSaveEntityNoCommit(tunRecords); if (conRecords != null && conRecords.Any()) BantchSaveEntityNoCommit(conRecords); if (sanRecords != null && sanRecords.Any()) BantchSaveEntityNoCommit(sanRecords); if (thoRecords != null && thoRecords.Any()) BantchSaveEntityNoCommit(thoRecords); }); return true; }); } /// /// 返回所有上级部门节点 /// /// /// /// public void GetParentDepartmentIds(Guid orgId, List listDepIDInt, ref List departmentIdPs) { var listDep = GetEntities(e => !e.IS_DELETED && listDepIDInt.Contains(e.ID),new BaseFilter(orgId)); if (listDep != null && listDep.Any()) { listDepIDInt = listDep.Where(t => t.PARENT_ID.HasValue).Select(e => e.PARENT_ID.Value).ToList(); departmentIdPs.AddRange(listDepIDInt); GetParentDepartmentIds(orgId, listDepIDInt, ref departmentIdPs); } } /// /// 触发生产运行记录表(选矿) /// /// [HttpPost, Route("ProductionRecordNewSync")] public JsonActionResult ProductionRecordNewSync([FromBody] KeywordFilter filter) { return SafeExecute(() => { var dtNow = DateTime.Now; var schedulingInfos = new List(); var processInfos = new List(); var processDetailInfos = new List(); var sendNotices = new List(); var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "DEPARTMENT_ID", "TEAM_ID", "CLASS_ID", "Nav_Class" }; schedulingInfos = GetEntities(i => i.DATE_TIME == dtNow.Date && i.START_TIME.Hour == dtNow.AddHours(1).Hour, newFilter).ToList();//&& i.START_TIME.Hour <= dtNow.Hour && dtNow.Hour <= i.END_TIME.Hour if (schedulingInfos != null && schedulingInfos.Any()) { var teamIds = schedulingInfos.Select(i => i.TEAM_ID).Distinct().ToList(); newFilter.SelectField = new List { "DEPARTMENT_ID" }; var teamInfos = GetEntities(i => teamIds.Contains(i.ID), newFilter); var departmentIds = teamInfos.Select(i => (Guid)i.DEPARTMENT_ID).Distinct().ToList(); //取部门下的所有车间 List departmentIdInts = new List(); departmentIdInts.AddRange(departmentIds); List departmentIdOuts = new List(); GetParentDepartmentIds(filter.OrgId.Value, departmentIdInts.ToList(), ref departmentIdOuts); departmentIdOuts.AddRange(departmentIds); departmentIdOuts = departmentIdOuts.Distinct().ToList(); var departInfos = GetEntities(i => i.ENABLE_STATUS == 0 && departmentIds.Contains(i.ID), new BaseFilter(filter.OrgId), "Nav_User"); if (departInfos != null && departInfos.Any()) { var userInfos = GetEntities(i => departmentIdOuts.Contains((Guid)i.DEPARTMENT_ID) && i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person").ToList(); if (userInfos != null && userInfos.Any()) { var postIds = userInfos.Where(t => t.Nav_Person != null).Select(m => m.Nav_Person.POST_ID).Distinct().ToList(); var postFormLinks = GetEntities(i => postIds.Contains(i.POST_ID) && departmentIdOuts.Contains((Guid)i.DEPARTMENT_ID), new BaseFilter(filter.OrgId), "Nav_Params").ToList(); if (postFormLinks != null && postFormLinks.Any()) { foreach(var item in postFormLinks) { var classTemp = teamInfos.FirstOrDefault(t => t.DEPARTMENT_ID == item.DEPARTMENT_ID); var classData = schedulingInfos.FirstOrDefault(t => t.TEAM_ID == classTemp?.ID); T_PR_PROCESS_FORM_XK process = new T_PR_PROCESS_FORM_XK(); process.POST_ID = item.POST_ID; process.CODE = DateTime.Now.Year.ToString().PadLeft(4, '0') + DateTime.Now.Month.ToString().PadLeft(2, '0') + DateTime.Now.Day.ToString().PadLeft(2, '0') + new Random().Next().ToString(); process.NAME = item.NAME; process.DEPARTMENT_ID = item.DEPARTMENT_ID; process.ORG_ID = item.ORG_ID; process.OPERATION_STEP_ID = item.OPERATION_STEP_ID; process.CLASS = classData?.Nav_Class?.NAME; processInfos.Add(process); if (item.Nav_Params != null && item.Nav_Params.Any()) { foreach (var detail in item.Nav_Params) { T_PR_PROCESS_FORM_XK_DETAIL processDetail = new T_PR_PROCESS_FORM_XK_DETAIL(); processDetail.POST_PROCESS_FORM_ID = process.ID; processDetail.ORG_ID = detail.ORG_ID; processDetail.NUM = detail.NUM; processDetail.NAME = detail.NAME; processDetail.PARAM = detail.PARAM; processDetail.UNIT = detail.UNIT; processDetailInfos.Add(processDetail); } } var user = userInfos.Where(t => t.DEPARTMENT_ID == item.DEPARTMENT_ID && t.Nav_Person != null && t.Nav_Person.POST_ID == item.POST_ID).ToList(); if (user != null && user.Any()) { var userIds = user.Select(t => t.ID).ToList(); var userNames = user.Select(t => t.NAME).ToList(); sendNotices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels(item.NAME, process.ID, process.ORG_ID, userIds, userNames, DateTime.Now, DateTime.Now.AddHours(1), (int)FMNoticeTypeEnum.消息, "PR072")); } } } } } } UnifiedCommit(() => { if (sendNotices != null && sendNotices.Any()) BantchSaveEntityNoCommit(sendNotices); if (processInfos != null && processInfos.Any()) BantchSaveEntityNoCommit(processInfos); if (processDetailInfos != null && processDetailInfos.Any()) BantchSaveEntityNoCommit(processDetailInfos); }); return true; }); } } }