From 2815d027a6112c38373a8e37bf17c641791e5a39 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期三, 18 六月 2025 11:32:56 +0800
Subject: [PATCH] 电网拓扑功率历史,增加最值发生时间

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java |   72 +++++++++++++++++++-----------------
 1 files changed, 38 insertions(+), 34 deletions(-)

diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
index b4893b2..79c8fb7 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -1335,6 +1335,11 @@
             apiPointValueQueryDTO.setStart(start0);
             List<Object[]> dataList = new ArrayList<>();
             List<Double> valueList = new ArrayList<>();
+            double max = 0;
+            double min = 0;
+            double avg = 0;
+            String maxTime = "";
+            String minTime = "";
 
             if (StringUtils.isNotBlank(pointNo)) {
                 apiPointValueQueryDTO.setPointNo(pointNo);
@@ -1347,15 +1352,9 @@
                     valueList.add(pv.getV());
                 }
 
+                // 返送累计
                 double fsl = 0;
-                double max = 0;
-                double min = 0;
-                double avg = 0;
                 if (!CollectionUtils.isEmpty(valueList)) {
-                    max = valueList.stream().mapToDouble(Double::doubleValue).max().getAsDouble();
-                    min = valueList.stream().mapToDouble(Double::doubleValue).min().getAsDouble();
-                    avg = valueList.stream().mapToDouble(Double::doubleValue).average().getAsDouble();
-
                     if (powerNetFactorQuery.getCurFlag() != null && powerNetFactorQuery.getCurFlag().intValue() != 0) {
                         for ( Double val : valueList) {
                             if (new BigDecimal(val).compareTo(BigDecimal.ZERO) != powerNetFactorQuery.getCurFlag()) {
@@ -1366,18 +1365,7 @@
                         }
                     }
                 }
-
-                powerHistoryDTO.setMax(new BigDecimal(max).setScale(2, BigDecimal.ROUND_HALF_UP));
-                powerHistoryDTO.setMin(new BigDecimal(min).setScale(2, BigDecimal.ROUND_HALF_UP));
-                powerHistoryDTO.setAvg(new BigDecimal(avg).setScale(2, BigDecimal.ROUND_HALF_UP));
-
-                // 当查询为P, Q,且有返送flag时 计算 返送累计
-                if (("P".equals(queryType.toUpperCase()) || "Q".equals(queryType.toUpperCase())) &&
-                        powerNetFactorQuery.getCurFlag() != null &&
-                        powerNetFactorQuery.getCurFlag().intValue() != 0) {
-                    powerHistoryDTO.setFsl(new BigDecimal(fsl).setScale(2, BigDecimal.ROUND_HALF_UP));
-                }
-
+                powerHistoryDTO.setFsl(new BigDecimal(fsl).setScale(2, BigDecimal.ROUND_HALF_UP));
             } else if (StringUtils.isNotBlank(pointNoArr[0]) && StringUtils.isNotBlank(pointNoArr[1])) {
                 apiPointValueQueryDTO.setPointNo(pointNoArr[0]);
                 List<ApiPointValueDTO> chartDataP = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO);
@@ -1395,26 +1383,42 @@
 
                 for (String cate : categories) {
                     Double cos = PowerUtil.calculateCos(dataMapP.get(cate), dataMapQ.get(cate));
+                    if (cos == null) {
+                        continue;
+                    }
                     Object[] data = new Object[2];
                     data[0] = cate;
-                    data[1] = cos == null ? 0 : new BigDecimal(cos).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    data[1] = cos;
                     dataList.add(data);
-                    if (cos != null) {
-                        valueList.add(cos);
-                    }
-                    double max = 0;
-                    double min = 0;
-                    double avg = 0;
-                    if (!CollectionUtils.isEmpty(valueList)) {
-                        max = valueList.stream().mapToDouble(Double::doubleValue).max().getAsDouble();
-                        min = valueList.stream().mapToDouble(Double::doubleValue).min().getAsDouble();
-                        avg = valueList.stream().mapToDouble(Double::doubleValue).average().getAsDouble();
-                    }
-                    powerHistoryDTO.setMax(new BigDecimal(max).setScale(2, BigDecimal.ROUND_HALF_UP));
-                    powerHistoryDTO.setMin(new BigDecimal(min).setScale(2, BigDecimal.ROUND_HALF_UP));
-                    powerHistoryDTO.setAvg(new BigDecimal(avg).setScale(2, BigDecimal.ROUND_HALF_UP));
+                    valueList.add(cos);
                 }
             }
+
+            if (!CollectionUtils.isEmpty(valueList)) {
+                // max = valueList.stream().mapToDouble(Double::doubleValue).max().getAsDouble();
+                // min = valueList.stream().mapToDouble(Double::doubleValue).min().getAsDouble();
+                avg = valueList.stream().mapToDouble(Double::doubleValue).average().getAsDouble();
+                max = valueList.get(0).doubleValue();
+                min = valueList.get(0).doubleValue();
+                for (Object[] dataItem : dataList) {
+                    String time = (String) dataItem[0];
+                    double value = (double)dataItem[1];
+                    if (value > max) {
+                        max = value;
+                        maxTime = time;
+                    }
+                    if (value < min) {
+                        min = value;
+                        minTime = time;
+                    }
+                }
+            }
+
+            powerHistoryDTO.setMax(new BigDecimal(max).setScale(2, BigDecimal.ROUND_HALF_UP));
+            powerHistoryDTO.setMin(new BigDecimal(min).setScale(2, BigDecimal.ROUND_HALF_UP));
+            powerHistoryDTO.setAvg(new BigDecimal(avg).setScale(2, BigDecimal.ROUND_HALF_UP));
+            powerHistoryDTO.setMaxTime(maxTime);
+            powerHistoryDTO.setMinTime(minTime);
             powerHistoryDTO.setDataList(dataList);
             result.put(nodeCode, powerHistoryDTO);
         }

--
Gitblit v1.9.3