鞍钢鲅鱼圈能源管控系统后端代码
已修改7个文件
已添加3个文件
223 ■■■■■ 文件已修改
ansteel-biz/db/mysql.sql 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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/job/task/RunCokingOverviewTask.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorDetEntity.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerCapacitorHisEntity.java 24 ●●●●● 补丁 | 查看 | 原始文档 | 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 | 历史
doc/鞍钢数据接口文档_master.doc 补丁 | 查看 | 原始文档 | blame | 历史
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.doc
Binary files differ