From a17781479bd4acb36069472ac1a987df21c0cc05 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 23 三月 2026 10:01:10 +0800
Subject: [PATCH] #

---
 src/main/webapp/static/js/wrkAnalysis/wrkAnalysis.js               |   12 ++++++++----
 src/main/java/com/zy/asrs/service/impl/WrkAnalysisServiceImpl.java |   19 ++++++++++++++++---
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/WrkAnalysisServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkAnalysisServiceImpl.java
index e2b88c7..a15880a 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkAnalysisServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkAnalysisServiceImpl.java
@@ -593,13 +593,26 @@
     }
 
     private List<Map<String, Object>> buildFaultDuration(List<WrkAnalysis> list) {
+        Map<String, Long> durationMap = new LinkedHashMap<>();
+        for (WrkAnalysis item : list) {
+            addDeviceFaultDuration(durationMap, "鍗曞爢鍨涙満", item.getCrnNo(), item.getCrnFaultDurationMs());
+            addDeviceFaultDuration(durationMap, "鍙屽伐浣嶅爢鍨涙満", item.getDualCrnNo(), item.getDualCrnFaultDurationMs());
+            addDeviceFaultDuration(durationMap, "RGV", item.getRgvNo(), item.getRgvFaultDurationMs());
+        }
         List<Map<String, Object>> result = new ArrayList<>();
-        result.add(slice("鍗曞爢鍨涙満", list.stream().map(WrkAnalysis::getCrnFaultDurationMs).filter(Objects::nonNull).reduce(0L, Long::sum)));
-        result.add(slice("鍙屽伐浣嶅爢鍨涙満", list.stream().map(WrkAnalysis::getDualCrnFaultDurationMs).filter(Objects::nonNull).reduce(0L, Long::sum)));
-        result.add(slice("RGV", list.stream().map(WrkAnalysis::getRgvFaultDurationMs).filter(Objects::nonNull).reduce(0L, Long::sum)));
+        durationMap.forEach((name, durationMs) -> result.add(slice(name, durationMs)));
         return result;
     }
 
+    private void addDeviceFaultDuration(Map<String, Long> durationMap, String deviceLabel, Integer deviceNo, Long durationMs) {
+        long value = defaultLong(durationMs);
+        if (value <= 0L) {
+            return;
+        }
+        String key = deviceNo == null ? deviceLabel : deviceLabel + deviceNo;
+        durationMap.merge(key, value, Long::sum);
+    }
+
     private List<Map<String, Object>> buildDetailRows(List<WrkAnalysis> list) {
         return list.stream().map(this::toDetailItem).collect(Collectors.toList());
     }
diff --git a/src/main/webapp/static/js/wrkAnalysis/wrkAnalysis.js b/src/main/webapp/static/js/wrkAnalysis/wrkAnalysis.js
index fb70615..8c6574f 100644
--- a/src/main/webapp/static/js/wrkAnalysis/wrkAnalysis.js
+++ b/src/main/webapp/static/js/wrkAnalysis/wrkAnalysis.js
@@ -562,7 +562,7 @@
                         }
                     },
                     legend: { data: ["绔欑偣鑰楁椂", "鍫嗗灈鏈鸿�楁椂", "鎬昏�楁椂"] },
-                    grid: { left: 50, right: 20, top: 40, bottom: 70 },
+                    grid: { left: 88, right: 20, top: 40, bottom: 70, containLabel: true },
                     xAxis: {
                         type: "category",
                         data: rows.map(function (item) { return String(item.wrkNo); }),
@@ -604,7 +604,7 @@
                         }
                     },
                     legend: { data: ["骞冲潎鎬昏�楁椂", "骞冲潎绔欑偣鑰楁椂", "骞冲潎鍫嗗灈鏈鸿�楁椂"] },
-                    grid: { left: 50, right: 20, top: 40, bottom: 70 },
+                    grid: { left: 88, right: 20, top: 40, bottom: 70, containLabel: true },
                     xAxis: {
                         type: "category",
                         data: rows.map(function (item) { return item.bucketLabel; }),
@@ -661,10 +661,14 @@
                             return lines.join("<br>");
                         }
                     },
-                    grid: { left: 50, right: 20, top: 20, bottom: 40 },
+                    grid: { left: 88, right: 20, top: 20, bottom: 68, containLabel: true },
                     xAxis: {
                         type: "category",
-                        data: rows.map(function (item) { return item.name; })
+                        data: rows.map(function (item) { return item.name; }),
+                        axisLabel: {
+                            interval: 0,
+                            rotate: rows.length > 6 ? 30 : 0
+                        }
                     },
                     yAxis: {
                         type: "value",

--
Gitblit v1.9.1