From a01eec9f761ffcc11d42da0a82595e720427dd68 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期二, 24 六月 2025 23:15:52 +0800
Subject: [PATCH] 望铁关口触发边界

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 108 insertions(+), 5 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 79c8fb7..5211007 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
@@ -16,6 +16,7 @@
 import com.iailab.module.ansteel.api.vo.PowerMaxDemandMainPageReqVO;
 import com.iailab.module.ansteel.common.constant.CommonConstant;
 import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum;
+import com.iailab.module.ansteel.common.utils.CalendarUtil;
 import com.iailab.module.ansteel.common.utils.DecimalUtil;
 import com.iailab.module.ansteel.common.utils.PowerUtil;
 import com.iailab.module.ansteel.power.entity.*;
@@ -302,6 +303,13 @@
             params.put("groupName", entity.getNodeName());
         }
         list = powerNetDropdownService.list(params);
+
+        // 追加公共 2025-06-18
+        Map<String, Object> paramsCom = new HashMap<>();
+        paramsCom.put("groupName", "COMMON1");
+        List<PowerNetDropdownEntity> comList = powerNetDropdownService.list(paramsCom);
+        list.addAll(comList);
+
         List<String> points = list.stream().map(item -> {
             return item.getCurCos();
         }).collect(Collectors.toList());
@@ -706,6 +714,8 @@
                 if (maxdemandMainEntity != null) {
                     demandDTO.setMaxDemand(maxdemandMainEntity.getMaxDemand());
                     demandDTO.setOccurTime(maxdemandMainEntity.getOccurTime());
+                } else {
+                    demandDTO.setMaxDemand(BigDecimal.ZERO);
                 }
             }
             result.add(demandDTO);
@@ -728,9 +738,29 @@
             log.info("PowerDemandEntity is null");
             return success(result);
         }
+        List<PowerNetDropdownEntity> list = new ArrayList<>();
         Map<String, Object> params0 = new HashMap<>();
         params0.put("groupName", entity.getName());
-        List<PowerNetDropdownEntity> list = powerNetDropdownService.list(params0);
+        List<PowerNetDropdownEntity> list0 = powerNetDropdownService.list(params0);
+        if (!CollectionUtils.isEmpty(list0)) {
+            list.addAll(list0);
+        }
+
+        // 所有关口进线的二级界面(表格/曲线)均增加(CCPP/135/CDQ/TRT/余热)的选项。
+        Map<String, Object> params1 = new HashMap<>();
+        params1.put("groupName", "COMMON1");
+        List<PowerNetDropdownEntity> list1 = powerNetDropdownService.list(params1);
+        if (!CollectionUtils.isEmpty(list1)) {
+            list.addAll(list1);
+        }
+
+        Map<String, Object> params2 = new HashMap<>();
+        params2.put("groupName", "COMMON2");
+        List<PowerNetDropdownEntity> list2 = powerNetDropdownService.list(params2);
+        if (!CollectionUtils.isEmpty(list2)) {
+            list.addAll(list2);
+        }
+
         List<String> points = list.stream().map(item -> {
             return item.getCurCos();
         }).collect(Collectors.toList());
