鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
7 天以前 40fb78b4aad852cf7887a7c339d5c5924229a518
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -758,7 +758,7 @@
    }
    @PostMapping("/demand/history")
    @Operation(summary = "负荷移植-实测需量,有功功率 历史")
    @Operation(summary = "负荷移植-实测需量有功功率历史")
    public CommonResult<PowerHistoryDTO> getPowerDemandHistory(@RequestBody PowerDemandHisReqDTO dto) {
        log.info("请求参数: {}", JSONObject.toJSONString(dto));
@@ -826,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);
    }
}