368 lines
18 KiB
C#
368 lines
18 KiB
C#
|
|
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<T_AE_ACCIDENT_SURVEY_TEAM_MEMBER>
|
|||
|
|
{
|
|||
|
|
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;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 事故调查小组成员 修改
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="entity"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("FullUpdate")]
|
|||
|
|
public JsonActionResult<bool> FullUpdate([FromBody] T_AE_ACCIDENT_SURVEY_TEAM_MEMBER entity)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<bool>(() =>
|
|||
|
|
{
|
|||
|
|
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<T_AE_ACCIDENT_EVENT_REPORT>(entity.REPORT_ID.Value).ACCIDENT_LEVEL.Value;
|
|||
|
|
var days = GetEntity<T_AE_ACCIDENT_LEVEL_DAYS>(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<T_FM_USER>(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<T_FM_USER>(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<T_AE_ACCIDENT_EVENT_REPORT>(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<T_SC_MT_MEETING_PALL> listAllUser = new List<T_SC_MT_MEETING_PALL>();
|
|||
|
|
//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.AE008ToMeet;
|
|||
|
|
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<T_AE_ACCIDENT_EVENT_REPORT>(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;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|