using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.SC.PE; using APT.MS.Domain.Enums; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Linq; namespace APT.SC.WebApi.Controllers.Api.PEController { /// /// 年度安全绩效监测计划 /// [Route("api/PE/PESafetyMonitorPlan")] public partial class SafetyMonitorPlanController : AuthorizeApiController { IPFCodeRuleService CodeRuleService { get; set; } IFMNotificationTaskService NotificationTaskService { get; set; } IFMFlowPermitService MFlowPermitService { get; set; } IPFApproveCallBackService ApproveCallBackService { get; set; } /// /// /// /// public SafetyMonitorPlanController(IPFCodeRuleService codeRuleService, IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService) { CodeRuleService = codeRuleService; NotificationTaskService = notificationTaskService; MFlowPermitService = mFlowPermitService; ApproveCallBackService = approveCallBackService; } /// /// 新增/编辑 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_PE_SAFETY_MONITOR_PLAN entity) { return SafeExecute(() => { var details = entity.Nav_Details; entity.STATUS = PFStandardStatus.Draft; var loginUserId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; entity.USER_ID = loginUserId; //var department = this.GetEntity(t => t.ID == loginUserId.Value && t.ENABLE_STATUS == 0, "Nav_Department"); entity.DEPARTMENT_ID = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID; List notices = new List(); T_FM_NOTIFICATION_TASK task = null; if (details != null && details.Any()) { details.ForEach(t => { //if (t.ASSESSMENT_CYCLE == PTAssessmentCycleNewEnums.Day) // this.ThrowError("040051"); t.ORG_ID = entity.ORG_ID; t.SAFETY_MONITOR_PLAN_ID = entity.ID; }); } if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { entity.STATUS = PFStandardStatus.Approving; entity.Nav_Details = null; //取审批流水码 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[] { ',' }); MFlowPermitService.InsertApprove(serialCode[0], "PE019", "", entity.ID, "PE019_SHOWPRINT", entity.TaskID, true, () => { if (entity != null) this.UpdateEntityNoCommit(entity); if (details != null && details.Any()) this.BantchSaveEntityNoCommit(details); if (task != null) this.UpdateEntityNoCommit(task); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); }, null, null, null, null, null, "PE019_SHOWPRINT", null); return true; //if (entity.TaskID != Guid.Empty) //{ // task = NotificationTaskService.GetTaskFinishModel(entity.TaskID); //} } entity.Nav_Details = null; UnifiedCommit(() => { if (entity != null) this.UpdateEntityNoCommit(entity); if (details != null && details.Any()) this.BantchSaveEntityNoCommit(details); if (task != null) this.UpdateEntityNoCommit(task); if (notices != null && notices.Any()) this.BantchSaveEntityNoCommit(notices); }); return true; }); } /// /// 获取 /// /// /// [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("030017"); var result = this.GetEntity(id, new string[] {"Nav_User", "Nav_Department","Nav_ProductionUnit", "Nav_Details","Nav_Details.Nav_Department","Nav_Details.Nav_Project","Nav_Details.Nav_User"}); return result; }); } /// /// 回调函数 /// /// /// [HttpGet, Route("BackUpdate")] public JsonActionResult BackUpdate(string id) { return SafeExecute(() => { return ApproveCallBackService.CallBack("PE/PESafetyMonitorPlan/BackUpdate", id); }); } /// /// 获取 /// /// /// [HttpPost, Route("GetRecordEdit")] public JsonActionResult GetRecordEdit([FromBody] KeywordFilter filter) { return SafeExecute(() => { var id = filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID").Value.ToString(); if (string.IsNullOrEmpty(id)) this.ThrowError("030017"); var record = this.GetEntity(id); var result = new T_PE_SAFETY_MONITOR_PLAN(); if (record != null) { result = this.GetEntity(t=>t.ID == record.SAFETY_MONITOR_PLAN_ID, new string[] {"Nav_User", "Nav_Department","Nav_ProductionUnit", "Nav_Details","Nav_Details.Nav_Department","Nav_Details.Nav_Project","Nav_Details.Nav_User"}); if (result != null && result.Nav_Details != null && result.Nav_Details.Any()) { var records = this.GetEntities(t => t.SAFETY_MONITOR_PLAN_ID == result.ID && t.ASSESSMENT_CYCLE == record.ASSESSMENT_CYCLE, new BaseFilter(result.ORG_ID), "Nav_Details", "Nav_MonitorUser.Nav_User").ToList(); result.Nav_Details = result.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == record.ASSESSMENT_CYCLE).ToList(); if (result.Nav_Details != null && result.Nav_Details.Any()) { foreach (var item in result.Nav_Details) { var temp = records.FirstOrDefault(t => t.USER_ID == item.USER_ID); if (temp != null && temp.Nav_Details != null && temp.Nav_Details.Any()) { var first = temp.Nav_Details.FirstOrDefault(t => t.PROJECT_ID == item.PROJECT_ID && t.CONTENTS == item.CONTENTS && t.STANDARD == item.STANDARD && t.METHOD == item.METHOD); item.MONITOR_LIVE = first?.MONITOR_LIVE; item.RESULT_DISCUSS = first?.RESULT_DISCUSS; } if (temp != null && temp.Nav_MonitorUser != null && temp.Nav_MonitorUser.Any()) { item.Nav_MonitorUser = temp.Nav_MonitorUser; } } } } } return result; }); } } }