mh_sms/APT.MicroApi/APT.SC.WebApi/Controllers/Api/CMController/CMEquipmentDemandSurveyMasterController.cs
2024-04-12 16:50:28 +08:00

259 lines
12 KiB
C#

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.CM;
using APT.MS.Domain.Enums;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
namespace APT.SC.WebApi.Controllers.Api.CM
{
[Route("api/CM/CMEquipmentDemandSurveyMaster")]
public class CMEquipmentDemandSurveyMasterController : AuthorizeApiController<T_CM_EQUIPMENT_DEMAND_SURVEY_MASTER>
{
IFMFlowPermitService MFlowPermitService { get; set; }
IPFApproveCallBackService ApproveCallBackService { get; set; }
IFMNotificationTaskService NotificationTaskService { get; set; }
IFMUserService UserService { get; set; }
public CMEquipmentDemandSurveyMasterController(IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IFMNotificationTaskService notificationTaskService, IFMUserService userService)
{
MFlowPermitService = mFlowPermitService;
ApproveCallBackService = approveCallBackService;
NotificationTaskService = notificationTaskService;
UserService = userService;
}
/// <summary>
///
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("GetOrder")]
public JsonActionResult<T_CM_EQUIPMENT_DEMAND_SURVEY_MASTER> GetOrder([FromBody] KeywordFilter filter)
{
return SafeExecute(() =>
{
var SurveyMaster = GetEntity<T_CM_EQUIPMENT_DEMAND_SURVEY_MASTER>(null, filter, null);
if (SurveyMaster.Nav_ListDetail != null && SurveyMaster.Nav_ListDetail.Any())
{
SurveyMaster.Nav_ListDetail = SurveyMaster.Nav_ListDetail.OrderBy(e => e.Nav_EQDSurvey.DEPARTMENT_ID).ThenBy(e => e.TYPE_ID).ToList();
}
return SurveyMaster;
});
}
/// <summary>
/// 体检周期表 修改
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("FullUpdate")]
public JsonActionResult<bool> FullUpdate([FromBody] T_CM_EQUIPMENT_DEMAND_SURVEY_MASTER entity)
{
return SafeExecute<bool>(() =>
{
var LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
if (entity.USER_ID.HasValue && entity.USER_ID.Value != LoginID)
{
throw new Exception("您没有权限操作此表单!");
}
var ListDetail = entity.Nav_ListDetail;
entity.Nav_ListDetail = null;
var Files = entity.Nav_Files;
entity.Nav_Files = null;
T_FM_NOTIFICATION_TASK taskEnd = null;
List<T_FM_NOTIFICATION_TASK> listTaskRed = null;//待办 阅
//List<T_FM_NOTIFICATION_TASK> listTaskDay = null;//今日提醒 跟踪设备采买过程,购买后更新“应急物资库"
List<T_CM_EQUIPMENT_DEMAND_SURVEY> listSurvey = null;
List<T_FM_NOTIFICATION_TASK> listTaskLib = null;//物资管理员 待办
List<T_FM_NOTIFICATION_TASK> listTaskLibPer = null;//物资管理员 待办
if (entity.STATUS == PFStandardStatus.Sign)
{
if (entity.TaskID != Guid.Empty)
{
taskEnd = NotificationTaskService.GetEntityTask(entity.TaskID, "CM032_SHOWPRINT");
}
int RowIndex = 1;
foreach (var item in ListDetail)
{
if (item.NEED_COUNT == 0)
{
throw new Exception("需求数量不能为空【行:" + RowIndex + "】!");
}
RowIndex++;
}
//安环部负责人待办事项收到应急装备需求评估表,对需求数量进行编辑,编辑完成后点击通知,触发一个待办事项和一个今日提醒给需求部门安全员
//待办事项:需求部门安全员待办事项收到应急装备需求评估表打印界面,点击已阅
//今日提醒:需求部门安全员收到今日提醒,消息类型:其他,信息内容:跟踪设备采买过程,购买后更新“应急物资库"的信息
var listSurveyID = ListDetail.Select(e => e.DEMAND_SURVEY_ID).Distinct();
listSurvey = GetEntities<T_CM_EQUIPMENT_DEMAND_SURVEY>(e => listSurveyID.Contains(e.ID), null, "Nav_User").ToList();
List<string> Title = new List<string>();
//List<string> TitleRed = new List<string>();
List<string> userName = new List<string>();
List<Guid> UserId = new List<Guid>();
List<Guid> DataId = new List<Guid>();
foreach (var item in listSurvey)
{
Title.Add("应急装备需求确认");
//TitleRed.Add("跟踪应急装备采买过程,购买后更新“应急物资库”的信息");
userName.Add(item.Nav_User.NAME);
UserId.Add(item.USER_ID.Value);
DataId.Add(item.ID);
item.STATUS = PFStandardStatus.Archived;
}
listTaskRed = NotificationTaskService.InsertUserNoticeTaskModels(Title, DataId, entity.ORG_ID, UserId, userName, DateTime.Now, DateTime.Now.AddDays(1), 1, "CM030_SHOWPRINT");
#region
var listThingId = ListDetail.Select(e => e.LIBRARY_ID).Distinct();
var listThings = GetEntities<T_CM_MATERIAL_LIBRARY>(e => listThingId.Contains(e.ID), null, "Nav_User");
List<Guid> listUserID = new List<Guid>();
List<string> listUserName = new List<string>();
foreach (var item in listThings)
{
if (!listUserID.Contains(item.USER_ID))
{
listUserID.Add(item.USER_ID);
listUserName.Add(item.Nav_User.NAME);
}
}
listTaskLib = NotificationTaskService.InsertUserNoticeTaskModels("应急物资数量需求通知", entity.ID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, 0, "CM031_SHOWPRINT", FMTASKTYPE.CM_LIBRARY_MANAGE_CHECK);//默认确认先不做 FMNoticeTypeEnum.消息
if (LoginID.HasValue && listUserID.Contains(LoginID.Value))
{
listTaskLibPer = new List<T_FM_NOTIFICATION_TASK>();
List<Guid> listThingTaskId = new List<Guid>();
foreach (var item in listTaskLib)
{
if (item.USER_ID == LoginID)
{
item.NOTICE_STATUS = 1;
item.TASK_DT = DateTime.Now;
listThingTaskId = listThings.Where(e => e.USER_ID == LoginID).Select(e => e.ID).Distinct().ToList();
listTaskLibPer.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("物资库存更新", listThingTaskId, item.ORG_ID, item.USER_ID, item.USER_NAME, DateTime.Now, 0, "CM028", FMTASKTYPE.CM_LIBRARY_CHANGECOUNT));
break;
}
}
}
#endregion
}
this.UnifiedCommit(() =>
{
if (entity != null)
UpdateEntityNoCommit(entity);
if (Files != null && Files.Any())
BantchSaveEntityNoCommit(Files);
if (ListDetail != null && ListDetail.Any())
BantchSaveEntityNoCommit(ListDetail);
if (taskEnd != null)
UpdateEntityNoCommit(taskEnd);
//if (listTaskDay != null && listTaskDay.Any())
// BantchSaveEntityNoCommit(listTaskDay);
if (listTaskRed != null && listTaskRed.Any())
BantchSaveEntityNoCommit(listTaskRed);
if (listSurvey != null && listSurvey.Any())//保存并发送变成已归档
BantchSaveEntityNoCommit(listSurvey);
if (listTaskLib != null && listTaskLib.Any())//物资管理员 收到待办
BantchSaveEntityNoCommit(listTaskLib);
if (listTaskLibPer != null && listTaskLibPer.Any())//物资管理员(为登陆者) 收到物资库存修改待办
BantchSaveEntityNoCommit(listTaskLibPer);
});
return true;
});
}
/// <summary>
/// 获取装备需求汇总中某个物资管理员的物资信息
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("GetManageOrder")]
public JsonActionResult<T_CM_EQUIPMENT_DEMAND_SURVEY_MASTER> GetManageOrder([FromBody] KeywordFilter filter)
{
return SafeExecute(() =>
{
var SurveyMaster = GetEntity<T_CM_EQUIPMENT_DEMAND_SURVEY_MASTER>(null, filter, null);
var detail = GetEntities<T_CM_EQUIPMENT_DEMAND_SURVEY_DETAIL>(e => e.SURVEY_MASTER_ID == SurveyMaster.ID && e.Nav_MaterialLibrary.USER_ID == APT.Infrastructure.Api.AppContext.CurrentSession.UserID, null, "Nav_EQDSurvey.Nav_Department", "Nav_MaterialType").OrderBy(e => e.TYPE_ID).ToList();
SurveyMaster.Nav_ListDetail = detail;
return SurveyMaster;
});
}
/// <summary>
/// 物资库管理员确认
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("Check")]
public JsonActionResult<bool> Check([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
T_FM_NOTIFICATION_TASK task = null;
if (!string.IsNullOrEmpty(filter.Parameter1))
{
task = NotificationTaskService.GetEntityTask(new Guid(filter.Parameter1));
}
var Keyword = filter.Parameter2;
var LoginId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
List<Guid> listIDS = new List<Guid>();
List<Guid> listThingTaskId = null;
List<T_FM_NOTIFICATION_TASK> listTask = null;
if (!string.IsNullOrEmpty(Keyword))
{
List<string> listID = Keyword.Split('_', StringSplitOptions.RemoveEmptyEntries).ToList();
listID.ForEach(e => { listIDS.Add(new Guid(e)); });
}
#region
if (listIDS.Count > 0)
{
var listLibs = GetEntities<T_CM_MATERIAL_LIBRARY>(e => e.USER_ID == LoginId && listIDS.Contains(e.ID), null, null);
listThingTaskId = listLibs.Select(e => e.ID).ToList();
}
#endregion
if (listThingTaskId != null && listThingTaskId.Any())
{
listTask = NotificationTaskService.InsertUserNoticeTaskModels("物资库存更新", listThingTaskId, filter.OrgId, LoginId.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, DateTime.Now, 0, "CM028", FMTASKTYPE.CM_LIBRARY_CHANGECOUNT);
}
this.UnifiedCommit(() =>
{
if (task != null)
UpdateEntityNoCommit(task);
if (listTask != null && listTask.Any())//新待办
BantchSaveEntityNoCommit(listTask);
});
return true;
});
}
}
}