From 634d18758efbd8616d03945da447cc242c880491 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期二, 15 四月 2025 09:54:08 +0800
Subject: [PATCH] 功率因数-发电机组实时状态

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/PowerGenStatusDaoServiceImpl.java |   33 ++++++
 ansteel-biz/db/mysql.sql                                                                               |   22 ++++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dao/PowerGenStatusDao.java                     |   14 ++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/PowerControlMainService.java           |    2 
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerNetFactorEntity.java               |    4 
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerControlMainEntity.java             |   19 +++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/PowerGenStatusDaoService.java          |   16 +++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java          |   52 +++++++++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerControlMainDTO.java                   |    7 +
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/PowerControlMainServiceImpl.java  |    5 +
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerGenStatusEntity.java               |   55 +++++++++++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerGenStatusDTO.java                     |   38 +++++++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerControlDetEntity.java              |    4 
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerCapacitorStatusEntity.java         |    5 
 14 files changed, 267 insertions(+), 9 deletions(-)

diff --git a/ansteel-biz/db/mysql.sql b/ansteel-biz/db/mysql.sql
index a5e08f4..3f91b0e 100644
--- a/ansteel-biz/db/mysql.sql
+++ b/ansteel-biz/db/mysql.sql
@@ -253,6 +253,23 @@
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '电力功率因数电网拓扑';
 
 -- ----------------------------
+-- 电力功率因数-发电机组实时状态
+-- ----------------------------
+DROP TABLE IF EXISTS `t_power_gen_status`;
+CREATE TABLE `t_power_gen_status`  (
+                                       `id` varchar(36) NOT NULL COMMENT 'id',
+                                       `name` varchar(50) NULL DEFAULT NULL COMMENT '机组名称',
+                                       `cur_p` varchar(50) NULL DEFAULT NULL COMMENT '当前有功',
+                                       `cur_q` varchar(50) NULL DEFAULT NULL COMMENT '当前无功',
+                                       `cur_cos` varchar(50) NULL DEFAULT NULL COMMENT '当前功率因数',
+                                       `limit_h` decimal(6, 3) NULL DEFAULT NULL COMMENT '上限',
+                                       `limit_l` decimal(6, 3) NULL DEFAULT NULL COMMENT '下限',
+                                       `status` int DEFAULT 0 COMMENT '是否超限(0:正常,1:超限)',
+                                       `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_status`;
@@ -282,7 +299,10 @@
                                              UNIQUE INDEX `uk_name` (`name`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '电力功率因数管控功率因数主表';
 
--- ----------------------------
+ALTER TABLE `t_power_control_main` ADD COLUMN `limit_h` decimal(6, 4) NULL DEFAULT NULL COMMENT '上限',
+ALTER TABLE `t_power_control_main` ADD COLUMN `limit_l` decimal(6, 4) NULL DEFAULT NULL COMMENT '下限',
+
+    -- ----------------------------
 -- 电力功率因数-管控功率因数从表
 -- ----------------------------
 DROP TABLE IF EXISTS `t_power_control_det`;
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 b7f7676..fb210d5 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
@@ -3,10 +3,7 @@
 import com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants;
 import com.iailab.framework.common.pojo.CommonResult;
 import com.iailab.framework.common.util.object.ConvertUtils;
-import com.iailab.module.ansteel.api.dto.PowerCapacitorStatusDTO;
-import com.iailab.module.ansteel.api.dto.PowerControlDetDTO;
-import com.iailab.module.ansteel.api.dto.PowerControlMainDTO;
-import com.iailab.module.ansteel.api.dto.PowerNetFactorDTO;
+import com.iailab.module.ansteel.api.dto.*;
 import com.iailab.module.ansteel.api.entity.*;
 import com.iailab.module.ansteel.api.service.*;
 import com.iailab.module.data.api.point.DataPointApi;
@@ -53,6 +50,9 @@
     @Autowired
     private PowerControlDetService powerControlDetService;
 
+    @Autowired
+    private PowerGenStatusDaoService powerGenStatusDaoService;
+
     @Resource
     private DataPointApi dataPointApi;
 
@@ -86,6 +86,36 @@
         return success(result);
     }
 
+    @GetMapping("/gen-status/list")
+    @Operation(summary = "功率因数-发电机组实时状态")
+    public CommonResult<List<PowerGenStatusDTO>> getPowerGenStatusList(@RequestParam Map<String, Object> params) {
+        List<PowerGenStatusEntity> list = powerGenStatusDaoService.list(params);
+        List<PowerGenStatusDTO> result = ConvertUtils.sourceToTarget(list, PowerGenStatusDTO.class);
+        if (CollectionUtils.isEmpty(result)) {
+            return success(result);
+        }
+        for(PowerGenStatusDTO dto : result) {
+            List<String> points = new ArrayList<>();
+            if (StringUtils.isNotBlank(dto.getCurP())) {
+                points.add(dto.getCurP());
+            }
+            if (StringUtils.isNotBlank(dto.getCurQ())) {
+                points.add(dto.getCurQ());
+            }
+            if (!CollectionUtils.isEmpty(points)) {
+                Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points);
+                if (pointsRealValue.get(dto.getCurP()) != null) {
+                    dto.setCurP(pointsRealValue.get(dto.getCurP()).toString());
+                }
+                if (pointsRealValue.get(dto.getCurQ()) != null) {
+                    dto.setCurQ(pointsRealValue.get(dto.getCurQ()).toString());
+                }
+            }
+        }
+
+        return success(result);
+    }
+
     @GetMapping("/capacitor-status/list")
     @Operation(summary = "功率因数-电容器投运状态")
     public CommonResult<List<PowerCapacitorStatusDTO>> getPowerCapacitorStatusList(@RequestParam Map<String, Object> params) {
@@ -100,6 +130,20 @@
         return success(ConvertUtils.sourceToTarget(list, PowerControlMainDTO.class));
     }
 
