From 2ef8fc63badef9c5b9dea999449119f88587911a Mon Sep 17 00:00:00 2001
From: hongjli <3117313295@qq.com>
Date: 星期五, 23 五月 2025 13:41:15 +0800
Subject: [PATCH] 管路&气柜产能负载取消返回空值

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java |   52 ++++++++++++++++++++++++++
 aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml                |   39 +++++++++++++++++++
 aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java            |    8 ++++
 3 files changed, 99 insertions(+), 0 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java
index 6dd1432..f1fcb23 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java
@@ -122,4 +122,12 @@
      * @return 鎵�鏈夋墜宸ユ皵浣撳伐鍗曟暟鎹�
      */
     public List<Map<String, Object>> selectAllMoData();
+
+    /**
+     * 鏌ヨ鍩虹缁熻鏁版嵁锛堜笉鍖呭惈鏃堕棿闄愬埗锛�
+     * 
+     * @param params 鏌ヨ鍙傛暟锛堜笉鍖呭惈鏃堕棿鑼冨洿鍙傛暟锛�
+     * @return 鍩虹缁熻鏁版嵁鍒楄〃
+     */
+    public List<Map<String, Object>> selectBaseStatData(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 d01e96b..53dd3b5 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
@@ -1489,9 +1489,61 @@
         // 鏌ヨ鍘熷鏁版嵁锛堜笉渚濊禆鏁版嵁搴撹仛鍚堬級
         List<Map<String, Object>> rawData = apsGasPipingRouteStatMapper.selectRawStatData(queryParams);
         
+        // 濡傛灉娌℃湁鏌ヨ鍒板師濮嬫暟鎹紝浣嗛渶瑕佽繑鍥炴墍鏈夊伐搴�/杞﹂棿鐨勬暟鎹�
         if (rawData.isEmpty()) {
+            // 鍒涘缓娌℃湁鏃堕棿闄愬埗鐨勫熀纭�鏌ヨ鍙傛暟
+            Map<String, Object> baseParams = new HashMap<>(queryParams);
+            baseParams.remove("yearStart");
+            baseParams.remove("monthStart");
+            baseParams.remove("yearEnd");
+            baseParams.remove("monthEnd");
+            
+            // 鐩存帴浠巃ps_gas_piping_route_stat琛ㄦ煡璇㈡墍鏈夊彲鑳界殑宸ュ簭鍜岃溅闂�
+            List<Map<String, Object>> baseData = apsGasPipingRouteStatMapper.selectBaseStatData(baseParams);
+            
+            // 涓烘瘡涓伐搴�/杞﹂棿鍒涘缓鍩轰簬鏃堕棿鐨勭┖鏁版嵁
+            for (Map<String, Object> data : baseData) {
+                String rowGroupValue = getStringValue(data, rowGroupBy);
+                if (rowGroupValue == null || rowGroupValue.trim().isEmpty()) continue;
+                
+                Map<String, Object> rowEntry = new HashMap<>();
+                Map<String, Object> rowDetail = new HashMap<>();
+                
+                // 娣诲姞鍩烘湰淇℃伅
+                String plant = getStringValue(data, "plant");
+                String major = getStringValue(data, "major");
+                String workshop = getStringValue(data, "workshop");
+                
+                if (groupByPlant) rowDetail.put("plant", plant);
+                if (groupByMajor) rowDetail.put("major", major);
+                if (groupByWorkshop) rowDetail.put("workshop", workshop);
+                
+                // 澶勭悊宸ュ簭鍚嶇О - 濡傛灉rowGroupBy涓簑orkshop锛岄渶瑕佹坊鍔爌rocessName瀛楁
+                if ("workshop".equals(rowGroupBy)) {
+                    String processName = getStringValue(data, "processName");
+                    rowDetail.put("processName", processName != null ? processName : "");
+                }
+                
+                // 涓烘瘡涓椂闂寸偣鍒涘缓闆跺�兼暟鎹�
+                List<Map<String, Object>> timeDataList = new ArrayList<>();
+                for (String timePoint : timePoints) {
+                    Map<String, Object> pointData = new HashMap<>();
+                    pointData.put("planDay", timePoint);
+                    pointData.put("requireTimes", BigDecimal.ZERO);
+                    pointData.put("designTimes", BigDecimal.ZERO); 
+                    pointData.put("capacityLoad", BigDecimal.ZERO);
+                    timeDataList.add(pointData);
+                }
+                
+                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;
         }
         
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml
index 4789ec5..0cee419 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml
@@ -413,4 +413,43 @@
         FROM aps_gas_pipeline_mo
     </select>
 
+    <!-- 鏌ヨ鍩虹缁熻鏁版嵁锛堜笉鍖呭惈鏃堕棿闄愬埗锛夛紝鐢ㄤ簬鑾峰彇鎵�鏈夊彲鑳界殑宸ュ簭鍚嶅拰杞﹂棿 -->
+    <select id="selectBaseStatData" parameterType="java.util.Map" resultType="java.util.Map">
+        SELECT DISTINCT
+            process_name AS "processName",
+            plant AS "plant",
+            major AS "major",
+            workshop AS "workshop"
+        FROM aps_gas_piping_route_stat
+        <where>
+            <if test="plants != null and plants.size() > 0">
+                AND plant IN
+                <foreach collection="plants" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="plant != null and plant != ''">
+                AND plant = #{plant}
+            </if>
+            <if test="majors != null and majors.size() > 0">
+                AND major IN
+                <foreach collection="majors" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="major != null and major != ''">
+                AND major = #{major}
+            </if>
+            <if test="workshops != null and workshops.size() > 0">
+                AND workshop IN
+                <foreach collection="workshops" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="workshop != null and workshop != ''">
+                AND workshop = #{workshop}
+            </if>
+        </where>
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3