using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.IServices; using APT.BaseData.Domain.IServices.FM; using APT.BaseData.Services.DomainServices; using APT.BaseData.Services.Services.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.FO; using APT.MS.Domain.Entities.HM; using APT.MS.Domain.Enums; using APT.Utility; using IdentityModel; using Microsoft.AspNetCore.Mvc; using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Linq; namespace APT.FO.WebApi.Controllers { /// /// 作业活动记录(一般) /// [Route("api/FO/FOJobEventRecord")] public partial class JobEventRecordController : AuthorizeApiController { IFMFlowPermitService MFlowPermitService { get; set; } IPFCodeRuleService CodeRuleService { get; set; } IFMNotificationTaskService NotificationTaskService { get; set; } IPFApproveCallBackService ApproveCallBackService { get; set; } IFMDepartmentService DepartmentService { get; set; } /// /// FOPreOperSch /// /// public JobEventRecordController(IPFCodeRuleService codeRuleService, IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IFMDepartmentService departmentService) { CodeRuleService = codeRuleService; NotificationTaskService = notificationTaskService; MFlowPermitService = mFlowPermitService; ApproveCallBackService = approveCallBackService; DepartmentService = departmentService; } /// /// 获取 /// /// /// [HttpPost, Route("GetEditOld")] public JsonActionResult GetEditOld([FromBody] KeywordFilter filter) { return SafeExecute(() => { //filter.Include.Clear(); //filter.Include.Add("Nav_CreateUser"); //filter.Include.Add("Nav_OperationStep"); //filter.Include.Add("Nav_JobEventPerson"); //filter.Include.Add("Nav_JobEventPerson.Nav_User"); //filter.Include.Add("Nav_JobEventPerson.Nav_User.Nav_Department"); //filter.Include.Add("Nav_Details"); //filter.Include.Add("Nav_Details.Nav_Files"); //filter.Include.Add("Nav_Details.Nav_Files.Nav_ImgFile"); //filter.Include.Add("Nav_Details.Nav_Files.Nav_ImgFile"); //filter.Include.Add("Nav_Flow"); //filter.Include.Add("Nav_Flow.Nav_Files"); //filter.Include.Add("Nav_Flow.Nav_Files.Nav_ImgFile"); //filter.Include.Add("Nav_Flow.Nav_Files.Nav_ImgFile"); //filter.Include.Add("Nav_Measure"); //filter.Include.Add("Nav_Measure.Nav_Files"); //filter.Include.Add("Nav_Measure.Nav_Files.Nav_ImgFile"); //filter.Include.Add("Nav_Measure.Nav_Files.Nav_ImgFile"); //return WitEntity(null, filter); var id = filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID").Value.ToString(); if (string.IsNullOrEmpty(id)) this.ThrowError("060010"); var result = this.GetEntity(id, new string[] { "Nav_CreateUser", "Nav_OperationStep", "Nav_JobEventPerson","Nav_JobEventPerson.Nav_User","Nav_JobEventPerson.Nav_User.Nav_Department","Nav_Details", "Nav_Details.Nav_Files","Nav_Details.Nav_Files.Nav_ImgFile","Nav_Details.Nav_Files.Nav_ImgFile", "Nav_Flow","Nav_Flow.Nav_Files","Nav_Flow.Nav_Files.Nav_ImgFile","Nav_Flow.Nav_Files.Nav_ImgFile", "Nav_Measure","Nav_Measure.Nav_Files","Nav_Measure.Nav_Files.Nav_ImgFile","Nav_Measure.Nav_Files.Nav_ImgFile"}); if (result != null) { if (result.FORM_STATUS == (int)FOTeamActivityState.已驳回) { result.CONTEXT = ApproveCallBackService.RejectContent(result.ID); } if (result.Nav_Details != null && result.Nav_Details.Any()) result.Nav_Details = result.Nav_Details.OrderBy(t => t.NUM).ThenBy(m => m.SafeConfirmsStr).ToList(); if (result.Nav_Flow != null && result.Nav_Flow.Any()) result.Nav_Flow = result.Nav_Flow.OrderBy(t => t.NUM).ThenBy(m => m.SafeMeasuresStr).ToList(); if (result.Nav_Measure != null && result.Nav_Measure.Any()) result.Nav_Measure = result.Nav_Measure.OrderBy(t => t.NUM).ThenBy(m => m.DealMeasuresStr).ToList(); } return result; }); } /// /// 获取 /// /// /// [HttpPost, Route("GetEdit")] public JsonActionResult GetEdit([FromBody] KeywordFilter filter) { return SafeExecute(() => { var id = filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID").Value.ToString(); if (string.IsNullOrEmpty(id)) this.ThrowError("060010"); // var result = this.GetEntity(id, new string[] { "Nav_CreateUser", "Nav_OperationStep", //"Nav_JobEventPerson","Nav_JobEventPerson.Nav_User","Nav_JobEventPerson.Nav_User.Nav_Department","Nav_Details", // "Nav_Details.Nav_Files","Nav_Details.Nav_Files.Nav_ImgFile","Nav_Details.Nav_Files.Nav_ImgFile", //"Nav_Flow","Nav_Flow.Nav_Files","Nav_Flow.Nav_Files.Nav_ImgFile","Nav_Flow.Nav_Files.Nav_ImgFile", // "Nav_Measure","Nav_Measure.Nav_Files","Nav_Measure.Nav_Files.Nav_ImgFile","Nav_Measure.Nav_Files.Nav_ImgFile"}); var entity = this.GetEntity(id, "Nav_CreateUser", "Nav_CreateUser.Nav_Department", "Nav_OperationStep"); if (entity != null) { if (entity.FORM_STATUS == (int)FOTeamActivityState.已驳回) { entity.CONTEXT = ApproveCallBackService.RejectContent(entity.ID); } var newFilter = new BaseFilter(filter.OrgId); newFilter.SelectField = new List { "ID", "DEAL_STATUS", "JOB_EVENT_RECORD_ID", "USER_ID", "Nav_User.NAME", "Nav_User.CODE", "Nav_User.FILE_PATH", "Nav_User.Nav_Department" }; var persons = this.GetEntities(t => t.JOB_EVENT_RECORD_ID == entity.ID, newFilter).ToList(); entity.Nav_JobEventPerson = persons; newFilter.SelectField = new List { "ID", "NUM", "JOB_EVENT_RECORD_ID", "SafeConfirmsStr", "IS_CONFIRM", "REMARK", "Nav_Files.Nav_ImgFile.FILE_NAME", "Nav_Files.Nav_ImgFile" }; var safeConfirms = this.GetEntities(t => t.JOB_EVENT_RECORD_ID == entity.ID, newFilter).ToList(); entity.Nav_Details = safeConfirms.OrderBy(t => t.NUM).ThenBy(m => m.SafeConfirmsStr).ToList(); newFilter.SelectField = new List { "ID", "NUM", "JOB_EVENT_RECORD_ID", "SafeMeasuresStr", "IS_CONFIRM", "REMARK", "Nav_Files.Nav_ImgFile.FILE_NAME", "Nav_Files.Nav_ImgFile" }; var safeMeasures = this.GetEntities(t => t.JOB_EVENT_RECORD_ID == entity.ID, newFilter).ToList(); entity.Nav_Flow = safeMeasures.OrderBy(t => t.NUM).ThenBy(m => m.SafeMeasuresStr).ToList(); newFilter.SelectField = new List { "ID", "NUM", "JOB_EVENT_RECORD_ID", "DealMeasuresStr", "IS_CONFIRM", "REMARK", "Nav_Files.Nav_ImgFile.FILE_NAME", "Nav_Files.Nav_ImgFile" }; var dealMeasures = this.GetEntities(t => t.JOB_EVENT_RECORD_ID == entity.ID, newFilter).ToList(); entity.Nav_Measure = dealMeasures.OrderBy(t => t.NUM).ThenBy(m => m.DealMeasuresStr).ToList(); //if (result.Nav_Details != null && result.Nav_Details.Any()) // result.Nav_Details = result.Nav_Details.OrderBy(t => t.NUM).ThenBy(m => m.SafeConfirmsStr).ToList(); //if (result.Nav_Flow != null && result.Nav_Flow.Any()) // result.Nav_Flow = result.Nav_Flow.OrderBy(t => t.NUM).ThenBy(m => m.SafeMeasuresStr).ToList(); //if (result.Nav_Measure != null && result.Nav_Measure.Any()) // result.Nav_Measure = result.Nav_Measure.OrderBy(t => t.NUM).ThenBy(m => m.DealMeasuresStr).ToList(); } return entity; }); } /// /// 新增编辑 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_FO_JOB_EVENT_RECORD entity) { return SafeExecute(() => { var record = this.GetEntity(entity.ID); if (record != null && record.SHIFT_MEETING_RECORD_ID != null) { var shiftMeeting = this.GetEntity(t => t.ID == record.SHIFT_MEETING_RECORD_ID); if (shiftMeeting != null && DateTime.Now < shiftMeeting.START_TIME) throw new Exception("作业开始时间未到,请稍后再作业!"); } List file = new List(); List flowFile = new List(); List measureFile = new List(); List fileId = new List(); List flowFileId = new List(); List measureFileId = new List(); List detailId = new List(); List flowId = new List(); List measureId = new List(); var users = entity.Nav_JobEventPerson; if (users != null && users.Any()) { users = users.Where(t => t.USER_ID != null && !t.IS_DELETED).ToList(); users.ForEach(t => { t.ORG_ID = entity.ORG_ID; t.JOB_EVENT_RECORD_ID = entity.ID; t.Nav_User = null; }); } entity.Nav_JobEventPerson = null; var details = entity.Nav_Details; entity.Nav_Details = null; var flows = entity.Nav_Flow; entity.Nav_Flow = null; var measures = entity.Nav_Measure; entity.Nav_Measure = null; var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.ToString(); var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; if (entity.TaskID != Guid.Empty) { var currTask = GetEntity(t => t.ID == entity.TaskID); if (currTask != null) { loginUserId = currTask.USER_ID; } } entity.DEPARTMENT_ID = this.GetEntity(t => t.ENABLE_STATUS == 0 && t.ID == (Guid)loginUserId)?.DEPARTMENT_ID; entity.Nav_OperationStep = null; if (details != null && details.Any()) { var noSubmit = details.FirstOrDefault(t => t.IS_DELETED == false && t.IS_CONFIRM == false); if (noSubmit != null) { throw new Exception("作业前项目未全部确认,请检查"); } detailId = this.GetEntities(t => t.JOB_EVENT_RECORD_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); fileId = this.GetEntities(t => detailId.Contains(t.T_FO_JOB_EVENT_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); details.ForEach(t => { if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify") && !t.IS_CONFIRM) { if (string.IsNullOrEmpty(t.REMARK)) { throw new Exception("未确认必须填写备注"); } else { this.ThrowError("060001"); } } t.ORG_ID = entity.ORG_ID; t.JOB_EVENT_RECORD_ID = entity.ID; if (t.Nav_Files != null && t.Nav_Files.Any()) { t.Nav_Files.ForEach(x => { x.ORG_ID = entity.ORG_ID; x.T_FO_JOB_EVENT_DETAIL_ID = t.ID; file.Add(x); }); } t.Nav_Files = null; }); } else { if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { this.ThrowError("060007"); } } if (flows != null && flows.Any()) { var noSubmit = flows.FirstOrDefault(t => t.IS_DELETED == false && t.IS_CONFIRM == false); if (noSubmit != null) { throw new Exception("作业中项目未全部确认,请检查"); } flowId = this.GetEntities(t => t.JOB_EVENT_RECORD_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); flowFileId = this.GetEntities(t => flowId.Contains(t.T_FO_JOB_EVENT_FLOW_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); flows.ForEach(t => { if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify") && !t.IS_CONFIRM) { if (string.IsNullOrEmpty(t.REMARK)) { throw new Exception("未确认必须填写备注"); } else { this.ThrowError("060003"); } } t.ORG_ID = entity.ORG_ID; t.JOB_EVENT_RECORD_ID = entity.ID; if (t.Nav_Files != null && t.Nav_Files.Any()) { t.Nav_Files.ForEach(x => { x.ORG_ID = entity.ORG_ID; x.T_FO_JOB_EVENT_FLOW_ID = t.ID; flowFile.Add(x); }); } t.Nav_Files = null; }); } else { if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { this.ThrowError("060008"); } } if (measures != null && measures.Any()) { var noSubmit = measures.FirstOrDefault(t => t.IS_DELETED == false && t.IS_CONFIRM == false); if (noSubmit != null) { throw new Exception("作业后项目未全部确认,请检查"); } measureId = this.GetEntities(t => t.JOB_EVENT_RECORD_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); measureFileId = this.GetEntities(t => measureId.Contains(t.T_FO_JOB_EVENT_MEASURE_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); measures.ForEach(t => { if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify") && !t.IS_CONFIRM) { if (string.IsNullOrEmpty(t.REMARK)) { throw new Exception("未确认必须填写备注"); } else { this.ThrowError("060005"); } } t.ORG_ID = entity.ORG_ID; t.JOB_EVENT_RECORD_ID = entity.ID; if (t.Nav_Files != null && t.Nav_Files.Any()) { t.Nav_Files.ForEach(x => { x.ORG_ID = entity.ORG_ID; x.T_FO_JOB_EVENT_MEASURE_ID = t.ID; measureFile.Add(x); }); } t.Nav_Files = null; }); } else { if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { this.ThrowError("060009"); } } var stepName = this.GetEntity(t => t.ID == entity.OPERATION_STEP_ID)?.NAME; entity.FORM_STATUS = (int)FOTeamActivityState.草稿; List notices = new List(); T_FM_NOTIFICATION_TASK task = null; if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { entity.FORM_STATUS = (int)FOTeamActivityState.已归档; DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.JobSite, entity.ORG_ID.Value, DateTime.Now, null, null); //新增的消息通知 if (users != null && users.Any()) { entity.FORM_STATUS = (int)FOTeamActivityState.签到中; users.ForEach(t => { t.ORG_ID = entity.ORG_ID; t.JOB_EVENT_RECORD_ID = entity.ID; if (t.USER_ID == loginUserId) t.DEAL_STATUS = (int)FOUserShiftStatusEnum.已处理; t.Nav_User = null; }); //将另外两人的消息更新为查看表单 var userIds = users.Where(m => m.USER_ID != null && m.USER_ID != loginUserId).Select(t => t.USER_ID.Value).Distinct().ToList(); if (userIds.Count() == 0) { //金鼎、豫鹭不审批,直接归档 if (orgId == "8b3c41aa-51b1-7ce9-1879-248a038c1b5c" || orgId == "d9871ba8-0eec-9e4a-bb87-7d5a540d8913") { entity.FORM_STATUS = (int)FOTeamActivityState.已归档; } else { entity.FORM_STATUS = (int)FOTeamActivityState.审核中; //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.审批流编码; sysFilter.Count = 1; sysFilter.OrgId = entity.ORG_ID; var codes = CodeRuleService.NewGenSerial(sysFilter); var serialCode = codes.Split(new char[] { ',' }); var departmentId = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID; var departmentType = this.GetEntity(t => t.ID == departmentId)?.DEPARTMENT_TYPE; var param = Enum.GetName(typeof(FMDepartmentType), departmentType); MFlowPermitService.InsertApprove(serialCode[0], "FO015", param, entity.ID, "FO015_SHOWPRINT", entity.TaskID, true, () => { if (entity != null) UpdateEntityNoCommit(entity); //保存主表 if (fileId != null && fileId.Any()) BantchDeleteEntityNoCommit(fileId); if (flowFileId != null && flowFileId.Any()) BantchDeleteEntityNoCommit(flowFileId); if (measureFileId != null && measureFileId.Any()) BantchDeleteEntityNoCommit(measureFileId); if (detailId != null && detailId.Any()) BantchDeleteEntityNoCommit(detailId); if (flowId != null && flowId.Any()) BantchDeleteEntityNoCommit(flowId); if (measureId != null && measureId.Any()) BantchDeleteEntityNoCommit(measureId); if (users != null && users.Any()) BantchSaveEntityNoCommit(users); //保存子表 if (details != null && details.Any()) BantchSaveEntityNoCommit(details); //保存子表 if (flows != null && flows.Any()) BantchSaveEntityNoCommit(flows); //保存子表 if (measures != null && measures.Any()) BantchSaveEntityNoCommit(measures); //保存子表 if (file != null && file.Any()) BantchSaveEntityNoCommit(file); //保存子表 if (flowFile != null && flowFile.Any()) BantchSaveEntityNoCommit(flowFile); //保存子表 if (measureFile != null && measureFile.Any()) BantchSaveEntityNoCommit(measureFile); //保存子表 }, null, null, null, null, null, "FO015_SHOWPRINT", null, "作业活动记录表(一般作业)" + stepName, FMTASKTYPE.JobSite); return true; } } else { entity.FORM_STATUS = (int)FOTeamActivityState.签到中; notices = GetEntities(t => t.SOURCE_FORMCODE == "FO015" && t.SOURCE_DATA_ID == entity.ID && t.NOTICE_STATUS == (int)FMNoticeStatusEnum.未处理 && userIds.Contains(t.USER_ID), new BaseFilter(entity.ORG_ID)).ToList(); if (notices.Count() == 0) { var UserNames = new List(); var user = this.GetEntities(t => t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && userIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)); foreach (var u in userIds) { var current = user.FirstOrDefault(t => t.ID == u); UserNames.Add(current?.NAME); } //发消息 notices = NotificationTaskService.InsertUserNoticeTaskModels(stepName + "作业活动记录表(一般作业)签到", entity.ID, entity.ORG_ID, userIds, UserNames, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "FO015_SHOWPRINT"); //throw new Exception("未找到对应待办,请联系管理员"); //entity.FORM_STATUS = (int)FOTeamActivityState.已归档; } else { foreach (var item in notices) { item.NOTICE_TITLE = item.NOTICE_TITLE + "签到"; item.SOURCE_FORMCODE = "FO015_SHOWPRINT"; } } if (entity.TaskID != Guid.Empty) { task = NotificationTaskService.GetTaskFinishModel(entity.TaskID); task.SOURCE_FORMCODE = "FO015_SHOWPRINT"; } } } if (entity.TaskID != Guid.Empty) { task = NotificationTaskService.GetTaskFinishModel(entity.TaskID); task.SOURCE_FORMCODE = "FO015_SHOWPRINT"; } //查询消息表 //task = this.GetEntity(i => i.SOURCE_DATA_ID == entity.ID && i.USER_ID == loginUserId //&& i.NOTICE_STATUS == FMNoticeStatusEnum.未处理.GetInt(), false); //if (task != null) //{ // task.TASK_DT = DateTime.Now; // task.MODIFIER_ID = loginUserId; // task.SOURCE_FORMCODE = "FO015_SHOWPRINT"; // if (DateTime.Now > task.TASK_ENDDT) // task.NOTICE_STATUS = (int)FMNoticeStatusEnum.超期办理; // else // task.NOTICE_STATUS = (int)FMNoticeStatusEnum.正常已办; //} } this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); //保存主表 if (fileId != null && fileId.Any()) BantchDeleteEntityNoCommit(fileId); if (flowFileId != null && flowFileId.Any()) BantchDeleteEntityNoCommit(flowFileId); if (measureFileId != null && measureFileId.Any()) BantchDeleteEntityNoCommit(measureFileId); if (detailId != null && detailId.Any()) BantchDeleteEntityNoCommit(detailId); if (flowId != null && flowId.Any()) BantchDeleteEntityNoCommit(flowId); if (measureId != null && measureId.Any()) BantchDeleteEntityNoCommit(measureId); if (users != null && users.Any()) BantchSaveEntityNoCommit(users); //保存子表 if (details != null && details.Any()) BantchSaveEntityNoCommit(details); //保存子表 if (flows != null && flows.Any()) BantchSaveEntityNoCommit(flows); //保存子表 if (measures != null && measures.Any()) BantchSaveEntityNoCommit(measures); //保存子表 if (file != null && file.Any()) BantchSaveEntityNoCommit(file); //保存子表 if (flowFile != null && flowFile.Any()) BantchSaveEntityNoCommit(flowFile); //保存子表 if (measureFile != null && measureFile.Any()) BantchSaveEntityNoCommit(measureFile); //保存子表 if (notices != null && notices.Any()) BantchSaveEntityNoCommit(notices); if (task != null) UpdateEntityNoCommit(task); }); return true; }); } /// /// 删除 /// /// /// [HttpGet, Route("FullDelete")] public JsonActionResult FullDelete(string id) { return SafeExecute(() => { T_FO_JOB_EVENT_RECORD entity = GetEntity(t => t.ID.ToString() == id, false, "Nav_JobEventPerson", "Nav_Details", "Nav_Details.Nav_Files", "Nav_Flow", "Nav_Flow.Nav_Files", "Nav_Measure", "Nav_Measure.Nav_Files"); List userIds = new List(); List detailIds = new List(); List fileIds = new List(); List flowIds = new List(); List flowFileIds = new List(); List measureIds = new List(); List measureFileIds = new List(); if (entity.Nav_JobEventPerson != null && entity.Nav_JobEventPerson.Any()) { var userIdList = entity.Nav_JobEventPerson.Select(t => t.ID).ToList(); userIds.AddRange(userIdList); } if (entity.Nav_Details != null && entity.Nav_Details.Any()) { var detailIdList = entity.Nav_Details.Select(t => t.ID).ToList(); detailIds.AddRange(detailIdList); entity.Nav_Details.ForEach(t => { var ids = t.Nav_Files.Select(t => t.ID).ToList(); fileIds.AddRange(ids); }); } if (entity.Nav_Flow != null && entity.Nav_Flow.Any()) { var flowIdList = entity.Nav_Flow.Select(t => t.ID).ToList(); flowIds.AddRange(flowIdList); entity.Nav_Flow.ForEach(t => { var ids = t.Nav_Files.Select(t => t.ID).ToList(); flowFileIds.AddRange(ids); }); } if (entity.Nav_Measure != null && entity.Nav_Measure.Any()) { var measureIdList = entity.Nav_Measure.Select(t => t.ID).ToList(); measureIds.AddRange(measureIdList); entity.Nav_Measure.ForEach(t => { var ids = t.Nav_Files.Select(t => t.ID).ToList(); measureFileIds.AddRange(ids); }); } UnifiedCommit(() => { if (userIds != null && userIds.Any()) this.BantchDeleteEntityNoCommit(userIds); if (detailIds != null && detailIds.Any()) this.BantchDeleteEntityNoCommit(detailIds); if (fileIds != null && fileIds.Any()) this.BantchDeleteEntityNoCommit(fileIds); if (flowIds != null && flowIds.Any()) this.BantchDeleteEntityNoCommit(flowIds); if (flowFileIds != null && flowFileIds.Any()) this.BantchDeleteEntityNoCommit(flowFileIds); if (measureIds != null && measureIds.Any()) this.BantchDeleteEntityNoCommit(measureIds); if (measureFileIds != null && measureFileIds.Any()) this.BantchDeleteEntityNoCommit(measureFileIds); if (entity != null) this.DeleteEntityNoCommit(entity); }); return true; }); } /// /// 签到同意 /// /// /// [HttpPost, Route("PersonalAgree")] public JsonActionResult PersonalAgree([FromBody] T_FO_JOB_EVENT_RECORD entity) { return SafeExecute(() => { var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; var userID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; if (entity.TaskID != Guid.Empty) { var currTask = GetEntity(t => t.ID == entity.TaskID); if (currTask != null) { userID = currTask.USER_ID; } } entity.ORG_ID = orgId; var user = this.GetEntity(t => t.JOB_EVENT_RECORD_ID == entity.ID && t.USER_ID == userID, new BaseFilter(orgId)); if (user != null) user.DEAL_STATUS = (int)FOUserShiftStatusEnum.已处理; var todoCount = this.GetCount(t => t.JOB_EVENT_RECORD_ID == entity.ID && t.DEAL_STATUS == 0, new BaseFilter(orgId)); T_FO_JOB_EVENT_RECORD model = null; T_FM_NOTIFICATION_TASK task = null; if (todoCount == 0 || todoCount == 1) { model = GetEntity(entity.ID.ToString(), "Nav_OperationStep"); if (orgId.ToString() == "8b3c41aa-51b1-7ce9-1879-248a038c1b5c" || orgId.ToString() == "d9871ba8-0eec-9e4a-bb87-7d5a540d8913")//金鼎直接归档不审批 { model.FORM_STATUS = (int)FOTeamActivityState.已归档; } else { model.FORM_STATUS = (int)FOTeamActivityState.审核中; //取审批流水码 var sysFilter = new SystemCodeFilter(); sysFilter.CodeType = (int)PFCodeRuleType.审批流编码; sysFilter.Count = 1; sysFilter.OrgId = orgId; var codes = CodeRuleService.NewGenSerial(sysFilter); var serialCode = codes.Split(new char[] { ',' }); var departmentId = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID; var departmentType = this.GetEntity(t => t.ID == departmentId)?.DEPARTMENT_TYPE; var param = Enum.GetName(typeof(FMDepartmentType), departmentType); MFlowPermitService.InsertApprove(serialCode[0], "FO015", param, entity.ID, "FO015_SHOWPRINT", entity.TaskID, true, () => { if (model != null) { model.Nav_OperationStep = null; UpdateEntityNoCommit(model); } if (user != null) this.UpdateEntityNoCommit(user); }, null, null, null, null, null, "FO015_SHOWPRINT", null, "作业活动记录表(一般作业)" + model.Nav_OperationStep?.NAME, FMTASKTYPE.JobSite); return true; } } if (entity.TaskID != Guid.Empty) { task = NotificationTaskService.GetTaskFinishModel(entity.TaskID); task.SOURCE_FORMCODE = "FO015_SHOWPRINT"; } if (model != null && model.Nav_OperationStep != null) { model.Nav_OperationStep = null; } this.UnifiedCommit(() => { if (model != null) UpdateEntityNoCommit(model); if (task != null) this.UpdateEntityNoCommit(task); if (user != null) this.UpdateEntityNoCommit(user); }); return true; }); } /// /// 回调函数 /// /// /// [HttpGet, Route("BackUpdate")] public JsonActionResult BackUpdate(string id) { return SafeExecute(() => { return ApproveCallBackService.CallBack("FO/FOJobEventRecord/BackUpdate", id); }); } /// /// 回调函数 /// /// /// [HttpPost, Route("BackUpdateNew")] public JsonActionResult BackUpdateNew([FromBody] T_PF_APPROVE entity) { return SafeExecute(() => { return ApproveCallBackService.CallBackNew("FO/FOJobEventRecord/BackUpdateNew", entity); }); } /// /// 驳回 /// /// /// [HttpPost, Route("RejectUpdate")] public JsonActionResult RejectUpdate([FromBody] T_PF_APPROVE model) { return SafeExecute(() => { //公共 获取审批流信息 T_PF_APPROVE modelApp = null; List listAppDetail = null; T_FM_NOTIFICATION_TASK taskFinish = null; string Msg = string.Empty; bool ResultGetInfo = ApproveCallBackService.GetApproject(model, ref modelApp, ref listAppDetail, ref taskFinish, ref Msg); if (!ResultGetInfo) throw new Exception("驳回失败!"); if (modelApp == null || listAppDetail == null) throw new Exception("获取驳回信息失败!"); var entity = this.GetEntity(model.DATA_ID, new string[] { "Nav_JobEventPerson.Nav_User", "Nav_CreateUser" }); entity.FORM_STATUS = (int)FOTeamActivityState.已驳回; T_FM_NOTIFICATION_TASK notice = new T_FM_NOTIFICATION_TASK(); if (entity.Nav_JobEventPerson.Any()) { //随机取一个 var user = entity.Nav_JobEventPerson.OrderBy(t => t.MODIFY_TIME).FirstOrDefault(); //发消息 notice = NotificationTaskService.InsertUserNoticeTaskModel("作业活动记录表(一般作业)已被驳回", entity.ID, entity.ORG_ID, (Guid)user.USER_ID, user.Nav_User.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "FO015"); } else { //没有作业员,驳回给创建人 notice = NotificationTaskService.InsertUserNoticeTaskModel("作业活动记录表(一般作业)已被驳回", entity.ID, entity.ORG_ID, (Guid)entity.CREATER_ID, entity.Nav_CreateUser.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "FO015"); } UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (notice != null) this.UpdateEntityNoCommit(notice); if (modelApp != null) UpdateEntityNoCommit(modelApp); if (listAppDetail != null && listAppDetail.Count > 0) BantchUpdateEntityNoCommit(listAppDetail); if (taskFinish != null) UpdateEntityNoCommit(taskFinish); }); return true; //return ApproveCallBackService.CallReject("HM/HMLicenseAnalysis/RejectUpdate", id); }); } /// /// 排序分页查询数据 /// /// 分页过滤实体 /// [HttpPost, Route("FullOrderPaged")] public PagedActionResult FullOrderPaged([FromBody] KeywordPageFilter pageFilter) { var result = new PagedActionResult(); var filter = pageFilter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "PARENT_NAME"); if (filter != null && !string.IsNullOrEmpty(filter.Value.ToString())) pageFilter.FilterGroup.Rules.Remove(filter); var loginDepartmentId = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID; var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; var loginUserCode = APT.Infrastructure.Api.AppContext.CurrentSession.UserCode; //安环部负责人departmentID var manageDepartId = this.GetEntity(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0)?.DEPARTMENT_ID; if (loginUserCode == "admin" || loginDepartmentId == manageDepartId) { result = this.GetOrderPageEntities(null, pageFilter, "Nav_CreateUser"); } else { List departmentId = new List() { loginDepartmentId.Value }; List departmentIds = new List() { loginDepartmentId.Value }; DepartmentService.GetDepartmentIds(pageFilter.OrgId.Value, departmentId, ref departmentIds); if (departmentIds != null && departmentIds.Any()) { result = this.GetOrderPageEntities(t => t.Nav_CreateUser.DEPARTMENT_ID != null && departmentIds.Contains(t.Nav_CreateUser.DEPARTMENT_ID.Value), pageFilter, "Nav_CreateUser");//|| dataIds.Contains(t.ID) } else result.Data = null; } if (result.Data.Any()) { var departments = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(pageFilter.OrgId)).ToList(); result.Data.ForEach(t => { if (t.Nav_CreateUser != null && t.Nav_CreateUser.DEPARTMENT_ID != null) { var depart = GetDEPARTMENTLevel(departments, (Guid)t.Nav_CreateUser.DEPARTMENT_ID); t.PARENT_NAME = depart?.NAME; } }); if (filter != null && !string.IsNullOrEmpty(filter.Value.ToString())) result.Data = result.Data.Where(t => t.PARENT_NAME != null && t.PARENT_NAME.Contains(filter.Value.ToString())); } return result; } public T_FM_DEPARTMENT GetDEPARTMENTLevel(List departList, Guid DepartmentID) { var department = departList.FirstOrDefault(t => t.ID == DepartmentID); if (department.DEPARTMENT_TYPE == (int)FMDepartmentType.公司) { return null; } else if (department.DEPARTMENT_TYPE == (int)FMDepartmentType.部门) { return department; } else { department = GetDEPARTMENTLevel(departList, department.PARENT_ID.Value); } return department; } } }