From 5b67f0dac6a683819b62144c820d232e59e1a0fb Mon Sep 17 00:00:00 2001 From: wyw <571921741@qq.com> Date: Tue, 30 Apr 2024 17:22:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=90=E6=82=A3=E5=BE=85=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E5=AE=89=E5=85=A8=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E5=AF=BC=E5=87=BA=20=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E7=BB=A9=E6=95=88=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/PF/PFApproveCallBackService.cs | 95 +- APT.MS.Domain/Enums/BS/BSEnums.cs | 2 + .../Controllers/Api/BSCheckMainController.cs | 315 +++++ .../Controllers/Api/BSRiskSubmitController.cs | 296 ++++ .../Api/BIController/BISafeController.cs | 1230 +++++++++++++++++ 5 files changed, 1936 insertions(+), 2 deletions(-) diff --git a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs index c7051fd..699f0e6 100644 --- a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs +++ b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs @@ -6421,7 +6421,7 @@ namespace APT.BaseData.Services.DomainServices else { //如果是最后一个审批 - var entity = GetEntity(modelApp.DATA_ID, new string[] { "Nav_ListSafeCheckDetail" }); + var entity = GetEntity(modelApp.DATA_ID, new string[] { "Nav_ListSafeCheckDetail", "Nav_User", "Nav_CheckType", "Nav_CheckTypeLevel.Nav_Enums" }); if (!entity.PLAN_SET_ID.HasValue || !entity.CHECKTIME.HasValue || entity.CHECKTIME.Value.Date == DateTime.Now.Date) //同一天 { entity.ISFINISHINTTIME = true; @@ -6690,6 +6690,87 @@ namespace APT.BaseData.Services.DomainServices //给制表人发送待办 if (entity.RISKSTATE == 10 && entity.USERID_DOPLAN.HasValue) { + + #region 隐患上报信息 发隐患上报信息 出去 流程各时间也对应 + + T_BS_RISK_SUBMIT modelSub = new T_BS_RISK_SUBMIT(); + modelSub = new T_BS_RISK_SUBMIT(); + modelSub.ID = Guid.NewGuid(); + modelSub.CODE = entity.CODE;//替换成同一个 + modelSub.NAME = entity.Nav_CheckTypeLevel.Nav_Enums.NAME + entity.Nav_CheckType.NAME; + modelSub.Nav_Check = entity; + modelSub.Nav_CheckType = entity.Nav_CheckType; + modelSub.Nav_CheckTypeLevel = entity.Nav_CheckTypeLevel; + modelSub.CREATER_ID = entity.USERID_DOPLAN; + modelSub.CREATE_TIME = DateTime.Now;//绩效报表 取当前时间 + modelSub.CHECK_ID = entity.ID; + modelSub.CHECKTIME = entity.CHECKTIME; + modelSub.SUBMIT_STATUS = (int)BSSubmitStatusEnum.WaiteStart; + modelSub.USER_ID = modelSub.CREATER_ID; + modelSub.DEPARTMENT_ID = entity.Nav_User.DEPARTMENT_ID; + modelSub.SUBMIT_TYPE = (int)SUBMIT_TYPE.Check; + modelSub.ISORDEREND = false; + modelSub.CHECK_TYPE_ID = entity.CHECK_TYPE_ID; + modelSub.CHECK_TYPE_LEVEL_ID = entity.CHECK_TYPE_LEVEL_ID; + modelSub.ORG_ID = entity.ORG_ID; + List Nav_Files = null; + + var files = GetEntities(e => e.SAFE_CHECK_ID == entity.ID, false, null); + if (files != null && files.Any()) + { + Nav_Files = new List(); + foreach (var item in files) + { + Nav_Files.Add(new T_BS_RISK_SUBMIT_FILE() + { + ID = Guid.NewGuid(), + ORG_ID = modelSub.ORG_ID, + RISK_SUBMIT_ID = modelSub.ID, + IMG_FILE_ID = item.IMG_FILE_ID + }); + } + } + + List ListRiskSubmitContent = new List(); + entity.Nav_ListSafeCheckDetail = entity.Nav_ListSafeCheckDetail.OrderBy(e => e.ROW_NO).ToList(); + int ROW_NO = 0; + foreach (var item in entity.Nav_ListSafeCheckDetail) + { + if (!item.CHECKRESULT.HasValue || item.CHECKRESULT.Value !=20) // CHECKRESULTEnum.Same + { + continue; + } + ROW_NO++; + ListRiskSubmitContent.Add(new T_BS_RISK_SUBMIT_CONTENT() + { + ID = Guid.NewGuid(), + ORG_ID = modelSub.ORG_ID, + RISK_SUBMIT_ID = modelSub.ID, + SAFE_CHECK_DETAIL_ID = item.ID, + NAME = null, + CODE = null, + //QUESTION_LEVEL = 0, + //RiskContentState= RiskContentState. + ROW_NO = ROW_NO, + CHECK_MAIN_ID = item.CHECK_MAIN_ID, + DEPARTMENT_ID = item.DEPARTMENT_ID, + SERIOUS_RISK = item.SERIOUS_RISK, + //CHECKCONTENT = item.CHECKCONTENT, + RISK_AREA_ID = item.RISK_AREA_ID, + CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID, + //这两个字段作为是否操作过的标签 + //CHECK_PROJECT_ID = item.CHECK_PROJECT_ID, + //CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID, + ADDRESS = item.ADDRESS + }); + } + + #endregion + + + + entity.ISNEEDTOUP = false; + //检查发现问题问题 走隐患上报 //最后时间是今天 //DateTime dtTimeOut = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")); @@ -6704,7 +6785,9 @@ namespace APT.BaseData.Services.DomainServices // UpdateEntityNoCommit(entity);//修改隐患 // UpdateEntity(modelSub);//添加隐患上报 // }); - NotificationTaskService.SendNotificationTask("隐患待上报:" + entity.NAME.Replace("安全检查:", ""), entity.ID, entity.ORG_ID, entity.USERID_DOPLAN.Value, entity.Nav_User.NAME, DateTime.Now, dtTimeOut, 0, "BS006", () => + + // entity.ID 被 modelSub.ID 替换 + NotificationTaskService.SendNotificationTask("隐患待上报:" + entity.NAME.Replace("安全检查:", ""), modelSub.ID, entity.ORG_ID, entity.USERID_DOPLAN.Value, entity.Nav_User.NAME, DateTime.Now, dtTimeOut, 0, "BS006", () => { if (modelApp != null) UpdateEntityNoCommit(modelApp); //保存主表 @@ -6724,10 +6807,18 @@ namespace APT.BaseData.Services.DomainServices BantchUpdateEntityNoCommit(listCheckDetail); if (listUpdateMain != null && listUpdateMain.Any())//安全检查库修改不可用 BantchUpdateEntityNoCommit(listUpdateMain); + + UpdateEntityNoCommit(modelSub); + if (Nav_Files != null && Nav_Files.Any())//附件 + BantchSaveEntityNoCommit(Nav_Files); + if (ListRiskSubmitContent != null && ListRiskSubmitContent.Any()) + BantchSaveEntityNoCommit(ListRiskSubmitContent); + }); } else { + entity.ISNEEDTOUP = true; //检查没问题 直接结束 安全检查 this.UnifiedCommit(() => { diff --git a/APT.MS.Domain/Enums/BS/BSEnums.cs b/APT.MS.Domain/Enums/BS/BSEnums.cs index 3d97a1c..4163887 100644 --- a/APT.MS.Domain/Enums/BS/BSEnums.cs +++ b/APT.MS.Domain/Enums/BS/BSEnums.cs @@ -51,7 +51,9 @@ namespace APT.MS.Domain.Enums /// public enum BSSeriousRiskEnum { + [Description("否")] 否 = 0, + [Description("是")] 是 = 1, } /// diff --git a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckMainController.cs b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckMainController.cs index ab33c93..2e6c37d 100644 --- a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckMainController.cs +++ b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckMainController.cs @@ -14,6 +14,7 @@ using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; +using System.Linq.Expressions; namespace APT.BS.WebApi.Controllers.Api { @@ -850,5 +851,319 @@ namespace APT.BS.WebApi.Controllers.Api return true; }); } + + /// + /// 获取导出数据 + /// + /// + [HttpPost, Route("GetOutPutData")] + public PagedActionResult GetOutPutData([FromBody] KeywordPageFilter pageFilter) + { + return SafeGetPagedData(delegate (PagedActionResult result) + { + pageFilter.SelectField = null; + pageFilter.Include = null; + #region 获取搜索信息 + List listPath = new List(); + //Groups => Rules + Guid? CHECK_TYPE_ID = null;//CHECK_TYPE_ID + Guid? RISK_AREA_ID = null;//RISK_AREA_ID + + ////Rules + //BSMineTypeEnum? CHECKOBJECT = null;//CHECKOBJECT + BSQuestionLevelEnum? QUESTION_LEVEL = null; //QUESTION_LEVEL + BSSeriousRiskEnum? SERIOUS_RISK = null; //SERIOUS_RISK + string CHECKCONTENT = string.Empty; + //string CHECKPROOF = string.Empty; + string CheckTypeLevelName = string.Empty; //Nav_CheckTypeLevel.Nav_Enums.NAME + string CheckProjectNAME = string.Empty; //Nav_CheckProject.NAME + string CheckProjectCategoryNAME = string.Empty;//Nav_CheckProjectCategory.NAME + + if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Any()) + { + foreach (var item in pageFilter.FilterGroup.Groups) + { + if (item.Rules != null && item.Rules.Any()) + { + foreach (var itemRule in item.Rules) + { + if (itemRule.Field == "CHECK_TYPE_ID" && itemRule.Value != null) + { + CHECK_TYPE_ID = new Guid(itemRule.Value.ToString()); + listPath.Add("Nav_CheckType"); + } + else if (itemRule.Field == "RISK_AREA_ID" && itemRule.Value != null) + { + RISK_AREA_ID = new Guid(itemRule.Value.ToString()); + listPath.Add("Nav_RiskArea"); + } + } + } + } + } + + if (pageFilter.FilterGroup.Rules != null && pageFilter.FilterGroup.Rules.Any()) + { + foreach (var item in pageFilter.FilterGroup.Rules) + { + switch (item.Field) + { + case "Nav_CheckProjectCategory.NAME": + CheckProjectCategoryNAME = item.Value.ToString(); + listPath.Add("Nav_CheckProjectCategory"); + break; + case "Nav_CheckProject.NAME": + CheckProjectNAME = item.Value.ToString(); + listPath.Add("Nav_CheckProject"); + break; + case "Nav_CheckTypeLevel.Nav_Enums.NAME": + CheckTypeLevelName = item.Value.ToString(); + listPath.Add("Nav_CheckTypeLevel.Nav_Enums"); + break; + case "CHECKCONTENT": + CHECKCONTENT = item.Value.ToString(); + break; + case "QUESTION_LEVEL": + QUESTION_LEVEL = (BSQuestionLevelEnum)int.Parse(item.Value.ToString()); + break; + case "SERIOUS_RISK": + SERIOUS_RISK = (BSSeriousRiskEnum)int.Parse(item.Value.ToString()); + break; + default: + break; + } + } + } + + //检查范围 "检查区域(辨识区域)" 检查类型 检查项目分类 检查层级 责任单位 检查周期 "检查项目(辨识对象)" "检查内容(风险对象 + 是否 + 管控措施)" 检查依据 "检查问题描述(失效后的所有现象,逐条填写)" 检查问题等级 重大隐患类别 整改建议与措施 责任人 + + #endregion + + //检查库 + var IListCheckMain = GetEntities(e => !e.IS_DELETED && e.RISK_AREA_ID.HasValue && e.CHECK_QUESTION_ID.HasValue && e.CHECK_TYPE_ID.HasValue && e.CHECK_PROJECT_ID.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue, pageFilter, null).OrderByDescending(e => e.CREATE_TIME);//&& e.Nav_ListMainDep.Any()&& e.CHECK_CONTENTS_ID.HasValue + if (IListCheckMain == null || !IListCheckMain.Any()) + return; + + //检查类型 + Expression> expressionCheckType = e => !e.IS_DELETED; + if (CHECK_TYPE_ID.HasValue) + expressionCheckType = expressionCheckType.And(e => e.ID == CHECK_TYPE_ID.Value); + if (!string.IsNullOrEmpty(CheckTypeLevelName)) + expressionCheckType = expressionCheckType.And(e => e.Nav_ListCheckTypeLevel.Where(ee => ee.Nav_Enums.NAME.Contains(CheckTypeLevelName)).Any()); + var IListCheckType = GetEntities(expressionCheckType, null, "Nav_ListCheckTypeLevel.Nav_Enums"); + if (IListCheckType == null || !IListCheckType.Any()) + return; + + //检查区域 + Expression> expressionArea = e => !e.IS_DELETED; + if (RISK_AREA_ID.HasValue) + expressionArea = expressionArea.And(e => e.ID == RISK_AREA_ID.Value); + var IListArea = GetEntities(expressionArea, null, null); + if (IListArea == null || !IListArea.Any()) + return; + + + //检查项目 + Expression> expressionProject = e => !e.IS_DELETED; + if (!string.IsNullOrEmpty(CheckProjectNAME)) + expressionProject = expressionProject.And(e => e.NAME.Contains(CheckProjectNAME)); + var IListProject = GetEntities(expressionProject, null, null); + if (IListProject == null || !IListProject.Any()) + return; + + //检查项目分类 + Expression> expressionProjectCategory = e => !e.IS_DELETED; + if (!string.IsNullOrEmpty(CheckProjectCategoryNAME)) + expressionProjectCategory = expressionProjectCategory.And(e => e.NAME.Contains(CheckProjectCategoryNAME)); + var IiListProjectCategory = GetEntities(expressionProjectCategory, null, null); + if (IiListProjectCategory == null || !IiListProjectCategory.Any()) + return; + + //检查内容 + Expression> expressionContents = e => !e.IS_DELETED; + if (!string.IsNullOrEmpty(CHECKCONTENT)) + expressionContents = expressionContents.And(e => e.CHECKCONTENT.Contains(CHECKCONTENT)); + if (QUESTION_LEVEL.HasValue) + expressionContents = expressionContents.And(e => e.Nav_ListCheckQuestion.Where(ee => ee.QUESTION_LEVEL == QUESTION_LEVEL.Value).Any()); + var IListContents = GetEntities(expressionContents, null, null); + if (IListContents == null || !IListContents.Any()) + return; + + //检查问题 + Expression> expressionQuestopn = e => !e.IS_DELETED; + if (QUESTION_LEVEL.HasValue) + expressionQuestopn = expressionQuestopn.And(e => e.QUESTION_LEVEL == QUESTION_LEVEL.Value); + if (SERIOUS_RISK.HasValue) + expressionQuestopn = expressionQuestopn.And(e => e.SERIOUS_RISK == (int)SERIOUS_RISK.Value); + var IListQuestion = GetEntities(e => !e.IS_DELETED, null, null); + if (IListQuestion == null || !IListQuestion.Any()) + return; + + var listMainDep = GetEntities(e => !e.IS_DELETED && e.MAIN_ID.HasValue, null, null); + + //责任部门 Main Nav_ListMainDep + var IListDep = GetEntities(e => !e.IS_DELETED, null, null); + + + + string split = "、";//char[] charSplit = new char[] { '、', ';' }; + + List listDataResult = new List(); + OutPutData model = null; + List listDep = null; + T_BS_CHECK_QUESTION mainQuestion = null; + BSPLANCHECKOBJECTEnum? RESPONOBJECT = null; + T_BS_CHECK_TYPE modelCheckType = null; + + foreach (var item in IListCheckMain) + { + listDep = new List(); + RESPONOBJECT = null; + item.Nav_ListMainDep = listMainDep.Where(e => e.MAIN_ID.Value == item.ID).ToList(); + if (item.Nav_ListMainDep != null && item.Nav_ListMainDep.Any()) + { + foreach (var itemDep in item.Nav_ListMainDep) + { + if (!itemDep.IS_DELETED && itemDep.DEPARTMENT_ID.HasValue) + { + listDep.Add(IListDep.FirstOrDefault(e => e.ID == itemDep.DEPARTMENT_ID.Value)?.NAME); + RESPONOBJECT = itemDep.RESPONOBJECT; + } + } + } + else + { + RESPONOBJECT = null; + } + if (!listDep.Any()) + continue; + mainQuestion = IListQuestion.FirstOrDefault(e => e.ID == item.CHECK_QUESTION_ID.Value); + if (mainQuestion == null) + continue; + modelCheckType = IListCheckType.FirstOrDefault(e => e.ID == item.CHECK_TYPE_ID.Value); + if (mainQuestion == null) + continue; + + //责任单位 合并为一个单元 + model = new OutPutData(); + model.CHECKOBJECT = ((BSMineTypeEnum)item.CHECKOBJECT).GetDescription(); + model.AREA_NAME = (IListArea.FirstOrDefault(e => e.ID == item.RISK_AREA_ID.Value))?.NAME; + model.CHECK_TYPE_NAME = modelCheckType.NAME; + model.CHECK_PROJECT_CATEGORY_NAME = (IiListProjectCategory.FirstOrDefault(e => e.ID == item.CHECK_PROJECT_CATEGORY_ID.Value))?.NAME; + model.CHECK_TYPE_LEVEL_NAME = modelCheckType.Nav_ListCheckTypeLevel.FirstOrDefault(e => e.ID == item.CHECK_TYPE_LEVEL_ID)?.Nav_Enums?.NAME; + model.List_DEPARTMENT_NAME = string.Join(split, listDep); + model.JCZQ = ""; + model.CHECK_PROJECT_NAME = (IListProject.FirstOrDefault(e => e.ID == item.CHECK_PROJECT_ID.Value))?.NAME; + model.CHECKCONTENT = item.CHECKCONTENT; + model.CHECKPROOF = item.CHECKPROOF; + model.DESCREPTION = mainQuestion.DESCREPTION; + model.QUESTION_LEVEL = ((BSQuestionLevelEnum)item.QUESTION_LEVEL).GetDescription(); + if (item.SERIOUS_RISK == (int)BSSeriousRiskEnum.是) + model.SERIOUS_RISK = "是"; + + model.DEMAND = mainQuestion.DEMAND; + model.RESPONOBJECT = RESPONOBJECT.HasValue ? RESPONOBJECT.GetDescription() : ""; + + listDataResult.Add(model); + } + + OutPutInfo outPutInfo = new OutPutInfo(); + outPutInfo.listData = listDataResult; + outPutInfo.listColDataTitle = new List() { "检查范围", "检查区域", "检查类型", "检查项目分类", "检查层级", "责任单位", "检查周期", "检查项目", "检查内容", "检查依据", "检查问题描述", "检查问题等级", "重大隐患类别", "整改建议与措施", "责任人" }; + outPutInfo.listColDataIndex = new List() { "CHECKOBJECT", "AREA_NAME", "CHECK_TYPE_NAME", "CHECK_PROJECT_CATEGORY_NAME", "CHECK_TYPE_LEVEL_NAME", "List_DEPARTMENT_NAME", "JCZQ", "CHECK_PROJECT_NAME", "CHECKCONTENT", "CHECKPROOF", "DESCREPTION", "QUESTION_LEVEL", "SERIOUS_RISK", "DEMAND", "RESPONOBJECT" }; + + result.Data = new List() { outPutInfo }; + result.TotalCount = listDataResult.Count; + }); + } + } + + public class OutPutData + { + /// + /// 检查范围 + /// + public string CHECKOBJECT { get; set; } + + /// + /// 检查区域 + /// + public string AREA_NAME { get; set; } + + /// + /// 检查类型 + /// + public string CHECK_TYPE_NAME { get; set; } + + /// + /// 检查项目分类 + /// + public string CHECK_PROJECT_CATEGORY_NAME { get; set; } + + /// + /// 检查层级 + /// + public string CHECK_TYPE_LEVEL_NAME { get; set; } + + /// + /// 责任单位 + /// + public string List_DEPARTMENT_NAME { get; set; } + + /// + /// 检查周期--空 + /// + public string JCZQ { get; set; } + + /// + /// 检查项目 + /// + public string CHECK_PROJECT_NAME { get; set; } + + /// + /// 检查内容 + /// + public string CHECKCONTENT { get; set; } + + /// + /// 检查依据 + /// + public string CHECKPROOF { get; set; } + + /// + /// 检查问题描述 + /// + public string DESCREPTION { get; set; } + + /// + /// 问题等级 BSQuestionLevelEnum 检查问题等级 + /// + public string QUESTION_LEVEL { get; set; } + + /// + /// 是否重大隐患 重大隐患类别 + /// + public string SERIOUS_RISK { get; set; } = BSSeriousRiskEnum.否.GetDescription(); + + /// + /// 整改建议与措施 + /// + public string DEMAND { get; set; } + + /// + /// 责任对象 string 责任人 + /// + public string RESPONOBJECT { get; set; } = BSPLANCHECKOBJECTEnum.Head.GetDescription(); + + } + + /// + /// 自定义导出数据结构 + /// + public class OutPutInfo + { + public List listData { get; set; } + public List listColDataIndex { get; set; } + public List listColDataTitle { get; set; } } } \ No newline at end of file diff --git a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs index d46a18a..c7380dc 100644 --- a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs +++ b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs @@ -197,6 +197,302 @@ namespace APT.BS.WebApi.Controllers.Api } + /// + /// 隐患待上报 改版 获取信息 + /// + /// 过滤实体 + /// + [HttpPost, Route("GetBS006")] + public JsonActionResult GetBS006([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + List filterRules = filter.FilterGroup.Rules.ToList(); + var guid = new Guid(filterRules[0].Value.ToString()); + var modelSub = GetEntity(e => e.ID == guid, new string[] { "Nav_CheckType", "Nav_CheckTypeLevel.Nav_Enums", "Nav_Files.Nav_ImgFile.Nav_File", "Nav_User" }); + + //上报明细 是不完整的 明细信息重新 整理 + + //这两个字段作为是否操作过的标签 + //CHECK_PROJECT_ID = item.CHECK_PROJECT_ID, + //CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID, + //CHECKCONTENT = item.CHECKCONTENT, + var isFirst = GetCount(e => e.RISK_SUBMIT_ID == guid && (e.CHECK_PROJECT_ID.HasValue || e.CHECK_PROJECT_CATEGORY_ID.HasValue), null) == 0; + if (isFirst) + { + var listSubContents = GetEntities(e => e.RISK_SUBMIT_ID == guid, null, null).ToList(); + #region 整合 GetSubmitContent 方法 + + Expression> expression = e => e.SAFE_CHECK_ID == modelSub.CHECK_ID && !e.IS_DELETED && e.CHECKRESULT.HasValue && e.CHECKRESULT != (int)CHECKRESULTEnum.None; + var info = this.GetEntities(expression, null, new string[] { "Nav_ListCheckDetailQuestion.Nav_Question", "Nav_CheckArea", "Nav_CheckMain", "Nav_ListCheckDetailReason.Nav_RiskReason", "Nav_Files.Nav_ImgFile.Nav_File" }); + + List listArearId = new List(); + foreach (var item in info) + { + if (!listArearId.Contains(item.RISK_AREA_ID.Value)) + { + listArearId.Add(item.RISK_AREA_ID.Value); + } + } + + List listQID = new List() { new Guid("55555555-5555-5555-5555-555555555555") }; + + //责任部门 + List listDep = new List(); + T_FM_DEPARTMENT depCheck = null; + Dictionary dicDepSafer = new Dictionary(); + if (info.Any() && info.Count() > 0) + { + foreach (var item in info) + { + if (!item.DEPARTMENT_ID.HasValue) + { + continue; + } + depCheck = listDep.Find(e => e.ID == item.DEPARTMENT_ID); + if (depCheck == null) + { + depCheck = GetEntity(item.DEPARTMENT_ID.Value, "Nav_User"); + listDep.Add(depCheck); + } + if (depCheck == null) + { + continue; + } + foreach (var itemQ in item.Nav_ListCheckDetailQuestion) + { + if (listQID.Contains(itemQ.Nav_Question.ID)) + { + continue; + } + + T_BS_RISK_SUBMIT_CONTENT model = listSubContents.FirstOrDefault(e => e.SAFE_CHECK_DETAIL_ID == item.ID);// new T_BS_RISK_SUBMIT_CONTENT(); + if (model == null) + { + model = new T_BS_RISK_SUBMIT_CONTENT(); + listSubContents.Add(model); + } + + model.NAME = string.Empty; + model.CODE = string.Empty; + model.RISK_SUBMIT_ID = modelSub.ID; + model.CHECK_MAIN_ID = item.CHECK_MAIN_ID; + model.Nav_CheckMain = item.Nav_CheckMain; + + model.DEPARTMENT_ID = item.DEPARTMENT_ID; + model.Nav_Department = depCheck; + if (item.Nav_Files != null && item.Nav_Files.Any()) + { + List listFiles = new List(); + foreach (var itemF in item.Nav_Files) + { + listFiles.Add(new T_BS_RISK_SUBMIT_CONTENT_FILE() + { + ID = Guid.NewGuid(), + RISK_SUBMIT_ID = modelSub.ID, + RISK_SUBMIT_CONTENT_ID = model.ID, + IMG_FILE_ID = itemF.IMG_FILE_ID, + Nav_ImgFile = itemF.Nav_ImgFile, + IS_DELETED = false, + ORG_ID = itemF.ORG_ID, + //ENTITY_ORG_TPYE=itemF.ENTITY_ORG_TPYE, + //FORM_ID=null, + //FLOW_STATUS= itemF.FLOW_STATUS, + //FLOW_SEND_STATUS=itemF.FLOW_SEND_STATUS, + //FLOW_ID=itemF.FLOW_ID, + //CREATE_TIME=DateTime.Now, + //MODIFY_TIME=DateTime.Now, + //CREATER_ID= + //MODIFIER_ID + //T_BS_RISK_SUBMIT_CONTENT_BACKID + }); + } + model.Nav_Files = listFiles; + } + //wyw1114-1 + if (!item.CHECK_MAIN_ID.HasValue || item.CHECK_MAIN_ID.Value == Guid.Empty) + { + //检查库信息为空(手动添加组合 添加的人是谁,对应责任人就是对应隐患上报的人) + model.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; + model.Nav_User = GetEntity(model.USER_ID.Value); + } + else + { + //if (item.Nav_CheckMain.RESPONOBJECT == BSPLANCHECKOBJECTEnum.Head || item.Nav_CheckMain.RESPONOBJECT == BSPLANCHECKOBJECTEnum.ClassMonitor) + if (depCheck.USER_ID == depCheck.USER_ID) + { + model.USER_ID = depCheck.USER_ID; + model.Nav_User = depCheck.Nav_User; + } + else + { + //对应的安全员 + if (!dicDepSafer.ContainsKey(model.DEPARTMENT_ID.Value)) + { + var depSafer = GetEntity(e => e.DEPARTMENT_ID == model.DEPARTMENT_ID && e.APPROVE_ROLE_ID.HasValue && e.Nav_ApproveRole.NAME.Contains("安全"), "Nav_ApproveRole"); + if (depSafer == null) + { + continue; + } + dicDepSafer.Add(model.DEPARTMENT_ID.Value, depSafer); + } + + model.Nav_User = dicDepSafer[model.DEPARTMENT_ID.Value]; + model.USER_ID = model.Nav_User.ID; + } + } + + //整改责任人 默认 通知责任人 + if (model.USER_ID.HasValue) + { + model.Nav_UserDeal = model.Nav_User; + model.DEAL_USER_ID = model.USER_ID.Value; + + model.DEAL_DEPARTMENT_ID = model.DEPARTMENT_ID.Value; + model.Nav_DepartmentDeal = model.Nav_Department; + } + + //if (item.RISK_AREA_ID.HasValue && dicRiskUser.ContainsKey(item.RISK_AREA_ID.Value) && dicRiskUser[item.RISK_AREA_ID.Value] != null) + //{ + // model.USER_ID = dicRiskUser[item.RISK_AREA_ID.Value].ID; + // model.DEPARTMENT_ID = dicRiskUser[item.RISK_AREA_ID.Value].DEPARTMENT_ID; + // model.Nav_User = dicRiskUser[item.RISK_AREA_ID.Value]; + // model.Nav_Department = dicRiskUser[item.RISK_AREA_ID.Value].Nav_Department; + //} + //else + //{ + // model.USER_ID = null; + // model.DEPARTMENT_ID = null; + //} + + + model.Nav_SafeCheckDetail = item; + model.CHECK_MAIN_ID = item.CHECK_MAIN_ID; + model.SAFE_CHECK_ID = item.SAFE_CHECK_ID; + + model.CHECK_PROJECT_ID = item.CHECK_PROJECT_ID; + //model.Nav_CheckProject = item.Nav_CheckProject; + model.CHECK_PROJECT_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_PROJECT_CATEGORY_ID; + //model.Nav_CheckProjectProjectCategory = item.Nav_CheckProjectProjectCategory; + + model.CHECK_PROJECT_CATEGORY_ID = item.CHECK_PROJECT_CATEGORY_ID;//0927 + + model.SERIOUS_RISK = item.SERIOUS_RISK; + model.CHECKCONTENT = item.CHECKCONTENT; + + model.SAFE_CHECK_DETAIL_ID = model.Nav_SafeCheckDetail.ID; + model.QUESTION_LEVEL = item.QUESTION_LEVEL.HasValue ? item.QUESTION_LEVEL.Value : item.Nav_CheckMain.QUESTION_LEVEL;//默认等级和原来一致 + model.QUESTION_LEVEL_SHOW = model.QUESTION_LEVEL > 0 ? ((BSQuestionLevelEnum)(model.QUESTION_LEVEL)).GetDescription() : "";//默认等级和原来一致 + + model.RISK_AREA_ID = item.RISK_AREA_ID; + //model.CHECK_QUESTION_ID = item.Nav_CheckMain.Nav_CheckQuestion.ID; + if (item.CHECKRESULT.HasValue && item.CHECKRESULT == (int)CHECKRESULTEnum.Same) + { + model.Nav_SafeCheckDetail.REMARK_RESULT = itemQ.Nav_Question.DESCREPTION; + model.Nav_Question = itemQ.Nav_Question;// item.Nav_CheckQuestion; + model.DESCREPTION = itemQ.Nav_Question.DESCREPTION;// item.Nav_CheckQuestion.DESCREPTION;//取检查问题的 描述 + model.DEMAND = itemQ.Nav_Question.DEMAND;// item.Nav_CheckQuestion.DEMAND; + model.CHECK_QUESTION_ID = itemQ.Nav_Question.ID;// item.Nav_CheckQuestion.ID; + model.PROOF = item.CHECKPROOF; + } + else + { + model.Nav_SafeCheckDetail.REMARK_RESULT = item.REMARK_RESULT; + model.DESCREPTION = item.REMARK_RESULT;//其他 取安全检查的 备注 + model.DEMAND = ""; + model.CHECK_QUESTION_ID = null; + model.PROOF = null; + } + + model.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; + + model.ADDRESS = item.ADDRESS;//隐患地点 + + int delayDays = GetDealyDays(model.QUESTION_LEVEL); + model.LastDateSystem = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")).AddDays(delayDays); + + + //item.Nav_ListCheckDetailReason + //model.Nav_ListRiskQuestionReason= + if (item.Nav_ListCheckDetailReason != null && item.Nav_ListCheckDetailReason.Any()) + { + model.Nav_ListRiskQuestionReason = new List(); + foreach (var itemR in item.Nav_ListCheckDetailReason) + { + model.Nav_ListRiskQuestionReason.Add(new T_BS_RISK_SUBMIT_CONTENT_REASON() + { + ID = Guid.NewGuid(), + RISK_SUBMIT_CONTENT_ID = model.ID, + Nav_RiskSubmitContent = model, + Nav_RiskReason = itemR.Nav_RiskReason, + RISK_REASON_ID = itemR.RISK_REASON_ID, + IS_DELETED = false, + ORG_ID = itemR.ORG_ID, + //ENTITY_ORG_TPYE = , + //FORM_ID = , + //FLOW_STATUS = , + //FLOW_SEND_STATUS = , + //FLOW_ID = , + CREATE_TIME = DateTime.Now, + MODIFY_TIME = DateTime.Now, + //CREATER_ID = , + //MODIFIER_ID = , + //T_BS_RISK_SUBMIT_CONTENT_BACKID = , + + }); + } + } + + } + } + + #region 验收人 默认为 责任组织 上一级的安全员 + + var listDepID = listSubContents.Where(e => e.DEPARTMENT_ID.HasValue).Select(e => e.DEPARTMENT_ID.Value).Distinct(); + if (listDepID != null && listDepID.Any()) + { + var listDeps = GetEntities(e => listDepID.Contains(e.ID), null); + listDepID = listDeps.Where(e => e.PARENT_ID.HasValue).Select(e => e.PARENT_ID.Value).Distinct(); + var listRole = GetEntities(e => e.NAME.Contains("安全员"), null, null); + if (listRole != null && listRole.Any()) + { + var listRoleID = listRole.Select(e => e.ID); + var listHeader = GetEntities(e => listDepID.Contains(e.DEPARTMENT_ID.Value) && e.APPROVE_ROLE_ID.HasValue && listRoleID.Contains(e.APPROVE_ROLE_ID.Value), null, null); + if (listHeader != null && listHeader.Any()) + { + foreach (var item in listSubContents) + { + if (item.DEPARTMENT_ID.HasValue) + { + var depThis = listDeps.FirstOrDefault(e => e.ID == item.DEPARTMENT_ID.Value); + if (depThis != null && depThis.PARENT_ID.HasValue) + { + T_FM_USER userTemp = listHeader.FirstOrDefault(x => x.DEPARTMENT_ID == depThis.PARENT_ID.Value); + if (userTemp != null) + { + item.CHECK_USER_ID = userTemp.ID; + item.Nav_UserCheck = userTemp; + } + } + } + } + } + } + } + #endregion + } + modelSub.Nav_ListRiskSubmitContent = listSubContents; + + #endregion + } + else + { + modelSub.Nav_ListRiskSubmitContent = GetEntities(e => e.RISK_SUBMIT_ID == guid, null, "Nav_CheckMain", "Nav_ImgFile.Nav_File", "Nav_User", "Nav_UserDeal", "Nav_DepartmentDeal", "Nav_ListCheckDetailReason.Nav_RiskReason").ToList(); + } + return modelSub; + }); + } + /// /// 获得单条实体数据 /// diff --git a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BISafeController.cs b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BISafeController.cs index 8327231..accaec7 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BISafeController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BISafeController.cs @@ -15,6 +15,7 @@ using APT.MS.Domain.Enums; using APT.MS.Domain.Entities.BI; using static APT.MS.Domain.Enums.BI.BIEnums; using APT.Utility; +using APT.MS.Domain.Entities.BS; namespace APT.SC.WebApi.Controllers.Api.BI { @@ -95,6 +96,1235 @@ namespace APT.SC.WebApi.Controllers.Api.BI return result; }); } + + + #region 安全检查绩效报表 + + #region 主界面与各弹窗的方法 + + /// + /// 显示 + /// + /// + /// + [HttpPost, Route("GetBI056Main")] + public JsonActionResult GetBI056Main([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + ModelBI056Main result = new ModelBI056Main(); + DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00"); + DateTime? dtEnd = null; + + #region enmusLevel=> lisLevelOrder enmusMineType=>lisMineTypeOrder + + //var enmus = GetEntities(e => !e.IS_DELETED, null, "ID", "VALUE", "NUM", "CODE", "NAME"); + var enmus = GetEntities(e => !e.IS_DELETED, null, null); + if (enmus == null || !enmus.Any()) + throw new Exception("获取生成单元、组织层级等枚举信息失败!"); + List lisLevelOrder = new List(); + List lisMineTypeOrder = new List(); + var enmusLevel = enmus.Where(e => e.CODE == "HMLevleEnum").OrderBy(e => e.NUM).ToList(); + var enmusMineType = enmus.Where(e => e.CODE == "BSMineTypeEnum").OrderBy(e => e.NUM).ToList(); + + if (enmusLevel == null || !enmusLevel.Any()) + throw new Exception("获取组织层级枚举信息失败!"); + else + { + foreach (var item in enmusLevel) + { + lisLevelOrder.Add(item.NAME); + } + } + if (enmusMineType == null || !enmusMineType.Any()) + throw new Exception("获取生成单元枚举信息失败!"); + else + { + foreach (var item in enmusMineType) + { + lisMineTypeOrder.Add(item.NAME); + } + } + #endregion + + #region 改良版 listSafeCheck 所有的符合条件的检查信息 + + Expression> expression = e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue && e.CHECKTIME.HasValue && dtStart <= e.CHECKTIME.Value; + + if (dtEnd.HasValue) + expression = expression.And(e => e.CHECKTIME.HasValue && dtEnd.Value >= e.CHECKTIME.Value); + + BaseFilter filterSearch = new BaseFilter(filter.OrgId); + filterSearch.IgnoreDataRule = true; + filterSearch.Include.Add("Nav_CheckTypeLevel"); + filterSearch.SelectField = new List() { "ID", "CHECKOBJECT", "CHECK_TYPE_ID", "IS_DELETED", "CHECKTIME", "Nav_CheckTypeLevel.CheckLevel_ENUMS_ID" }; + //var listSafeCheck = GetEntities(expression, null, "Nav_CheckTypeLevel"); + var listSafeCheck = GetEntities(expression, filterSearch, "Nav_CheckTypeLevel"); + + #endregion + + #region 1_1 改良版 + + List> listCheckCount = new List>(); + List listCheckLevelCount = null; + foreach (var item in enmusLevel) + { + //mineTypeName: ["露天矿", "选矿厂", "尾矿库", "职能部门"], + //legendName: ["公司级", "部门级", "车间级", "班组级"], + //checkCount: [[3, 3, 3, 3], [12, 12, 12, 6], [24, 24, 24, 12], [90, 90, 120, 36]], + + listCheckLevelCount = new List(); + //选矿 10, 尾矿 20, 矿山 30, 地下矿 40, + foreach (var itemMine in enmusMineType) + { + int count = listSafeCheck.Where(e => e.CHECKOBJECT == itemMine.VALUE && e.Nav_CheckTypeLevel.CheckLevel_ENUMS_ID == item.ID).Count(); + listCheckLevelCount.Add(count); + } + listCheckCount.Add(listCheckLevelCount); + } + + //数据组装 + result.Count1_1 = listCheckCount; + result.lisMineTypeOrder = lisMineTypeOrder; + result.lisLevelOrder = lisLevelOrder; + + #endregion + + + + #region 3_1 改良版 + + + List> listCheckTypeCount = new List>(); + List listCheckTypeCountPer = null; + + var listCheckType = GetEntities(e => !e.IS_DELETED, null).OrderBy(e => e.PARENT_ID).ThenBy(e => e.NUM); + List listCheckTypeName = new List(); + List listCheckTypeID = new List(); + Dictionary> dicParent = new Dictionary>(); + List listSum = new List(); + Guid guidParent = Guid.Empty; + foreach (var item in listCheckType) + { + if (item.PARENT_ID.HasValue) + { + if (!listCheckTypeName.Contains(item.NAME)) + { + listCheckTypeName.Add(item.NAME); + listCheckTypeID.Add(item.ID); + guidParent = item.PARENT_ID.Value; + } + listSum.Add(item.ID); + } + else + { + listCheckTypeName.Add(item.NAME); + listCheckTypeID.Add(item.ID); + } + } + listSum.Add(guidParent);//有些人直接定义 综合检查 + dicParent.Add(guidParent, listSum); + + foreach (var item in enmusMineType) + { + listCheckTypeCountPer = new List(); + + foreach (var itemCheckType in listCheckTypeID) + { + + //检查类型 + if (itemCheckType == guidParent) + { + int count = listSafeCheck.Where(e => e.CHECKOBJECT == item.VALUE && listSum.Contains(e.CHECK_TYPE_ID.Value)).Count(); + listCheckTypeCountPer.Add(count); + } + else + { + int count = listSafeCheck.Where(e => e.CHECKOBJECT == item.VALUE && e.CHECK_TYPE_ID == itemCheckType).Count(); + listCheckTypeCountPer.Add(count); + } + } + listCheckTypeCount.Add(listCheckTypeCountPer); + } + + //数据组装 + result.Count3_1 = listCheckTypeCount; + result.lisCheckTypeName = listCheckTypeName; + #endregion + + #region 隐患 1_2 2_1 2_2 3_2 + + Expression> expression2_2 = e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtStart && e.RiskContentState.HasValue && !e.IS_DELETED;// && (e.RiskContentState.Value == 60 || e.RiskContentState.Value == 80)&& e.DESCREPTION != null + if (dtEnd.HasValue) + expression2_2 = expression2_2.And(e => e.CREATE_TIME.HasValue && dtEnd.Value >= e.CREATE_TIME.Value); + + var listContent = GetEntities(expression2_2, null, "Nav_Submit"); + + #region 1_2 各生产单元 隐患数 + + List listRiskMineCount1_2 = new List(); + foreach (var item in enmusMineType) + { + listRiskMineCount1_2.Add(listContent.Where(e => e.Nav_Submit != null && e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT.Value == (BSMineTypeEnum)item.VALUE).Count()); + } + result.listRiskMineCount1_2 = listRiskMineCount1_2; + #endregion + + #region 2_1 月度 已完成 未完成 整改率 + + List listMonth = new List() { 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12 }; + if (dtStart.Year > DateTime.Now.Year) + { + listMonth.Clear(); + } + else if (dtStart.Year == DateTime.Now.Year) + { + listMonth = listMonth.Where(e => e <= DateTime.Now.Month).OrderBy(e => e).ToList(); + } + + List listFinish2_1 = new List(); + List listNotFinish2_1 = new List(); + List listFinish2_1Percent = new List(); + foreach (var item in listMonth) + { + listFinish2_1.Add(listContent.Where(e => e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == item && (e.RiskContentState.Value == 60 || e.RiskContentState.Value == 80)).Count()); + listNotFinish2_1.Add(listContent.Where(e => e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == item && e.RiskContentState.Value != 60 && e.RiskContentState.Value != 80).Count()); + } + for (int i = 0; i < listMonth.Count; i++) + { + if (listNotFinish2_1[i] == 0) + { + listFinish2_1Percent.Add(100); + } + else if (listFinish2_1[i] == 0) + { + listFinish2_1Percent.Add(0); + } + else + { + listFinish2_1Percent.Add((decimal)Math.Round((listFinish2_1[i] * 100.0 / (listNotFinish2_1[i] + listFinish2_1[i])), 2)); + } + } + + + //result.listMonth = listMonth; + result.listFinish2_1 = listFinish2_1; + result.listNotFinish2_1 = listNotFinish2_1; + result.listFinish2_1Percent = listFinish2_1Percent; + + + #endregion + + #region 2_2 隐患Top + var query = listContent.GroupBy(e => e.DESCREPTION).Select(e => new + { + DESCREPTION = e.Key, + Count = e.Count() + }).OrderByDescending(e => e.Count).Take(6); + + if (query != null && query.Any()) + { + List ListDescreption2_2 = new List(); + List Count2_2 = new List(); + foreach (var item in query) + { + Count2_2.Add(item.Count); + ListDescreption2_2.Add(item.DESCREPTION); + } + result.Count2_2 = Count2_2; + result.ListDescreption2_2 = ListDescreption2_2; + } + else + { + result.Count2_2 = new List(); + result.ListDescreption2_2 = new List(); + } + #endregion + + #region 3_2 检查类型隐患统计 + + List> listRiskMoneCheckType = new List>(); + foreach (var item in enmusMineType) + { + listCheckTypeCountPer = new List(); + foreach (var itemCheckType in listCheckTypeID) + { + //检查类型 + if (itemCheckType == guidParent) + { + int count = listContent.Where(e => e.Nav_Submit != null && e.Nav_Submit.CHECK_TYPE_ID.HasValue && e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT == (BSMineTypeEnum)item.VALUE && listSum.Contains(e.Nav_Submit.CHECK_TYPE_ID.Value)).Count(); + listCheckTypeCountPer.Add(count); + } + else + { + int count = listContent.Where(e => e.Nav_Submit != null && e.Nav_Submit.CHECK_TYPE_ID.HasValue && e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT == (BSMineTypeEnum)item.VALUE && e.Nav_Submit.CHECK_TYPE_ID == itemCheckType).Count(); + listCheckTypeCountPer.Add(count); + } + } + listRiskMoneCheckType.Add(listCheckTypeCountPer); + } + result.Count3_2 = listRiskMoneCheckType; + + #endregion + + #endregion + + + return result; + }); + } + + //#region 旧版直接查询 count + + ///// + ///// 显示 + ///// + ///// + ///// + //[HttpPost, Route("GetBI056Main")] + //public JsonActionResult GetBI056Main([FromBody] KeywordFilter filter) + //{ + // return SafeExecute(() => + // { + // ModelBI056Main result = new ModelBI056Main(); + + // DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00"); + // DateTime? dtEnd = null; + + // #region enmusLevel=> lisLevelOrder enmusMineType=>lisMineTypeOrder + + // //var enmus = GetEntities(e => !e.IS_DELETED, null, "ID", "VALUE", "NUM", "CODE", "NAME"); + // var enmus = GetEntities(e => !e.IS_DELETED, null, null); + // if (enmus == null || !enmus.Any()) + // throw new Exception("获取生成单元、组织层级等枚举信息失败!"); + // List lisLevelOrder = new List(); + // List lisMineTypeOrder = new List(); + // var enmusLevel = enmus.Where(e => e.CODE == "HMLevleEnum").OrderBy(e => e.NUM).ToList(); + // var enmusMineType = enmus.Where(e => e.CODE == "BSMineTypeEnum").OrderBy(e => e.NUM).ToList(); + + // if (enmusLevel == null || !enmusLevel.Any()) + // throw new Exception("获取组织层级枚举信息失败!"); + // else + // { + // foreach (var item in enmusLevel) + // { + // lisLevelOrder.Add(item.NAME); + // } + // } + // if (enmusMineType == null || !enmusMineType.Any()) + // throw new Exception("获取生成单元枚举信息失败!"); + // else + // { + // foreach (var item in enmusMineType) + // { + // lisMineTypeOrder.Add(item.NAME); + // } + // } + // #endregion + + // #region 1_1 listCheckCount(List>) + + // Expression> expression = e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue && e.CHECKTIME.HasValue && dtStart <= e.CHECKTIME.Value; + + // if (dtEnd.HasValue) + // expression = expression.And(e => e.CHECKTIME.HasValue && dtEnd.Value >= e.CHECKTIME.Value); + + // //BSMineTypeEditEnum 选矿 10, 尾矿 20, 矿山 30, 地下矿 40, + // //FMDepartmentType 层级 3公司级 0部门级 1车间级 2班组级 + + // //expression 不能组合 + // //公司级 部门级 车间级 班组级 用filter过滤 + // BaseFilter filterSearch1_1 = new BaseFilter(filter.OrgId); + // filterSearch1_1.IgnoreDataRule = true; + // filterSearch1_1.Include.Add("Nav_CheckTypeLevel"); + + // FilterGroup filterGroup = new FilterGroup(); + // filterGroup.IsAnd = true; + + // FilterRule filterGroupRule = new FilterRule(); + // filterGroupRule.Field = "Nav_CheckTypeLevel.CheckLevel_ENUMS_ID"; + + // FilterRule filterGroupMineRule = new FilterRule(); + // filterGroupMineRule.Field = "CHECKOBJECT"; + + // List> listCheckCount = new List>(); + // List listCheckLevelCount = null; + // foreach (var item in enmusLevel) + // { + // //mineTypeName: ["露天矿", "选矿厂", "尾矿库", "职能部门"], + // //legendName: ["公司级", "部门级", "车间级", "班组级"], + // //checkCount: [[3, 3, 3, 3], [12, 12, 12, 6], [24, 24, 24, 12], [90, 90, 120, 36]], + + // listCheckLevelCount = new List(); + // //选矿 10, 尾矿 20, 矿山 30, 地下矿 40, + // foreach (var itemMine in enmusMineType) + // { + // if (filterGroup.Rules != null && filterGroup.Rules.Any()) + // filterGroup.Rules.Clear(); + + // filterGroupRule.Value = item.ID; + // filterGroup.Rules.Add(filterGroupRule); + // filterGroupMineRule.Value = itemMine.VALUE; + // filterGroup.Rules.Add(filterGroupMineRule); + + // filterSearch1_1.FilterGroup = filterGroup; + + // int count = GetCount(expression, filterSearch1_1); + // listCheckLevelCount.Add(count); + // } + // listCheckCount.Add(listCheckLevelCount); + // } + + // //数据组装 + // result.Count1_1 = listCheckCount; + // result.lisMineTypeOrder = lisMineTypeOrder; + // result.lisLevelOrder = lisLevelOrder; + + // #endregion + + // #region 3_1 + + // List> listCheckTypeCount = new List>(); + // List listCheckTypeCountPer = null; + + // var listCheckType = GetEntities(e => !e.IS_DELETED, null).OrderBy(e => e.PARENT_ID).ThenBy(e => e.NUM); + // List listCheckTypeName = new List(); + // List listCheckTypeID = new List(); + // Dictionary> dicParent = new Dictionary>(); + // List listSum = new List(); + // Guid guidParent = Guid.Empty; + // foreach (var item in listCheckType) + // { + // if (item.PARENT_ID.HasValue) + // { + // if (!listCheckTypeName.Contains(item.NAME)) + // { + // listCheckTypeName.Add(item.NAME); + // listCheckTypeID.Add(item.ID); + // guidParent = item.PARENT_ID.Value; + // } + // listSum.Add(item.ID); + // } + // else + // { + // listCheckTypeName.Add(item.NAME); + // listCheckTypeID.Add(item.ID); + // } + // } + // listSum.Add(guidParent);//有些人直接定义 综合检查 + // dicParent.Add(guidParent, listSum); + + + // Expression> expression3_1 = e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECK_TYPE_ID.HasValue && e.CHECKTIME.HasValue && dtStart <= e.CHECKTIME.Value; + + // if (dtEnd.HasValue) + // expression3_1 = expression3_1.And(e => e.CHECKTIME.HasValue && dtEnd.Value >= e.CHECKTIME.Value); + + + // Expression> expression3_1_Contains = expression3_1.And(e => listSum.Contains(e.CHECK_TYPE_ID.Value)); + + + // BaseFilter filterSearch3_1 = new BaseFilter(filter.OrgId); + // filterSearch3_1.IgnoreDataRule = true; + + // filterGroupRule = new FilterRule(); + // filterGroupRule.Field = "CHECK_TYPE_ID"; + + // filterGroupMineRule = new FilterRule(); + // filterGroupMineRule.Field = "CHECKOBJECT"; + + // foreach (var item in enmusMineType) + // { + // listCheckTypeCountPer = new List(); + + // foreach (var itemCheckType in listCheckTypeID) + // { + // if (filterGroup.Rules != null && filterGroup.Rules.Any()) + // filterGroup.Rules.Clear(); + + // //检查类型 + // if (itemCheckType == guidParent) + // { + // //报错 expression3_1 => expression3_1_Contains + // //filterGroupRule.Operate = FilterOperate.Contains; + // //filterGroupRule.Value = listSum; + + // //生产单元 + // filterGroupMineRule.Value = item.VALUE; + // filterGroup.Rules.Add(filterGroupMineRule); + // filterSearch3_1.FilterGroup = filterGroup; + + // int count = GetCount(expression3_1_Contains, filterSearch3_1); + // listCheckTypeCountPer.Add(count); + // } + // else + // { + // filterGroupRule.Value = itemCheckType; + + // filterGroup.Rules.Add(filterGroupRule); + + // //生产单元 + // filterGroupMineRule.Value = item.VALUE; + // filterGroup.Rules.Add(filterGroupMineRule); + + // filterSearch3_1.FilterGroup = filterGroup; + + // int count = GetCount(expression3_1, filterSearch3_1); + // listCheckTypeCountPer.Add(count); + // } + // //filterGroup.Rules.Add(filterGroupRule); + + // ////生产单元 + // //filterGroupMineRule.Value = item.VALUE; + // //filterGroup.Rules.Add(filterGroupMineRule); + + // //filterSearch3_1.FilterGroup = filterGroup; + + // //int count = GetCount(expression3_1, filterSearch3_1); + // //listCheckTypeCountPer.Add(count); + // } + // listCheckTypeCount.Add(listCheckTypeCountPer); + // } + // result.Count3_1 = listCheckTypeCount; + // result.lisCheckTypeName = listCheckTypeName; + + // #endregion + + // return result; + // }); + //} + //#endregion + + #region 各弹窗方法 + + #region 1_1 GetBI056_1_1 + /// + /// 显示 + /// + /// + /// + [HttpPost, Route("GetBI056_1_1")] + public JsonActionResult GetBI056_1_1([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + ModelBI056_1_1 result = new ModelBI056_1_1(); + int year = DateTime.Now.Year; + int month = DateTime.Now.Month; + List listMonth = null; + DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00"); + DateTime? dtEnd = null; + + if (!string.IsNullOrEmpty(filter.Keyword)) + { + var season = int.Parse(filter.Keyword); + switch (season) + { + case 1: + listMonth = new List() { 1, 2, 3 }; + break; + case 2: + listMonth = new List() { 4, 5, 6 }; + break; + case 3: + listMonth = new List() { 7, 8, 9 }; + break; + case 4: + listMonth = new List() { 10, 11, 12 }; + break; + default: + break; + } + + dtStart = dtStart.AddMonths(3 * (season - 1)); + dtEnd = dtStart.AddMonths(3).AddSeconds(-1); + } + + + #region enmusLevel=> lisLevelOrder enmusMineType=>lisMineTypeOrder + + var enmus = GetEntities(e => !e.IS_DELETED, null, null); + if (enmus == null || !enmus.Any()) + throw new Exception("获取生成单元、组织层级等枚举信息失败!"); + List lisLevelOrder = new List(); + List lisMineTypeOrder = new List(); + var enmusLevel = enmus.Where(e => e.CODE == "HMLevleEnum").OrderBy(e => e.NUM).ToList(); + var enmusMineType = enmus.Where(e => e.CODE == "BSMineTypeEnum").OrderBy(e => e.NUM).ToList(); + + if (enmusLevel == null || !enmusLevel.Any()) + throw new Exception("获取组织层级枚举信息失败!"); + else + { + foreach (var item in enmusLevel) + { + lisLevelOrder.Add(item.NAME); + } + } + if (enmusMineType == null || !enmusMineType.Any()) + throw new Exception("获取生成单元枚举信息失败!"); + else + { + foreach (var item in enmusMineType) + { + lisMineTypeOrder.Add(item.NAME); + } + } + + #endregion + + List> listResult = new List>(); + List listResultPer = null; + int count = 0; + + + + #region 改良版 listSafeCheck 所有的符合条件的检查信息 + + Expression> expression = e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue && e.CHECKTIME.HasValue && dtStart <= e.CHECKTIME.Value; + + if (dtEnd.HasValue) + expression = expression.And(e => e.CHECKTIME.HasValue && dtEnd.Value >= e.CHECKTIME.Value); + + BaseFilter filterSearch = new BaseFilter(filter.OrgId); + filterSearch.IgnoreDataRule = true; + filterSearch.Include.Add("Nav_CheckTypeLevel"); + filterSearch.SelectField = new List() { "ID", "CHECKOBJECT", "CHECK_TYPE_ID", "IS_DELETED", "CHECKTIME", "Nav_CheckTypeLevel.CheckLevel_ENUMS_ID" }; + //var listSafeCheck = GetEntities(expression, null, "Nav_CheckTypeLevel"); + var listSafeCheck = GetEntities(expression, filterSearch, "Nav_CheckTypeLevel"); + + #endregion + + foreach (var item in enmusLevel) + { + listResultPer = new List(); + foreach (var itemMonth in listMonth) + { + if (itemMonth > month && dtStart.Year == year)//同年 如果月份 大于当前月 直接跳出计算 + { + break; + } + //层级 各 生产单元 几月到几月 安全检查数量 + foreach (var itemMine in enmusMineType) + { + count = listSafeCheck.Where(e => e.CHECKOBJECT == itemMine.VALUE && e.Nav_CheckTypeLevel.CheckLevel_ENUMS_ID == item.ID && e.CHECKTIME.Value.Month == itemMonth).Count(); + listResultPer.Add(count); + } + } + listResult.Add(listResultPer); + } + + //数据组装 + result.Count = listResult; + result.lisMineTypeOrder = lisMineTypeOrder; + result.lisLevelOrder = lisLevelOrder; + + return result; + }); + } + + #endregion + + #region 1_2 GetBI056_1_2 + + /// + /// 显示 + /// + /// + /// + [HttpPost, Route("GetBI056_1_2")] + public JsonActionResult GetBI056_1_2([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + ModelBI056_1_2 result = new ModelBI056_1_2(); + DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00"); + DateTime? dtEnd = null; + + List lisMineTypeOrder = new List(); + var enmusMineType = GetEntities(e => !e.IS_DELETED && e.CODE == "BSMineTypeEnum", null, null).OrderBy(e => e.NUM).ToList(); + + if (enmusMineType == null || !enmusMineType.Any()) + throw new Exception("获取生成单元枚举信息失败!"); + else + { + foreach (var item in enmusMineType) + { + lisMineTypeOrder.Add(item.NAME); + } + } + + List listMonth = new List() { 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12 }; + if (dtStart.Year > DateTime.Now.Year) + { + listMonth.Clear(); + } + else if (dtStart.Year == DateTime.Now.Year) + { + listMonth = listMonth.Where(e => e <= DateTime.Now.Month).OrderBy(e => e).ToList(); + } + + List> ListCount = new List>(); + Expression> expression = e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtStart;//&& e.DESCREPTION != null + if (dtEnd.HasValue) + expression = expression.And(e => e.CREATE_TIME.HasValue && dtEnd.Value >= e.CREATE_TIME.Value); + + var listContent = GetEntities(expression, null, "Nav_Submit"); + BSMineTypeEnum? mineType = null; + List ListCountPer = null; + foreach (var item in enmusMineType) + { + mineType = (BSMineTypeEnum)item.VALUE; + ListCountPer = new List(); + foreach (var itemMonth in listMonth) + { + ListCountPer.Add(listContent.Count(e => e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT.Value == mineType && e.CREATE_TIME.Value.Month == itemMonth)); + } + ListCount.Add(ListCountPer); + } + + //数据组装 + result.lisMineTypeOrder = lisMineTypeOrder; + result.ListCount = ListCount; + return result; + }); + } + + #endregion + + #region 2_1 GetBI056_2_1 + + /// + /// 显示 + /// + /// + /// + [HttpPost, Route("GetBI056_2_1")] + public JsonActionResult GetBI056_2_1([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + ModelBI056_2_1 result = new ModelBI056_2_1(); + DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00"); + DateTime? dtEnd = null; + + List lisMineTypeOrder = new List(); + var enmusMineType = GetEntities(e => !e.IS_DELETED && e.CODE == "BSMineTypeEnum", null, null).OrderBy(e => e.NUM).ToList(); + + if (enmusMineType == null || !enmusMineType.Any()) + throw new Exception("获取生成单元枚举信息失败!"); + else + { + foreach (var item in enmusMineType) + { + lisMineTypeOrder.Add(item.NAME); + } + } + + Expression> expression2_2 = e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtStart && e.RiskContentState.HasValue && !e.IS_DELETED;//&& e.DESCREPTION != null + if (dtEnd.HasValue) + expression2_2 = expression2_2.And(e => e.CREATE_TIME.HasValue && dtEnd.Value >= e.CREATE_TIME.Value); + + var listContent = GetEntities(expression2_2, null, "Nav_Submit"); + List listMonth = new List() { 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12 }; + if (dtStart.Year > DateTime.Now.Year) + { + listMonth.Clear(); + } + else if (dtStart.Year == DateTime.Now.Year) + { + listMonth = listMonth.Where(e => e <= DateTime.Now.Month).OrderBy(e => e).ToList(); + } + + List listFinishPer2_1 = null; + List listNotFinishPer2_1 = null; + List listFinishPer2_1Percent = null; + + List> listFinish2_1 = new List>(); + List> listNotFinish2_1 = new List>(); + List> listFinish2_1Percent = new List>(); + + BSMineTypeEnum? CHECKOBJECT = null; + foreach (var itemEnums in enmusMineType) + { + CHECKOBJECT = (BSMineTypeEnum)itemEnums.VALUE; + listFinishPer2_1 = new List(); + listNotFinishPer2_1 = new List(); + listFinishPer2_1Percent = new List(); + foreach (var item in listMonth) + { + listFinishPer2_1.Add(listContent.Count(e => e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT.Value == CHECKOBJECT && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == item && (e.RiskContentState.Value == 60 || e.RiskContentState.Value == 80))); + listNotFinishPer2_1.Add(listContent.Count(e => e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT.Value == CHECKOBJECT && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == item && e.RiskContentState.Value != 60 && e.RiskContentState.Value != 80)); + } + + for (int i = 0; i < listMonth.Count; i++) + { + if (listNotFinishPer2_1[i] == 0) + { + listFinishPer2_1Percent.Add(100); + } + else if (listFinishPer2_1[i] == 0) + { + listFinishPer2_1Percent.Add(0); + } + else + { + listFinishPer2_1Percent.Add((decimal)Math.Round((listFinishPer2_1[i] * 100.0 / (listNotFinishPer2_1[i] + listFinishPer2_1[i])), 2)); + } + } + listFinish2_1.Add(listFinishPer2_1); + listNotFinish2_1.Add(listNotFinishPer2_1); + listFinish2_1Percent.Add(listFinishPer2_1Percent); + } + + result.lisMineTypeOrder = lisMineTypeOrder; + result.listFinish2_1 = listFinish2_1; + result.listNotFinish2_1 = listNotFinish2_1; + result.listFinish2_1Percent = listFinish2_1Percent; + + return result; + }); + } + + #endregion + + #region 2_2 GetBI056_2_2 + + + + /// + /// 显示 + /// + /// + /// + [HttpPost, Route("GetBI056_2_2")] + public JsonActionResult GetBI056_2_2([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + ModelBI056_2_2 result = new ModelBI056_2_2(); + DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00"); + DateTime? dtEnd = null; + + List lisMineTypeOrder = new List(); + var enmusMineType = GetEntities(e => !e.IS_DELETED && e.CODE == "BSMineTypeEnum", null, null).OrderBy(e => e.NUM).ToList(); + + if (enmusMineType == null || !enmusMineType.Any()) + throw new Exception("获取生成单元枚举信息失败!"); + else + { + foreach (var item in enmusMineType) + { + lisMineTypeOrder.Add(item.NAME); + } + } + + List> ListCount = new List>(); + List> ListDescreption = new List>(); + + Expression> expression2_2 = e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtStart;//&& e.DESCREPTION != null&& e.RiskContentState.HasValue && (e.RiskContentState.Value == 60 || e.RiskContentState.Value == 80) + if (dtEnd.HasValue) + expression2_2 = expression2_2.And(e => e.CREATE_TIME.HasValue && dtEnd.Value >= e.CREATE_TIME.Value); + + BSMineTypeEnum? mineType = null; + + List ListCountPer = null; + List ListDescreptionPer = null; + foreach (var item in enmusMineType) + { + mineType = (BSMineTypeEnum)item.VALUE; + Expression> expression2_2Mine = expression2_2.And(e => e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT.Value == mineType); + var listContent = GetEntities(expression2_2Mine, null, "Nav_Submit"); + var query = listContent.GroupBy(e => e.DESCREPTION).Select(e => new + { + DESCREPTION = e.Key, + Count = e.Count() + }).OrderByDescending(e => e.Count).Take(6); + ListCountPer = new List(); + ListDescreptionPer = new List(); + if (query != null && query.Any()) + { + foreach (var itemVal in query) + { + ListCountPer.Add(itemVal.Count); + ListDescreptionPer.Add(itemVal.DESCREPTION); + } + } + ListCount.Add(ListCountPer); + ListDescreption.Add(ListDescreptionPer); + } + + //数据组装 + result.lisMineTypeOrder = lisMineTypeOrder; + result.ListCount = ListCount; + result.ListDescreption = ListDescreption; + return result; + }); + } + + #endregion + + #region 3_1 GetBI056_3_1 + + /// + /// 各生产单元 各月 各检查类型数量 + /// + /// + /// + [HttpPost, Route("GetBI056_3_1")] + public JsonActionResult GetBI056_3_1([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + ModelBI056_3_1 result = new ModelBI056_3_1(); + DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00"); + DateTime? dtEnd = null; + + var enmusMineType = GetEntities(e => !e.IS_DELETED && e.CODE == "BSMineTypeEnum", null, null).OrderBy(e => e.NUM).ToList(); + List lisMineTypeOrder = new List(); + if (enmusMineType == null || !enmusMineType.Any()) + throw new Exception("获取生成单元枚举信息失败!"); + else + { + foreach (var item in enmusMineType) + { + lisMineTypeOrder.Add(item.NAME); + } + } + + var listCheckType = GetEntities(e => !e.IS_DELETED, null, "Nav_ListMineType").OrderBy(e => e.PARENT_ID).ThenBy(e => e.NUM).ToList(); + + Dictionary> dicParent = new Dictionary>(); + List listSum = new List(); + Guid guidParent = Guid.Empty; + + foreach (var item in listCheckType) + { + if (item.PARENT_ID.HasValue) + { + if (guidParent != Guid.Empty) + { + guidParent = item.PARENT_ID.Value; + } + listSum.Add(item.ID); + } + } + + listSum.Add(guidParent);//有些人直接定义 综合检查 + dicParent.Add(guidParent, listSum); + + + List> listCheckTypes = new List>(); + foreach (var item in enmusMineType) + { + listCheckTypes.Add(listCheckType.Where(e => e.Nav_ListMineType.Where(e => e.MINETYPE_ENUMS_ID == item.ID).Any()).ToList()); + } + List> lisMineCheckTypeOrder = new List>(); + List lisMineCheckTypeOrderPer = null; + foreach (var item in listCheckTypes) + { + lisMineCheckTypeOrderPer = new List(); + foreach (var itemCheckType in item) + { + lisMineCheckTypeOrderPer.Add(itemCheckType.NAME); + } + lisMineCheckTypeOrder.Add(lisMineCheckTypeOrderPer); + } + + #region 改良版 listSafeCheck 所有的符合条件的检查信息 + + Expression> expression = e => !e.IS_DELETED && e.CHECKOBJECT.HasValue && e.CHECK_TYPE_LEVEL_ID.HasValue && e.CHECKTIME.HasValue && dtStart <= e.CHECKTIME.Value; + + if (dtEnd.HasValue) + expression = expression.And(e => e.CHECKTIME.HasValue && dtEnd.Value >= e.CHECKTIME.Value); + + BaseFilter filterSearch = new BaseFilter(filter.OrgId); + filterSearch.IgnoreDataRule = true; + filterSearch.Include.Add("Nav_CheckTypeLevel"); + filterSearch.SelectField = new List() { "ID", "CHECKOBJECT", "CHECK_TYPE_ID", "IS_DELETED", "CHECKTIME", "Nav_CheckTypeLevel.CheckLevel_ENUMS_ID" }; + //var listSafeCheck = GetEntities(expression, null, "Nav_CheckTypeLevel"); + var listSafeCheck = GetEntities(expression, filterSearch, "Nav_CheckTypeLevel"); + #endregion + + + #region 3_1 改良版 + List>> listCheckTypeMonthCount = new List>>(); + List> listCheckTypeCount = null; + List listCheckTypeCountPer = null; + + List listMonth = new List() { 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12 }; + if (dtStart.Year > DateTime.Now.Year) + { + listMonth.Clear(); + } + else if (dtStart.Year == DateTime.Now.Year) + { + listMonth = listMonth.Where(e => e <= DateTime.Now.Month).OrderBy(e => e).ToList(); + } + + var enmusMineTypeCount = enmusMineType.Count(); + for (int i = 0; i < enmusMineTypeCount; i++) + { + listCheckTypeCount = new List>(); + int MineCheckTypeCount = listCheckTypes[i].Count; + for (int j = 0; j < MineCheckTypeCount; j++) + { + listCheckTypeCountPer = new List(); + foreach (int itemMonth in listMonth) + { + //检查类型 + if (listCheckTypes[i][j].ID == guidParent) + { + int count = listSafeCheck.Where(e => e.CHECKOBJECT == enmusMineType[i].VALUE && e.CHECKTIME.Value.Month == itemMonth && listSum.Contains(e.CHECK_TYPE_ID.Value)).Count(); + listCheckTypeCountPer.Add(count); + } + else + { + int count = listSafeCheck.Where(e => e.CHECKOBJECT == enmusMineType[i].VALUE && e.CHECKTIME.Value.Month == itemMonth && e.CHECK_TYPE_ID == listCheckTypes[i][j].ID).Count(); + listCheckTypeCountPer.Add(count); + } + } + listCheckTypeCount.Add(listCheckTypeCountPer); + } + listCheckTypeMonthCount.Add(listCheckTypeCount); + } + + //数据组装 + result.lisMineTypeOrder = lisMineTypeOrder; + result.lisMineCheckTypeOrder = lisMineCheckTypeOrder; + result.Count3_1 = listCheckTypeMonthCount; + + #endregion + + + return result; + }); + } + + #endregion + + #region 3_2 GetBI056_3_2 + + /// + /// 各生产单元 各月 各检查类型数量 + /// + /// + /// + [HttpPost, Route("GetBI056_3_2")] + public JsonActionResult GetBI056_3_2([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + ModelBI056_3_2 result = new ModelBI056_3_2(); + DateTime dtStart = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-01-01 00:00:00"); + DateTime? dtEnd = null; + + List listMonth = new List() { 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12 }; + if (dtStart.Year > DateTime.Now.Year) + { + listMonth.Clear(); + } + else if (dtStart.Year == DateTime.Now.Year) + { + listMonth = listMonth.Where(e => e <= DateTime.Now.Month).OrderBy(e => e).ToList(); + } + + var enmusMineType = GetEntities(e => !e.IS_DELETED && e.CODE == "BSMineTypeEnum", null, null).OrderBy(e => e.NUM).ToList(); + List lisMineTypeOrder = new List(); + if (enmusMineType == null || !enmusMineType.Any()) + throw new Exception("获取生成单元枚举信息失败!"); + else + { + foreach (var item in enmusMineType) + { + lisMineTypeOrder.Add(item.NAME); + } + } + + var listCheckType = GetEntities(e => !e.IS_DELETED, null, "Nav_ListMineType").OrderBy(e => e.PARENT_ID).ThenBy(e => e.NUM); + List listCheckTypeName = new List(); + List listCheckTypeID = new List(); + Dictionary> dicParent = new Dictionary>(); + List listSum = new List(); + Guid guidParent = Guid.Empty; + foreach (var item in listCheckType) + { + if (item.PARENT_ID.HasValue) + { + if (!listCheckTypeName.Contains(item.NAME)) + { + listCheckTypeName.Add(item.NAME); + listCheckTypeID.Add(item.ID); + guidParent = item.PARENT_ID.Value; + } + listSum.Add(item.ID); + } + else + { + listCheckTypeName.Add(item.NAME); + listCheckTypeID.Add(item.ID); + } + } + listSum.Add(guidParent);//有些人直接定义 综合检查 + dicParent.Add(guidParent, listSum); + + List> listCheckTypes = new List>(); + foreach (var item in enmusMineType) + { + listCheckTypes.Add(listCheckType.Where(e => e.Nav_ListMineType.Where(e => e.MINETYPE_ENUMS_ID == item.ID).Any()).ToList()); + } + + Expression> expression = e => !e.IS_DELETED && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value >= dtStart && e.RiskContentState.HasValue && !e.IS_DELETED; + if (dtEnd.HasValue) + expression = expression.And(e => e.CREATE_TIME.HasValue && dtEnd.Value >= e.CREATE_TIME.Value); + var listContent = GetEntities(expression, null, "Nav_Submit").ToList(); + + List> lisMineCheckTypeOrder = new List>(); + List lisMineCheckTypeOrderPer = null; + foreach (var item in listCheckTypes) + { + lisMineCheckTypeOrderPer = new List(); + foreach (var itemCheckType in item) + { + lisMineCheckTypeOrderPer.Add(itemCheckType.NAME); + } + lisMineCheckTypeOrder.Add(lisMineCheckTypeOrderPer); + } + + + List>> listRisk = new List>>(); + List> listRiskMoneCheckType = null; + List listCheckTypeCountPer = null; + int MintTypeIndex = -1; + foreach (var item in enmusMineType) + { + MintTypeIndex++; + listRiskMoneCheckType = new List>(); + foreach (var itemCheckType in listCheckTypes[MintTypeIndex]) + { + listCheckTypeCountPer = new List(); + foreach (var itemMonth in listMonth) + { + //检查类型 + if (itemCheckType.ID == guidParent) + { + int count = listContent.Count(e => e.Nav_Submit != null && e.Nav_Submit.CHECK_TYPE_ID.HasValue && listSum.Contains(e.Nav_Submit.CHECK_TYPE_ID.Value) && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == itemMonth && e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT == (BSMineTypeEnum)item.VALUE && listSum.Contains(e.Nav_Submit.CHECK_TYPE_ID.Value)); + listCheckTypeCountPer.Add(count); + } + else + { + int count = listContent.Count(e => e.Nav_Submit != null && e.Nav_Submit.CHECK_TYPE_ID.HasValue && e.Nav_Submit.CHECK_TYPE_ID == itemCheckType.ID && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Month == itemMonth && e.Nav_Submit.CHECKOBJECT.HasValue && e.Nav_Submit.CHECKOBJECT == (BSMineTypeEnum)item.VALUE && e.Nav_Submit.CHECK_TYPE_ID == itemCheckType.ID); + listCheckTypeCountPer.Add(count); + } + } + listRiskMoneCheckType.Add(listCheckTypeCountPer); + } + listRisk.Add(listRiskMoneCheckType); + } + + result.lisMineTypeOrder = lisMineTypeOrder; + result.lisMineCheckType = lisMineCheckTypeOrder; + result.Count3_1 = listRisk; + return result; + }); + } + + #endregion + + #endregion + + #endregion + + #region model + + public class ModelBI056Main + { + public List lisMineTypeOrder { get; set; } + public List lisLevelOrder { get; set; } + public List> Count1_1 { get; set; } + public List listRiskMineCount1_2 { get; set; } + + + + public List listFinish2_1 { get; set; } + public List listMonth { get; set; } + public List listNotFinish2_1 { get; set; } + public List listFinish2_1Percent { get; set; } + + public List ListDescreption2_2 { get; set; } + public List Count2_2 { get; set; } + public List> Count3_1 { get; set; } + public List lisCheckTypeName { get; set; } + public List> Count3_2 { get; set; } + } + + public class ModelBI056_1_1 + { + public List lisMineTypeOrder { get; set; } + public List lisLevelOrder { get; set; } + public List> Count { get; set; } + } + + public class ModelBI056_1_2 + { + public List lisMineTypeOrder { get; set; } + public List> ListCount { get; set; } + } + + public class ModelBI056_2_1 + { + public List lisMineTypeOrder { get; set; } + public List> listFinish2_1 { get; set; } + public List> listNotFinish2_1 { get; set; } + public List> listFinish2_1Percent { get; set; } + } + public class ModelBI056_2_2 + { + public List lisMineTypeOrder { get; set; } + public List> ListCount { get; set; } + public List> ListDescreption { get; set; } + } + + + public class ModelBI056_3_1 + { + /// + /// 生产单元 + /// + public List lisMineTypeOrder { get; set; } + /// + /// 生产单元 检查类型 + /// + public List> lisMineCheckTypeOrder { get; set; } + + /// + /// 检查数量 + /// + public List>> Count3_1 { get; set; } + + } + + public class ModelBI056_3_2 + { + /// + /// 生产单元 + /// + public List lisMineTypeOrder { get; set; } + + /// + /// 生产单元 检查类型 + /// + public List> lisMineCheckType { get; set; } + + /// + /// 检查数量 + /// + public List>> Count3_1 { get; set; } + + } + + #endregion + + #endregion }