From af72d8716cf20bfcb3fdf2cc67b5ee8c58966780 Mon Sep 17 00:00:00 2001
From: Jay <csj123456>
Date: 星期三, 22 一月 2025 15:10:35 +0800
Subject: [PATCH] 新增电价时段表接口

---
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ElectricityPriceSegmentedDTO.java              |   51 ++++++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/ElectricityPriceSegmentedServiceImpl.java |   93 +++++++++++++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/ElectricityPriceSegmentedService.java          |   31 +++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/entity/ElectricityPriceSegmentedEntity.java            |   55 +++++++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dao/ElectricityPriceSegmentedDao.java                  |   17 ++
 iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml                                                               |    1 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java                                        |    9 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java                 |    7 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java                                        |   15 ++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dto/ElectricityPriceSegmentedDTO.java                  |   61 ++++++++++
 10 files changed, 340 insertions(+), 0 deletions(-)

diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
index a56f5d5..fe87a4f 100644
--- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
@@ -114,4 +114,13 @@
     @PostMapping("/predict-data/itemNo")
     @Operation(summary = "查询时间范围内预测结果")
     Map<String,List<Object[]>> getPredictDataItemNo(@RequestBody PreDataItemNoReqVO reqVO);
+
+    @GetMapping(PREFIX + "/electricityPrice/list")
+    @Operation(summary = "电价时段配置列表")
+    List<ElectricityPriceSegmentedDTO> getElectricityPriceList();
+
+    @PostMapping(PREFIX + "/electricityPrice/create")
+    @Operation(summary = "添加电价时段配置列表")
+    Boolean createElectricityPrice(@RequestBody ElectricityPriceSegmentedDTO dto);
+
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ElectricityPriceSegmentedDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ElectricityPriceSegmentedDTO.java
new file mode 100644
index 0000000..ae87840
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ElectricityPriceSegmentedDTO.java
@@ -0,0 +1,51 @@
+package com.iailab.module.model.api.mcs.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author Jay
+ * @description: 电价分段数据
+ **/
+@Data
+public class ElectricityPriceSegmentedDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private String id;
+
+    private String iTimeId;
+
+    private String recId;
+
+    /**
+     * 能介编号
+     */
+    private String mediaId;
+
+    private String refMediaId;
+
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
index 6f9fc91..3bf35a3 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
@@ -34,6 +34,7 @@
 import com.iailab.module.model.mdk.vo.ItemVO;
 import com.iailab.module.model.mpk.service.ChartParamService;
 import com.iailab.module.model.mpk.service.ChartService;
+import com.iailab.module.model.mpk.service.ElectricityPriceSegmentedService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -102,6 +103,9 @@
 
     @Autowired
     private InfluxDBService influxDBService;
+
+    @Autowired
+    private ElectricityPriceSegmentedService electricityPriceSegmentedService;
 
     private int HOUR_MINS = 60;
 
@@ -728,6 +732,17 @@
         return result;
     }
 
+    @Override
+    public List<ElectricityPriceSegmentedDTO> getElectricityPriceList() {
+        return electricityPriceSegmentedService.getElectricityPriceList();
+    }
+
+    @Override
+    public Boolean createElectricityPrice(ElectricityPriceSegmentedDTO dto) {
+        electricityPriceSegmentedService.create(dto);
+        return true;
+    }
+
     /**
      * 计算功率因数 p²/(根号:p²+Q²)
      **/
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java
index a4c747b..d89675e 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java
@@ -215,4 +215,11 @@
     CommonResult<Map<String,List<Object[]>>> getPredictDataItemNo(@RequestBody PreDataItemNoReqVO reqVO) {
         return CommonResult.success(mcsApi.getPredictDataItemNo(reqVO));
     }
