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