+    @GetMapping("/control-main/update")
+    @Operation(summary = "功率因数-管控变电站修改上下限")
+    public CommonResult<Boolean> updatePowerControlMain(PowerControlMainDTO dto) {
+        if (StringUtils.isBlank(dto.getId())) {
+            return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST);
+        }
+        PowerControlMainEntity entity = new PowerControlMainEntity();
+        entity.setId(dto.getId());
+        entity.setLimitH(dto.getLimitH());
+        entity.setLimitL(dto.getLimitL());
+        powerControlMainService.update(entity);
+        return success(true);
+    }
+
     @GetMapping("/control-det/list")
     @Operation(summary = "功率因数-管控功率因数详情")
     public CommonResult<List<PowerControlDetDTO>> getPowerControlDetList(@RequestParam Map<String, Object> params) {
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dao/PowerGenStatusDao.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dao/PowerGenStatusDao.java
new file mode 100644
index 0000000..04f7ee5
--- /dev/null
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dao/PowerGenStatusDao.java
@@ -0,0 +1,14 @@
+package com.iailab.module.ansteel.api.dao;
+
+import com.iailab.framework.common.dao.BaseDao;
+import com.iailab.module.ansteel.api.entity.PowerGenStatusEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2025年04月15日
+ */
+@Mapper
+public interface PowerGenStatusDao extends BaseDao<PowerGenStatusEntity> {
+}
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerControlMainDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerControlMainDTO.java
index f7715d2..a7f5ec1 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerControlMainDTO.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerControlMainDTO.java
@@ -4,6 +4,7 @@
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 
 /**
@@ -22,6 +23,12 @@
 	@Schema(description = "名称")
 	private String name;
 
+	@Schema(description = "上限")
+	private BigDecimal limitH;
+
+	@Schema(description = "下限")
+	private BigDecimal limitL;
+
 	@Schema(description = "备注")
 	private String remark;
 
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerGenStatusDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerGenStatusDTO.java
new file mode 100644
index 0000000..defd770
--- /dev/null
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/PowerGenStatusDTO.java
@@ -0,0 +1,38 @@
+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 PanZhibao
+ * @Description
+ * @createTime 2025年04月15日
+ */
+@Data
+public class PowerGenStatusDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "机组名称")
+    private String name;
+
+    @Schema(description = "当前有功")
+    private String curP;
+
+    @Schema(description = "当前无功")
+    private String curQ;
+
+    @Schema(description = "上限")
+    private BigDecimal limitH;
+
+    @Schema(description = "下限")
+    private BigDecimal limitL;
+
+    @Schema(description = "排序")
+    private Integer sort;
+}
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerCapacitorStatusEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerCapacitorStatusEntity.java
index a8c88f6..e0ec5be 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerCapacitorStatusEntity.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerCapacitorStatusEntity.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import java.io.Serializable;
+
 /**
  * 电力功率因数电容器投运状态
  *
@@ -12,7 +14,8 @@
  */
 @Data
 @TableName("t_power_capacitor_status")
