mh_sms/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSSafeCheckDetailRejectController.cs

511 lines
23 KiB
C#
Raw Normal View History

2024-01-22 09:17:01 +08:00
using APT.BaseData.Domain.ApiModel.PF;
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Domain.IServices;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.BS;
using APT.MS.Domain.Entities.HM;
using APT.MS.Domain.Enums;
using APT.Utility;
using APT.WebApi.Models;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
namespace APT.BS.WebApi.Controllers.Api
{
[Route("api/BS/BSSafeCheckDetailReject")]
public partial class BSSafeCheckDetailRejectController : AuthorizeApiController<T_BS_SAFE_CHECK_DETAIL_REJECT>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
public BSSafeCheckDetailRejectController(IFMNotificationTaskService notificationTaskService)
{
NotificationTaskService = notificationTaskService;
}
#region 退
/// <summary>
/// 检查明细退回
/// </summary>
/// <param name="filiter"></param>
/// <returns></returns>
[HttpPost, Route("GetRejectModel")]
public JsonActionResult<T_BS_SAFE_CHECK_DETAIL_REJECT> GetRejectModel([FromBody] KeywordFilter filiter)
{
return SafeExecute<T_BS_SAFE_CHECK_DETAIL_REJECT>(() =>
{
T_BS_SAFE_CHECK_DETAIL_REJECT modelResult = new T_BS_SAFE_CHECK_DETAIL_REJECT();
Guid SAFE_CHECK_DETAIL_ID = Guid.Empty;
foreach (var item in filiter.FilterGroup.Rules)
{
if (item.Field == "ID")
{
SAFE_CHECK_DETAIL_ID = new Guid(item.Value.ToString());
break;
}
}
if (SAFE_CHECK_DETAIL_ID == Guid.Empty)
{
throw new Exception("获取信息失败!");
}
modelResult.ID = Guid.NewGuid();
modelResult.SAFE_CHECK_DETAIL_ID = SAFE_CHECK_DETAIL_ID;
return modelResult;
});
}
/// <summary>
/// 检查明细退回
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("Reject")]
public JsonActionResult<bool> Reject([FromBody] T_BS_SAFE_CHECK_DETAIL_REJECT entity)
{
return SafeExecute<bool>(() =>
{
if (entity.SAFE_CHECK_DETAIL_ID == Guid.Empty)
{
throw new Exception("获取传参失败!");
}
if (string.IsNullOrEmpty(entity.REASON))
{
throw new Exception("退回原因不能未空!");
}
if (entity.Nav_Files == null || !entity.Nav_Files.Any())
{
throw new Exception("请上传退回附件!");
}
//检查明细
var SafeCheckDetail = GetEntity<T_BS_SAFE_CHECK_DETAIL>(entity.SAFE_CHECK_DETAIL_ID);
if (SafeCheckDetail == null)
{
throw new Exception("获取退回信息失败!");
}
if (SafeCheckDetail.IS_REJECTING)
{
throw new Exception("该检查明细结果已被退回给了登记人,请先直接确认!");
}
SafeCheckDetail.IS_REJECTING = true;
SafeCheckDetail.USERID_REJECT = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
//退回信息
entity.SAFE_CHECK_ID = SafeCheckDetail.SAFE_CHECK_ID;
var files = entity.Nav_Files;
entity.Nav_Files = null;
entity.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;//创建人 即 退回人
var userMain = GetEntity<T_BS_SAFE_CHECK_DETAIL_USER>(e => e.SAFE_CHECK_DETAIL_ID == entity.SAFE_CHECK_DETAIL_ID && !e.IS_DELETED && e.ISMAINCHECK, "Nav_User");
if (userMain == null || userMain.USER_ID == Guid.Empty)
{
throw new Exception("获取检查登记人信息失败!");
}
//给记录人 添加待办//BS069
var TaskReject = NotificationTaskService.InsertUserNoticeTaskModel("检查记录确认退回", entity.ID, entity.ORG_ID, userMain.USER_ID, userMain.Nav_User.NAME, DateTime.Now, 0, "BS069", FMTASKTYPE.Default);
//保存草稿 只保存页面数据
this.UnifiedCommit(() =>
{
if (entity != null)//拒绝记录
UpdateEntityNoCommit(entity);
if (SafeCheckDetail != null)//被退回的检查明细
UpdateEntityNoCommit(SafeCheckDetail);
if (files != null && files.Any())//附件
BantchSaveEntityNoCommit(files);
if (TaskReject != null)//检查登记人待办
UpdateEntityNoCommit(TaskReject);
});
return true;
});
}
#endregion
#region 退
/// <summary>
/// 检查明细退回 BS069
/// </summary>
/// <param name="filiter"></param>
/// <returns></returns>
[HttpPost, Route("GetDetailRejectModel")]
public JsonActionResult<T_BS_SAFE_CHECK_DETAIL> GetDetailRejectModel([FromBody] KeywordFilter filiter)
{
return SafeExecute<T_BS_SAFE_CHECK_DETAIL>(() =>
{
T_BS_SAFE_CHECK_DETAIL modelResult = null;
T_BS_SAFE_CHECK_DETAIL_REJECT modelReject = null;
Guid RejectID = Guid.Empty;
foreach (var item in filiter.FilterGroup.Rules)
{
if (item.Field == "ID")
{
RejectID = new Guid(item.Value.ToString());
if (RejectID == Guid.Empty)
{
throw new Exception("获取信息失败!");
}
modelReject = GetEntity<T_BS_SAFE_CHECK_DETAIL_REJECT>(RejectID, "Nav_Files.Nav_ImgFile.Nav_File");
if (modelReject == null)
{
throw new Exception("获取退回信息失败!");
}
item.Value = modelReject.SAFE_CHECK_DETAIL_ID;
}
}
var listInclude = filiter.Include.ToList();
for (int i = 0; i < listInclude.Count; i++)
{
if (listInclude[i].StartsWith("Nav_Reject"))
{
listInclude.Remove(listInclude[i]);
i--;
}
}
filiter.Include = listInclude;
modelResult = GetEntity<T_BS_SAFE_CHECK_DETAIL>(null, filiter);
if (modelResult != null && modelResult.Nav_ListCheckDetailUser != null)
{
modelResult.Nav_ListCheckDetailUser = modelResult.Nav_ListCheckDetailUser.OrderByDescending(e => e.ISMAINCHECK).ToList();
}
modelResult.Nav_Reject = modelReject;
2024-05-23 17:28:22 +08:00
var userID = modelReject.CREATER_ID;
if (userID == null)
userID = modelResult.USERID_REJECT;
if (userID.HasValue)
2024-05-23 16:55:54 +08:00
{
2024-05-23 17:28:22 +08:00
T_FM_USER modelUser = GetEntity<T_FM_USER>(userID.Value);//.CREATER_ID APP显示退回人 修改 riskSumbitDetailBack
2024-05-23 16:55:54 +08:00
modelReject.Nav_User = modelUser;
}
2024-01-22 09:17:01 +08:00
if (DataHelper.GetRequestType(Request.Headers) == 2 && modelResult.Nav_ListCheckDetailQuestion != null && modelResult.Nav_ListCheckDetailQuestion.Any())
{
modelResult.Nav_ListCheckDetailQuestion.ForEach(e =>
{
if (e.Nav_Question != null)
{
if (e.Nav_Question.QUESTION_LEVEL > 0)
{
e.Nav_Question.QUESTION_LEVEL_SHOW = e.Nav_Question.QUESTION_LEVEL.GetDescription();
}
else
{
e.Nav_Question.QUESTION_LEVEL_SHOW = "";
}
}
});
}
return modelResult;
});
}
/// <summary>
/// 检查明细退回 重新检查登记(单条)
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("RejectUpdate")]
public JsonActionResult<bool> RejectUpdate([FromBody] T_BS_SAFE_CHECK_DETAIL entity)
{
return SafeExecute<bool>(() =>
{
if (entity.TaskID == Guid.Empty)
{
throw new Exception("获取待办信息失败,请刷新后再试!");
}
var LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
T_BS_SAFE_CHECK_DETAIL_REJECT Reject = GetEntity<T_BS_SAFE_CHECK_DETAIL_REJECT>(e => e.SAFE_CHECK_DETAIL_ID == entity.ID);
//var Reject = entity.Nav_Reject;
//entity.Nav_Reject = null;
T_FM_NOTIFICATION_TASK Task = null;
if (Reject.RESULT != RejectResult.Default)
{
//数据异常 默认正常待办
Task = NotificationTaskService.GetEntityTask(entity.TaskID, "BS069_SHOWPRINT", 1);
this.UnifiedCommit(() =>
{
if (Task != null)//拒绝记录
UpdateEntityNoCommit(Task);
});
throw new Exception("该退回单已处理【处理结果:" + Reject.RESULT.GetDescription() + "】,请勿重新操作!");
}
var listCheckDetailReason = entity.Nav_ListCheckDetailReason;
entity.Nav_ListCheckDetailReason = null;
var listDetailQuestion = GetEntities<T_BS_SAFE_CHECK_DETAIL_QUESTION>(e => e.SAFE_CHECK_DETAIL_ID == entity.ID && !e.IS_DELETED, null, null);
if (listDetailQuestion == null || !listDetailQuestion.Any())
{
throw new Exception("获取之前的检查结果失败!");
}
if (listDetailQuestion.Count() > 1)
{
throw new Exception("此功能只支持单一检查结果!");
}
T_BS_SAFE_CHECK_DETAIL_QUESTION ResultOld = listDetailQuestion.ToList()[0];
if (entity.Nav_ListCheckDetailQuestion == null || !entity.Nav_ListCheckDetailQuestion.Any())
{
throw new Exception("请选择检查结果!");
}
var listCheckDetailQuestion = entity.Nav_ListCheckDetailQuestion.Where(e => !e.IS_DELETED);
if (listCheckDetailQuestion.Count() > 1)
{
throw new Exception("检查结果只能1个");
}
T_BS_SAFE_CHECK_DETAIL_QUESTION ResultNew = listCheckDetailQuestion.ToList()[0];
if (ResultNew.SAFE_CHECK_QUESTION_ID == new Guid("55555555-5555-5555-5555-555555555555"))
{
entity.CHECKRESULT = 10;
}
else
{
entity.CHECKRESULT = 20;
}
//var CheckDetail = entity.Nav_CheckDetail;
//entity.Nav_CheckDetail = null;
if (entity.CHECKRESULT == 0)
{
throw new Exception("请选择问题描述!");
}
if (entity.CHECKRESULT == 20 && string.IsNullOrEmpty(entity.ADDRESS))
{
throw new Exception("请输入隐患地点!");
}
if (ResultOld.SAFE_CHECK_QUESTION_ID == ResultNew.SAFE_CHECK_QUESTION_ID)
{
Reject.RESULT = RejectResult.ResultSame;
}
else
{
Reject.RESULT = RejectResult.ResultChange;
}
//如果有修改 给所有本条明细已确认的人 发送今日提醒
//如果没有修改 给退回的人 发送今日提醒
//检查明细 IS_REJECTING false USERID_REJECT 置空
//如果有修改 修改之前的检查详情 修改之前的检查明细问题
List<T_FM_NOTIFICATION_TASK> listTaskToday = new List<T_FM_NOTIFICATION_TASK>();
if (Reject.RESULT == RejectResult.ResultSame)
{
//相同
var UserReject = GetEntity<T_FM_USER>(entity.USERID_REJECT.Value);
listTaskToday.Add(NotificationTaskService.InsertUserNoticeTaskModel("检查退回结果保持不变", entity.ID, entity.ORG_ID, UserReject.ID, UserReject.NAME, DateTime.Now, 2, "", FMTASKTYPE.Default));
}
else
{
//不同
//今日提醒接收人
var listUserSend = GetEntities<T_BS_SAFE_CHECK_DETAIL_USER>(e => e.SAFE_CHECK_DETAIL_ID == Reject.SAFE_CHECK_DETAIL_ID && !e.IS_DELETED && e.SAFECHECKSTATE == 80 && !e.ISMAINCHECK && e.USER_ID != entity.CREATER_ID, null, "Nav_User");
if (listUserSend != null && listUserSend.Any())
{
List<Guid> listUserID = new List<Guid>();
List<string> listUserName = new List<string>();
listUserSend.ForEach(e =>
{
if (!listUserID.Contains(e.USER_ID))
{
listUserID.Add(e.USER_ID);
listUserName.Add(e.Nav_User.NAME);
}
});
var safeCheck = GetEntity<T_BS_SAFE_CHECK>(entity.SAFE_CHECK_ID);
listTaskToday.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("检查明细结果修改【编号:" + safeCheck.CODE + ",序号:" + entity.ROW_NO + "】", entity.ID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, 2, "", FMTASKTYPE.Default));
}
}
entity.IS_REJECTING = false;
entity.USERID_REJECT = null;
if (Reject.RESULT == RejectResult.ResultChange)//检查明细 检查结果
ResultOld.SAFE_CHECK_QUESTION_ID = ResultNew.SAFE_CHECK_QUESTION_ID;
entity.Nav_ListCheckDetailQuestion = null;
var TaskEnd = NotificationTaskService.GetEntityTask(entity.TaskID, "BS069_SHOWPRINT");
////保存草稿 只保存页面数据
this.UnifiedCommit(() =>
{
if (entity != null)//拒绝记录
UpdateEntityNoCommit(entity);
UpdateEntityNoCommit(entity);//检查明细信息修改
if (Reject.RESULT == RejectResult.ResultChange)//如果检查结果发送改变
UpdateEntityNoCommit(ResultOld);
if (listTaskToday != null && listTaskToday.Any())//今日提醒(已确认或退回者)
BantchSaveEntityNoCommit(listTaskToday);
if (listCheckDetailReason != null && listCheckDetailReason.Any())//隐患原因
BantchSaveEntityNoCommit(listCheckDetailReason);
if (TaskEnd != null)//操作待办结束
UpdateEntityNoCommit(TaskEnd);
});
return true;
});
}
///// <summary>
///// 检查明细退回 重新检查登记(单条)
///// </summary>
///// <param name="entity"></param>
///// <returns></returns>
//[HttpPost, Route("RejectUpdate")]
//public JsonActionResult<bool> RejectUpdate([FromBody] T_BS_SAFE_CHECK_DETAIL_REJECT entity)
//{
// return SafeExecute<bool>(() =>
// {
// if (entity.TaskID == Guid.Empty)
// {
// throw new Exception("获取待办信息失败,请刷新后再试!");
// }
// T_FM_NOTIFICATION_TASK Task = null;
// if (entity.RESULT != RejectResult.Default)
// {
// //数据异常 默认正常待办
// Task = NotificationTaskService.GetEntityTask(entity.TaskID, "BS069_SHOWPRINT", 1);
// this.UnifiedCommit(() =>
// {
// if (Task != null)//拒绝记录
// UpdateEntityNoCommit(Task);
// });
// throw new Exception("该退回单已处理【处理结果:" + entity.RESULT.GetDescription() + "】,请勿重新操作!");
// }
// var CheckDetail = entity.Nav_CheckDetail;
// entity.Nav_CheckDetail = null;
// if (CheckDetail.CHECKRESULT == 0)
// {
// throw new Exception("请选择问题描述!");
// }
// if (CheckDetail.CHECKRESULT == 20 && string.IsNullOrEmpty(CheckDetail.ADDRESS))
// {
// throw new Exception("请输入隐患地点!");
// }
// if (CheckDetail.Nav_ListCheckDetailQuestion == null || !CheckDetail.Nav_ListCheckDetailQuestion.Any())
// {
// throw new Exception("请选择检查结果!");
// }
// else if (CheckDetail.Nav_ListCheckDetailQuestion.Count() > 1)
// {
// throw new Exception("检查结果只能1个");
// }
// var listDetailQuestion = GetEntities<T_BS_SAFE_CHECK_DETAIL_QUESTION>(e => e.SAFE_CHECK_DETAIL_ID == CheckDetail.ID && !e.IS_DELETED, null, null);
// if (listDetailQuestion == null || !listDetailQuestion.Any())
// {
// throw new Exception("获取之前的检查结果失败!");
// }
// if (listDetailQuestion.Count() > 1)
// {
// throw new Exception("此功能只支持单一检查结果!");
// }
// T_BS_SAFE_CHECK_DETAIL_QUESTION ResultOld = listDetailQuestion.ToList()[0];
// T_BS_SAFE_CHECK_DETAIL_QUESTION ResultNew = CheckDetail.Nav_ListCheckDetailQuestion.ToList()[0];
// if (ResultOld.SAFE_CHECK_QUESTION_ID == ResultNew.SAFE_CHECK_QUESTION_ID)
// {
// entity.RESULT = RejectResult.ResultSame;
// }
// else
// {
// entity.RESULT = RejectResult.ResultChange;
// }
// //如果有修改 给所有本条明细已确认的人 发送今日提醒
// //如果没有修改 给退回的人 发送今日提醒
// //检查明细 IS_REJECTING false USERID_REJECT 置空
// //如果有修改 修改之前的检查详情 修改之前的检查明细问题
// List<T_FM_NOTIFICATION_TASK> listTaskToday = new List<T_FM_NOTIFICATION_TASK>();
// if (entity.RESULT == RejectResult.ResultSame)
// {
// //相同
// var UserReject = GetEntity<T_FM_USER>(CheckDetail.USERID_REJECT.Value);
// listTaskToday.Add(NotificationTaskService.InsertUserNoticeTaskModel("检查退回结果保持不变", entity.ID, entity.ORG_ID, UserReject.ID, UserReject.NAME, DateTime.Now, 2, "", FMTASKTYPE.Default));
// }
// else
// {
// //不同
// //今日提醒接收人
// var listUserSend = GetEntities<T_BS_SAFE_CHECK_DETAIL_USER>(e => e.SAFE_CHECK_DETAIL_ID == entity.SAFE_CHECK_DETAIL_ID && !e.IS_DELETED && e.SAFECHECKSTATE == 80 && !e.ISMAINCHECK && e.USER_ID != entity.CREATER_ID, null, "Nav_User");
// if (listUserSend != null && listUserSend.Any())
// {
// List<Guid> listUserID = new List<Guid>();
// List<string> listUserName = new List<string>();
// listUserSend.ForEach(e =>
// {
// if (!listUserID.Contains(e.USER_ID))
// {
// listUserID.Add(e.USER_ID);
// listUserName.Add(e.Nav_User.NAME);
// }
// });
// listTaskToday.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("检查明细结果修改告知", entity.ID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, 2, "", FMTASKTYPE.Default));
// }
// }
// CheckDetail.IS_REJECTING = false;
// CheckDetail.USERID_REJECT = null;
// if (entity.RESULT == RejectResult.ResultChange)//检查明细 检查结果
// ResultOld.SAFE_CHECK_QUESTION_ID = ResultNew.SAFE_CHECK_QUESTION_ID;
// CheckDetail.Nav_ListCheckDetailQuestion = null;
// var TaskEnd = NotificationTaskService.GetEntityTask(entity.TaskID, "BS069_SHOWPRINT");
// ////保存草稿 只保存页面数据
// this.UnifiedCommit(() =>
// {
// if (entity != null)//拒绝记录
// UpdateEntityNoCommit(entity);
// UpdateEntityNoCommit(CheckDetail);//检查明细信息修改
// if (entity.RESULT == RejectResult.ResultChange)//如果检查结果发送改变
// UpdateEntityNoCommit(ResultOld);
// if (listTaskToday != null && listTaskToday.Any())//今日提醒(已确认或退回者)
// BantchSaveEntityNoCommit(listTaskToday);
// if (TaskEnd != null)//操作待办结束
// UpdateEntityNoCommit(TaskEnd);
// });
// return true;
// });
//}
#endregion
}
}