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 +++++++++++++++++++++++---------
aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsGasPipingRouteStatController.java | 2
2 files changed, 48 insertions(+), 19 deletions(-)
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsGasPipingRouteStatController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsGasPipingRouteStatController.java
index cc56550..96d4b38 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsGasPipingRouteStatController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsGasPipingRouteStatController.java
@@ -122,7 +122,7 @@
/**
* 鑱氬悎姘斾綋绠¤矾浜ц兘璐熻浇缁熻鏁版嵁
*/
- @Operation(summary = "鑱氬悎姘斾綋绠¤矾浜ц兘璐熻浇缁熻鏁版嵁", description = "鑱氬悎缁熻鏁版嵁")
+ @Operation(summary = "鑱氬悎姘斾綋绠¤矾浜ц兘璐熻浇缁熻鏁版嵁", description = "鑱氬悎缁熻鏁版嵁锛屾敮鎸佸姩鎬侀�夋嫨琛岀淮搴�(rowGroupBy)杩涜鑱氬悎锛屽鎸夊伐搴忓悕绉般�佽溅闂淬�佸伐鍘傘�佷笓涓氱瓑")
@RequiresPermissions("aps:apsGasPipingRouteStat:aggregate")
@PostMapping("/aggregate")
public AjaxResult aggregateGasPipingRouteStat(@RequestBody Map<String, Object> params)
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