-public class PowerCapacitorStatusEntity {
+public class PowerCapacitorStatusEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
 
     /**
      * id
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerControlDetEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerControlDetEntity.java
index 189088d..d5ef3e2 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerControlDetEntity.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerControlDetEntity.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 
 /**
@@ -14,7 +15,8 @@
  */
 @Data
 @TableName("t_power_control_det")
-public class PowerControlDetEntity {
+public class PowerControlDetEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
 
     /**
      * id
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerControlMainEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerControlMainEntity.java
index 6098147..e100404 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerControlMainEntity.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerControlMainEntity.java
@@ -4,6 +4,9 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import java.io.Serializable;
+import java.math.BigDecimal;
+
 /**
  * 电力功率因数管控功率因数主表
  *
@@ -12,21 +15,35 @@
  */
 @Data
 @TableName("t_power_control_main")
-public class PowerControlMainEntity {
+public class PowerControlMainEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
 
     /**
      * id
      */
     @TableId
     private String id;
+
     /**
      * 名称
      */
     private String name;
+
+    /**
+     * 上限
+     */
+    private BigDecimal limitH;
+
+    /**
+     * 下限
+     */
+    private BigDecimal limitL;
+
     /**
      * 备注
      */
     private String remark;
+
     /**
      * 排序
      */
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerGenStatusEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerGenStatusEntity.java
new file mode 100644
index 0000000..f131677
--- /dev/null
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerGenStatusEntity.java
@@ -0,0 +1,55 @@
+package com.iailab.module.ansteel.api.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 电力功率因数发电机组实时状态
+ *
+ * @author PanZhibao
+ * @Description
+ * @createTime 2025年04月15日
+ */
+@Data
+@TableName("t_power_gen_status")
+public class PowerGenStatusEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId
+    private String id;
+    /**
+     * 机组名称
+     */
+    private String name;
+    /**
+     * 当前有功
+     */
+    private String curP;
+    /**
+     * 当前无功
+     */
+    private String curQ;
+    /**
+     * 上限
+     */
+    private BigDecimal limitH;
+    /**
+     * 下限
+     */
+    private BigDecimal limitL;
+    /**
+     * 是否超限(0:正常,1:超限)
+     */
+    private Integer status;
+    /**
+     * 排序
+     */
+    private Integer sort;
+}
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerNetFactorEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerNetFactorEntity.java
index 1522b16..ac4a338 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerNetFactorEntity.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/entity/PowerNetFactorEntity.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 
 /**
@@ -14,7 +15,8 @@
  */
 @Data
 @TableName("t_power_net_factor")
-public class PowerNetFactorEntity {
+public class PowerNetFactorEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
 
     /**
      * id
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/PowerControlMainService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/PowerControlMainService.java
index 24d9b95..eb537fb 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/PowerControlMainService.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/PowerControlMainService.java
@@ -15,4 +15,6 @@
     PowerControlMainEntity getByName(String name);
 
     List<PowerControlMainEntity> list(Map<String, Object> params);
+
+    void update(PowerControlMainEntity entity);
 }
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/PowerGenStatusDaoService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/PowerGenStatusDaoService.java
new file mode 100644
index 0000000..e64e469
--- /dev/null
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/PowerGenStatusDaoService.java
@@ -0,0 +1,16 @@
+package com.iailab.module.ansteel.api.service;
+
+import com.iailab.module.ansteel.api.entity.PowerGenStatusEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2025年04月15日
+ */
+public interface PowerGenStatusDaoService {
+
+    List<PowerGenStatusEntity> list(Map<String, Object> params);
+}
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/PowerControlMainServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/PowerControlMainServiceImpl.java
index 61a9b08..4b5279d 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/PowerControlMainServiceImpl.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/PowerControlMainServiceImpl.java
@@ -36,4 +36,9 @@
         queryWrapper.orderByAsc("sort");
         return powerControlMainDao.selectList(queryWrapper);
     }
+
+    @Override
+    public void update(PowerControlMainEntity entity) {
+        powerControlMainDao.deleteById(entity);
+    }
 }
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/PowerGenStatusDaoServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/PowerGenStatusDaoServiceImpl.java
new file mode 100644
index 0000000..97c9d0b
--- /dev/null
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/service/impl/PowerGenStatusDaoServiceImpl.java
@@ -0,0 +1,33 @@
+package com.iailab.module.ansteel.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.module.ansteel.api.dao.PowerGenStatusDao;
+import com.iailab.module.ansteel.api.entity.PowerGenStatusEntity;
+import com.iailab.module.ansteel.api.service.PowerGenStatusDaoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2025年04月15日
+ */
+@Slf4j
+@Service
+public class PowerGenStatusDaoServiceImpl implements PowerGenStatusDaoService {
+
+    @Resource
+    private PowerGenStatusDao PowerGenStatusDao;
+
+    @Override
+    public List<PowerGenStatusEntity> list(Map<String, Object> params) {
+        QueryWrapper<PowerGenStatusEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.orderByAsc("sort");
+        return PowerGenStatusDao.selectList(queryWrapper);
+
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3