From b29ca8c0d3db451e8f6a0e154e49e0bb07bc0bef Mon Sep 17 00:00:00 2001 From: dongyukun <1208714201@qq.com> Date: 星期五, 18 四月 2025 15:57:48 +0800 Subject: [PATCH] 1.负荷移植-月最大需量,实测需量,有功功率接口开发 2.功率因数-变电站下拉列表接口 --- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDTO.java | 56 ++++---- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java | 72 ++++++++++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerDemandDao.java | 14 ++ ansteel-biz/db/mysql.sql | 14 ++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandDTO.java | 35 +++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerDemandEntity.java | 48 ++++++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerDemandService.java | 17 ++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDropdownDTO.java | 28 ++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerNetFactorDao.java | 8 + ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerNetFactorServiceImpl.java | 9 + ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerNetFactorService.java | 1 ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerDemandServiceImpl.java | 33 +++++ 12 files changed, 304 insertions(+), 31 deletions(-) diff --git a/ansteel-biz/db/mysql.sql b/ansteel-biz/db/mysql.sql index 918babf..118ba41 100644 --- a/ansteel-biz/db/mysql.sql +++ b/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 '焦化工序指标值溯源'; \ No newline at end of file +) 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='月最大需量,实测需量,有功功率'; \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java index 9ee6709..d7cb177 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java +++ b/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); + } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerDemandDTO.java new file mode 100644 index 0000000..b3e068a --- /dev/null +++ b/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; +} diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDTO.java index b27b18d..de50e82 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDTO.java +++ b/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; } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDropdownDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerNetFactorDropdownDTO.java new file mode 100644 index 0000000..6b22d28 --- /dev/null +++ b/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; + +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerDemandDao.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerDemandDao.java new file mode 100644 index 0000000..7eea1be --- /dev/null +++ b/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> { +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerNetFactorDao.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerNetFactorDao.java index 42fda04..70650d0 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/dao/PowerNetFactorDao.java +++ b/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> { - -} +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerDemandEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerDemandEntity.java new file mode 100644 index 0000000..2afbdc0 --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerDemandService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerDemandService.java new file mode 100644 index 0000000..a1eb092 --- /dev/null +++ b/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); +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerNetFactorService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerNetFactorService.java index 35ba3f7..4bbf736 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/PowerNetFactorService.java +++ b/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); } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerDemandServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerDemandServiceImpl.java new file mode 100644 index 0000000..fc1679e --- /dev/null +++ b/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); + + } +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerNetFactorServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerNetFactorServiceImpl.java index 2a8f7b6..72c83b9 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/power/service/impl/PowerNetFactorServiceImpl.java +++ b/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); + } + } \ No newline at end of file -- Gitblit v1.9.3