鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
8 天以前 ed2835b42336fd902c255bdc62e9837debc31c44
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())) {
@@ -478,19 +485,15 @@
            }
            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.setPointNo(dto.getMaxDemand());
                Map<String, Object> maxValue = dataPointApi.queryPointMaxValue(apiPointValueQueryDTO);
                if (maxValue != null) {
                    dto.setMaxDemand(maxValue.get(dto.getMaxDemand()) == null ? "" : maxValue.get(dto.getMaxDemand()).toString());
                }
                Object maxValue = dataPointApi.queryPointMaxValue(apiPointValueQueryDTO);
                dto.setMaxDemand(maxValue == null ? "" : maxValue.toString());
            }
        }
        return success(result);
@@ -755,7 +758,7 @@
    }
    @PostMapping("/demand/history")
    @Operation(summary = "负荷移植-实测需量,有功功率 历史")
    @Operation(summary = "负荷移植-实测需量有功功率历史")
    public CommonResult<PowerHistoryDTO> getPowerDemandHistory(@RequestBody PowerDemandHisReqDTO dto) {
        log.info("请求参数: {}", JSONObject.toJSONString(dto));
@@ -823,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(code);
            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);
    }
}