鞍钢鲅鱼圈能源管控系统后端代码
dongyukun
2025-04-27 9a772cdec621410aa02130e54fd31df79d80669f
功率因数-发电机组功率历史
已修改4个文件
已添加1个文件
112 ■■■■■ 文件已修改
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerGenStatusHisReqDTO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerGenStatusEntity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerGenStatusDaoService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerGenStatusDaoServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -556,4 +556,75 @@
        return success(result);
    }
    @PostMapping("/gen/history")
    @Operation(summary = "功率因数-发电机组功率历史")
    public CommonResult<PowerHistoryDTO> getPowerGenStatusHistory(@RequestBody PowerGenStatusHisReqDTO dto) {
        log.info("请求参数: {}", JSONObject.toJSONString(dto));
        // 参数校验
        if (StringUtils.isBlank(dto.getId())) {
            return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "id不能为空");
        }
        if (StringUtils.isBlank(dto.getQueryType())) {
            return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "queryType不能为空");
        }
        PowerGenStatusEntity powerGenStatus = powerGenStatusDaoService.getById(dto.getId());
        if (powerGenStatus == null) {
            log.info("未找到code对应的数据: {}", dto.getId());
            return success(new PowerHistoryDTO());
        }
        String queryType = dto.getQueryType().toUpperCase();
        String pointNo;
        switch (queryType.toUpperCase()) {
            case "D":
                pointNo = powerGenStatus.getCurP();
                break;
            case "P":
                pointNo = powerGenStatus.getCurQ();
                break;
            case "COS":
                pointNo = powerGenStatus.getCurCOS();
                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/PowerGenStatusHisReqDTO.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 PowerGenStatusHisReqDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    private String id;
    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/entity/PowerGenStatusEntity.java
@@ -37,6 +37,10 @@
     */
    private String curQ;
    /**
     * 当前功率因数
     */
    private String curCOS;
    /**
     * 上限
     */
    private BigDecimal limitH;
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerGenStatusDaoService.java
@@ -13,4 +13,6 @@
public interface PowerGenStatusDaoService {
    List<PowerGenStatusEntity> list(Map<String, Object> params);
    PowerGenStatusEntity getById(String id);
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerGenStatusDaoServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iailab.module.ansteel.power.dao.PowerGenStatusDao;
import com.iailab.module.ansteel.power.entity.PowerDemandEntity;
import com.iailab.module.ansteel.power.entity.PowerGenStatusEntity;
import com.iailab.module.ansteel.power.service.PowerGenStatusDaoService;
import lombok.extern.slf4j.Slf4j;
@@ -30,4 +31,11 @@
        return PowerGenStatusDao.selectList(queryWrapper);
    }
    public PowerGenStatusEntity getById(String id) {
        QueryWrapper<PowerGenStatusEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", id);
        return PowerGenStatusDao.selectOne(queryWrapper);
    }
}