鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
4 天以前 a01eec9f761ffcc11d42da0a82595e720427dd68
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());
@@ -1137,11 +1167,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();
@@ -1183,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;
@@ -1209,6 +1258,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 +1267,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 +1291,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);
    }
@@ -1295,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;
@@ -1320,6 +1399,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 +1416,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 +1429,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 +1447,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);
        }
@@ -1563,6 +1646,7 @@
                    throw new IllegalArgumentException("不支持的queryType: " + queryType);
            }
            // 查询历史数据
            ApiPointValueQueryDTO query = new ApiPointValueQueryDTO();
            query.setPointNo(pointNo);
@@ -1577,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);
@@ -1591,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);
        }
@@ -1640,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 -> {
@@ -1716,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");