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.Api; using APT.Infrastructure.Core; using APT.Migrations; using APT.MS.Domain.ApiModel.BS; using APT.MS.Domain.Entities.BS; using APT.MS.Domain.Entities.HM; using APT.MS.Domain.Entities.SC.SC; 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; using System.Reflection; namespace APT.BS.WebApi.Controllers.Api { [Route("api/BS/BSOperateLog")] public partial class BSOperateLogController : AuthorizeApiController { /// /// 排序查询所有数据 /// /// 过滤实体 /// [HttpPost, Route("OrderEntities")] public JsonActionResult>> OrderEntities([FromBody] KeywordFilter filter) { return SafeExecute>>(() => { if (string.IsNullOrEmpty(filter.Keyword)) { return new List>(); } else { Guid Keyword = new Guid(filter.Keyword); Guid? CheckID = null; Guid? SubmitID = null; Guid? SubmitContentID = null; var check = GetEntity(Keyword); T_BS_RISK_SUBMIT_CONTENT riskContent = null; T_BS_RISK_SUBMIT risk = null; if (check != null) { CheckID = check.ID; risk = GetEntity(e => e.CHECK_ID.HasValue && e.CHECK_ID.Value == CheckID); if (risk != null) { SubmitID = risk.ID; } } else { risk = GetEntity(Keyword); if (risk != null) { SubmitID = risk.ID; if (risk.CHECK_ID.HasValue) { CheckID = risk.CHECK_ID.Value; } } else { riskContent = GetEntity(Keyword); if (riskContent != null) { SubmitContentID = riskContent.ID; SubmitID = riskContent.RISK_SUBMIT_ID; risk = GetEntity(SubmitID.Value); if (risk != null && risk.CHECK_ID.HasValue) { CheckID = risk.CHECK_ID.Value; } } } } List> result = new List>(); if (CheckID == null && SubmitID == null && SubmitContentID == null) { return result; } List resultCheck1 = new List();//检查任务 List resultCheck2 = new List();//检查记录 List resultRisk1 = new List();//隐患上报 List resultRiskDeal = new List();//隐患整改 List resultRiskEnd = new List();//隐患上报 if (CheckID != null) { var resultT = GetEntities(e => e.DATA_ID == CheckID.Value, null, null).OrderBy(e => e.OPERATEPOINT).ToList(); resultCheck1 = resultT.Where(e => e.OPERATEPOINT == OPERATEPOINT_Enums.GotCheck || e.OPERATEPOINT == OPERATEPOINT_Enums.CheckForm || e.OPERATEPOINT == OPERATEPOINT_Enums.CheckAudit || e.OPERATEPOINT == OPERATEPOINT_Enums.CheckerCheck).OrderBy(e => e.OPERATEPOINT).ToList(); resultCheck2 = resultT.Where(e => e.OPERATEPOINT == OPERATEPOINT_Enums.CheckRegisterRun || e.OPERATEPOINT == OPERATEPOINT_Enums.CheckRegister || e.OPERATEPOINT == OPERATEPOINT_Enums.CheckAgree || e.OPERATEPOINT == OPERATEPOINT_Enums.CheckResultAudit || e.OPERATEPOINT == OPERATEPOINT_Enums.CheckEnd).OrderBy(e => e.OPERATEPOINT).ToList(); } result.Add(resultCheck1); result.Add(resultCheck2); int RiskContentCount = 0;//隐患数 if (SubmitID != null) { Expression> expression = e => e.DATA_ID == SubmitID.Value; if (SubmitContentID != null) { expression = e => e.DATA_ID == SubmitID.Value && (!e.DATA_ID_SUB.HasValue || e.DATA_ID_SUB.Value == SubmitContentID); } var resultT = GetEntities(expression, null, null).OrderBy(e => e.DATA_ID_SUB).ThenBy(e => e.OPERATEPOINT).ToList(); resultRisk1 = resultT.Where(e => (!e.DATA_ID_SUB.HasValue && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskEnd) || (e.OPERATEPOINT == OPERATEPOINT_Enums.RiskNoticeSD || e.OPERATEPOINT == OPERATEPOINT_Enums.RiskUpSD || e.OPERATEPOINT == OPERATEPOINT_Enums.RiskInfoCompleteSD)).OrderBy(e => e.OPERATEPOINT).ToList(); result.Add(resultRisk1); //多个上报 多组信息 var listSubID = resultT.Where(e => e.DATA_ID_SUB.HasValue && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskUpSD && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskInfoCompleteSD).Select(e => e.DATA_ID_SUB).Distinct().ToList(); if (listSubID != null && listSubID.Count > 0) { foreach (var item in listSubID) { RiskContentCount++; if (RiskContentCount == 1) { resultRiskDeal = resultT.Where(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB.Value == item && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskNoticeSD && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskUpSD && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskInfoCompleteSD && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskGet).OrderBy(e => e.CREATE_TIME).ThenBy(e => e.OPERATEPOINT).ThenBy(e => e.ORDERNO).ToList(); result.Add(resultRiskDeal); } else { result.Add(resultT.Where(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB.Value == item && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskNoticeSD && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskUpSD && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskInfoCompleteSD && e.OPERATEPOINT != OPERATEPOINT_Enums.RiskGet).OrderBy(e => e.CREATE_TIME).ThenBy(e => e.OPERATEPOINT).ThenBy(e => e.ORDERNO).ToList()); } } } else { result.Add(resultRiskDeal); } var resultRiskEndT = resultT.FirstOrDefault(e => !e.DATA_ID_SUB.HasValue && e.OPERATEPOINT == OPERATEPOINT_Enums.RiskEnd); if (resultRiskEndT != null) { resultRiskEnd.Add(resultRiskEndT); result.Add(resultRiskEnd); } } #region 给他们 补齐 OPERATEPOINT List listEnums = DataHelper.GetEnum("OPERATEPOINT_Enums"); //检查任务 //检查记录 //隐患上报 /* * * 隐患整改 * */ //结束 T_BS_OPERATE_LOG ModelLog = null; if (CheckID != null) { //安全检查 if (resultCheck1.Count > 0) { ModelLog = resultCheck1[resultCheck1.Count - 1]; if (ModelLog.OPERATEPOINT != OPERATEPOINT_Enums.CheckerCheck) { resultCheck1.AddRange(GetListLog((int)ModelLog.OPERATEPOINT, (int)OPERATEPOINT_Enums.CheckerCheck, listEnums)); result[1] = resultCheck1; } } else { resultCheck1.AddRange(GetListLog((int)OPERATEPOINT_Enums.GotCheck, (int)OPERATEPOINT_Enums.CheckerCheck, listEnums)); result[1] = resultCheck1; } if (resultCheck2.Count > 0) { ModelLog = resultCheck2[resultCheck2.Count - 1]; if (ModelLog.OPERATEPOINT != OPERATEPOINT_Enums.CheckEnd) { resultCheck2.AddRange(GetListLog((int)ModelLog.OPERATEPOINT, (int)OPERATEPOINT_Enums.CheckEnd, listEnums)); result[1] = resultCheck2; } } else { resultCheck2.AddRange(GetListLog((int)OPERATEPOINT_Enums.CheckRegisterRun, (int)OPERATEPOINT_Enums.CheckEnd, listEnums)); result[1] = resultCheck2; } } bool isAddApplyDely = false; if (SubmitID.HasValue) { if (resultRisk1 != null && resultRisk1.Count > 0) { if (resultRisk1[0].OPERATEPOINT != OPERATEPOINT_Enums.RiskGet) //检查上报 如果有 一定有值 不需要补 { ModelLog = resultRisk1[resultRisk1.Count - 1]; if (ModelLog.OPERATEPOINT != OPERATEPOINT_Enums.RiskInfoCompleteSD) { resultRisk1.AddRange(GetListLog((int)OPERATEPOINT_Enums.RiskUpSD, (int)OPERATEPOINT_Enums.RiskInfoCompleteSD, listEnums, isAddApplyDely, true)); result[2] = resultRisk1; } } } else if (risk != null) { if (risk.SUBMIT_TYPE == 20) { result[2] = GetListLog((int)OPERATEPOINT_Enums.RiskNoticeSD, (int)OPERATEPOINT_Enums.RiskInfoCompleteSD, listEnums, isAddApplyDely, true); } else if (risk.SUBMIT_TYPE == 10) { result[2] = new List() { new T_BS_OPERATE_LOG() { OPERATEPOINT = OPERATEPOINT_Enums.RiskGet } }; } } //隐患整改 if (RiskContentCount == 0) { resultRiskDeal = GetListLog((int)OPERATEPOINT_Enums.RiskSendAudit, (int)OPERATEPOINT_Enums.RiskDealAudit, listEnums);//, false, false if (resultRiskDeal != null && resultRiskDeal.Count > 0) result[3].AddRange(resultRiskDeal); } else { List listLogT = null; for (int i = 0; i < RiskContentCount; i++) { listLogT = result[i + 3]; if (listLogT.Count > 0) { //第4个开始 下标 3 ModelLog = listLogT[listLogT.Count - 1]; if (ModelLog.OPERATEPOINT != OPERATEPOINT_Enums.RiskDealAudit) { var appCheck = listLogT.FirstOrDefault(e => e.OPERATEPOINT == OPERATEPOINT_Enums.RiskDelayApply); if (appCheck != null && appCheck.ID != Guid.Empty) isAddApplyDely = true; result[i + 3].AddRange(GetListLog((int)ModelLog.OPERATEPOINT, (int)OPERATEPOINT_Enums.RiskDealAudit, listEnums, isAddApplyDely)); } } else { result[i + 3] = GetListLog((int)OPERATEPOINT_Enums.RiskSendAudit, (int)OPERATEPOINT_Enums.RiskDealAudit, listEnums); } } } //结束 if (resultRiskEnd.Count == 0) { resultRiskEnd.Add(new T_BS_OPERATE_LOG() { OPERATEPOINT = OPERATEPOINT_Enums.RiskEnd }); result.Add(resultRiskEnd); } } #endregion return result; } }); } /// /// 添加固定项 Start 不添加 end 添加 /// /// /// /// /// /// /// public List GetListLog(int Start, int End, List listEnums, bool isAddApplyDely = false, bool isRiskSD = false) { List listResult = new List(); if (Start >= End) return listResult; foreach (var item in listEnums) { if (Start < item.ID && item.ID <= End) { if (!isAddApplyDely && (item.ID == 165 || item.ID == 170 || item.ID == 175)) continue; if (isRiskSD) { if (item.ID == 120) continue;//手动隐患上报 非手动隐患上报的信息 返回 } else { if (item.ID == 90 || item.ID == 100 || item.ID == 110) continue;//非手动隐患上报 手动隐患上报的信息 返回 } listResult.Add(new T_BS_OPERATE_LOG() { OPERATEPOINT = (OPERATEPOINT_Enums)item.ID }); } } return listResult; } } }