using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.IServices; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.FO; using APT.MS.Domain.Enums; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using APT.BaseData.Domain.Enums; using APT.MS.Domain.Entities.HM; using Microsoft.AspNetCore.JsonPatch.Operations; using System.Threading.Tasks; using System.Diagnostics.Eventing.Reader; using APT.BaseData.Services.Services.FM; using System.Linq.Expressions; using NPOI.SS.Formula.Functions; using APT.MS.Domain.Entities.SK; namespace APT.FO.WebApi.Controllers.Api.FO { [Route("api/FO/FOPreShiftMeetingRecord")] public class PreShiftMeetingRecordController : AuthorizeApiController { IPFCodeRuleService CodeRuleService { get; set; } IFMNotificationTaskService NotificationTaskService { get; set; } IFMDepartmentService DepartmentService { get; set; } public PreShiftMeetingRecordController(IPFCodeRuleService coderuleService, IFMNotificationTaskService notificationTaskService, IFMDepartmentService departmentService) { CodeRuleService = coderuleService; NotificationTaskService = notificationTaskService; DepartmentService = departmentService; } /// /// 更新 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_FO_PRE_SHIFT_MEETING_RECORD entity) { return SafeExecute(() => { var eye = "FO003_SHOWPRINT"; var edit = "FO003"; if (entity.ORG_ID.ToString() == "8b3c41aa-51b1-7ce9-1879-248a038c1b5c") { eye = "FO003_SHOWPRINTJD"; edit = "FO003_JD"; } var taskEndTime = DateTime.Now.AddHours(24); var users = entity.Nav_Users.Where(t => t.USER_ID != Guid.Empty); var files = entity.Nav_Files; entity.Nav_Users = null; entity.Nav_Files = null; var details = entity.Nav_Details; entity.Nav_Details = null; List postList = new List(); var oldUserIds = GetEntities(t => t.PRE_SHIFT_MEETING_RECORD_ID == entity.ID,new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); var userID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; if (entity.TaskID != null && entity.TaskID != Guid.Empty) { var currTask = GetEntity(t => t.ID == entity.TaskID); if (currTask != null) { userID = currTask.USER_ID; taskEndTime = currTask.TASK_ENDDT; } } T_FM_NOTIFICATION_TASK finishNotice = null; List sendNotices = null; if (entity.PRE_MEETING_STATUS >= FOPreMeetingStatusEnum.签到中) { var taskId = entity.TaskID; if (taskId == Guid.Empty) { var task = GetEntity(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == userID && i.NOTICE_STATUS == FMNoticeStatusEnum.未处理.GetInt() && i.SOURCE_FORMCODE == "FO003"); if (task != null) { taskId = task.ID; taskEndTime = task.TASK_ENDDT; } } if (taskId != Guid.Empty) { finishNotice = NotificationTaskService.FOGetTaskFinishModel(taskId, entity.ID, eye); } UpdateEntity(finishNotice); throw new Exception("你已提交,请勿重复提交!"); } if (entity.ORG_ID == Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c")) { if (string.IsNullOrEmpty(entity.TODAY_PLAN)) { throw new Exception("请填写今日计划及关注点"); } if (string.IsNullOrEmpty(entity.DANGER)) { throw new Exception("请填写安全环保事项(危险识别)"); } if (string.IsNullOrEmpty(entity.WELCOME)) { entity.WELCOME = "/"; } if (string.IsNullOrEmpty(entity.LEARNING)) { entity.LEARNING = "/"; } if (string.IsNullOrEmpty(entity.PRAISE)) { entity.PRAISE = "/"; } if (string.IsNullOrEmpty(entity.SHARE)) { entity.SHARE = "/"; } if (string.IsNullOrEmpty(entity.OTHER_CONTENT)) { entity.OTHER_CONTENT = "/"; } if (string.IsNullOrEmpty(entity.DIFFICULTY)) { entity.DIFFICULTY = "/"; } } if (string.IsNullOrEmpty(entity.JOB_CONTENT) && entity.ORG_ID != Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c")) { throw new Exception("请填写当班工作内容"); } if (string.IsNullOrEmpty(entity.PROTECT_MEASURE) && entity.ORG_ID != Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c")) { throw new Exception("请填写注意事项及防护措施"); } if (users == null || users.Count(t => t.IS_DELETED == false) == 0) { throw new Exception("通知人员不能为空"); } if (entity.DEPARTMENT_ID == null) { var user = GetEntity(t => t.ID == userID); if (user != null) entity.DEPARTMENT_ID = user.DEPARTMENT_ID; } if (entity.USER_ID == null) { entity.USER_ID = userID; } var TeamName = ""; if (entity.TEAM_ID != null) { TeamName = GetEntity(entity.TEAM_ID.ToString()).NAME; } else { var currTeam = GetEntity(t => t.DEPARTMENT_ID == entity.DEPARTMENT_ID); entity.TEAM_ID = currTeam.ID; TeamName = currTeam.NAME; } if (entity.NAME == null) { entity.NAME = DateTime.Now.Date.ToString("yyyyMMdd") + TeamName + "-班前会议"; } var isRepeat = GetCount(t => t.NAME == entity.NAME && t.PRE_MEETING_STATUS > 0 && t.CLASS_ID == entity.CLASS_ID&&t.USER_ID==entity.USER_ID, new BaseFilter(entity.ORG_ID)); if (isRepeat > 0) { throw new Exception("检测到班前会议数据重复,请联系管理员!"); } if (details != null && details.Any()) { var detailFirst = details.FirstOrDefault(t => string.IsNullOrEmpty(t.QUOTA) && string.IsNullOrEmpty(t.PURPOSE) && string.IsNullOrEmpty(t.ACTUAL) && string.IsNullOrEmpty(t.RATE) && string.IsNullOrEmpty(t.REASON) && string.IsNullOrEmpty(t.IMPROVE)); if (detailFirst != null && entity.ORG_ID == Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c")) { throw new Exception("指标目标传入了空数据,请删除!"); } foreach (var item in details) { item.ORG_ID = entity.ORG_ID; item.PRE_SHIFT_MEETING_RECORD_ID = entity.ID; if (item.Nav_DetailPosts != null && item.Nav_DetailPosts.Any()) { foreach (var post in item.Nav_DetailPosts) { post.ORG_ID = entity.ORG_ID; post.PRE_SHIFT_MEETING_RECORD_DETAIL_ID = item.ID; postList.Add(post); } } item.Nav_DetailPosts = null; } } var detailIds = GetEntities(t => t.PRE_SHIFT_MEETING_RECORD_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); var postIds = GetEntities(t => detailIds.Contains(t.PRE_SHIFT_MEETING_RECORD_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); ; //20230913新增同步人员排班 List addSchedulings = new List(); List delSchedulings = new List(); if (entity.DEPARTMENT_SCHEDULING_ID != null) { var shiftClass = GetEntities(t => t.DEPARTMENT_SCHEDULING_ID == entity.DEPARTMENT_SCHEDULING_ID, new BaseFilter(entity.ORG_ID), new string[] { "Nav_Person.Nav_User" }); var delUsers = users.Where(t => t.IS_DELETED == true).Select(t => t.USER_ID); var addUsers = users.Where(t => t.CREATE_TIME > entity.CREATE_TIME).Select(t => t.USER_ID); foreach (var user in addUsers) { var addDetails = shiftClass.FirstOrDefault(t => t.Nav_Person.Nav_User.ID == user); if (addDetails == null) { T_FM_DEPARTMENT_SCHEDULING_DETAIL addScheduling = new T_FM_DEPARTMENT_SCHEDULING_DETAIL(); addScheduling.PERSON_ID = (Guid)GetEntity(t => t.ID == user).PERSON_ID; addScheduling.DEPARTMENT_SCHEDULING_ID = (Guid)entity.DEPARTMENT_SCHEDULING_ID; addScheduling.ORG_ID = entity.ORG_ID; addSchedulings.Add(addScheduling); } } delSchedulings = shiftClass.Where(t => delUsers.Contains(t.Nav_Person.Nav_User.ID)).Select(t => t.ID).ToList(); } //附件保存 if (files != null && files.Any()) { files.ForEach(t => { t.ORG_ID = entity.ORG_ID; t.PRE_SHIFT_MEETING_RECORD_ID = entity.ID;t.Nav_ImgFile = null; }); } if (entity.RATE.Equals("SaveAndNotify")) { if ((files == null || files.Count() == 0))//&& entity.ORG_ID != Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c") { throw new Exception("请上传附件!"); } var meetingTime = DateTime.Now; //meetingTime = DateTime.Parse("2023-06-15 06:30:00"); if (entity.START_TIME != DateTime.MinValue) { if (entity.ORG_ID == Guid.Parse("8b3c41aa-51b1-7ce9-1879-248a038c1b5c")) { if (entity.START_TIME.AddMinutes(-30) >= meetingTime) { throw new Exception("班前会议需等到" + entity.START_TIME.AddMinutes(-30) + "后提交!"); } } else { if (entity.START_TIME.AddMinutes(-15) >= meetingTime) { throw new Exception("班前会议需等到" + entity.START_TIME.AddMinutes(-15) + "后提交!"); } } } else { entity.START_TIME = DateTime.Now; } entity.MEETING_TIME = meetingTime; entity.PRE_MEETING_STATUS = FOPreMeetingStatusEnum.签到中; //直接处理班组长已签到,并修改通知状态 var chargeUser = users.Where(t => t.USER_ID == userID && t.DEAL_STATUS == (int)FOUserShiftStatusEnum.待处理); foreach (var user in chargeUser) { user.DEAL_STATUS = (int)FOUserShiftStatusEnum.已处理; } //新增的消息通知 var title = TeamName + entity.MEETING_TIME.Date.ToString("yyyyMMdd") + "-班前会议签到"; var noChargeUsers = users.Where(i => i.USER_ID != userID && i.IS_DELETED == false).Select(t => t.USER_ID); BaseFilter filter = new BaseFilter(entity.ORG_ID); filter.SelectField = new string[] { "ID", "NAME" }; var allusers = GetEntities(t => noChargeUsers.Contains(t.ID), filter); List userIds = new List(); List userNames = new List(); List titles = new List(); List dataIds = new List(); foreach (var user in noChargeUsers) { userIds.Add(user); userNames.Add(allusers.FirstOrDefault(t => t.ID == user).NAME); } if (noChargeUsers.Count() == 0) { entity.PRE_MEETING_STATUS = FOPreMeetingStatusEnum.归档; } var endTime = DateTime.Now.AddHours(2); if (entity.START_TIME != DateTime.MinValue) { endTime = entity.START_TIME.AddHours(2); } else { entity.START_TIME = DateTime.Now; } if (entity.END_TIME == DateTime.MinValue) { endTime = entity.START_TIME.AddHours(8); } if (DateTime.Now > taskEndTime) { endTime = DateTime.Now.AddHours(24); } sendNotices = NotificationTaskService.InsertUserNoticeTaskModels(title, entity.ID, entity.ORG_ID, userIds, userNames, DateTime.Now, endTime, (int)FMNoticeTypeEnum.消息, eye); var taskId = entity.TaskID; if (taskId == Guid.Empty) { var task = GetEntity(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == userID && i.NOTICE_STATUS == FMNoticeStatusEnum.未处理.GetInt() && i.SOURCE_FORMCODE == edit); if (task != null) { taskId = task.ID; } } if (taskId != Guid.Empty) { finishNotice = NotificationTaskService.FOGetTaskFinishModel(taskId, entity.ID, eye); } } entity.Nav_User = null; users.ForEach(t => t.Nav_User = null); users.ForEach(t => t.ORG_ID = entity.ORG_ID); users = users.Where(t => !t.IS_DELETED); this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); if (oldUserIds != null && oldUserIds.Any()) BantchDeleteEntityNoCommit(oldUserIds); if (users!=null && users.Any()) BantchSaveEntityNoCommit(users); if (detailIds != null && detailIds.Any()) BantchDeleteEntityNoCommit(detailIds); if (postIds != null && postIds.Any()) BantchDeleteEntityNoCommit(postIds); if (details!=null &&details.Any()) BantchSaveEntityNoCommit(details); if (postList != null && postList.Any()) BantchSaveEntityNoCommit(postList); if (files != null && files.Any()) BantchSaveEntityNoCommit(files); if (finishNotice != null) UpdateEntityNoCommit(finishNotice); if (sendNotices != null && sendNotices.Any()) BantchAddEntityNoCommit(sendNotices); if (delSchedulings.Any()) BantchDeleteEntityNoCommit(delSchedulings); if (addSchedulings.Any()) BantchAddEntityNoCommit(addSchedulings); }); return true; }); } /// /// 班前会议签到同意 /// /// /// [HttpPost, Route("PersonalAgree")] public JsonActionResult PersonalAgree([FromBody] T_FO_PRE_SHIFT_MEETING_RECORD entity) { return SafeExecute(() => { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; var userID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; if (entity.TaskID != null && entity.TaskID != Guid.Empty) { var currTask = GetEntity(t => t.ID == entity.TaskID); if (currTask != null) { userID = currTask.USER_ID; } } var users = GetEntities(t => t.PRE_SHIFT_MEETING_RECORD_ID == entity.ID, new BaseFilter(orgId)); var currUsers = users.Where(t => t.USER_ID == userID); foreach (var user in currUsers) { user.DEAL_STATUS = (int)FOUserShiftStatusEnum.已处理; user.MODIFY_TIME = DateTime.Now; } T_FO_PRE_SHIFT_MEETING_RECORD model = null; var todoCount = users.Count(t => t.DEAL_STATUS == 0); if (todoCount == 0) { model = GetEntity(entity.ID.ToString()); model.PRE_MEETING_STATUS = FOPreMeetingStatusEnum.归档; model.IS_RUN = WFDisableStatusEnum.是; } T_FM_NOTIFICATION_TASK task = null; if (entity.TaskID != Guid.Empty) { task = NotificationTaskService.FOGetTaskFinishModel(entity.TaskID, entity.ID); } var eventRecords = new List(); var jobs = new List(); var notices = new List(); var persons = new List(); var details = new List(); var flows = new List(); var measures = new List(); var jobDetails = new List(); var jobFlows = new List(); var jobMeasures = new List(); var temp = GetEntity(entity.ID.ToString()); var curentUser = users.Where(t => t.USER_ID == userID).ToList(); //查配置,有跑批触发的班组不触发 var isSend = true; var jobFilter = new BaseFilter(orgId); jobFilter.IgnoreDataRule = true; jobFilter.SelectField = new List { "NAME", "Nav_Departments" }; var paramSet = this.GetEntity(t => t.NAME == "一般作业", jobFilter); if (paramSet != null) { var departIds = paramSet.Nav_Departments.Select(m => m.DEPARTMENT_ID).Distinct().ToList(); if (departIds != null && departIds.Any()) { jobFilter.SelectField = new string[] { "ID", "DEPARTMENT_ID" }; var teams = this.GetEntities(t => departIds.Contains(t.DEPARTMENT_ID), jobFilter).ToList(); var teamIds = teams.Select(t => t.ID).ToList(); if (teamIds.Contains((Guid)temp.TEAM_ID)) { isSend = false; } } } if (isSend) { GetAutoNext(temp, curentUser, ref eventRecords, ref jobs, ref notices); } if (eventRecords != null && eventRecords.Any()) { eventRecords.ForEach(t => { if (t.Nav_JobEventPerson != null && t.Nav_JobEventPerson.Any()) persons.AddRange(t.Nav_JobEventPerson); if (t.Nav_Details != null && t.Nav_Details.Any()) details.AddRange(t.Nav_Details); if (t.Nav_Flow != null && t.Nav_Flow.Any()) flows.AddRange(t.Nav_Flow); if (t.Nav_Measure != null && t.Nav_Measure.Any()) measures.AddRange(t.Nav_Measure); }); } if (jobs != null && jobs.Any()) { jobs.ForEach(t => { if (t.Nav_SafeConfirms != null && t.Nav_SafeConfirms.Any()) jobDetails.AddRange(t.Nav_SafeConfirms); if (t.Nav_SafeMeasures != null && t.Nav_SafeMeasures.Any()) jobFlows.AddRange(t.Nav_SafeMeasures); if (t.Nav_DealMeasures != null && t.Nav_DealMeasures.Any()) jobMeasures.AddRange(t.Nav_DealMeasures); }); } UnifiedCommit(() => { if (currUsers != null && currUsers.Any() && task != null) { BantchUpdateEntityNoCommit(currUsers, "DEAL_STATUS", "MODIFY_TIME"); UpdateEntityNoCommit(task); } if (model != null) { UpdateEntityNoCommit(model, "PRE_MEETING_STATUS", "IS_RUN"); } if (eventRecords != null && eventRecords.Any()) BantchSaveEntityNoCommit(eventRecords); if (jobs != null && jobs.Any()) BantchSaveEntityNoCommit(jobs); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); if (persons != null && persons.Any()) { persons = persons.Where(t => t.USER_ID != null && !t.IS_DELETED).ToList(); this.BantchSaveEntityNoCommit(persons); } if (details != null && details.Any()) this.BantchSaveEntityNoCommit(details); if (flows != null && flows.Any()) this.BantchSaveEntityNoCommit(flows); if (measures != null && measures.Any()) this.BantchSaveEntityNoCommit(measures); if (jobDetails != null && jobDetails.Any()) this.BantchSaveEntityNoCommit(jobDetails); if (jobFlows != null && jobFlows.Any()) this.BantchSaveEntityNoCommit(jobFlows); if (jobMeasures != null && jobMeasures.Any()) this.BantchSaveEntityNoCommit(jobMeasures); }); return true; }); } /// /// 返回作业活动记录和关键许可工作票 /// private void GetAutoNext(T_FO_PRE_SHIFT_MEETING_RECORD model, List modelUsers, ref List eventRecords, ref List jobs, ref List notices) { //取排班中所有人 if (model != null && modelUsers != null && modelUsers.Any()) { model.ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; //人员 var userIds = modelUsers.Select(t => t.USER_ID).ToList(); //找出所有岗位 var users = this.GetEntities(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userIds.Contains(t.ID), new BaseFilter(model.ORG_ID), "Nav_Person"); var postionIds = users.Where(x => x.Nav_Person.POST_ID != null).Select(t => t.Nav_Person.POST_ID).Distinct().ToList(); if (postionIds.Any()) { //岗位对应的作业环节ID var links = this.GetEntities(t => postionIds.Contains(t.POST_ID), new BaseFilter(model.ORG_ID), "Nav_OperationLink").ToList(); var linkIds = links.Select(m => m.OPERATION_LINK_ID).Distinct().ToList(); //作业库中取作业环节(周期为每日作业) var operationTemps = this.GetEntities(t => linkIds.Contains(t.ID) && t.STATUS == (int)STATUSEnum.启用 && t.CYCLE_TYPE == HMCycleTypeEnum.Day, new BaseFilter(model.ORG_ID), new string[] { "Nav_WorkPermitType", "Nav_OperationStep", "Nav_SafeConfirms", "Nav_SafeMeasures", "Nav_DealMeasures" }).Distinct().ToList(); var operations = operationTemps.Where(x => x.Nav_OperationStep != null).GroupBy(t => new { t.Nav_OperationStep.NAME }).Select(w => w.OrderBy(m => m.CREATE_TIME).FirstOrDefault()).Distinct().ToList(); if (operations != null && operations.Any()) { //岗位对应多个作业环节 foreach (var postId in postionIds) { var linkId = links.Where(t => t.POST_ID == postId).Select(m => m.OPERATION_LINK_ID).Distinct().ToList(); var operation = operations.Where(t => linkId.Contains(t.ID)).Distinct().ToList(); //多个作业环节判断关键许可一般 if (operation != null && operation.Any()) { //许可作业、非许可的关键任务 var crucialAndLicenses = operation.Where(t => (t.Nav_WorkPermitType != null && t.Nav_WorkPermitType.NAME != "无") || (t.Nav_WorkPermitType != null && t.Nav_WorkPermitType.NAME == "无" && t.IS_IMPORTANT == (int)ISImportantEnum.是)).ToList(); //非许可非关键的一般任务 var ordinarys = operation.Where(t => (t.Nav_WorkPermitType == null || (t.Nav_WorkPermitType != null && t.Nav_WorkPermitType.NAME == "无")) && t.IS_IMPORTANT == (int)ISImportantEnum.否).Distinct().ToList(); //触发关键许可作业票 if (crucialAndLicenses != null && crucialAndLicenses.Any()) { //通知到该岗位的所有人 var noticesUserIds = users.Where(t => t.Nav_Person.POST_ID == postId).Select(m => m.ID).Distinct().ToList(); var UserNames = new List(); var user = users.Where(t => noticesUserIds.Contains(t.ID)); foreach (var u in noticesUserIds) { var current = user.FirstOrDefault(t => t.ID == u); UserNames.Add(current?.NAME); } //触发关键许可作业票 List job = InsertJob(model, crucialAndLicenses); if (job != null && job.Any()) { //发消息 List notice = new List(); //发消息 job.ForEach(t => { if (t.OPERATION_STEP_ID != null) { var noticeTemp = NotificationTaskService.InsertUserNoticeTaskModels("关键许可作业票-" + t.Nav_OperationStep?.NAME + "(" + model.MEETING_TIME.Date.ToString("yyyyMMdd") + ")", t.ID, model.ORG_ID, noticesUserIds, UserNames, DateTime.Now, model.END_TIME, (int)FMNoticeTypeEnum.消息, "FO017"); notice.AddRange(noticeTemp); t.Nav_OperationStep = null; } }); notices.AddRange(notice); jobs.AddRange(job); } } if (ordinarys != null && ordinarys.Any()) { //通知到该岗位的所有人 var noticesUserIds = users.Where(t => t.Nav_Person.POST_ID == postId).Select(m => m.ID).Distinct().ToList(); var UserNames = new List(); var user = users.Where(t => noticesUserIds.Contains(t.ID)); foreach (var u in noticesUserIds) { var current = user.FirstOrDefault(t => t.ID == u); UserNames.Add(current?.NAME); } //触发一般作业活动记录表 List eventRecord = InsertEventRecord(model, ordinarys, noticesUserIds); if (eventRecord != null && eventRecord.Any()) { List notice = new List(); //发消息 eventRecord.ForEach(t => { if (t.OPERATION_STEP_ID != null) { var noticeTemp = NotificationTaskService.InsertUserNoticeTaskModels("作业活动记录表(一般作业)-" + t.Nav_OperationStep?.NAME + "(" + model.MEETING_TIME.Date.ToString("yyyyMMdd") + ")", t.ID, model.ORG_ID, noticesUserIds, UserNames, DateTime.Now, model.END_TIME, (int)FMNoticeTypeEnum.消息, "FO015"); notice.AddRange(noticeTemp); t.Nav_OperationStep = null; } }); notices.AddRange(notice); eventRecords.AddRange(eventRecord); } } } } } } } } /// /// 作业活动记录表(一般) /// /// /// private List InsertEventRecord(T_FO_PRE_SHIFT_MEETING_RECORD entity, List operations, List noticesUserIds) { var records = new List(); if (operations != null && operations.Any()) { //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.一般作业活动记录表编号; sysFilter.Count = operations.Count; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); var index = 0; foreach (var stepName in operations) { //var operationFirst = operations.FirstOrDefault(t => t.Nav_SafeConfirms.Count > 0 && t.Nav_SafeMeasures.Count > 0 && t.Nav_DealMeasures.Count > 0); T_FO_JOB_EVENT_RECORD record = new T_FO_JOB_EVENT_RECORD(); //主表 record.CODE = codeList[index]; record.ORG_ID = entity.ORG_ID; record.OPERATION_STEP_ID = stepName?.OPERATION_STEP_ID; record.Nav_OperationStep = stepName?.Nav_OperationStep; record.SHIFT_MEETING_RECORD_ID = entity.ID; record.JOB_DATE = entity.START_TIME + "-" + entity.END_TIME; //作业人员表 if (noticesUserIds != null && noticesUserIds.Any()) { record.Nav_JobEventPerson = new List(); noticesUserIds.ForEach(t => { T_FO_JOB_EVENT_PERSON person = new T_FO_JOB_EVENT_PERSON(); person.USER_ID = t; person.JOB_EVENT_RECORD_ID = record.ID; person.ORG_ID = entity.ORG_ID; record.Nav_JobEventPerson.Add(person); }); } //作业前安全确认 if (stepName != null && stepName.Nav_SafeConfirms != null && stepName.Nav_SafeConfirms.Any()) { record.Nav_Details = new List(); stepName.Nav_SafeConfirms.ForEach(t => { T_FO_JOB_EVENT_DETAIL detail = new T_FO_JOB_EVENT_DETAIL(); detail.JOB_EVENT_RECORD_ID = record.ID; detail.SafeConfirmsStr = t.NAME; detail.IS_CONFIRM = false; detail.ORG_ID = t.ORG_ID; detail.NUM = t.NUM; record.Nav_Details.Add(detail); }); } //作业流程及安全措施 if (stepName != null && stepName.Nav_SafeMeasures != null && stepName.Nav_SafeMeasures.Any()) { record.Nav_Flow = new List(); stepName.Nav_SafeMeasures.ForEach(t => { T_FO_JOB_EVENT_FLOW detail = new T_FO_JOB_EVENT_FLOW(); detail.JOB_EVENT_RECORD_ID = record.ID; detail.SafeMeasuresStr = t.NAME; detail.IS_CONFIRM = false; detail.ORG_ID = t.ORG_ID; detail.NUM = t.NUM; record.Nav_Flow.Add(detail); }); } //作业后处理措施 if (stepName != null && stepName.Nav_DealMeasures != null && stepName.Nav_DealMeasures.Any()) { record.Nav_Measure = new List(); stepName.Nav_DealMeasures.ForEach(t => { T_FO_JOB_EVENT_MEASURE detail = new T_FO_JOB_EVENT_MEASURE(); detail.JOB_EVENT_RECORD_ID = record.ID; detail.DealMeasuresStr = t.NAME; detail.IS_CONFIRM = false; detail.ORG_ID = t.ORG_ID; detail.NUM = t.NUM; record.Nav_Measure.Add(detail); }); } records.Add(record); index++; } } return records; } /// /// 关键许可作业票 /// /// /// private List InsertJob(T_FO_PRE_SHIFT_MEETING_RECORD entity, List operations) { var jobs = new List(); if (operations != null && operations.Any()) { //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.关键许可作业票编号; sysFilter.Count = operations.Count; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var codeList = codes.Split(new char[] { ',' }); var index = 0; foreach (var operation in operations) { T_FO_CRUCIAL_LICENSE_JOB job = new T_FO_CRUCIAL_LICENSE_JOB(); //主表 job.CODE = codeList[index]; job.ORG_ID = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; job.APPLY_USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; job.SHIFT_MEETING_RECORD_ID = entity.ID; job.IS_AUTO = (int)ISImportantEnum.是; job.OPERATION_STEP_ID = operation?.OPERATION_STEP_ID; job.Nav_OperationStep = operation?.Nav_OperationStep; job.AUDIT_LEVEL = operation.AUDIT_LEVEL; //作业前安全确认 if (operation != null && operation.Nav_SafeConfirms != null && operation.Nav_SafeConfirms.Any()) { job.Nav_SafeConfirms = new List(); operation.Nav_SafeConfirms.ForEach(t => { T_FO_CRUCIAL_LICENSE_SAFE_CONFIRM detail = new T_FO_CRUCIAL_LICENSE_SAFE_CONFIRM(); detail.CRUCIAL_LICENSE_JOB_ID = job.ID; detail.NAME = t.NAME; detail.ORG_ID = t.ORG_ID; detail.NUM = t.NUM; job.Nav_SafeConfirms.Add(detail); }); } //作业流程及安全措施 if (operation != null && operation.Nav_SafeMeasures != null && operation.Nav_SafeMeasures.Any()) { job.Nav_SafeMeasures = new List(); operation.Nav_SafeMeasures.ForEach(t => { T_FO_CRUCIAL_LICENSE_SAFE_MEASURE detail = new T_FO_CRUCIAL_LICENSE_SAFE_MEASURE(); detail.CRUCIAL_LICENSE_JOB_ID = job.ID; detail.NAME = t.NAME; detail.ORG_ID = t.ORG_ID; detail.NUM = t.NUM; job.Nav_SafeMeasures.Add(detail); }); } //作业后处理措施 if (operation != null && operation.Nav_DealMeasures != null && operation.Nav_DealMeasures.Any()) { job.Nav_DealMeasures = new List(); operation.Nav_DealMeasures.ForEach(t => { T_FO_CRUCIAL_LICENSE_DEAL_MEASURE detail = new T_FO_CRUCIAL_LICENSE_DEAL_MEASURE(); detail.CRUCIAL_LICENSE_JOB_ID = job.ID; detail.NAME = t.NAME; detail.ORG_ID = t.ORG_ID; detail.NUM = t.NUM; job.Nav_DealMeasures.Add(detail); }); } jobs.Add(job); index++; } } return jobs; } /// /// 排序分页查询数据 /// /// 分页过滤实体 /// [HttpPost, Route("OrderPaged")] public PagedActionResult OrderPaged([FromBody] KeywordPageFilter pageFilter) { pageFilter.IgnoreDataRule = true; pageFilter.Include.Add("Nav_Team"); pageFilter.Include.Add("Nav_Users.Nav_User"); var result = new PagedActionResult(); var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; var admiId = this.GetEntity(t => t.CODE.Contains("admin") && t.ENABLE_STATUS == 0)?.ID; var currDep = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.Value; var AH = GetEntity(t => t.Nav_ApproveRole != null && (t.Nav_ApproveRole.NAME == "安环部负责人" || t.Nav_ApproveRole.NAME == "安环部安全员")); Guid? AHDepartment = Guid.Empty; var departInfo = GetEntity(t => t.ID == currDep && t.ENABLE_STATUS == 0); Expression> express = t => t.IS_DELETED==false; if (!string.IsNullOrEmpty(pageFilter.Parameter1)) { express = express.And(t => t.Nav_Users.Any(i =>i.Nav_User!=null && i.Nav_User.NAME.Contains(pageFilter.Parameter1))); } if (AH != null) { AHDepartment = AH.DEPARTMENT_ID; } if (loginUserId == null || loginUserId == admiId || currDep == AHDepartment) { result = this.GetOrderPageEntities(express, pageFilter); } else if (departInfo!=null && (departInfo.NAME.Contains("安环科")|| departInfo.NAME.Contains("安全环保")) && departInfo.PARENT_ID!=null) { List departmentId = new List(); departmentId.Add((Guid)departInfo.PARENT_ID); List departmentIds = new List() { (Guid)departInfo.PARENT_ID }; DepartmentService.GetDepartmentIds(pageFilter.OrgId.Value, departmentId, ref departmentIds); if (departmentIds != null && departmentIds.Any()) { express = express.And(t => t.Nav_Team != null && departmentIds.Contains((Guid)t.Nav_Team.DEPARTMENT_ID)); result = this.GetOrderPageEntities(express, pageFilter);//|| dataIds.Contains(t.ID) } else result.Data = null; } else { var loginDepartmentId = this.GetEntity(t => t.ID == loginUserId && t.ENABLE_STATUS == 0)?.DEPARTMENT_ID; List departmentId = new List(); departmentId.Add((Guid)loginDepartmentId); List departmentIds = new List() { (Guid)loginDepartmentId }; DepartmentService.GetDepartmentIds(pageFilter.OrgId.Value, departmentId, ref departmentIds); if (departmentIds != null && departmentIds.Any()) { express = express.And(t => t.Nav_Team != null && departmentIds.Contains((Guid)t.Nav_Team.DEPARTMENT_ID)); result = this.GetOrderPageEntities(express, pageFilter);//|| dataIds.Contains(t.ID) } else result.Data = null; } return result; } } }