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); } }