鞍钢鲅鱼圈能源管控系统后端代码
dongyukun
2 天以前 b8247efced4174729e7481fd2d936b308c6b4cf8
负荷移植-实测需量,有功功率 历史
已添加1个文件
已修改4个文件
116 ■■■■■ 文件已修改
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandHisReqDTO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerDemandService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerDemandServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -433,10 +433,7 @@
        List<ApiPointValueDTO> monthChartData = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO);
        List<Double> monthValues = new ArrayList<>();
        if (CollectionUtils.isEmpty(monthChartData)) {
            monthValues =  monthChartData.stream().map(item -> {
                return item.getV();
            }).collect(Collectors.toList());
            monthValues =  monthChartData.stream().map(item -> item.getV()).collect(Collectors.toList());
            result.setMax(monthValues.stream().max(Double::compareTo).get());
            result.setMin(monthValues.stream().min(Double::compareTo).get());
        }
@@ -488,4 +485,73 @@
        }
        return success(result);
    }
    @GetMapping("/demand/history")
    @Operation(summary = "负荷移植-实测需量,有功功率 历史")
    public CommonResult<PowerHistoryDTO> getPowerDemandHistory(@RequestBody PowerDemandHisReqDTO dto) {
        log.info("请求参数: {}", JSONObject.toJSONString(dto));
        // 参数校验
        if (StringUtils.isBlank(dto.getCode())) {
            return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "code不能为空");
        }
        if (StringUtils.isBlank(dto.getQueryType())) {
            return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "queryType不能为空");
        }
        PowerDemandEntity powerDemand = powerDemandService.getByCode(dto.getCode());
        if (powerDemand == null) {
            log.info("未找到code对应的数据: {}", dto.getCode());
            return success(new PowerHistoryDTO());
        }
        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);
        }
        // 默认查最近24小时
        Date end = Optional.ofNullable(dto.getEndTime()).orElseGet(() -> {
            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.MILLISECOND, 0);
            cal.set(Calendar.SECOND, 0);
            return cal.getTime();
        });
        Date start = Optional.ofNullable(dto.getStartTime()).orElseGet(() -> {
            Calendar cal = Calendar.getInstance();
            cal.setTime(end);
            cal.add(Calendar.MINUTE, -1440); // 24小时前
            return cal.getTime();
        });
        // 查询历史数据
        ApiPointValueQueryDTO query = new ApiPointValueQueryDTO();
        query.setPointNo(pointNo);
        query.setStart(start);
        query.setEnd(end);
        log.info("开始查询实测需量/有功功率历史数据,测点: {}", pointNo);
        List<ApiPointValueDTO> chartData = dataPointApi.queryPointHistoryValue(query);
        // 构建返回结果
        PowerHistoryDTO result = new PowerHistoryDTO();
        result.setCategories(DateUtils.getTimeScale(start, end, 60));
        result.setDataList(chartData.stream()
                .map(pv -> new Object[]{
                        DateUtils.format(pv.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND),
                        pv.getV()
                })
                .collect(Collectors.toList()));
        return success(result);
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandDTO.java
@@ -21,6 +21,9 @@
    @Schema(description = "机组名称")
    private String name;
    @Schema(description = "编码")
    private String code;
    @Schema(description = "月最大需量")
    private String maxDemand;
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandHisReqDTO.java
对比新文件
@@ -0,0 +1,27 @@
package com.iailab.module.ansteel.api.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * @author dyk
 * @Description
 * @createTime 2025年04月23日
 */
@Data
public class PowerDemandHisReqDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    private String code;
    private String queryType;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerDemandService.java
@@ -14,4 +14,6 @@
public interface PowerDemandService {
    List<PowerDemandEntity> list(Map<String, Object> params);
    PowerDemandEntity getByCode(String code);
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerDemandServiceImpl.java
@@ -5,7 +5,9 @@
import com.iailab.module.ansteel.power.entity.PowerDemandEntity;
import com.iailab.module.ansteel.power.service.PowerDemandService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.List;
@@ -26,8 +28,16 @@
    @Override
    public List<PowerDemandEntity> list(Map<String, Object> params) {
        QueryWrapper<PowerDemandEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("code", params.get("code"));
        queryWrapper.orderByAsc("sort");
        return PowerDemandDao.selectList(queryWrapper);
    }
    public PowerDemandEntity getByCode(String code) {
        QueryWrapper<PowerDemandEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("code", code);
        return PowerDemandDao.selectOne(queryWrapper);
    }
}