鞍钢鲅鱼圈能源管控系统后端代码
1.负荷移植-月最大需量,实测需量,有功功率接口开发
2.功率因数-变电站下拉列表接口
已添加6个文件
已修改6个文件
335 ■■■■■ 文件已修改
ansteel-biz/db/mysql.sql 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandDTO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDTO.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDropdownDTO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerDemandDao.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerNetFactorDao.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerDemandEntity.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerDemandService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerNetFactorService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerDemandServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerNetFactorServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/db/mysql.sql
@@ -613,4 +613,16 @@
    `sort`      int NULL DEFAULT NULL COMMENT '排序',
    PRIMARY KEY (`id`) USING BTREE,
    key         idx_rel_id (rel_id)
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '焦化工序指标值溯源';
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '焦化工序指标值溯源';
-- ----------------------------
-- 负荷移植-月最大需量,实测需量,有功功率
-- ----------------------------
CREATE TABLE `t_power_demand` (
                                  `id` varchar(36) NOT NULL COMMENT 'id',
                                  `name` varchar(50) DEFAULT NULL COMMENT '机组名称',
                                  `max_demand` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '月最大需量',
                                  `cur_demand` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '实测需量',
                                  `active_power` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '有功功率',
                                  `sort` varchar(50) DEFAULT NULL COMMENT '排序',
                                  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='月最大需量,实测需量,有功功率';
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -9,6 +9,8 @@
import com.iailab.module.ansteel.power.entity.*;
import com.iailab.module.ansteel.power.service.*;
import com.iailab.module.data.api.point.DataPointApi;
import com.iailab.module.data.api.point.dto.ApiPointValueDTO;
import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO;
import com.iailab.module.model.api.mcs.McsApi;
import com.iailab.module.model.api.mcs.dto.PredictLastValueReqVO;
import io.swagger.v3.oas.annotations.Operation;
@@ -50,6 +52,9 @@
    @Autowired
    private PowerGenStatusDaoService powerGenStatusDaoService;
    @Autowired
    private PowerDemandService powerDemandService;
    @Resource
    private DataPointApi dataPointApi;
@@ -140,6 +145,14 @@
                }
            }
        }
        return success(result);
    }
    @GetMapping("/net-factor-dropdown/list")
    @Operation(summary = "功率因数-电网拓扑下拉列表")
    public CommonResult<List<PowerNetFactorDropdownDTO>> getPowerNetFactorDropdownList(@RequestParam String nodeName) {
        List<PowerNetFactorEntity> list = powerNetFactorService.listDropdown(nodeName);
        List<PowerNetFactorDropdownDTO> result = ConvertUtils.sourceToTarget(list, PowerNetFactorDropdownDTO.class);
        return success(result);
    }
@@ -283,4 +296,63 @@
        });
        return success(result);
    }
    @GetMapping("/demand/list")
    @Operation(summary = "负荷移植-月最大需量,实测需量,有功功率")
    public CommonResult<List<PowerDemandDTO>> getPowerDemandList(@RequestParam Map<String, Object> params) {
        List<PowerDemandEntity> list = powerDemandService.list(params);
        List<PowerDemandDTO> result = ConvertUtils.sourceToTarget(list, PowerDemandDTO.class);
        if (CollectionUtils.isEmpty(result)) {
            return success(result);
        }
        for (PowerDemandDTO dto : result) {
            List<String> points = new ArrayList<>();
            if (StringUtils.isNotBlank(dto.getCurDemand())) {
                points.add(dto.getCurDemand());
            }
            if (StringUtils.isNotBlank(dto.getActivePower())) {
                points.add(dto.getActivePower());
            }
            if (!CollectionUtils.isEmpty(points)) {
                Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points);
                if (pointsRealValue.get(dto.getCurDemand()) != null) {
                    dto.setCurDemand(pointsRealValue.get(dto.getCurDemand()).toString());
                }
                if (pointsRealValue.get(dto.getActivePower()) != null) {
                    dto.setActivePower(pointsRealValue.get(dto.getActivePower()).toString());
                }
            }
            if (!StringUtils.isEmpty(dto.getMaxDemand())) {
                Calendar calendar = Calendar.getInstance();
                calendar.set(Calendar.DAY_OF_MONTH, 1);
                calendar.set(Calendar.HOUR_OF_DAY, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.SECOND, 0);
                calendar.set(Calendar.MILLISECOND, 0);
                Date start = calendar.getTime();
                calendar.add(Calendar.MONTH, 1);
                Date end = calendar.getTime();
                ApiPointValueQueryDTO apiPointValueQueryDTO = new ApiPointValueQueryDTO();
                apiPointValueQueryDTO.setStart(start);
                apiPointValueQueryDTO.setEnd(end);
                apiPointValueQueryDTO.setPointNo(dto.getMaxDemand());
                List<ApiPointValueDTO> monthValues = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO);
                double max = 0;
                for (int i = 0; i < monthValues.size()-1; i++) {
                    if(max < monthValues.get(i).getV()){
                        max = monthValues.get(i).getV();
                    }
                }
                dto.setMaxDemand(String.valueOf(max));
            }
        }
        return success(result);
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandDTO.java
对比新文件
@@ -0,0 +1,35 @@
package com.iailab.module.ansteel.api.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * @author dyk
 * @date 2025年04月18日
 */
