From bc0fdd1f0c20ca4737e8f073050f37b27a658694 Mon Sep 17 00:00:00 2001 From: hongjli <3117313295@qq.com> Date: 星期四, 22 五月 2025 16:31:12 +0800 Subject: [PATCH] 管路&气柜产能负载优化,实现动态row聚合统计 --- aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java | 65 +++++++++++++++++++++++--------- 1 files changed, 47 insertions(+), 18 deletions(-) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java index 0fa2422..99c75aa 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java @@ -1316,10 +1316,18 @@ String timeGranularity = params.containsKey("timeGranularity") ? (String) params.get("timeGranularity") : "day"; // 榛樿涓�"鏃�"绮掑害 + // 鑾峰彇row缁村害鐨勮仛鍚堝瓧娈� - 榛樿涓哄伐搴忓悕绉�(processName) + String rowGroupBy = params.containsKey("rowGroupBy") ? + (String) params.get("rowGroupBy") : "processName"; + // 纭畾鍒嗙粍缁村害 - 宸ュ巶銆佷笓涓氥�佽溅闂� boolean groupByPlant = params.containsKey("groupByPlant") && Boolean.TRUE.equals(params.get("groupByPlant")); boolean groupByMajor = params.containsKey("groupByMajor") && Boolean.TRUE.equals(params.get("groupByMajor")); boolean groupByWorkshop = params.containsKey("groupByWorkshop") && Boolean.TRUE.equals(params.get("groupByWorkshop")); + // 濡傛灉rowGroupBy宸茬粡鏄煇涓淮搴︼紝鍒欒缁村害涓嶉渶瑕佸啀娆″垎缁� + if ("plant".equals(rowGroupBy)) groupByPlant = false; + if ("major".equals(rowGroupBy)) groupByMajor = false; + if ("workshop".equals(rowGroupBy)) groupByWorkshop = false; // 鏋勫缓鏌ヨ鏉′欢 Map<String, Object> queryParams = new HashMap<>(); @@ -1444,31 +1452,45 @@ } // 鍦⊿ervice灞傚畬鎴愯仛鍚� - // 浣跨敤缁勫悎key鏉ュ疄鐜板缁村害鍒嗙粍锛堝伐搴忓悕 + 鍙�夌殑宸ュ巶/涓撲笟/杞﹂棿锛� + // 浣跨敤缁勫悎key鏉ュ疄鐜板缁村害鍒嗙粍锛堝姩鎬乺owGroupBy瀛楁 + 鍙�夌殑宸ュ巶/涓撲笟/杞﹂棿锛� Map<String, Map<String, Object>> groupInfoMap = new HashMap<>(); Map<String, Map<String, BigDecimal>> groupTimeDataMap = new HashMap<>(); // 閬嶅巻鍘熷鏁版嵁锛屾寜澶氱淮搴﹀垎缁勮繘琛岃仛鍚� for (Map<String, Object> data : rawData) { + // 杩囨护宸ュ簭鍚嶇О涓虹┖鐨勬暟鎹� String processName = getStringValue(data, "processName"); - if (processName == null) { - log.warn("璺宠繃澶勭悊锛氬伐搴忓悕绉颁负null"); + if (processName == null || processName.trim().isEmpty()) { + log.warn("璺宠繃澶勭悊锛氬伐搴忓悕绉颁负绌�"); + continue; + } + + // 杩囨护杞﹂棿涓虹┖鐨勬暟鎹� + String workshop = getStringValue(data, "workshop"); + if (workshop == null || workshop.trim().isEmpty()) { + log.warn("璺宠繃澶勭悊锛氳溅闂翠负绌猴紝宸ュ簭鍚嶇О={}", processName); + continue; + } + + // 鑾峰彇琛屽垎缁勫瓧娈靛�� + String rowGroupValue = getStringValue(data, rowGroupBy); + if (rowGroupValue == null) { + log.warn("璺宠繃澶勭悊锛歿} 瀛楁鍊间负null", rowGroupBy); continue; } // 澶勭悊寮�宸ユ棩鏈� Date processPlanStartDay = (Date) data.get("processPlanStartDay"); if (processPlanStartDay == null) { - log.warn("璺宠繃澶勭悊锛氳鍒掑紑宸ユ棩涓簄ull, processName={}", processName); + log.warn("璺宠繃澶勭悊锛氳鍒掑紑宸ユ棩涓簄ull, {}={}", rowGroupBy, rowGroupValue); continue; } - // 鏋勫缓鍒嗙粍閿� - 鍩轰簬宸ュ簭鍚嶅拰鍙�夌殑鍏朵粬缁村害 + // 鏋勫缓鍒嗙粍閿� - 鍩轰簬row鍒嗙粍瀛楁鍜屽彲閫夌殑鍏朵粬缁村害 String plant = getStringValue(data, "plant"); String major = getStringValue(data, "major"); - String workshop = getStringValue(data, "workshop"); - StringBuilder groupKeyBuilder = new StringBuilder(processName); + StringBuilder groupKeyBuilder = new StringBuilder(rowGroupValue); // 鏍规嵁鐢ㄦ埛閫夋嫨鐨勫垎缁勭淮搴︽坊鍔犲埌鍒嗙粍閿� if (groupByPlant && plant != null) { @@ -1486,10 +1508,11 @@ // 璁板綍鍒嗙粍鐨勫熀鏈俊鎭紙鍙褰曚竴娆★級 if (!groupInfoMap.containsKey(groupKey)) { Map<String, Object> groupInfo = new HashMap<>(); - groupInfo.put("processName", processName); + groupInfo.put(rowGroupBy, rowGroupValue); groupInfo.put("plant", plant); groupInfo.put("major", major); groupInfo.put("workshop", workshop); + groupInfo.put("processName", processName); groupInfoMap.put(groupKey, groupInfo); } @@ -1521,22 +1544,27 @@ // 鏋勫缓鏈�缁堣繑鍥炵殑鏁版嵁缁撴瀯 for (String groupKey : groupInfoMap.keySet()) { - Map<String, Object> processEntry = new HashMap<>(); - Map<String, Object> processDetail = new HashMap<>(); + Map<String, Object> rowEntry = new HashMap<>(); + Map<String, Object> rowDetail = new HashMap<>(); // 鑾峰彇璇ュ垎缁勭殑鍩烘湰淇℃伅 Map<String, Object> groupInfo = groupInfoMap.get(groupKey); - String processName = (String) groupInfo.get("processName"); + String rowGroupValue = (String) groupInfo.get(rowGroupBy); - // 娣诲姞宸ュ簭鍩烘湰淇℃伅 + // 娣诲姞鍒嗙粍鍩烘湰淇℃伅 if (groupByPlant) { - processDetail.put("plant", groupInfo.get("plant")); + rowDetail.put("plant", groupInfo.get("plant")); } if (groupByMajor) { - processDetail.put("major", groupInfo.get("major")); + rowDetail.put("major", groupInfo.get("major")); } if (groupByWorkshop) { - processDetail.put("workshop", groupInfo.get("workshop")); + rowDetail.put("workshop", groupInfo.get("workshop")); + } + + // 淇濈暀宸ュ簭鍚嶇О淇℃伅锛屼互渚垮墠绔睍绀� + if (!"processName".equals(rowGroupBy)) { + rowDetail.put("processName", groupInfo.get("processName")); } // 娣诲姞鏃堕棿鏁版嵁 @@ -1558,13 +1586,14 @@ timeDataList.add(pointData); } - processDetail.put("timeData", timeDataList); - processEntry.put(processName, processDetail); - plantTable.add(processEntry); + rowDetail.put("timeData", timeDataList); + rowEntry.put(rowGroupValue, rowDetail); + plantTable.add(rowEntry); } result.put("plantTable", plantTable); result.put("timePoints", timePoints); + result.put("rowGroupBy", rowGroupBy); return result; } -- Gitblit v1.9.3