鞍钢鲅鱼圈能源管控系统后端代码
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -302,6 +302,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());
@@ -728,9 +735,20 @@
            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);
        }
        Map<String, Object> params1 = new HashMap<>();
        params1.put("groupName", "COMMON1");
        List<PowerNetDropdownEntity> list1 = powerNetDropdownService.list(params1);
        if (!CollectionUtils.isEmpty(list1)) {
            list.addAll(list1);
        }
        List<String> points = list.stream().map(item -> {
            return item.getCurCos();
        }).collect(Collectors.toList());
@@ -1137,11 +1155,13 @@
    }
    @PostMapping("/net-factor/export-history")
    @Operation(summary = "功率因数-电网拓扑功率历史(多code)")
    @Operation(summary = "功率因数-电网拓扑功率历史导出(多code)")
    public void exportPowerHistoryList(HttpServletResponse response, HttpServletRequest
            request, @RequestBody PowerNetFactorHisReqDTO dto) throws IOException {
        log.info("exportPowerHistoryList开始");
        String firstCol = "时间";
        List<String> column = new ArrayList<>();
        column.add("时间");
        column.add(firstCol);
        List<List<Object>> exportData = new ArrayList<>();
        List<String> nodeCodeList = dto.getNodeCodeList();
@@ -1209,6 +1229,7 @@
            Map<String, Object> dataMap = new HashMap<>();
            if (StringUtils.isNotBlank(pointNo)) {
                log.info("查询功率");
                apiPointValueQueryDTO.setPointNo(pointNo);
                List<ApiPointValueDTO> chartData = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO);
                for (ApiPointValueDTO pv : chartData) {
@@ -1217,6 +1238,7 @@
                    dataMap.put(key, val);
                }
            } else if (StringUtils.isNotBlank(pointNoArr[0]) && StringUtils.isNotBlank(pointNoArr[1])) {
                log.info("查询累计功率");
                apiPointValueQueryDTO.setPointNo(pointNoArr[0]);
                List<ApiPointValueDTO> chartDataP = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO);
                Map<String, Double> dataMapP = new HashMap<>();
@@ -1240,14 +1262,25 @@
            }
            dataAll.put(powerNetFactorQuery.getNodeName(), dataMap);
        }
        log.info("column=" + JSONArray.toJSONString(column));
        for (String cate : categories) {
            List<Object> row = new ArrayList<>();
            for (String col : column) {
                row.add(dataAll.get(col).get(cate));
                if (firstCol.equals(col)) {
                    row.add(cate);
                } else if (dataAll.get(col) == null) {
                    log.info(col + " is null");
                    row.add("");
                } else if (dataAll.get(col).get(cate) == null) {
                    log.info(col + cate + " is null");
                    row.add("");
                } else {
                    row.add(dataAll.get(col).get(cate));
                }
            }
            exportData.add(row);
        }
        log.info("exportData.size=" + exportData.size());
        ExcelUtils.write(response,  "历史.xlsx", "历史数据", column, exportData);
    }
@@ -1320,6 +1353,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);
@@ -1332,15 +1370,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()) {
@@ -1351,18 +1383,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);
@@ -1380,26 +1401,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);
        }