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 { IFMNotificationTaskService NotificationTaskService { get; set; } public BSSafeCheckDetailRejectController(IFMNotificationTaskService notificationTaskService) { NotificationTaskService = notificationTaskService; } #region 检查记录退回 /// /// 检查明细退回 /// /// /// [HttpPost, Route("GetRejectModel")] public JsonActionResult GetRejectModel([FromBody] KeywordFilter filiter) { return SafeExecute(() => { 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; }); } /// /// 检查明细退回 /// /// /// [HttpPost, Route("Reject")] public JsonActionResult Reject([FromBody] T_BS_SAFE_CHECK_DETAIL_REJECT entity) { return SafeExecute(() => { 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(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(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 退回 信息加载 与 操作 /// /// 检查明细退回 (BS069) /// /// /// [HttpPost, Route("GetDetailRejectModel")] public JsonActionResult GetDetailRejectModel([FromBody] KeywordFilter filiter) { return SafeExecute(() => { 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(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(null, filiter); if (modelResult != null && modelResult.Nav_ListCheckDetailUser != null) { modelResult.Nav_ListCheckDetailUser = modelResult.Nav_ListCheckDetailUser.OrderByDescending(e => e.ISMAINCHECK).ToList(); } modelResult.Nav_Reject = modelReject; var userID = modelReject.CREATER_ID; if (userID == null) userID = modelResult.USERID_REJECT; if (userID.HasValue) { T_FM_USER modelUser = GetEntity(userID.Value);//.CREATER_ID APP显示退回人 修改 riskSumbitDetailBack modelReject.Nav_User = modelUser; } 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; }); } /// /// 检查明细退回 重新检查登记(单条) /// /// /// [HttpPost, Route("RejectUpdate")] public JsonActionResult RejectUpdate([FromBody] T_BS_SAFE_CHECK_DETAIL entity) { return SafeExecute(() => { if (entity.TaskID == Guid.Empty) { throw new Exception("获取待办信息失败,请刷新后再试!"); } var LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; T_BS_SAFE_CHECK_DETAIL_REJECT Reject = GetEntity(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(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 listTaskToday = new List(); if (Reject.RESULT == RejectResult.ResultSame) { //相同 var UserReject = GetEntity(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(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 listUserID = new List(); List listUserName = new List(); listUserSend.ForEach(e => { if (!listUserID.Contains(e.USER_ID)) { listUserID.Add(e.USER_ID); listUserName.Add(e.Nav_User.NAME); } }); var safeCheck = GetEntity(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; }); } ///// ///// 检查明细退回 重新检查登记(单条) ///// ///// ///// //[HttpPost, Route("RejectUpdate")] //public JsonActionResult RejectUpdate([FromBody] T_BS_SAFE_CHECK_DETAIL_REJECT entity) //{ // return SafeExecute(() => // { // 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(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 listTaskToday = new List(); // if (entity.RESULT == RejectResult.ResultSame) // { // //相同 // var UserReject = GetEntity(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(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 listUserID = new List(); // List listUserName = new List(); // 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 } }