using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices; using APT.BaseData.Domain.IServices.AE; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.AE; using APT.MS.Domain.Entities.TI; using APT.MS.Domain.Enums; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; namespace APT.SC.WebApi.Controllers.Api.AE { [Route("api/AE/AEAccidentEventReport")] public class AEAccidentEventReportController : AuthorizeApiController { IFMFlowPermitService MFlowPermitService { get; set; } IPFApproveCallBackService ApproveCallBackService { get; set; } IAEAccidentEventReportService AccidentEventReportService { get; set; } public AEAccidentEventReportController(IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IAEAccidentEventReportService accidentEventReportService) { MFlowPermitService = mFlowPermitService; ApproveCallBackService = approveCallBackService; AccidentEventReportService = accidentEventReportService; } /// /// 事故事件上报 修改 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_AE_ACCIDENT_EVENT_REPORT entity) { return SafeExecute(() => { if (entity.STATUS != PFStandardStatus.Draft && entity.STATUS != PFStandardStatus.Approving) { throw new Exception("获取操作方式有误!"); } var loginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; if (entity.CREATE_TIME.HasValue && entity.CREATE_TIME < DateTime.Now && entity.USER_ID.Value != loginID.Value) { throw new Exception("此上报单不是您添加的,操作失败!"); } var files = entity.Nav_Files;//附件 entity.Nav_Files = null; var ListAccidentListKind = entity.Nav_ListAccidentListKind; entity.Nav_ListAccidentListKind = null; if (ListAccidentListKind != null && ListAccidentListKind.Count > 0) { foreach (var item in ListAccidentListKind) { item.Nav_AccidentKind = null; } } if (entity.STATUS == PFStandardStatus.Draft) { this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); //事故事件上报 if (ListAccidentListKind != null && ListAccidentListKind.Any())//事故种类 BantchSaveEntityNoCommit(ListAccidentListKind); if (files != null && files.Any())//事故现场 BantchSaveEntityNoCommit(files); }); } else { if (string.IsNullOrEmpty(entity.NAME)) { throw new Exception("请输入事故名称!"); } if (entity.TIME == null) { throw new Exception("请选择事故时间!"); } if (string.IsNullOrEmpty(entity.ACCIDENT_PLACE)) { throw new Exception("请输入事故地点!"); } if (ListAccidentListKind == null) { throw new Exception("请选择事故种类!"); } if (entity.ACCIDENT_TYPE_ID == null) { throw new Exception("请选择事故类型!"); } if (!entity.ACCIDENT_LEVEL.HasValue) { throw new Exception("请选择事故等级!"); } if (entity.DEPARTMENT_ID == null) { throw new Exception("请选择事故部门!"); } if (entity.USER_ID == null) { throw new Exception("请选择发起人!"); } if (string.IsNullOrEmpty(entity.ACCIDENT_REASON)) { throw new Exception("请输入事故起因!"); } if (!entity.ECONOMIC_LOSSES.HasValue) { throw new Exception("请输入直接经济损失(元)!"); } if (string.IsNullOrEmpty(entity.IMPACT_SCOPE)) { throw new Exception("请输入波及范围!"); } if (string.IsNullOrEmpty(entity.TAKE_MEASURES)) { throw new Exception("请输入已采取措施!"); } //审批 entity.APPROVE_ID = Guid.NewGuid(); string param = AccidentEventReportService.GetApproveParm(entity); //string.Empty; //switch (entity.ACCIDENT_LEVEL) //{ // case AEAccidentLevel.Jumbo: // case AEAccidentLevel.Major: // case AEAccidentLevel.Larger: // case AEAccidentLevel.General: // case AEAccidentLevel.SeriouslyInjured: // param = "1_2_3_4_5"; // break; // case AEAccidentLevel.MinorJuries: // param = "6"; // break; // case AEAccidentLevel.Aminor: // param = "7"; // break; // case AEAccidentLevel.Risk: // if (entity.ECONOMIC_LOSSES.HasValue && entity.ECONOMIC_LOSSES.Value >= 5000) // { // param = "8>=5000"; // } // else // { // param = "8<5000"; // } // break; // default: // break; //} Guid userID = Guid.Empty; //事故部门 负责人 var dep = GetEntity(entity.DEPARTMENT_ID.Value); if (dep.USER_ID != null && dep.USER_ID != Guid.Empty) { userID = dep.USER_ID.Value; } else { var user = GetEntity(e => e.DEPARTMENT_ID == entity.DEPARTMENT_ID); if (user == null) { throw new Exception("未找到该事故部门成员!"); } userID = user.ID; } MFlowPermitService.InsertApprove("", "AE006", param, entity.ID, "AE006_SHOWPRINT", entity.TaskID, true, () => { if (entity != null) UpdateEntityNoCommit(entity); //事故事件上报 if (ListAccidentListKind != null && ListAccidentListKind.Any())//事故种类 BantchSaveEntityNoCommit(ListAccidentListKind); if (files != null && files.Any())//事故现场 BantchSaveEntityNoCommit(files); }, entity.APPROVE_ID, userID, null, null, null, null, null); } return true; }); } /// /// 会议通知发布审批回调 /// /// /// [HttpGet, Route("EventBack")] public JsonActionResult RecordBack(string id) { return SafeExecute(() => { return ApproveCallBackService.CallBack("AE/AEAccidentEventReport/EventBack", id); }); } /// /// 获得单条实体数据(添加限制结束时间) /// /// 过滤实体 /// [HttpPost, Route("LibGet")] public JsonActionResult LibGet([FromBody] KeywordFilter filter) { return SafeExecute(() => { Guid ID = Guid.Empty; if (filter.FilterGroup.Rules.Count > 0) { foreach (var item in filter.FilterGroup.Rules) { if (item.Field == "ID") { ID = new Guid(item.Value.ToString()); break; } } } if (ID == Guid.Empty) { return null; } //事故事件上报 var Report = GetEntity(e => e.ID == ID, new string[] { "Nav_AccidentType", "Nav_Department", "Nav_User", "Nav_ListAccidentListKind.Nav_AccidentKind" }); //事故事件调查结果 T_AE_ACCIDENT_EVENT_SURVEY_RESULT SurveyResult = GetEntity(e => e.REPORT_ID == ID && e.STATUS == PFStandardStatus.Archived, new string[] { "Nav_ListSurveyDamageObject.Nav_DamageObject", "Nav_FilesSurvey.Nav_ImgFile", "Nav_FilesP.Nav_ImgFile" }); if (SurveyResult != null) { //事故事件原因 SurveyResult.Nav_ListReason = GetEntities(e => e.RESULT_ID == SurveyResult.ID, null, new string[] { "Nav_ListReasonType.Nav_ReasonType" }).ToList(); //调查取证资料 SurveyResult.Nav_ListForensics = GetEntities(e => e.RESULT_ID == SurveyResult.ID, null, new string[] { "Nav_FilesSurvey.Nav_ImgFile" }).ToList(); //人员伤亡信息 SurveyResult.Nav_ListCasualties = GetEntities(e => e.RESULT_ID == SurveyResult.ID, null, new string[] { "Nav_User" }).ToList(); if (SurveyResult.Nav_ListCasualties != null && SurveyResult.Nav_ListCasualties.Any()) { //工伤理赔信息 var listClaimRecord = GetEntities(e => e.ACCIDENT_ID == ID && e.STATUS == PFStandardStatus.Archived, null, new string[] { "Nav_Files.Nav_ImgFile" }); if (listClaimRecord != null && listClaimRecord.Any()) { foreach (var item in SurveyResult.Nav_ListCasualties) { var claimRecord = listClaimRecord.FirstOrDefault(e => e.USER_ID == item.USER_ID); if (claimRecord != null) { item.Nav_ClaimRecord = claimRecord; } } } } //设备设施损失信息 SurveyResult.Nav_ListEquipmentLoss = GetEntities(e => e.RESULT_ID == SurveyResult.ID, null, new string[] { "Nav_Equipment", "Nav_Facilities", "Nav_User" }).ToList(); //事故事件处罚 SurveyResult.Nav_ListAdmPunishment = GetEntities(e => e.RESULT_ID == SurveyResult.ID, null, new string[] { "Nav_Department", "Nav_User" }).ToList(); } LibView result = new LibView(); result.Report = Report;//事故事件上报 result.Result = SurveyResult;//事故事件调查结果 return result; }); } } /// /// 事故事件库明细查看 /// public class LibView { /// /// 事故事件上报 /// public T_AE_ACCIDENT_EVENT_REPORT Report { get; set; } /// /// 事故事件调查结果 /// public T_AE_ACCIDENT_EVENT_SURVEY_RESULT Result { get; set; } ///// ///// 工伤保险理赔信息记录 ///// //public ICollection ListClaimRecord { get; set; } } }