using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; 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.AE; using APT.MS.Domain.Entities.SC; 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/AEAccidentSurveyTeamMember")] public class AEAccidentSurveyTeamMemberController : AuthorizeApiController { IFMFlowPermitService MFlowPermitService { get; set; } //ISCMTMeetingService SCMTMeetingService { get; set; } SCMTMeetingService = scMTMeetingService;, ISCMTMeetingService scMTMeetingService IPFApproveCallBackService ApproveCallBackService { get; set; } IFMNotificationTaskService NotificActionTaskService { get; set; } public AEAccidentSurveyTeamMemberController(IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IFMNotificationTaskService notificActionTaskService) { MFlowPermitService = mFlowPermitService; ApproveCallBackService = approveCallBackService; NotificActionTaskService = notificActionTaskService; } /// /// 事故调查小组成员 修改 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_AE_ACCIDENT_SURVEY_TEAM_MEMBER entity) { return SafeExecute(() => { if (entity.STATUS != PFStandardStatus.Draft && entity.STATUS != PFStandardStatus.Archived) { throw new Exception("获取操作方式有误!"); } if (entity.TaskID == Guid.Empty) { var loginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; if (entity.CREATER_ID.Value != loginID.Value) { throw new Exception("此事故调查小组成信息不是您添加的,操作失败!"); } } var DeputyLeaderUser = entity.Nav_DeputyLeaderUser; entity.Nav_DeputyLeaderUser = null; if (DeputyLeaderUser != null && DeputyLeaderUser.Any()) { foreach (var item in DeputyLeaderUser) { item.Nav_User = null; } } var TeamMembers = entity.Nav_TeamMembers; entity.Nav_TeamMembers = null; if (TeamMembers != null && TeamMembers.Any()) { foreach (var item in TeamMembers) { item.Nav_User = null; } } if (entity.STATUS == PFStandardStatus.Draft) { this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); //事故调查小组成员 if (DeputyLeaderUser != null && DeputyLeaderUser.Any()) BantchSaveEntityNoCommit(DeputyLeaderUser); if (TeamMembers != null && TeamMembers.Any()) BantchSaveEntityNoCommit(TeamMembers); }); } else { if (entity.LEADER_USER_ID == null) { throw new Exception("请选择调查小组组长!"); } if (DeputyLeaderUser == null || !DeputyLeaderUser.Any()) { throw new Exception("请选择调查小组副组长!"); } if (TeamMembers == null || !TeamMembers.Any()) { throw new Exception("请选择调查小组组员!"); } if (entity.SURVEY_USER_ID == null) { throw new Exception("请选择调查记录人!"); } //需要处理别的逻辑 //结束待办 T_FM_NOTIFICATION_TASK task = null; if (entity.TaskID != Guid.Empty) { task = NotificActionTaskService.GetEntityTask(entity.TaskID, "AE008_SHOWPRINT"); } //提交后触发事故事件调查结果填报表给调查记录人,工作台截止时间为限制结案时间 //提交后触发今日提醒给调查记录人:消息内容:请在OA申请事故调查报告文件发布并上传至事故事件调查结果报送,消息类型:文件上传 DateTime dtEnd = DateTime.Now; #region 获取 限制结案时间 dtEnd AEAccidentLevel level = GetEntity(entity.REPORT_ID.Value).ACCIDENT_LEVEL.Value; var days = GetEntity(e => e.ACCIDENT_LEVEL == level); if (days == null) { switch (level) { case AEAccidentLevel.Jumbo: case AEAccidentLevel.Major: case AEAccidentLevel.Larger: case AEAccidentLevel.General: dtEnd = DateTime.Now.Date.AddDays(32).AddSeconds(-1); break; case AEAccidentLevel.SeriouslyInjured: dtEnd = DateTime.Now.Date.AddDays(17).AddSeconds(-1); break; case AEAccidentLevel.MinorJuries: case AEAccidentLevel.Aminor: case AEAccidentLevel.Risk: dtEnd = DateTime.Now.Date.AddDays(12).AddSeconds(-1); break; default: break; } } else { dtEnd = DateTime.Now.Date.AddDays(2 + days.DAYS).AddSeconds(-1); } #endregion #region 1、事故事件调查结果填报表 2、给调查记录人 //T_AE_ACCIDENT_EVENT_SURVEY_RESULT modelResult = new T_AE_ACCIDENT_EVENT_SURVEY_RESULT(); //modelResult.ID = Guid.NewGuid(); //modelResult.REPORT_ID = entity.REPORT_ID; //modelResult.STATUS = PFStandardStatus.Draft; //modelResult.IS_DELETED = false; //modelResult.ORG_ID = entity.ORG_ID; ////modelResult.CASUALTY_COUNT = ""; ////modelResult.ECONOMIC_LOSSES = ""; ////modelResult.ACCIDENT_COURSE = ""; ////modelResult.TIME = ""; ////modelResult.RISK_SUBMIT_ID = ""; ////modelResult.ENTITY_ORG_TPYE = ""; ////modelResult.FORM_ID = ""; ////modelResult.FLOW_STATUS = ""; ////modelResult.FLOW_SEND_STATUS = ""; ////modelResult.FLOW_ID = ""; ////modelResult.CREATE_TIME = ""; ////modelResult.MODIFY_TIME = ""; ////modelResult.CREATER_ID = ""; ////modelResult.MODIFIER_ID = ""; //string SURVEYNAME = string.Empty; //if (entity.Nav_SurveyUser != null && !string.IsNullOrEmpty(entity.Nav_SurveyUser.NAME)) //{ // SURVEYNAME = entity.Nav_SurveyUser.NAME; //} //else //{ // SURVEYNAME = GetEntity(entity.SURVEY_USER_ID.Value).NAME; //} //T_FM_NOTIFICATION_TASK taskAdd = NotificActionTaskService.InsertUserNoticeTaskModel("事故事件调查结果填报", modelResult.ID, entity.ORG_ID, entity.SURVEY_USER_ID.Value, SURVEYNAME, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "AE010"); //事故调查小组成员表 填写 给记录人 触发勘察记录表 审批通过后 再给记录人 发送 事故事件调查结果报送表 #endregion #region 流程修改 var Survery = GetEntity(e => e.ID == entity.SURVEY_USER_ID); //wyw 流程修改 231016 调查小组后 给组长触发会议 会议纪要归档后 触发 勘察记录表 #region 1、勘察记录表 2、给调查记录人 //T_AE_INVESTIGATION_RECORD modelResult = new T_AE_INVESTIGATION_RECORD(); //modelResult.ID = Guid.NewGuid(); ////modelResult.LAUNCH_TIME =; //modelResult.DEPARTMENT_ID = Survery.DEPARTMENT_ID; //modelResult.USER_ID = entity.SURVEY_USER_ID; //modelResult.ACCIDENT_ID = entity.REPORT_ID; ; //modelResult.TEAM_MEMBER_ID = entity.ID; ////modelResult.INVESTIGATION_TIME =; ////modelResult.INVESTIGATION_LOCATION =; ////modelResult.INVESTIGATION_REASON =; ////modelResult.SCENE_ENV_DESC =; ////modelResult.SCENE_DESC =; ////modelResult.SCENE_EVIDENCE_DESC =; //modelResult.STATUS = PFStandardStatus.Draft; ////modelResult.REVIEW_OK =; ////modelResult.REVIEW_COMMENT =; //modelResult.IS_DELETED = false; //modelResult.ORG_ID = entity.ORG_ID; ////modelResult.ENTITY_ORG_TPYE =; ////modelResult.FORM_ID =; ////modelResult.FLOW_STATUS =; ////modelResult.FLOW_SEND_STATUS =; ////modelResult.FLOW_ID =; ////modelResult.CREATE_TIME =; ////modelResult.MODIFY_TIME =; ////modelResult.CREATER_ID =; ////modelResult.MODIFIER_ID =; ////modelResult.LEADER_USER_ID =; ////modelResult.APPROVE_ID =; //T_FM_NOTIFICATION_TASK taskAdd = NotificActionTaskService.InsertUserNoticeTaskModel("勘察记录表", modelResult.ID, entity.ORG_ID, entity.SURVEY_USER_ID.Value, Survery.NAME, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "AE018"); #endregion //T_SC_MT_MEETING modelMT = new T_SC_MT_MEETING(); //modelMT.ID = Guid.NewGuid(); //modelMT.CODE = "AE" + DateTime.Now.ToString("yyyyMMddHHmmss"); //modelMT.NAME = "事故事件触发会议" + DateTime.Now.ToString("yyMMdd"); //modelMT.MEETINGTYPE = SCMEETINGTYPE.Ordinary; //var eventReport = GetEntity(entity.REPORT_ID.Value, "Nav_Department"); //modelMT.DEPARTMENT_ID = eventReport.DEPARTMENT_ID.Value;// //modelMT.LEVELVALUE = eventReport.Nav_Department.DEPARTMENT_TYPE; //modelMT.USER_ID_ORIGINATOR = entity.LEADER_USER_ID.Value;//组长 //modelMT.BEGIN_TIME = DateTime.Now; //modelMT.STATUS = PFStandardStatus.Draft; //modelMT.PERSCORE = 0; //modelMT.IS_DELETED = false; //modelMT.ORG_ID = entity.ORG_ID; //modelMT.ENTITY_ORG_TPYE = 0; //modelMT.FLOW_STATUS = 0; //modelMT.FLOW_SEND_STATUS = 0; //modelMT.CREATE_TIME = DateTime.Now; //modelMT.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; //modelMT.CREACTTYPE = CREACTTYPEEnum.AEToMTAfterTeamMember; //modelMT.ISBEGIN = false; //modelMT.ISCANCEL = false; ////modelMT.CheckLevel_ENUMS_ID = ; ////modelMT.Nav_MinutesID = ; ////modelMT.ADDRESS = ; ////modelMT.THEME = ; ////modelMT.PLANSET_ID = ; ////modelMT.USER_ID_RECORDER = ; ////modelMT.USER_ID_HOST = ; ////modelMT.RECORD = ; ////modelMT.APPROVE_ID = ; ////modelMT.FORM_ID = ; ////modelMT.FLOW_ID = ; ////modelMT.MODIFY_TIME = ; ////modelMT.MODIFIER_ID = ; ////modelMT.CONTENT = ; //List listAllUser = new List(); //foreach (var item in TeamMembers) //{ // if (!item.USER_ID.HasValue || item.IS_DELETED) // { // continue; // } // T_SC_MT_MEETING_PALL modelUser = new T_SC_MT_MEETING_PALL(); // modelUser.ID = Guid.NewGuid(); // modelUser.MEETING_ID = modelMT.ID; // modelUser.PERSONTYPE = SCMEETINGPERSONTYPE.ALL; // modelUser.USER_ID = item.USER_ID.Value; // modelUser.IS_DELETED = false; // modelUser.ORG_ID = modelMT.ORG_ID; // //modelUser.ENTITY_ORG_TPYE = ""; // //modelUser.FORM_ID = ""; // //modelUser.FLOW_STATUS = ""; // //modelUser.FLOW_SEND_STATUS = ""; // //modelUser.FLOW_ID = ""; // //modelUser.CREATE_TIME = ""; // //modelUser.MODIFY_TIME = ""; // //modelUser.CREATER_ID = ""; // //modelUser.MODIFIER_ID = ""; // //modelUser.JOINRESULT = ""; // //modelUser.NOTJOINREASON = ""; // modelUser.PERSONNATURE = PersonNature.JOIN; // listAllUser.Add(modelUser); //} #endregion #region 今日提醒给调查记录人 T_FM_NOTIFICATION_TASK WarmOA = NotificActionTaskService.InsertUserNoticeTaskModel("请于" + dtEnd.ToString("yyyy-MM-dd") + "前,在OA申请事故调查报告文件发布并上传至事故事件调查结果报送表!", entity.ID, entity.ORG_ID, entity.SURVEY_USER_ID.Value, Survery.NAME, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.今日提醒, "PF135"); #endregion T_SC_MT_MEETING_BEGIN modelBegin = null; if (entity.REPORT_ID.HasValue && entity.LEADER_USER_ID.HasValue) { modelBegin = new T_SC_MT_MEETING_BEGIN(); modelBegin.ID = Guid.NewGuid(); modelBegin.ORG_ID = entity.ORG_ID; modelBegin.SOURCETYPE = SOURCETYPE.EventReport; modelBegin.TABLENAME = "T_AE_ACCIDENT_EVENT_REPORT"; modelBegin.DATA_ID = entity.REPORT_ID.Value; modelBegin.ISBEGIN = false; modelBegin.USER_ID = entity.LEADER_USER_ID.Value; modelBegin.CREATE_TIME = DateTime.Now; modelBegin.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; } this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); //事故调查小组成员 if (DeputyLeaderUser != null && DeputyLeaderUser.Any()) BantchSaveEntityNoCommit(DeputyLeaderUser); if (TeamMembers != null && TeamMembers.Any()) BantchSaveEntityNoCommit(TeamMembers); if (task != null) //消除待办 UpdateEntityNoCommit(task); if (WarmOA != null)//添加 今日提醒给调查记录人 今日提醒 AddEntityNoCommit(WarmOA); if (modelBegin != null) UpdateEntityNoCommit(modelBegin); //对接会议模块 //if (modelResult != null)//添加 事故事件调查结果填报 // AddEntityNoCommit(modelResult); //if (taskAdd != null)//添加 事故事件调查结果填报 待办 // AddEntityNoCommit(taskAdd); }); //方法修改 对接模式修改 //#region 对接会议模块 事务隔离 以免后续没对应模块 //try //{ // var listUserID = TeamMembers.Where(e => !e.IS_DELETED && e.USER_ID.HasValue).Select(e => e.USER_ID.Value); // var eventReport = GetEntity(entity.REPORT_ID.Value, "Nav_Department"); // SCMTMeetingService.AddMeeting(Guid.NewGuid(), "事故事件触发会议" + DateTime.Now.ToString("yyMMdd"), eventReport.CODE, eventReport.ORG_ID, Survery.DEPARTMENT_ID.Value, eventReport.Nav_Department.DEPARTMENT_TYPE, entity.LEADER_USER_ID.Value, (int)CREACTTYPEEnum.AEToMTAfterTeamMember, listUserID); //} //catch { } //#endregion } return true; }); } } }