From 68e4932985312602140dcd64ebbb31b2bbaac13a Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期五, 16 五月 2025 12:02:16 +0800
Subject: [PATCH] 负荷移植-需量值查询

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java |  164 ++++++++++++++++++++++++++----------------------------
 1 files changed, 80 insertions(+), 84 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 e5b8f14..e51110d 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
@@ -655,15 +655,11 @@
 
     @PostMapping("/demand-query/list")
     @Operation(summary = "负荷移植-需量值查询")
-    public CommonResult<List<PowerDemandQueryRespDTO>> getDemandDropdownList(@RequestBody PowerDemandQueryDTO queryDto) {
+    public CommonResult<List<PowerDemandQueryRespDTO>> getDemandQueryList(@RequestBody PowerDemandQueryDTO queryDto) {
         List<PowerDemandQueryRespDTO> result = new ArrayList<>();
         if (StringUtils.isBlank(queryDto.getCode())) {
             log.info("code isBlank");
             return success(result);
-        }
-        log.info("code=" + queryDto.getCode());
-        if (StringUtils.isBlank(queryDto.getNodeCode())) {
-            log.info("NodeCode isBlank");
         }
         PowerDemandEntity entity = powerDemandService.getByCode(queryDto.getCode());
         if (entity == null) {
@@ -687,91 +683,66 @@
         params0.put("groupName", entity.getName());
         List<PowerNetDropdownEntity> dropdownList = powerNetDropdownService.list(params0);
         List<String> pointNos = new ArrayList<>();
+        Map<String, String> demandPointMap = new HashMap<>();
         for (PowerNetDropdownEntity netDropdown : dropdownList) {
+            demandPointMap.put(netDropdown.getNodeCode(), netDropdown.getExt1());
             if (StringUtils.isNotBlank(netDropdown.getExt1())) {
                 pointNos.add(netDropdown.getExt1());
             }
         }
-        if (StringUtils.isBlank(queryDto.getNodeCode()) || queryDto.getCurDemand() == null) {
-            log.info("查询当前值");
-            Map<String, Object> pointsRealValue = new HashMap<>();
-            if (!CollectionUtils.isEmpty(pointNos)) {
-                pointsRealValue = dataPointApi.queryPointsRealValue(pointNos);
+        for(PowerNetDropdownEntity netDropdown : dropdownList) {
+            PowerDemandQueryRespDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerDemandQueryRespDTO.class);
+            dto.setCurDemand(null);
+            result.add(dto);
+        }
+        if (queryDto.getCurDemand() == null) {
+            log.info("查询值为空,显示空白");
+            return success(result);
+        }
+        ApiPointValueQueryDTO queryCodeValue = new ApiPointValueQueryDTO();
+        queryCodeValue.setStart(startTime);
+        queryCodeValue.setEnd(endTime);
+        List<ApiPointValueDTO> codeValueList = dataPointApi.queryPointHistoryValue(queryCodeValue);
+        if (CollectionUtils.isEmpty(codeValueList)) {
+            return success(result);
+        }
+        ApiPointValueDTO curValue = new ApiPointValueDTO();
+        for (ApiPointValueDTO valueDTO : codeValueList) {
+            if (Math.abs(queryDto.getCurDemand().doubleValue() - valueDTO.getV()) <= 0.0001) {
+                log.info("curValue is find");
+                curValue = valueDTO;
+                break;
             }
-            for (PowerNetDropdownEntity netDropdown : dropdownList) {
-                PowerDemandQueryRespDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerDemandQueryRespDTO.class);
-                BigDecimal demand = null;
-                if (pointsRealValue.get(netDropdown.getExt1()) != null) {
-                    demand = new BigDecimal(pointsRealValue.get(netDropdown.getExt1()).toString());
-                }
-                dto.setCurDemand(demand);
-                dto.setDataTime(calendar.getTime());
-                result.add(dto);
-            }
-        } else {
-            log.info("查询历史值");
-            String nodeCode = queryDto.getNodeCode();
-            if (StringUtils.isBlank(nodeCode)) {
-                log.info("nodeCode isBlank");
-                return success(result);
-            }
-            PowerNetDropdownEntity powerNetDropdownEntity = powerNetDropdownService.getByNodeCode(nodeCode);
-            if (powerNetDropdownEntity == null) {
-                log.info("PowerNetDropdownEntity is null");
-                return success(result);
-            }
-            ApiPointsValueQueryDTO valueQueryDTO = new ApiPointsValueQueryDTO();
-            valueQueryDTO.setPointNos(pointNos);
-            valueQueryDTO.setStart(startTime);
-            valueQueryDTO.setEnd(endTime);
-            Map<String, List<Map<String, Object>>> pointsHisValues = dataPointApi.queryPointsHistoryValue(valueQueryDTO);
-            if (CollectionUtils.isEmpty(pointsHisValues)) {
-                log.info("pointsHisValues is null");
-                return success(result);
-            }
+        }
+        log.info("curValue={}", curValue);
+        if (curValue.getT() == null) {
+            log.info("curValue is not find");
+            return success(result);
+        }
 
-            ApiPointValueQueryDTO pointValueQueryDTO = new ApiPointValueQueryDTO();
-            pointValueQueryDTO.setStart(startTime);
-            pointValueQueryDTO.setEnd(endTime);
-            pointValueQueryDTO.setPointNo(powerNetDropdownEntity.getExt1());
-            List<ApiPointValueDTO> hisValue = dataPointApi.queryPointHistoryValue(pointValueQueryDTO);
-            if (CollectionUtils.isEmpty(hisValue)) {
-                log.info("hisValue is null");
+        Calendar calendar1 = Calendar.getInstance();
+        calendar1.setTime(curValue.getT());
+        ApiPointsValueQueryDTO valueQueryDTO = new ApiPointsValueQueryDTO();
+        valueQueryDTO.setPointNos(pointNos);
+        valueQueryDTO.setEnd(calendar1.getTime());
+        calendar1.add(Calendar.MINUTE, -1);
+        valueQueryDTO.setStart(calendar1.getTime());
+        Map<String, List<Map<String, Object>>> pointsHisValues = dataPointApi.queryPointsHistoryValue(valueQueryDTO);
+        if (CollectionUtils.isEmpty(pointsHisValues)) {
+            log.info("pointsHisValues is null");
+            return success(result);
+        }
+        for(PowerDemandQueryRespDTO respDTO : result) {
+            if (StringUtils.isBlank(demandPointMap.get(respDTO.getNodeCode()))) {
+                continue;
             }
-            ApiPointValueDTO curValue = null;
-            Collections.reverse(hisValue);
-            for (ApiPointValueDTO valueDTO : hisValue) {
-                if ((queryDto.getCurDemand().doubleValue() - valueDTO.getV()) <= 0.0001) {
-                    curValue = valueDTO;
-                    log.info("curValue is find");
-                    break;
-                }
+            List<Map<String, Object>> hisList = pointsHisValues.get(demandPointMap.get(respDTO.getNodeCode()));
+            if (CollectionUtils.isEmpty(hisList)) {
+                continue;
             }
-            if (curValue == null) {
-                log.info("curValue is null");
-                for (PowerNetDropdownEntity netDropdown : dropdownList) {
-                    PowerDemandQueryRespDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerDemandQueryRespDTO.class);
-                    if (dto.getNodeCode().equals(nodeCode)) {
-                        dto.setCurDemand(queryDto.getCurDemand());
-                    }
-                    result.add(dto);
-                }
-                return success(result);
-            }
-            log.info("curValue=" + curValue);
-            for (PowerNetDropdownEntity netDropdown : dropdownList) {
-                PowerDemandQueryRespDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerDemandQueryRespDTO.class);
-                if (!CollectionUtils.isEmpty(pointsHisValues.get(netDropdown.getExt1()))) {
-                    Map<String, BigDecimal> pointValueMap = new HashMap<>();
-                    pointsHisValues.get(netDropdown.getExt1()).forEach(item -> {
-                        pointValueMap.put(item.get("time").toString(), DecimalUtil.toBigDecimal(item.get("value")));
-
-                    });
-                    dto.setCurDemand(pointValueMap.get(DateUtils.format(curValue.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)));
-                    dto.setDataTime(curValue.getT());
-                }
-                result.add(dto);
-            }
+            Map<String, Object> valueMap = hisList.get(hisList.size() - 1);
+            respDTO.setDataTime(DateUtils.parse(valueMap.get("time").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
+            respDTO.setCurDemand( DecimalUtil.toBigDecimal(valueMap.get("value")));
         }
         return success(result);
     }
@@ -1052,9 +1023,9 @@
 
     @PostMapping("/demand/history-list")
     @Operation(summary = "负荷移植-实测需量有功功率历史(多code)")
-    public CommonResult<LinkedHashMap<String, List<Object[]>>> getPowerDemandHistoryList(@RequestBody PowerDemandHisReqDTO dto) {
+    public CommonResult<LinkedHashMap<String, PowerHistoryDTO>> getPowerDemandHistoryList(@RequestBody PowerDemandHisReqDTO dto) {
         log.info("请求参数: {}", JSONObject.toJSONString(dto));
-        LinkedHashMap<String, List<Object[]>> result = new LinkedHashMap<>();
+        LinkedHashMap<String, PowerHistoryDTO> result = new LinkedHashMap<>();
 
         // 参数校验
         if (CollectionUtils.isEmpty(dto.getCodeList())) {
@@ -1073,7 +1044,16 @@
             startTime = cal.getTime();
         }
 
+        Calendar calendar1 = Calendar.getInstance();
+        calendar1.set(Calendar.DAY_OF_MONTH, 1);
+        calendar1.set(Calendar.HOUR_OF_DAY, 0);
+        calendar1.set(Calendar.MINUTE, 0);
+        calendar1.set(Calendar.SECOND, 0);
+        calendar1.set(Calendar.MILLISECOND, 0);
+        Date start1 = calendar1.getTime();
+
         for (String code : dto.getCodeList()) {
+            PowerHistoryDTO powerHistoryDTO = new PowerHistoryDTO();
             PowerNetFactorQuery powerNetFactorQuery = new PowerNetFactorQuery();
             PowerDemandEntity powerDemandEntity = powerDemandService.getByCode(code);
             PowerNetDropdownEntity powerNetDropdownEntity = powerNetDropdownService.getByNodeCode(code);
@@ -1115,7 +1095,23 @@
                     })
                     .collect(Collectors.toList());
 
-            result.put(code, dataList);
+            powerHistoryDTO.setDataList(dataList);
+
+            //查询月最大最小值
+            ApiPointValueQueryDTO apiPointValueQueryDTO1 = new ApiPointValueQueryDTO();
+            apiPointValueQueryDTO1.setStart(start1);
+            apiPointValueQueryDTO1.setEnd(new Date());
+            apiPointValueQueryDTO1.setPointNo(pointNo);
+            Map<String, Object> maxV = dataPointApi.queryPointMaxValueRange(apiPointValueQueryDTO1);
+            Map<String, Object> minV = dataPointApi.queryPointMaxValueRange(apiPointValueQueryDTO1);
+            if (maxV != null && maxV.containsKey(pointNo)) {
+                powerHistoryDTO.setMax(new BigDecimal(maxV.get(pointNo).toString()));
+            }
+            if (minV != null && minV.containsKey(pointNo)) {
+                powerHistoryDTO.setMin(new BigDecimal(minV.get(pointNo).toString()));
+            }
+
+            result.put(code, powerHistoryDTO);
         }
 
         return success(result);

--
Gitblit v1.9.3