@@ -1185,19 +1215,36 @@
             String[] pointNoArr = new String[2];
             switch (queryType.toUpperCase()) {
                 case "P":
+                    if (StringUtils.isBlank(powerNetFactorQuery.getCurP())) {
+                        continue;
+                    }
                     pointNo = powerNetFactorQuery.getCurP();
                     break;
                 case "Q":
+                    if (StringUtils.isBlank(powerNetFactorQuery.getCurQ())) {
+                        continue;
+                    }
                     pointNo = powerNetFactorQuery.getCurQ();
                     break;
                 case "COS":
+                    if (StringUtils.isBlank(powerNetFactorQuery.getCurCos())) {
+                        continue;
+                    }
                     pointNo = powerNetFactorQuery.getCurCos();
                     break;
                 case "DAYCOS":
+                    if (powerNetFactorEntity == null ||
+                            StringUtils.isBlank(powerNetFactorEntity.getPDay()) || StringUtils.isBlank(powerNetFactorEntity.getQDay())) {
+                        continue;
+                    }
                     pointNoArr[0] = powerNetFactorEntity.getPDay();
                     pointNoArr[1] = powerNetFactorEntity.getQDay();
                     break;
                 case "MONTHCOS":
+                    if (powerNetFactorEntity == null ||
+                            StringUtils.isBlank(powerNetFactorEntity.getPMon()) || StringUtils.isBlank(powerNetFactorEntity.getQMon())) {
+                        continue;
+                    }
                     pointNoArr[0] = powerNetFactorEntity.getPMon();
                     pointNoArr[1] = powerNetFactorEntity.getQMon();
                     break;
@@ -1310,19 +1357,36 @@
             String[] pointNoArr = new String[2];
             switch (queryType.toUpperCase()) {
                 case "P":
+                    if (StringUtils.isBlank(powerNetFactorQuery.getCurP())) {
+                        continue;
+                    }
                     pointNo = powerNetFactorQuery.getCurP();
                     break;
                 case "Q":
+                    if (StringUtils.isBlank(powerNetFactorQuery.getCurQ())) {
+                        continue;
+                    }
                     pointNo = powerNetFactorQuery.getCurQ();
                     break;
                 case "COS":
+                    if (StringUtils.isBlank(powerNetFactorQuery.getCurCos())) {
+                        continue;
+                    }
                     pointNo = powerNetFactorQuery.getCurCos();
                     break;
                 case "DAYCOS":
+                    if (powerNetFactorEntity == null ||
+                            StringUtils.isBlank(powerNetFactorEntity.getPDay()) || StringUtils.isBlank(powerNetFactorEntity.getQDay())) {
+                        continue;
+                    }
                     pointNoArr[0] = powerNetFactorEntity.getPDay();
                     pointNoArr[1] = powerNetFactorEntity.getQDay();
                     break;
                 case "MONTHCOS":
+                    if (powerNetFactorEntity == null ||
+                            StringUtils.isBlank(powerNetFactorEntity.getPMon()) || StringUtils.isBlank(powerNetFactorEntity.getQMon())) {
+                        continue;
+                    }
                     pointNoArr[0] = powerNetFactorEntity.getPMon();
                     pointNoArr[1] = powerNetFactorEntity.getQMon();
                     break;
@@ -1582,6 +1646,7 @@
                     throw new IllegalArgumentException("不支持的queryType: " + queryType);
             }
 
+
             // 查询历史数据
             ApiPointValueQueryDTO query = new ApiPointValueQueryDTO();
             query.setPointNo(pointNo);
@@ -1596,10 +1661,13 @@
                     })
                     .collect(Collectors.toList());
 
+            List<Double> valueList = chartData.stream().map(pv -> {
+                return pv.getV();
+            }).collect(Collectors.toList());
             powerHistoryDTO.setDataList(dataList);
 
             //查询月最大最小值
-            ApiPointValueQueryDTO apiPointValueQueryDTO1 = new ApiPointValueQueryDTO();
+            /*ApiPointValueQueryDTO apiPointValueQueryDTO1 = new ApiPointValueQueryDTO();
             apiPointValueQueryDTO1.setStart(start1);
             apiPointValueQueryDTO1.setEnd(new Date());
             apiPointValueQueryDTO1.setPointNo(pointNo);
@@ -1610,7 +1678,40 @@
             }
             if (minV != null && minV.containsKey(pointNo)) {
                 powerHistoryDTO.setMin(new BigDecimal(minV.get(pointNo).toString()));
+            }*/
+
+
+            double max = 0;
+            double min = 0;
+            double avg = 0;
+            String maxTime = "";
+            String minTime = "";
+            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(code, powerHistoryDTO);
         }
@@ -1659,6 +1760,11 @@
             log.info("code is blank");
             return error(GlobalErrorCodeConstants.BAD_REQUEST);
         }
+        // 默认只展示当月
+        if(reqVO.getStartTime() == null) {
+            reqVO.setStartTime(CalendarUtil.getMonthFirstDay());
+        }
+
         PageResult<PowerMaxdemandMainEntity> page = powerMaxDemandMainService.page(reqVO);
         PageResult<PowerMaxDemandMainDTO> result = BeanUtils.toBean(page, PowerMaxDemandMainDTO.class);
         result.getList().forEach(dto0 -> {
@@ -1735,9 +1841,6 @@
         calendar.set(Calendar.SECOND, 0);
         calendar.set(Calendar.MINUTE, 0);
 
-        if (!CollectionUtils.isEmpty(powerFactorReqVO.getContentList())) {
-
-        }
         MdkScheduleReqDTO dto = new MdkScheduleReqDTO();
         dto.setScheduleTime(calendar.getTime());
         dto.setScheduleCode("AnsteelOffPowerAC");

--
Gitblit v1.9.3