ansteel-biz/db/mysql.sql
@@ -287,6 +287,38 @@ ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '电力功率因数电容器投运状态'; -- ---------------------------- -- 电力功率因数-电容器投运详情 -- ---------------------------- DROP TABLE IF EXISTS `t_power_capacitor_det`; CREATE TABLE `t_power_capacitor_det` ( `id` varchar(36) NOT NULL COMMENT 'id', `status_id` varchar(36) NULL DEFAULT NULL COMMENT '投运状态父ID', `type` varchar(50) NULL DEFAULT NULL COMMENT '类型', `name` varchar(50) NULL DEFAULT NULL COMMENT '电容器名称', `remark` varchar(50) NULL DEFAULT NULL COMMENT '备注', `sort` int NULL DEFAULT NULL COMMENT '排序', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '电力功率因数电容器投运详情'; -- ---------------------------- -- 电力功率因数-电容器投运历史 -- ---------------------------- DROP TABLE IF EXISTS `t_power_capacitor_his`; CREATE TABLE `t_power_capacitor_his` ( `id` varchar(36) NOT NULL COMMENT 'id', `det_id` varchar(36) NULL DEFAULT NULL COMMENT '详情ID', `name` varchar(50) NULL DEFAULT NULL COMMENT '电容器名称', `status` varchar(50) NULL DEFAULT NULL COMMENT '状态', `content` varchar(50) NULL DEFAULT NULL COMMENT '内容', `remark` varchar(50) NULL DEFAULT NULL COMMENT '备注', `create_date` datetime COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '电力功率因数电容器投运历史'; -- ---------------------------- -- 电力功率因数-管控功率因数主表 -- ---------------------------- DROP TABLE IF EXISTS `t_power_control_main`; @@ -675,16 +707,17 @@ UNIQUE key uk_code (code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='调整后的功率因数与无功倒送量'; CREATE TABLE `t_coking_overview_ind` ( `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id', `rel_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关联ID', `process_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '工序类型', `clock` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '查询时间', `ind_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标编码', `ind_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标名称', `ind_unit` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标单位', `ind_value` decimal(20,4) DEFAULT NULL COMMENT '指标值', `create_date` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, KEY `idx_rel_id` (`rel_id`) CREATE TABLE `t_coking_overview_ind` ( `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id', `rel_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关联ID', `process_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '工序类型', `clock` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '查询时间', `ind_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标编码', `ind_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标名称', `ind_unit` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标单位', `ind_value` decimal(20, 4) DEFAULT NULL COMMENT '指标值', `create_date` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE, KEY `idx_rel_id` (`rel_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='焦化工序概况指标数据结果'; 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/job/task/RunCokingOverviewTask.java
@@ -198,12 +198,14 @@ List<String> points = new ArrayList<>(); points.add(conf.getPointNo()); Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); value = Double.valueOf(pointsRealValue.get(conf.getPointNo()).toString()); if (pointsRealValue.containsKey(conf.getPointNo())) { value = Double.valueOf(pointsRealValue.get(conf.getPointNo()).toString()); } break; case IND: List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemDefaultValue(conf.getPointNo()); if (!CollectionUtils.isEmpty(indValues)) { value = Double.valueOf(indValues.get(indValues.size() - 1).getDataValue().toString()); value = Double.valueOf(indValues.get(0).getDataValue().toString()); } break; case MODEL: ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorDetEntity.java
对比新文件 @@ -0,0 +1,24 @@ package com.iailab.module.ansteel.power.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; /** * @author PanZhibao * @Description * @createTime 2025年04月27日 */ @Data @TableName("t_power_adjusted_factor") public class PowerCapacitorDetEntity implements Serializable { private static final long serialVersionUID = 1L; /** * id */ @TableId private String id; } ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorHisEntity.java
对比新文件 @@ -0,0 +1,24 @@ package com.iailab.module.ansteel.power.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; /** * @author PanZhibao * @Description * @createTime 2025年04月27日 */ @Data @TableName("t_power_adjusted_factor") public class PowerCapacitorHisEntity implements Serializable { private static final long serialVersionUID = 1L; /** * id */ @TableId private String id; } 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); } } doc/鞍钢数据接口文档_master.docBinary files differ