鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
2025-05-16 68e4932985312602140dcd64ebbb31b2bbaac13a
负荷移植-需量值查询
已修改2个文件
167 ■■■■ 文件已修改
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java 164 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandQueryDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandQueryDTO.java
@@ -20,9 +20,6 @@
    @Schema(description = "编码")
    private String code;
    @Schema(description = "节点编码")
    private String nodeCode;
    @Schema(description = "当前需量")
    private BigDecimal curDemand;