@Data
public class PowerDemandDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @Schema(description = "id")
    private String id;
    @Schema(description = "机组名称")
    private String name;
    @Schema(description = "月最大需量")
    private String maxDemand;
    @Schema(description = "实测需量")
    private String curDemand;
    @Schema(description = "有功功率")
    private String activePower;
    @Schema(description = "排序")
    private Integer sort;
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDTO.java
@@ -16,47 +16,47 @@
public class PowerNetFactorDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @Schema(description = "id")
    private String id;
    @Schema(description = "id")
    private String id;
    @Schema(description = "分组名称")
    private String groupName;
    @Schema(description = "分组名称")
    private String groupName;
    @Schema(description = "节点名称")
    private String nodeName;
    @Schema(description = "节点名称")
    private String nodeName;
    @Schema(description = "当前有功")
    private String curP;
    @Schema(description = "当前有功")
    private String curP;
    @Schema(description = "当前无功")
    private String curQ;
    @Schema(description = "当前无功")
    private String curQ;
    @Schema(description = "当前功率因数")
    private String curCos;
    @Schema(description = "当前功率因数")
    private String curCos;
    @Schema(description = "无功返送(1:大于0是,-1:小于0是)")
    private Integer curFlag;
    @Schema(description = "无功返送(1:大于0是,-1:小于0是)")
    private Integer curFlag;
    @Schema(description = "预测有功")
    private String preP;
    @Schema(description = "预测有功")
    private String preP;
    @Schema(description = "预测无功")
    private String preQ;
    @Schema(description = "预测无功")
    private String preQ;
    @Schema(description = "预测功率因数")
    private String preCos;
    @Schema(description = "预测功率因数")
    private String preCos;
    @Schema(description = "上限")
    private BigDecimal limitH;
    @Schema(description = "上限")
    private BigDecimal limitH;
    @Schema(description = "下限")
    private BigDecimal limitL;
    @Schema(description = "下限")
    private BigDecimal limitL;
    @Schema(description = "是否超限(0:正常,1:超限)")
    private Integer status;
    @Schema(description = "是否超限(0:正常,1:超限)")
    private Integer status;
    @Schema(description = "排序")
    private Integer sort;
    @Schema(description = "排序")
    private Integer sort;
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDropdownDTO.java
对比新文件
@@ -0,0 +1,28 @@
package com.iailab.module.ansteel.api.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * 电力功率因数电网拓扑下拉列表
 *
 * @author Mark sunlightcs@gmail.com
 * @since 1.0.0 2025-04-11
 */
@Data
public class PowerNetFactorDropdownDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @Schema(description = "id")
    private String id;
    @Schema(description = "分组名称")
    private String groupName;
    @Schema(description = "节点名称")
    private String nodeName;
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerDemandDao.java
对比新文件
@@ -0,0 +1,14 @@
package com.iailab.module.ansteel.power.dao;
import com.iailab.framework.common.dao.BaseDao;
import com.iailab.module.ansteel.power.entity.PowerDemandEntity;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author dyk
 * @Description
 * @createTime 2025年04月18日
 */
@Mapper
public interface PowerDemandDao extends BaseDao<PowerDemandEntity> {
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerNetFactorDao.java
@@ -4,7 +4,11 @@
import com.iailab.module.ansteel.power.entity.PowerNetFactorEntity;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author dyk
 * @Description
 * @createTime 2025年04月18日
 */
@Mapper
public interface PowerNetFactorDao extends BaseDao<PowerNetFactorEntity> {
}
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerDemandEntity.java
对比新文件
@@ -0,0 +1,48 @@
package com.iailab.module.ansteel.power.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * 负荷移植-月最大需量,实测需量,有功功率
 *
 * @author dyk
 * @Description
 * @createTime 2025年04月18日
 */
@Data
@TableName("t_power_demand")
public class PowerDemandEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * id
     */
    @TableId
    private String id;
    /**
     * 机组名称
     */
    private String name;
    /**
     * 月最大需量
     */
    private String maxDemand;
    /**
     * 实测需量
     */
    private String curDemand;
    /**
     * 有功功率
     */
    private String activePower;
    /**
     * 排序
     */
    private Integer sort;
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerDemandService.java
对比新文件
@@ -0,0 +1,17 @@
package com.iailab.module.ansteel.power.service;
import com.iailab.module.ansteel.power.entity.PowerDemandEntity;
import com.iailab.module.ansteel.power.entity.PowerGenStatusEntity;
import java.util.List;
import java.util.Map;
/**
 * @author dyk
 * @Description
 * @createTime 2025年04月18日
 */
public interface PowerDemandService {
    List<PowerDemandEntity> list(Map<String, Object> params);
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerNetFactorService.java
@@ -14,4 +14,5 @@
    List<PowerNetFactorEntity> list(Map<String, Object> params);
    List<PowerNetFactorEntity> listDropdown(String nodeName);
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerDemandServiceImpl.java
对比新文件
@@ -0,0 +1,33 @@
package com.iailab.module.ansteel.power.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iailab.module.ansteel.power.dao.PowerDemandDao;
import com.iailab.module.ansteel.power.entity.PowerDemandEntity;
import com.iailab.module.ansteel.power.service.PowerDemandService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
 * @author dyk
 * @Description
 * @createTime 2025年04月18日
 */
@Slf4j
@Service
public class PowerDemandServiceImpl implements PowerDemandService {
    @Resource
    private PowerDemandDao PowerDemandDao;
    @Override
    public List<PowerDemandEntity> list(Map<String, Object> params) {
        QueryWrapper<PowerDemandEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByAsc("sort");
        return PowerDemandDao.selectList(queryWrapper);
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerNetFactorServiceImpl.java
@@ -8,6 +8,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -31,4 +32,12 @@
    }
    @Override
    public List<PowerNetFactorEntity> listDropdown(String nodeName) {
        QueryWrapper<PowerNetFactorEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.ne( "node_name",nodeName);
        queryWrapper.orderByAsc("sort");
        return powerNetFactorDao.selectList(queryWrapper);
    }
}