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.Entities.SC.BI; 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/BSRiskSubmitContent")] public partial class BSRiskSubmitContentController : AuthorizeApiController { IFMFlowPermitService MFlowPermitService { get; set; } IFMNotificationTaskService NotificationTaskService { get; set; } IPFCodeRuleService CodeRuleService { get; set; } IPFApproveCallBackService ApproveCallBackService { get; set; } public BSRiskSubmitContentController(IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFCodeRuleService codeRuleService, IPFApproveCallBackService approveCallBackService) { NotificationTaskService = notificationTaskService; MFlowPermitService = mFlowPermitService; CodeRuleService = codeRuleService; ApproveCallBackService = approveCallBackService; } /// /// 获得单条实体数据 /// /// 过滤实体 /// [HttpPost, Route("GetDevlp")] public JsonActionResult GetDevlp([FromBody] KeywordFilter filter) { return SafeExecute(() => { var model = GetEntity(null, filter, null); if (model.CREATER_ID.HasValue) { var userUp = GetEntity(model.CREATER_ID.Value); model.CREATE_NAME = userUp.NAME; } return model; }); } /// /// 排序分页查询数据 /// /// 分页过滤实体 /// [HttpPost, Route("OrderPagedDevlp")] public PagedActionResult OrderPagedDevlp([FromBody] KeywordPageFilter pageFilter) { return SafeGetPagedData(delegate (PagedActionResult result) { //如果 上报组织 C_DEPARTMENT_ID 有值 不要走数据权限 按上报人的组织来搜索数据 Guid C_DEPARTMENT_ID = Guid.Empty; Guid CREATER_ID = Guid.Empty; if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Any()) { var Groups = pageFilter.FilterGroup.Groups.ToList(); ICollection GroupsRules = null; foreach (var Group in Groups) { if (Group.Rules != null && Group.Rules.Any()) { GroupsRules = Group.Rules.ToList(); foreach (var item in GroupsRules) { if (item.Field == "C_DEPARTMENT_ID") { if (item.Value != null) { try { C_DEPARTMENT_ID = new Guid(item.Value.ToString()); } catch { } } GroupsRules.Remove(item); Group.Rules = GroupsRules; break; } } if (C_DEPARTMENT_ID != Guid.Empty) { break; } } } foreach (var Group in Groups) { if (Group.Rules != null && Group.Rules.Any()) { GroupsRules = Group.Rules.ToList(); foreach (var item in GroupsRules) { if (item.Field == "CREATER_ID") { if (item.Value != null) { try { CREATER_ID = new Guid(item.Value.ToString()); } catch { } } GroupsRules.Remove(item); Group.Rules = GroupsRules; break; } } if (CREATER_ID != Guid.Empty) { break; } } } } PagedActionResult orderPageEntities = null; Expression> expression = e => e.Nav_Submit.SUBMIT_TYPE != 10; IEnumerable listUsers = null; if (CREATER_ID != Guid.Empty) { pageFilter.IgnoreDataRule = true; expression = expression.And(e => e.CREATER_ID.HasValue && CREATER_ID == e.CREATER_ID.Value); } if (C_DEPARTMENT_ID != Guid.Empty && CREATER_ID == Guid.Empty)//如果选了人 就不按组织结构查找了 { pageFilter.IgnoreDataRule = true; listUsers = GetEntities(e => e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == C_DEPARTMENT_ID, null, null); IEnumerable IUserId = listUsers.Select(e => e.ID); if (IUserId != null && IUserId.Any()) { expression = expression.And(e => e.CREATER_ID.HasValue && IUserId.Contains(e.CREATER_ID.Value)); } } orderPageEntities = GetOrderPageEntities(expression, pageFilter, null); if (orderPageEntities.TotalCount > 0) { var listUserID = orderPageEntities.Data.Where(e => e.CREATER_ID.HasValue).Select(e => e.CREATER_ID.Value).Distinct(); if (listUsers == null) { listUsers = GetEntities(e => listUserID.Contains(e.ID), null, "Nav_Department"); } else { var dep = GetEntity(C_DEPARTMENT_ID); foreach (var item in listUsers) { item.Nav_Department = dep; } } T_FM_USER userModel = null; foreach (var item in orderPageEntities.Data) { if (item.CREATER_ID.HasValue) { userModel = listUsers.FirstOrDefault(e => e.ID == item.CREATER_ID.Value); if (userModel != null) { item.CREATE_NAME = userModel?.NAME; item.Nav_Department = userModel.Nav_Department; } } if (string.IsNullOrEmpty(item.CREATE_NAME)) { item.CREATE_NAME = ""; item.Nav_Department = new T_FM_DEPARTMENT(); } } } result.Data = orderPageEntities.Data; result.TotalCount = orderPageEntities.TotalCount; }); } /// /// 获得单条实体数据 /// /// 过滤实体 /// [HttpPost, Route("GetInfoAdapt")] public JsonActionResult GetInfoAdapt([FromBody] KeywordFilter filter) { return SafeExecute(() => { var model = GetEntity(null, filter, null); #region 默认加载信息 if (model.CHECK_MAIN_ID.HasValue) { if (model.Nav_CheckMain == null) { model.Nav_CheckMain = GetEntity(model.CHECK_MAIN_ID.Value); } //新问题 新增时会把 新增的检查信息 赋值 model.CHECKOBJECT = (BSMineTypeEnum)model.Nav_CheckMain.CHECKOBJECT; if (!model.LastDateSystem.HasValue) { int delayDays = GetDealyDays(model.QUESTION_LEVEL); model.LastDateSystem = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")).AddDays(delayDays); } } else { //检查区域 根据登录者所在生产单元 //检查类型 检查层级 默认 上次手动上报 登陆者 此区域 的值 if (APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.HasValue && model.Nav_Submit != null && !model.Nav_Submit.CHECKOBJECT.HasValue) { var depUnit = GetEntities(e => e.DEPARTMENT_ID == APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.Value, null, "Nav_Enums"); if (depUnit != null && depUnit.Count() == 1) { var modelUnil = depUnit.ToList()[0]; if (modelUnil.Nav_Enums != null) { model.Nav_Submit.CHECKOBJECT = (BSMineTypeEnum)modelUnil.Nav_Enums.VALUE; model.CHECKOBJECT = model.Nav_Submit.CHECKOBJECT; } } } if (model.Nav_Submit != null && !model.Nav_Submit.CHECK_TYPE_ID.HasValue && APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue) { KeywordPageFilter fiB = new KeywordPageFilter(); fiB.OrgId = model.ORG_ID; fiB.Order = DbOrder.DESC; fiB.PageIndex = 1; fiB.Limit = 1; fiB.Sort = "CREATE_TIME"; fiB.IgnoreDataRule = true; PagedActionResult orderPageEntities = GetOrderPageEntities(e => e.USER_ID.HasValue && e.SUBMIT_TYPE == 20 && e.SUBMIT_STATUS.HasValue && e.SUBMIT_STATUS.Value >= 20 && e.CHECK_TYPE_ID.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue && e.USER_ID.Value == APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, fiB); //var info = this.GetEntities(null, pageFilter, null).Select(e => new T_BS_CHECK_QUESTION { ID = e.ID, DEMAND = e.DEMAND, DESCREPTION = "" }).Distinct(e => e.DEMAND).ToList(); //var listOrder = GetEntities(e => e.USER_ID.HasValue && e.SUBMIT_TYPE == 20 && e.SUBMIT_STATUS.HasValue && e.SUBMIT_STATUS.Value >= 20 && e.CHECK_TYPE_ID.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue && e.USER_ID.Value == APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, fiB, null).Skip(1).Take(1); if (orderPageEntities.TotalCount > 0) { var subNew = orderPageEntities.Data.ToList()[0]; model.Nav_Submit.CHECK_TYPE_ID = subNew.CHECK_TYPE_ID; model.Nav_Submit.Nav_CheckType = GetEntity(subNew.CHECK_TYPE_ID.Value); model.Nav_Submit.CHECK_TYPE_LEVEL_ID = subNew.CHECK_TYPE_LEVEL_ID; model.Nav_Submit.Nav_CheckTypeLevel = GetEntity(subNew.CHECK_TYPE_LEVEL_ID.Value, "Nav_Enums"); model.CHECK_TYPE_ID = model.Nav_Submit.CHECK_TYPE_ID; model.CHECK_TYPE_LEVEL_ID = model.Nav_Submit.CHECK_TYPE_LEVEL_ID; } } else { model.CHECKOBJECT = model.Nav_Submit.CHECKOBJECT; } } #endregion if (APT.Utility.DataHelper.GetRequestType(Request.Headers) == 2) { if (model.CHECKOBJECT.HasValue) { model.CHECKOBJECT_DESCRIPTION = model.CHECKOBJECT.Value.GetDescription(); } if (model.QUESTION_LEVEL > 0) { model.QUESTION_LEVEL_SHOW = ((BSQuestionLevelEnum)model.QUESTION_LEVEL).GetDescription(); } } #region 页面合并 BS079 不要了 直接在 BS078 处理 现默认值加载 if (!model.CHECK_MAIN_ID.HasValue) { model.Nav_CheckMain = new T_BS_CHECK_MAIN(); if (model.CHECKOBJECT.HasValue) model.Nav_CheckMain.CHECKOBJECT = (int)model.CHECKOBJECT.Value; if (model.CHECK_TYPE_ID.HasValue) { model.Nav_CheckMain.CHECK_TYPE_ID = model.CHECK_TYPE_ID; model.Nav_CheckMain.Nav_CheckType = model.Nav_Submit.Nav_CheckType; } if (model.CHECK_TYPE_LEVEL_ID.HasValue) { model.Nav_CheckMain.CHECK_TYPE_LEVEL_ID = model.CHECK_TYPE_LEVEL_ID; model.Nav_CheckMain.Nav_CheckTypeLevel = model.Nav_Submit.Nav_CheckTypeLevel; } model.Nav_CheckMain.ORG_ID = model.ORG_ID; model.Nav_CheckMain.SERIOUS_RISK = (int)BSSeriousRiskEnum.否; model.Nav_CheckMain.ENABLE_STATUS = (int)FMEnableStatusEnum.禁用; model.Nav_CheckMain.NUM = 1; model.Nav_CheckMain.ISRISK = false; model.CHECK_MAIN_ID = model.Nav_CheckMain.ID; } #endregion return model; }); } /// /// 获取 系统整改期限 /// /// /// private int GetDealyDays(int QUESTION_LEVEL) { int delayDays = 0; var delays = GetEntity(e => e.QUESTION_LEVEL == QUESTION_LEVEL); if (delays != null) { delayDays = delays.MAX_DELAY_DAYS; } else { switch (QUESTION_LEVEL) { case (int)BSQuestionLevelEnum.重大: delayDays = (int)BSDelayDaysEnum.重大; break; case (int)BSQuestionLevelEnum.A: delayDays = (int)BSDelayDaysEnum.A; break; case (int)BSQuestionLevelEnum.B: delayDays = (int)BSDelayDaysEnum.B; break; case (int)BSQuestionLevelEnum.C: delayDays = (int)BSDelayDaysEnum.C; break; case (int)BSQuestionLevelEnum.D: delayDays = (int)BSDelayDaysEnum.D; break; default: break; } } return delayDays; } /// /// 手动隐患上报数据删除 /// /// 主键ID /// [HttpGet, Route("Delete")] public JsonActionResult Delete(string id) { return SafeExecute(delegate { try { Guid CONTENTID = new Guid(id); List listTask = new List(); List listReason = null; T_PF_APPROVE ApproveCheckAudit = null; IEnumerable listApproveDetail = null; T_BS_RISK_SUBMIT modelRiskDel = null; List Nav_FilesDel = null; List files = null; var content = GetEntity(CONTENTID, "Nav_ListRiskQuestionReason", "Nav_Files"); T_BS_RISK_SUBMIT_CONTENT_DEAL contentDeal = null; if (content == null) { //BS043 contentDeal = GetEntity(CONTENTID, "Nav_Files", "Nav_FilesAfter"); content = GetEntity(e => e.ID == contentDeal.RISK_SUBMIT_CONTENT_ID, "Nav_ListRiskQuestionReason", "Nav_Files"); } listReason = content.Nav_ListRiskQuestionReason; //content.Nav_ListRiskQuestionReason = null; files = content.Nav_Files; //content.Nav_Files = null; //指定责任单位等 listTask.AddRange(GetEntities(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID == content.ID, null, null));//指定责任单位 if (content.APPROVE_ID.HasValue && content.APPROVE_ID != Guid.Empty) { ApproveCheckAudit = GetEntity(content.APPROVE_ID.Value); listApproveDetail = GetEntities(e => e.APPROVE_ID == ApproveCheckAudit.ID, null, null); listTask.AddRange(GetEntities(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID == ApproveCheckAudit.ID, null, null)); } var contentOther = GetEntity(e => e.RISK_SUBMIT_ID == content.RISK_SUBMIT_ID && e.ID != CONTENTID); if (contentOther == null) { modelRiskDel = GetEntity(content.RISK_SUBMIT_ID.Value, "Nav_Files"); Nav_FilesDel = modelRiskDel.Nav_Files; } ICollection listCheckDetailUser = null; ICollection listCheckDetailQuestion = null; ICollection listLaw = null; ICollection listCheckDetailReason = null; ICollection files_check = null; T_BS_SAFE_CHECK_DETAIL modelDetail = null; if (modelRiskDel != null && modelRiskDel.CHECK_ID.HasValue) { modelDetail = GetEntity(content.SAFE_CHECK_ID.Value, "Nav_ListCheckDetailUser", "Nav_ListCheckDetailQuestion", "Nav_ListLaw", "Nav_ListCheckDetailReason", "Nav_Files"); files_check = modelDetail.Nav_Files; listCheckDetailReason = modelDetail.Nav_ListCheckDetailReason; listCheckDetailQuestion = modelDetail.Nav_ListCheckDetailQuestion; listCheckDetailUser = modelDetail.Nav_ListCheckDetailUser; listLaw = modelDetail.Nav_ListLaw; } T_BS_RISK_SUBMIT_NOTICE_PERSON modelNoticePerson = null; //T_BS_RISK_SUBMIT_NOTICE modelNotice = null; IEnumerable listModelNotice = null; bool isDelNotice = true; if (content.RISK_SUBMIT_NOTICE_PERSON_ID.HasValue && content.RISK_SUBMIT_NOTICE_PERSON_ID != Guid.Empty) { var contentCheck = GetEntity(e => e.RISK_SUBMIT_NOTICE_PERSON_ID == content.RISK_SUBMIT_NOTICE_PERSON_ID && e.ID != content.ID); if (contentCheck == null) { //通知只有一单 modelNoticePerson = GetEntity(content.RISK_SUBMIT_NOTICE_PERSON_ID.Value); if (modelRiskDel != null && modelNoticePerson.RISK_SUBMIT_NOTICE_ID.HasValue) { listModelNotice = GetEntities(e => e.RISK_SUBMIT_ID.HasValue && e.RISK_SUBMIT_ID.Value == modelNoticePerson.RISK_SUBMIT_ID.Value, null); } //整改落实 确认等 listTask.AddRange(GetEntities(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID == modelNoticePerson.ID, null, null)); } else { isDelNotice = false; } //else //{ // //多单的不能删除 // if (contentCheck.RISK_SUBMIT_NOTICE_ID.HasValue) // { // var listNoticePerson = GetEntities(e => e.RISK_SUBMIT_NOTICE_ID == contentCheck.RISK_SUBMIT_NOTICE_ID.Value, null, null); // if (listNoticePerson != null && listNoticePerson.Any()) // { // if (listNoticePerson.Count() == 1) // { // modelNoticePerson = listNoticePerson.ToList()[0]; // listModelNotice = GetEntities(e => e.ID == contentCheck.RISK_SUBMIT_NOTICE_ID.Value, null, null); // } // else // { // if (contentCheck.RISK_SUBMIT_NOTICE_PERSON_ID.HasValue) // { // modelNoticePerson = listNoticePerson.First(e => e.ID == contentCheck.RISK_SUBMIT_NOTICE_PERSON_ID.Value); // } // } // if (modelNoticePerson != null && modelNoticePerson.RISK_SUBMIT_ID.HasValue) // { // listModelNotice = GetEntities(e => e.RISK_SUBMIT_ID.HasValue && e.RISK_SUBMIT_ID.Value == modelNoticePerson.RISK_SUBMIT_ID.Value, null); // } // } // } //} } if (isDelNotice && listModelNotice == null && content.RISK_SUBMIT_NOTICE_ID.HasValue) { listModelNotice = GetEntities(e => e.ID == content.RISK_SUBMIT_NOTICE_ID.Value, null, null); } IEnumerable listFile = null; IEnumerable listAfterFile = null; if (contentDeal == null) { contentDeal = GetEntity(e => e.RISK_SUBMIT_CONTENT_ID == content.ID, "Nav_Files", "Nav_FilesAfter"); } T_PF_APPROVE ApproveDeal = null; IEnumerable listApproveDetailDeal = null; if (contentDeal != null) { listFile = contentDeal.Nav_Files; //contentDeal.Nav_Files = null; listAfterFile = contentDeal.Nav_FilesAfter; //contentDeal.Nav_FilesAfter = null; listTask.AddRange(GetEntities(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID == contentDeal.ID, null, null)); if (contentDeal.APPROVE_ID.HasValue && contentDeal.APPROVE_ID != Guid.Empty) { ApproveDeal = GetEntity(contentDeal.APPROVE_ID.Value); listApproveDetailDeal = GetEntities(e => e.APPROVE_ID == contentDeal.APPROVE_ID.Value, null, null); listTask.AddRange(GetEntities(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID == contentDeal.APPROVE_ID.Value, null, null)); } } //null 去除 int TCount = listTask.Count - 1; for (int i = TCount; i > -1; i--) { if (listTask[i] == null) { listTask.Remove(listTask[i]); } } IEnumerable taskBI = null; var listTaskID = listTask.Select(e => e.ID); if (listTaskID != null && listTaskID.Any()) { taskBI = GetEntities(e => listTaskID.Contains(e.ID), null, null); } if (modelNoticePerson != null) { var listC = GetEntities(e => e.RISK_SUBMIT_NOTICE_PERSON_ID == modelNoticePerson.ID, null, null); if (listC != null && listC.Count() > 1) { modelNoticePerson = null; } } this.UnifiedCommit(() => { if (listTask != null && listTask.Count > 0)//待办 DeleteEntityNoCommit(listTask); if (taskBI != null && taskBI.Count() > 0)//待办 DeleteEntityNoCommit(taskBI); if (listApproveDetailDeal != null && listApproveDetailDeal.Count() > 0)//整改记录 审批详情 DeleteEntityNoCommit(listApproveDetailDeal); if (ApproveDeal != null)//整改记录 审批 DeleteEntityNoCommit(ApproveDeal); if (listFile != null && listFile.Count() > 0)//整改记录 附件 前 DeleteEntityNoCommit(listFile); if (listAfterFile != null && listAfterFile.Count() > 0)//整改记录 附件 后 DeleteEntityNoCommit(listAfterFile); if (contentDeal != null)//整改记录 DeleteEntityNoCommit(contentDeal); if (files != null && files.Count() > 0)//上报明细 附件 DeleteEntityNoCommit(files); if (listReason != null && listReason.Count() > 0)//上报明细 附件 DeleteEntityNoCommit(listReason); if (modelNoticePerson != null)//上报通知 DeleteEntityNoCommit(modelNoticePerson); if (listModelNotice != null && listModelNotice.Count() > 0)//上报通知 DeleteEntityNoCommit(listModelNotice); if (content != null)//上报明细 DeleteEntityNoCommit(content); if (Nav_FilesDel != null && Nav_FilesDel.Count > 0)//上报单附件 DeleteEntityNoCommit(Nav_FilesDel); if (modelRiskDel != null)//上报单 DeleteEntityNoCommit(modelRiskDel); if (listCheckDetailUser != null && listCheckDetailUser.Count() > 0)//检查人 DeleteEntityNoCommit(listCheckDetailUser); if (listCheckDetailQuestion != null && listCheckDetailQuestion.Count() > 0)//检查问题 DeleteEntityNoCommit(listCheckDetailQuestion); if (listLaw != null && listLaw.Count() > 0)//检查依据 DeleteEntityNoCommit(listLaw); if (files_check != null && files_check.Count() > 0)//检查文件 DeleteEntityNoCommit(files_check); if (listCheckDetailReason != null && listCheckDetailReason.Count() > 0)//问题原因 DeleteEntityNoCommit(listCheckDetailReason); if (modelDetail != null)//检查项 DeleteEntityNoCommit(modelDetail); }); return true; } catch (Exception ex) { if (ex is Microsoft.EntityFrameworkCore.DbUpdateException) { throw new Exception("该资料已被用,不允许执行此操作"); } if (ex is DomainException && ex.Message.IndexOf("DbUpdateException", StringComparison.OrdinalIgnoreCase) > -1) { throw new Exception("该资料已被用,不允许执行此操作"); } throw new Exception(ex.Message); } }); } } }