From 91a335895e028a133f96006555238c44e6a32064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E7=BE=8E=E8=8D=A3?= <10755671+mei-rong-he@user.noreply.gitee.com> Date: Thu, 18 Dec 2025 17:45:19 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A3=8E=E9=99=A9=E6=A8=A1=E5=9D=97=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/PF/PFApproveCallBackService.cs | 1 + .../Api/BIController/BIController.cs | 256 ++++++++++-------- 2 files changed, 137 insertions(+), 120 deletions(-) diff --git a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs index 0ebfce5..2ff44d0 100644 --- a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs +++ b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs @@ -2500,6 +2500,7 @@ namespace APT.BaseData.Services.DomainServices formSafe.ORG_ID = entity.ORG_ID; formSafe.FIRE_JOB_ID = entity.ID; formSafe.USER_ID = sendUser.ID; + formSafe.DISCLOSURE_DATE = DateTime.Now; formSafe.DEPARTMENT_ID = sendUser.DEPARTMENT_ID; formSafe.CODE = "AQJD" + DateTime.Now.ToShortDateString().Replace("/", "") + new Random().Next(1, 999); notice = NotificationTaskService.InsertUserNoticeTaskModel("安全技术交底表", formSafe.ID, entity.ORG_ID, sendUser.ID, sendUser.NAME, DateTime.Now, diff --git a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIController.cs b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIController.cs index e638dfd..c21caa2 100644 --- a/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIController.cs +++ b/APT.MicroApi/APT.SC.WebApi/Controllers/Api/BIController/BIController.cs @@ -1,27 +1,29 @@ -using APT.BaseData.Domain.Entities.FM; -using APT.Infrastructure.Core; -using Microsoft.AspNetCore.Mvc; -using APT.Infrastructure.Api; -using System.Collections.Generic; -using System; -using System.Linq; -using APT.MS.Domain.Enums; -using APT.MS.Domain.Entities.HM; -using APT.BaseData.Domain.Enums; -using APT.Utility; -using APT.MS.Domain.Entities.SE; -using APT.MS.Domain.Entities.BI; -using NPOI.SS.Formula.Functions; -using APT.BaseData.Domain.Entities; -using APT.MS.Domain.Entities.SC.BI; -using System.Collections.ObjectModel; +using APT.BaseData.Domain.Entities; +using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Entities.OP; -using APT.Migrations; -using APT.BaseData.Services.Services.FM; +using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.IServices.FM; -using static Google.Protobuf.WireFormat; -using log4net.Core; +using APT.BaseData.Services.Services.FM; +using APT.Infrastructure.Api; +using APT.Infrastructure.Core; +using APT.Migrations; +using APT.MS.Domain.Entities.BI; using APT.MS.Domain.Entities.FO; +using APT.MS.Domain.Entities.HM; +using APT.MS.Domain.Entities.SC.BI; +using APT.MS.Domain.Entities.SE; +using APT.MS.Domain.Entities.SK; +using APT.MS.Domain.Enums; +using APT.MS.Domain.Enums.SK; +using APT.Utility; +using log4net.Core; +using Microsoft.AspNetCore.Mvc; +using NPOI.SS.Formula.Functions; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using static Google.Protobuf.WireFormat; namespace APT.SC.WebApi.Controllers.Api.BI { @@ -754,26 +756,23 @@ namespace APT.SC.WebApi.Controllers.Api.BI return SafeExecute(() => { var riskFilter = new BaseFilter(filter.GetOrgId()); - riskFilter.SelectField = new string[] { "EVALUATE_LEVEL", "CREATE_TIME", "MineType", "SOURCE_DEPARTMENT_ID", "TYPE_ID", "LEVEL", "AREA_ID", "DEPARTMENT_LIABLE_ID" }; - IEnumerable allrisk = null; - allrisk = GetEntities(t => t.STATUS == (int)HMOperationStepEnum.有效 && t.SOURCE_DEPARTMENT_ID != null, riskFilter); + riskFilter.SelectField = new string[] { "EVALUATE_LEVEL", "CREATE_TIME", "PRODUCTION_UNIT_ID", "TYPE_ID", "AREA_ID", "ID" }; + IEnumerable allrisk = null; + allrisk = GetEntities(t => t.ENABLE_STATUS == 0 && t.PRODUCTION_UNIT_ID != null, riskFilter); var hazardFilter = new BaseFilter(filter.GetOrgId()); - hazardFilter.SelectField = new string[] { "CREATE_TIME" }; - var allhazard = GetEntities(t => t.STATUS == (int)HMOperationStepEnum.有效, hazardFilter); riskPerformanceData riskPerformanceData = new riskPerformanceData(); List item3s = new List(); - var distinctType = GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); - var distinctDepartment = GetEntities(t => t.DEPARTMENT_TYPE == 10, new BaseFilter(filter.GetOrgId())); - var distinctArea = GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); + var distinctType = GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); + var departments = GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.GetOrgId())); + var distinctArea = GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.GetOrgId())); var distinctTeamDepartment = GetEntities(t => t.DEPARTMENT_TYPE == 20, new BaseFilter(filter.GetOrgId())); - #region 1 PerformanceModel CHARTFXDJ1 = new PerformanceModel(); - CHARTFXDJ1.NAME = new List { "一级", "二级", "三级", "四级" }; - var type1 = allrisk.Count(t => t.EVALUATE_LEVEL == EvaluateLevelEnum.一级); - var type2 = allrisk.Count(t => t.EVALUATE_LEVEL == EvaluateLevelEnum.二级); - var type3 = allrisk.Count(t => t.EVALUATE_LEVEL == EvaluateLevelEnum.三级); - var type4 = allrisk.Count(t => t.EVALUATE_LEVEL == EvaluateLevelEnum.四级); + CHARTFXDJ1.NAME = new List { "重大风险", "较大风险", "一般风险", "低风险" }; + var type1 = allrisk.Count(t => t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险); + var type2 = allrisk.Count(t => t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险); + var type3 = allrisk.Count(t => t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险); + var type4 = allrisk.Count(t => t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险); CHARTFXDJ1.LEVEL1 = new List { type1, type2, type3, type4 }; riskPerformanceData.CHARTFXDJ1 = CHARTFXDJ1; #endregion @@ -784,33 +783,34 @@ namespace APT.SC.WebApi.Controllers.Api.BI PerformanceModel1 model3 = new PerformanceModel1(); PerformanceModel1 model4 = new PerformanceModel1(); - model1.name = "一级"; - model1.value = allrisk.Count(t => t.EVALUATE_LEVEL == EvaluateLevelEnum.一级); + model1.name = "重大风险"; + model1.value = allrisk.Count(t => t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险); model2s.Add(model1); - model2.name = "二级"; - model2.value = allrisk.Count(t => t.EVALUATE_LEVEL == EvaluateLevelEnum.二级); + model2.name = "较大风险"; + model2.value = allrisk.Count(t => t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险); model2s.Add(model2); - model3.name = "三级"; - model3.value = allrisk.Count(t => t.EVALUATE_LEVEL == EvaluateLevelEnum.三级); + model3.name = "一般风险"; + model3.value = allrisk.Count(t => t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险); model2s.Add(model3); - model4.name = "四级"; - model4.value = allrisk.Count(t => t.EVALUATE_LEVEL == EvaluateLevelEnum.四级); + model4.name = "低风险"; + model4.value = allrisk.Count(t => t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险); model2s.Add(model4); riskPerformanceData.CHARTFXDJ2 = model2s; #endregion #region 3 + var productionUnits = this.GetEntities(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId)); + var productIds = productionUnits.OrderBy(m=>m.ID).Select(t => t.ID).ToList(); PerformanceModel modelMineType = new PerformanceModel(); - foreach (FMProductionUnit mineType in Enum.GetValues(typeof(FMProductionUnit))) + foreach (var id in productIds) { - var mineTypeName = mineType.GetDescription(); - var mineTypeInt = mineType.GetInt(); + var mineTypeName = productionUnits.FirstOrDefault(t => t.ID == id)?.NAME; modelMineType.NAME.Add(mineTypeName); - modelMineType.LEVEL1.Add(allrisk.Count(t => t.MineType == mineTypeInt && t.EVALUATE_LEVEL == EvaluateLevelEnum.一级)); - modelMineType.LEVEL2.Add(allrisk.Count(t => t.MineType == mineTypeInt && t.EVALUATE_LEVEL == EvaluateLevelEnum.二级)); - modelMineType.LEVEL3.Add(allrisk.Count(t => t.MineType == mineTypeInt && t.EVALUATE_LEVEL == EvaluateLevelEnum.三级)); - modelMineType.LEVEL4.Add(allrisk.Count(t => t.MineType == mineTypeInt && t.EVALUATE_LEVEL == EvaluateLevelEnum.四级)); + modelMineType.LEVEL1.Add(allrisk.Count(t => t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险)); + modelMineType.LEVEL2.Add(allrisk.Count(t => t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险)); + modelMineType.LEVEL3.Add(allrisk.Count(t => t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险)); + modelMineType.LEVEL4.Add(allrisk.Count(t => t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险)); } riskPerformanceData.CHARTLIST.Add(modelMineType); #endregion @@ -819,10 +819,10 @@ namespace APT.SC.WebApi.Controllers.Api.BI PerformanceModel modelFXLB = new PerformanceModel(); foreach (var type in distinctType) { - var countLevel1 = allrisk.Count(t => t.TYPE_ID == type.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.一级); - var countLevel2 = allrisk.Count(t => t.TYPE_ID == type.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.二级); - var countLevel3 = allrisk.Count(t => t.TYPE_ID == type.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.三级); - var countLevel4 = allrisk.Count(t => t.TYPE_ID == type.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.四级); + var countLevel1 = allrisk.Count(t => t.TYPE_ID == type.ID && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险); + var countLevel2 = allrisk.Count(t => t.TYPE_ID == type.ID && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险); + var countLevel3 = allrisk.Count(t => t.TYPE_ID == type.ID && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险); + var countLevel4 = allrisk.Count(t => t.TYPE_ID == type.ID && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险); var totalCount = countLevel1 + countLevel2 + countLevel3 + countLevel4; if (totalCount == 0) { @@ -836,17 +836,23 @@ namespace APT.SC.WebApi.Controllers.Api.BI modelFXLB.TOTAL.Add(totalCount); } var newModelFXLB = SortByTotal(modelFXLB); - riskPerformanceData.CHARTLIST.Add(modelFXLB); + riskPerformanceData.CHARTLIST.Add(modelFXLB); #endregion - + #region 5 + //抓管控层级子表 + riskFilter.SelectField = new string[] { "ENTERPRISE_LIBRARY_ID", "DEPARTMENT_TYPE", "DEPARTMENT_ID", "USER_ID", "APPROVE_ROLE_ID", "ID" }; + var libMeasures = GetEntities(t => t.IS_DELETED ==false, riskFilter); + var departIds = libMeasures.Select(t => t.DEPARTMENT_ID).Distinct().ToList(); + var distinctDepartment = departments.Where(t => departIds.Contains(t.ID)).ToList(); PerformanceModel modelZRDY = new PerformanceModel(); foreach (var department in distinctDepartment) { - var countLevel1 = allrisk.Count(t => t.SOURCE_DEPARTMENT_ID == department.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.一级); - var countLevel2 = allrisk.Count(t => t.SOURCE_DEPARTMENT_ID == department.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.二级); - var countLevel3 = allrisk.Count(t => t.SOURCE_DEPARTMENT_ID == department.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.三级); - var countLevel4 = allrisk.Count(t => t.SOURCE_DEPARTMENT_ID == department.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.四级); + var libIds = libMeasures.Where(t => t.DEPARTMENT_ID == department.ID).Select(m=>m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var countLevel1 = allrisk.Count(t => libIds.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险); + var countLevel2 = allrisk.Count(t => libIds.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险); + var countLevel3 = allrisk.Count(t => libIds.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险); + var countLevel4 = allrisk.Count(t => libIds.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险); if (countLevel1 + countLevel2 + countLevel3 + countLevel4 == 0) { continue; @@ -857,19 +863,20 @@ namespace APT.SC.WebApi.Controllers.Api.BI modelZRDY.LEVEL3.Add(countLevel3); modelZRDY.LEVEL4.Add(countLevel4); } - riskPerformanceData.CHARTLIST.Add(modelZRDY); + riskPerformanceData.CHARTLIST.Add(modelZRDY); #endregion - + #region 6 PerformanceModel modelDepartmentType = new PerformanceModel(); - foreach (FMDepartmentType level in Enum.GetValues(typeof(FMDepartmentType))) - { + foreach (SKDepartmentTypeEnum level in Enum.GetValues(typeof(SKDepartmentTypeEnum))) + { + var libIds = libMeasures.Where(t => t.DEPARTMENT_TYPE == level).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); var levelName = level.GetDescription(); modelDepartmentType.NAME.Add(levelName); - modelDepartmentType.LEVEL1.Add(allrisk.Count(t => t.LEVEL == level && t.EVALUATE_LEVEL == EvaluateLevelEnum.一级)); - modelDepartmentType.LEVEL2.Add(allrisk.Count(t => t.LEVEL == level && t.EVALUATE_LEVEL == EvaluateLevelEnum.二级)); - modelDepartmentType.LEVEL3.Add(allrisk.Count(t => t.LEVEL == level && t.EVALUATE_LEVEL == EvaluateLevelEnum.三级)); - modelDepartmentType.LEVEL4.Add(allrisk.Count(t => t.LEVEL == level && t.EVALUATE_LEVEL == EvaluateLevelEnum.四级)); + modelDepartmentType.LEVEL1.Add(allrisk.Count(t => libIds.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险)); + modelDepartmentType.LEVEL2.Add(allrisk.Count(t => libIds.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险)); + modelDepartmentType.LEVEL3.Add(allrisk.Count(t => libIds.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险)); + modelDepartmentType.LEVEL4.Add(allrisk.Count(t => libIds.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险)); } riskPerformanceData.CHARTLIST.Add(modelDepartmentType); #endregion @@ -878,10 +885,10 @@ namespace APT.SC.WebApi.Controllers.Api.BI PerformanceModel modelArea = new PerformanceModel(); foreach (var area in distinctArea) { - var countLevel1 = allrisk.Count(t => t.AREA_ID == area.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.一级); - var countLevel2 = allrisk.Count(t => t.AREA_ID == area.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.二级); - var countLevel3 = allrisk.Count(t => t.AREA_ID == area.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.三级); - var countLevel4 = allrisk.Count(t => t.AREA_ID == area.ID && t.EVALUATE_LEVEL == EvaluateLevelEnum.四级); + var countLevel1 = allrisk.Count(t => t.AREA_ID == area.ID && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险); + var countLevel2 = allrisk.Count(t => t.AREA_ID == area.ID && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险); + var countLevel3 = allrisk.Count(t => t.AREA_ID == area.ID && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险); + var countLevel4 = allrisk.Count(t => t.AREA_ID == area.ID && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险); var totalArea = countLevel1 + countLevel2 + countLevel3 + countLevel4; if (totalArea == 0) { @@ -895,62 +902,71 @@ namespace APT.SC.WebApi.Controllers.Api.BI modelArea.TOTAL.Add(totalArea); } var newModelArea = SortByTotal(modelArea); - riskPerformanceData.CHARTLIST.Add(newModelArea); + riskPerformanceData.CHARTLIST.Add(newModelArea); #endregion - + #region 8 - var minTypeArr = new int[] { 30, 10, 20, 0 }; - var levelArr = new int[] { 3, 0, 1, 2 }; - foreach (var minetype in minTypeArr) + var levelArr = new int[] { 5, 10, 15, 20 }; + foreach (var id in productIds) { - var templevel1 = allrisk.Where(t => t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.一级); - var templevel2 = allrisk.Where(t => t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.二级); - var templevel3 = allrisk.Where(t => t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.三级); - var templevel4 = allrisk.Where(t => t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.四级); - + var mineTypeName = productionUnits.FirstOrDefault(t => t.ID == id)?.NAME; + var templevel1 = allrisk.Where(t => t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险); + var templevel2 = allrisk.Where(t => t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险); + var templevel3 = allrisk.Where(t => t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险); + var templevel4 = allrisk.Where(t => t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险); + var libIds1 = libMeasures.Where(t => t.DEPARTMENT_TYPE.GetInt() == levelArr[0]).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var libIds2 = libMeasures.Where(t => t.DEPARTMENT_TYPE.GetInt() == levelArr[1]).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var libIds3 = libMeasures.Where(t => t.DEPARTMENT_TYPE.GetInt() == levelArr[2]).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var libIds4 = libMeasures.Where(t => t.DEPARTMENT_TYPE.GetInt() == levelArr[3]).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); PerformanceModel modelSCDY = new PerformanceModel(); modelSCDY.NAME = new List { "公司", "部门", "车间", "班组" }; - modelSCDY.LEVEL1 = new List { templevel1.Count(t => (int)t.LEVEL == levelArr[0]), templevel1.Count(t => (int)t.LEVEL == levelArr[1]), templevel1.Count(t => (int)t.LEVEL == levelArr[2]), templevel1.Count(t => (int)t.LEVEL == levelArr[3]) }; - modelSCDY.LEVEL2 = new List { templevel2.Count(t => (int)t.LEVEL == levelArr[0]), templevel2.Count(t => (int)t.LEVEL == levelArr[1]), templevel2.Count(t => (int)t.LEVEL == levelArr[2]), templevel2.Count(t => (int)t.LEVEL == levelArr[3]) }; - modelSCDY.LEVEL3 = new List { templevel3.Count(t => (int)t.LEVEL == levelArr[0]), templevel3.Count(t => (int)t.LEVEL == levelArr[1]), templevel3.Count(t => (int)t.LEVEL == levelArr[2]), templevel3.Count(t => (int)t.LEVEL == levelArr[3]) }; - modelSCDY.LEVEL4 = new List { templevel4.Count(t => (int)t.LEVEL == levelArr[0]), templevel4.Count(t => (int)t.LEVEL == levelArr[1]), templevel4.Count(t => (int)t.LEVEL == levelArr[2]), templevel4.Count(t => (int)t.LEVEL == levelArr[3]) }; + modelSCDY.LEVEL1 = new List { templevel1.Count(t => libIds1.Contains(t.ID)), templevel1.Count(t => libIds2.Contains(t.ID)), templevel1.Count(t => libIds3.Contains(t.ID)), templevel1.Count(t => libIds4.Contains(t.ID)) }; + modelSCDY.LEVEL2 = new List { templevel2.Count(t => libIds1.Contains(t.ID)), templevel2.Count(t => libIds2.Contains(t.ID)), templevel2.Count(t => libIds3.Contains(t.ID)), templevel2.Count(t => libIds4.Contains(t.ID)) }; + modelSCDY.LEVEL3 = new List { templevel3.Count(t => libIds1.Contains(t.ID)), templevel3.Count(t => libIds2.Contains(t.ID)), templevel3.Count(t => libIds3.Contains(t.ID)), templevel3.Count(t => libIds4.Contains(t.ID)) }; + modelSCDY.LEVEL4 = new List { templevel4.Count(t => libIds1.Contains(t.ID)), templevel4.Count(t => libIds2.Contains(t.ID)), templevel4.Count(t => libIds3.Contains(t.ID)), templevel4.Count(t => libIds4.Contains(t.ID)) }; riskPerformanceData.SCDYLIST.Add(modelSCDY); } #endregion #region 9 foreach (var level in levelArr) - { - var templevel1 = allrisk.Where(t => (int)t.LEVEL == level && t.EVALUATE_LEVEL == EvaluateLevelEnum.一级); - var templevel2 = allrisk.Where(t => (int)t.LEVEL == level && t.EVALUATE_LEVEL == EvaluateLevelEnum.二级); - var templevel3 = allrisk.Where(t => (int)t.LEVEL == level && t.EVALUATE_LEVEL == EvaluateLevelEnum.三级); - var templevel4 = allrisk.Where(t => (int)t.LEVEL == level && t.EVALUATE_LEVEL == EvaluateLevelEnum.四级); + { + var libIds1 = libMeasures.Where(t => t.DEPARTMENT_TYPE.GetInt() == levelArr[0]).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var libIds2 = libMeasures.Where(t => t.DEPARTMENT_TYPE.GetInt() == levelArr[1]).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var libIds3 = libMeasures.Where(t => t.DEPARTMENT_TYPE.GetInt() == levelArr[2]).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var libIds4 = libMeasures.Where(t => t.DEPARTMENT_TYPE.GetInt() == levelArr[3]).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var templevel1 = allrisk.Where(t => libIds1.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险); + var templevel2 = allrisk.Where(t => libIds2.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险); + var templevel3 = allrisk.Where(t => libIds3.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险); + var templevel4 = allrisk.Where(t => libIds4.Contains(t.ID) && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险); - PerformanceModel modelCJ = new PerformanceModel(); - modelCJ.NAME = new List { "露天矿", "选矿厂", "尾矿厂", "职能部门" }; - modelCJ.LEVEL1 = new List { templevel1.Count(t => (int)t.MineType == minTypeArr[0]), templevel1.Count(t => (int)t.MineType == minTypeArr[1]), templevel1.Count(t => (int)t.MineType == minTypeArr[2]), templevel1.Count(t => (int)t.MineType == minTypeArr[3]) }; - modelCJ.LEVEL2 = new List { templevel2.Count(t => (int)t.MineType == minTypeArr[0]), templevel2.Count(t => (int)t.MineType == minTypeArr[1]), templevel2.Count(t => (int)t.MineType == minTypeArr[2]), templevel2.Count(t => (int)t.MineType == minTypeArr[3]) }; - modelCJ.LEVEL3 = new List { templevel3.Count(t => (int)t.MineType == minTypeArr[0]), templevel3.Count(t => (int)t.MineType == minTypeArr[1]), templevel3.Count(t => (int)t.MineType == minTypeArr[2]), templevel3.Count(t => (int)t.MineType == minTypeArr[3]) }; - modelCJ.LEVEL4 = new List { templevel4.Count(t => (int)t.MineType == minTypeArr[0]), templevel4.Count(t => (int)t.MineType == minTypeArr[1]), templevel4.Count(t => (int)t.MineType == minTypeArr[2]), templevel4.Count(t => (int)t.MineType == minTypeArr[3]) }; + PerformanceModel modelCJ = new PerformanceModel(); + modelCJ.NAME = new List { "露天矿", "选矿厂", "地下矿", "全公司" }; + var minTypeArr = productionUnits.Where(t => modelCJ.NAME.Contains(t.NAME)).Select(m => m.ID).ToList(); + modelCJ.LEVEL1 = new List { templevel1.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[0]), templevel1.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[1]), templevel1.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[2]), templevel1.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[3]) }; + modelCJ.LEVEL2 = new List { templevel2.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[0]), templevel2.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[1]), templevel2.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[2]), templevel2.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[3]) }; + modelCJ.LEVEL3 = new List { templevel3.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[0]), templevel3.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[1]), templevel3.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[2]), templevel3.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[3]) }; + modelCJ.LEVEL4 = new List { templevel4.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[0]), templevel4.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[1]), templevel4.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[2]), templevel4.Count(t => t.PRODUCTION_UNIT_ID == minTypeArr[3]) }; riskPerformanceData.CJLIST.Add(modelCJ); } #endregion #region 10 List SubZRDY = new List(); - foreach (int minetype in minTypeArr) + foreach (var id in productIds) { PerformanceModel modelSubZRDY = new PerformanceModel(); - foreach (var team in distinctTeamDepartment) - { - var countLevel1 = allrisk.Count(t => t.DEPARTMENT_LIABLE_ID == team.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.一级); - var countLevel2 = allrisk.Count(t => t.DEPARTMENT_LIABLE_ID == team.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.二级); - var countLevel3 = allrisk.Count(t => t.DEPARTMENT_LIABLE_ID == team.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.三级); - var countLevel4 = allrisk.Count(t => t.DEPARTMENT_LIABLE_ID == team.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.四级); + foreach (var department in distinctDepartment) + { + var libIds = libMeasures.Where(t => t.DEPARTMENT_ID == department.ID).Select(m => m.ENTERPRISE_LIBRARY_ID).Distinct().ToList(); + var countLevel1 = allrisk.Count(t => libIds.Contains(t.ID) && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险); + var countLevel2 = allrisk.Count(t => libIds.Contains(t.ID) && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险); + var countLevel3 = allrisk.Count(t => libIds.Contains(t.ID) && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险); + var countLevel4 = allrisk.Count(t => libIds.Contains(t.ID) && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险); var totalZRDY = countLevel1 + countLevel2 + countLevel3 + countLevel4; if (totalZRDY == 0) { continue; } - modelSubZRDY.NAME.Add(team.NAME); + modelSubZRDY.NAME.Add(department.NAME); modelSubZRDY.LEVEL1.Add(countLevel1); modelSubZRDY.LEVEL2.Add(countLevel2); modelSubZRDY.LEVEL3.Add(countLevel3); @@ -963,15 +979,15 @@ namespace APT.SC.WebApi.Controllers.Api.BI #endregion #region 11 List SubQY = new List(); - foreach (int minetype in minTypeArr) + foreach (var id in productIds) { PerformanceModel modelSubQY = new PerformanceModel(); foreach (var area in distinctArea) { - var countLevel1 = allrisk.Count(t => t.AREA_ID == area.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.一级); - var countLevel2 = allrisk.Count(t => t.AREA_ID == area.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.二级); - var countLevel3 = allrisk.Count(t => t.AREA_ID == area.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.三级); - var countLevel4 = allrisk.Count(t => t.AREA_ID == area.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.四级); + var countLevel1 = allrisk.Count(t => t.AREA_ID == area.ID && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险); + var countLevel2 = allrisk.Count(t => t.AREA_ID == area.ID && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险); + var countLevel3 = allrisk.Count(t => t.AREA_ID == area.ID && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险); + var countLevel4 = allrisk.Count(t => t.AREA_ID == area.ID && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险); var totalZRDY = countLevel1 + countLevel2 + countLevel3 + countLevel4; if (totalZRDY == 0) { @@ -990,15 +1006,15 @@ namespace APT.SC.WebApi.Controllers.Api.BI #endregion #region 12 List SubFXLB = new List(); - foreach (int minetype in minTypeArr) + foreach (var id in productIds) { PerformanceModel modelSubFXLB = new PerformanceModel(); foreach (var type in distinctType) { - var countLevel1 = allrisk.Count(t => t.TYPE_ID == type.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.一级); - var countLevel2 = allrisk.Count(t => t.TYPE_ID == type.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.二级); - var countLevel3 = allrisk.Count(t => t.TYPE_ID == type.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.三级); - var countLevel4 = allrisk.Count(t => t.TYPE_ID == type.ID && t.MineType == minetype && t.EVALUATE_LEVEL == EvaluateLevelEnum.四级); + var countLevel1 = allrisk.Count(t => t.TYPE_ID == type.ID && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险); + var countLevel2 = allrisk.Count(t => t.TYPE_ID == type.ID && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.较大风险); + var countLevel3 = allrisk.Count(t => t.TYPE_ID == type.ID && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.一般风险); + var countLevel4 = allrisk.Count(t => t.TYPE_ID == type.ID && t.PRODUCTION_UNIT_ID == id && t.EVALUATE_LEVEL == SKEvaluateLevelEnum.低风险); var totalZRDY = countLevel1 + countLevel2 + countLevel3 + countLevel4; if (totalZRDY == 0) { @@ -1054,11 +1070,11 @@ namespace APT.SC.WebApi.Controllers.Api.BI riskDate.COUNT = allrisk.Count(t => t.CREATE_TIME <= endOfMonth); riskDate.TYPE = 0; item3s.Add(riskDate); - dateCountModel hazardDate = new dateCountModel(); - hazardDate.DATE = endOfMonth; - hazardDate.COUNT = allhazard.Count(t => t.CREATE_TIME <= endOfMonth); ; - hazardDate.TYPE = 1; - item3s.Add(hazardDate); + //dateCountModel hazardDate = new dateCountModel(); + //hazardDate.DATE = endOfMonth; + //hazardDate.COUNT = allhazard.Count(t => t.CREATE_TIME <= endOfMonth); ; + //hazardDate.TYPE = 1; + //item3s.Add(hazardDate); } #endregion