From 40fb78b4aad852cf7887a7c339d5c5924229a518 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期二, 06 五月 2025 09:02:47 +0800
Subject: [PATCH] 负荷移植-实测需量,有功功率 历史(多code)

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java |   97 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 75 insertions(+), 22 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 c161ca8..535c830 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
@@ -459,6 +459,13 @@
         if (CollectionUtils.isEmpty(result)) {
             return success(result);
         }
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DAY_OF_MONTH, 1);
+        calendar.set(Calendar.HOUR_OF_DAY, 0);
+        calendar.set(Calendar.MINUTE, 0);
+        calendar.set(Calendar.SECOND, 0);
+        calendar.set(Calendar.MILLISECOND, 0);
+
         for (PowerDemandDTO dto : result) {
             List<String> points = new ArrayList<>();
             if (StringUtils.isNotBlank(dto.getCurDemand())) {
@@ -467,11 +474,8 @@
             if (StringUtils.isNotBlank(dto.getActivePower())) {
                 points.add(dto.getActivePower());
             }
-
             if (!CollectionUtils.isEmpty(points)) {
-
                 Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points);
-
                 if (pointsRealValue.get(dto.getCurDemand()) != null) {
                     dto.setCurDemand(pointsRealValue.get(dto.getCurDemand()).toString());
                 }
@@ -481,31 +485,17 @@
             }
 
             if (!StringUtils.isEmpty(dto.getMaxDemand())) {
-                Calendar calendar = Calendar.getInstance();
-                calendar.set(Calendar.DAY_OF_MONTH, 1);
-                calendar.set(Calendar.HOUR_OF_DAY, 0);
-                calendar.set(Calendar.MINUTE, 0);
-                calendar.set(Calendar.SECOND, 0);
-                calendar.set(Calendar.MILLISECOND, 0);
                 Date start = calendar.getTime();
                 ApiPointValueQueryDTO apiPointValueQueryDTO = new ApiPointValueQueryDTO();
                 apiPointValueQueryDTO.setStart(start);
-                apiPointValueQueryDTO.setEnd(new Date());
                 apiPointValueQueryDTO.setPointNo(dto.getMaxDemand());
-
-                List<ApiPointValueDTO> monthValues = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO);
-                double max = 0;
-                for (int i = 0; i < monthValues.size() - 1; i++) {
-                    if (max < monthValues.get(i).getV()) {
-                        max = monthValues.get(i).getV();
-                    }
+                Map<String, Object> maxValue = dataPointApi.queryPointMaxValue(apiPointValueQueryDTO);
+                if (maxValue != null) {
+                    dto.setMaxDemand(maxValue.get(dto.getMaxDemand()) == null ? "" : maxValue.get(dto.getMaxDemand()).toString());
                 }
-                dto.setMaxDemand(String.valueOf(max));
+
             }
-
-
         }
-
         return success(result);
     }
 
@@ -768,7 +758,7 @@
     }
 
     @PostMapping("/demand/history")
-    @Operation(summary = "负荷移植-实测需量,有功功率 历史")
+    @Operation(summary = "负荷移植-实测需量有功功率历史")
     public CommonResult<PowerHistoryDTO> getPowerDemandHistory(@RequestBody PowerDemandHisReqDTO dto) {
         log.info("请求参数: {}", JSONObject.toJSONString(dto));
 
@@ -836,4 +826,67 @@
         return success(result);
     }
 
+    @PostMapping("/demand/history-list")
+    @Operation(summary = "负荷移植-实测需量有功功率历史(多code)")
+    public CommonResult<LinkedHashMap<String, List<Object[]>>> getPowerDemandHistoryList(@RequestBody PowerDemandHisReqDTO dto) {
+        log.info("请求参数: {}", JSONObject.toJSONString(dto));
+        LinkedHashMap<String, List<Object[]>> result = new LinkedHashMap<>();
+
+        // 参数校验
+        if (CollectionUtils.isEmpty(dto.getCodeList())) {
+            return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "codeList不能为空");
+        }
+        if (StringUtils.isBlank(dto.getQueryType())) {
+            return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "queryType不能为空");
+        }
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.MILLISECOND, 0);
+        cal.set(Calendar.SECOND, 0);
+        Date endTime = dto.getEndTime() == null ? cal.getTime() : dto.getEndTime();
+        Date startTime = dto.getStartTime();
+        if (dto.getStartTime() == null) {
+            cal.add(Calendar.DAY_OF_YEAR, -1);
+            startTime = cal.getTime();
+        }
+
+        for (String code : dto.getCodeList()) {
+            PowerDemandEntity powerDemand = powerDemandService.getByCode(dto.getCode());
+            if (powerDemand == null) {
+                log.info("未找到code对应的数据: {}", dto.getCode());
+                return success(new LinkedHashMap<>());
+            }
+
+            String queryType = dto.getQueryType().toUpperCase();
+            String pointNo;
+            switch (queryType.toUpperCase()) {
+                case "D":
+                    pointNo = powerDemand.getCurDemand();
+                    break;
+                case "P":
+                    pointNo = powerDemand.getActivePower();
+                    break;
+                default:
+                    throw new IllegalArgumentException("不支持的queryType: " + queryType);
+            }
+
+            // 查询历史数据
+            ApiPointValueQueryDTO query = new ApiPointValueQueryDTO();
+            query.setPointNo(pointNo);
+            query.setStart(startTime);
+            query.setEnd(endTime);
+            log.info("开始查询实测需量/有功功率历史数据,测点: {}", pointNo);
+            List<ApiPointValueDTO> chartData = dataPointApi.queryPointHistoryValue(query);
+            List<Object[]> dataList = chartData.stream()
+                    .map(pv -> new Object[]{
+                            DateUtils.format(pv.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND),
+                            pv.getV()
+                    })
+                    .collect(Collectors.toList());
+
+            result.put(code, dataList);
+        }
+
+        return success(result);
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3