ansteel-biz/db/mysql.sql
@@ -614,3 +614,15 @@ PRIMARY KEY (`id`) USING BTREE, key idx_rel_id (rel_id) ) 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
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); } }