+
+    @GetMapping("/electricityPrice/list")
+    @Operation(summary = "电价表")
+    public CommonResult<List<ElectricityPriceSegmentedDTO>> getElectricityPriceList() {
+        List<ElectricityPriceSegmentedDTO> electricityPriceSegmentedList = mcsApi.getElectricityPriceList();
+        return CommonResult.success(electricityPriceSegmentedList);
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dao/ElectricityPriceSegmentedDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dao/ElectricityPriceSegmentedDao.java
new file mode 100644
index 0000000..6b579a9
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dao/ElectricityPriceSegmentedDao.java
@@ -0,0 +1,17 @@
+package com.iailab.module.model.mpk.dao;
+
+import com.iailab.framework.common.dao.BaseDao;
+import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
+import com.iailab.module.model.mpk.entity.ElectricityPriceSegmentedEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @description:
+ * @author: dzd
+ * @date: 2024/11/5 11:19
+ **/
+@TenantDS
+@Mapper
+public interface ElectricityPriceSegmentedDao extends BaseDao<ElectricityPriceSegmentedEntity> {
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dto/ElectricityPriceSegmentedDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dto/ElectricityPriceSegmentedDTO.java
new file mode 100644
index 0000000..da6f951
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dto/ElectricityPriceSegmentedDTO.java
@@ -0,0 +1,61 @@
+package com.iailab.module.model.mpk.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.sql.Time;
+import java.util.Date;
+
+/**
+ * @author Jay
+ * @description: 电价分段数据
+ **/
+@Data
+public class ElectricityPriceSegmentedDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private String id;
+
+    /**
+     * 能介名称
+     */
+    private String nengjieName;
+
+    /**
+     * 参考总量能介
+     */
+    private String cankaozongliangnengjie;
+
+    /**
+     * 价格
+     */
+    private String price;
+
+    /**
+     * 价格
+     */
+    private String month;
+
+    /**
+     * 开始时间
+     */
+    private Time timeStart;
+
+    /**
+     * 结束时间
+     */
+    private Time timeEnd;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/entity/ElectricityPriceSegmentedEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/entity/ElectricityPriceSegmentedEntity.java
new file mode 100644
index 0000000..d3836ef
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/entity/ElectricityPriceSegmentedEntity.java
@@ -0,0 +1,55 @@
+package com.iailab.module.model.mpk.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author Jay
+ * @description: 电价分段数据
+ **/
+@Data
+@TableName("t_electricity_price_segmented")
+public class ElectricityPriceSegmentedEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId
+    private String id;
+
+    private String iTimeId;
+
+    private String recId;
+
+    /**
+     * 能介编号
+     */
+    private String mediaId;
+
+    private String refMediaId;
+
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/ElectricityPriceSegmentedService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/ElectricityPriceSegmentedService.java
new file mode 100644
index 0000000..2a72085
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/ElectricityPriceSegmentedService.java
@@ -0,0 +1,31 @@
+package com.iailab.module.model.mpk.service;
+
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.module.model.api.mcs.dto.ElectricityPriceSegmentedDTO;
+import com.iailab.module.model.mpk.entity.ElectricityPriceSegmentedEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @description:
+ * @author: dzd
+ * @date: 2024/11/5 11:20
+ **/
+public interface ElectricityPriceSegmentedService {
+
+    PageData<ElectricityPriceSegmentedDTO> page(Map<String, Object> params);
+
+    void create(ElectricityPriceSegmentedDTO entity);
+
+    void update(ElectricityPriceSegmentedEntity entity);
+
+    ElectricityPriceSegmentedEntity get(String id);
+
+    void delete(String id);
+
+    List<ElectricityPriceSegmentedDTO> getElectricityPriceList();
+
+    List<ElectricityPriceSegmentedDTO> getElectricityPriceListByTime(ElectricityPriceSegmentedDTO dto);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/ElectricityPriceSegmentedServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/ElectricityPriceSegmentedServiceImpl.java
new file mode 100644
index 0000000..8fafe8c
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/ElectricityPriceSegmentedServiceImpl.java
@@ -0,0 +1,93 @@
+package com.iailab.module.model.mpk.service.impl;
+
+import com.alibaba.nacos.common.utils.CollectionUtils;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.framework.common.util.date.DateUtils;
+import com.iailab.framework.common.util.object.ConvertUtils;
+import com.iailab.module.model.api.mcs.dto.ElectricityPriceSegmentedDTO;
+import com.iailab.module.model.mpk.dao.ElectricityPriceSegmentedDao;
+import com.iailab.module.model.mpk.entity.ElectricityPriceSegmentedEntity;
+import com.iailab.module.model.mpk.service.ElectricityPriceSegmentedService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * @description:
+ * @author: dzd 
+ * @date: 2024/11/5 11:21
+ **/
+@Slf4j
+@Service
+public class ElectricityPriceSegmentedServiceImpl extends BaseServiceImpl<ElectricityPriceSegmentedDao, ElectricityPriceSegmentedEntity> implements ElectricityPriceSegmentedService {
+
+    @Override
+    public PageData<ElectricityPriceSegmentedDTO> page(Map<String, Object> params) {
+        IPage<ElectricityPriceSegmentedEntity> page = baseDao.selectPage(
+                getPage(params, "create_time", false),
+                getWrapper(params)
+        );
+
+        return getPageData(page, ElectricityPriceSegmentedDTO.class);
+    }
+
+    @Override
+    public void create(ElectricityPriceSegmentedDTO dto) {
+        List<ElectricityPriceSegmentedDTO> list =  getElectricityPriceListByTime(dto);
+        if (CollectionUtils.isEmpty(list)){
+            ElectricityPriceSegmentedEntity entity = ConvertUtils.sourceToTarget(dto, ElectricityPriceSegmentedEntity.class);
+            entity.setId(UUID.randomUUID().toString());
+            entity.setCreateTime(new Date());
+            baseDao.insert(entity);
+        }
+    }
+
+    @Override
+    public void update(ElectricityPriceSegmentedEntity dto) {
+        ElectricityPriceSegmentedEntity entity = ConvertUtils.sourceToTarget(dto, ElectricityPriceSegmentedEntity.class);
+        entity.setUpdateTime(new Date());
+        baseDao.updateById(entity);
+    }
+
+    @Override
+    public ElectricityPriceSegmentedEntity get(String id) {
+        return baseDao.selectById(id);
+    }
+
+
+    @Override
+    public void delete(String id) {
+        baseDao.deleteById(id);
+    }
+
+    @Override
+    public List<ElectricityPriceSegmentedDTO> getElectricityPriceList() {
+        return ConvertUtils.sourceToTarget(baseDao.selectList(new QueryWrapper<>()), ElectricityPriceSegmentedDTO.class);
+    }
+
+    @Override
+    public List<ElectricityPriceSegmentedDTO> getElectricityPriceListByTime(ElectricityPriceSegmentedDTO dto) {
+        String startTime = DateUtils.format(dto.getStartTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
+        String endTime = DateUtils.format(dto.getEndTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
+        Map<String, Object> params = new HashMap<>();
+        params.put("startTime", startTime);
+        params.put("endTime", endTime);
+        List<ElectricityPriceSegmentedEntity> list = baseDao.selectList(getWrapper(params));
+        return ConvertUtils.sourceToTarget(list, ElectricityPriceSegmentedDTO.class);
+    }
+
+    private QueryWrapper<ElectricityPriceSegmentedEntity> getWrapper(Map<String, Object> params) {
+        String startTime = (String) params.get("startTime");
+        String endTime = (String) params.get("endTime");
+
+        QueryWrapper<ElectricityPriceSegmentedEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(startTime), "start_time", startTime)
+                .eq(StringUtils.isNotBlank(endTime), "end_time", endTime);
+        return wrapper;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml b/iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml
index 112a71e..2a3c4ed 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml
@@ -219,6 +219,7 @@
       - t_chart
       - t_mpk_pack
       - t_mm_item_status
+      - t_electricity_price_segmented
   app:
     app-key: model
     app-secret: 85b0df7edc3df3611913df34ed695011

--
Gitblit v1.9.3