From 5c2fc8b317e17d0b194f27937bd9d2af8961502f Mon Sep 17 00:00:00 2001
From: dongyukun <1208714201@qq.com>
Date: 星期五, 24 一月 2025 15:06:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ElectricityPriceSegmentedDTO.java              |   56 +++++
 iailab-module-system/iailab-module-system-biz/src/main/resources/application-dev.yaml                                                        |   66 ------
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/entity/ElectricityPriceSegmentedEntity.java            |   60 +++++
 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-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java                                        |   17 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestPageReqVO.java                |    7 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java                 |   19 -
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java                                        |  100 ++------
 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleRecordDao.xml                                            |    2 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dto/ElectricityPriceSegmentedDTO.java                  |   56 +++++
 iailab-module-model/iailab-module-model-biz/db/mysql.sql                                                                                     |   16 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/utils/IndSqlUtils.java                         |    6 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/ElectricityPriceSegmentedServiceImpl.java |  111 ++++++++++
 iailab-module-system/iailab-module-system-biz/pom.xml                                                                                        |    6 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/ElectricityPriceSegmentedService.java          |   33 +++
 iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml                                                               |    1 
 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml                                            |    9 
 iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml                                                            |    9 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/influxdb/service/impl/InfluxDBServiceImpl.java                |   10 
 19 files changed, 417 insertions(+), 184 deletions(-)

diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/utils/IndSqlUtils.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/utils/IndSqlUtils.java
index 8be3943..64a70b6 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/utils/IndSqlUtils.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/utils/IndSqlUtils.java
@@ -262,10 +262,10 @@
             selectSql.append(result.getSelectSql());
         } else {
             selectSql.append(result.getSelectSql());
-            selectSql.append(", ");
-            selectSql.append(indItem.getTimeLabel());
-            selectSql.append(" data_time");
         }
+        selectSql.append(", ");
+        selectSql.append(indItem.getTimeLabel());
+        selectSql.append(" data_time");
         result.setSelectSql(selectSql.toString());
 
         // 拼接WHERE
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/influxdb/service/impl/InfluxDBServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/influxdb/service/impl/InfluxDBServiceImpl.java
index 9a96695..8301664 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/influxdb/service/impl/InfluxDBServiceImpl.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/influxdb/service/impl/InfluxDBServiceImpl.java
@@ -35,11 +35,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
-
-import static com.iailab.framework.common.pojo.CommonResult.success;
 
 /**
  * InfluxDB操作类
@@ -69,11 +66,6 @@
     private int rawOffset = TimeZone.getDefault().getRawOffset();
 
     private int pas_ms = 1000;
-
-    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-    @Resource
-    private InfluxDBService influxDBService;
 
     @Override
     public void syncWriteFloatValue(String pointNo, String dataValue, long time) {
@@ -384,7 +376,7 @@
                 for (FluxRecord record : records) {
                     Map<String, Object> dataIem = new HashMap<>(2);
                     dataIem.put(VALUE, record.getValueByKey("_value"));
-                    dataIem.put(TIME, sdf.format(Date.from(record.getTime())));
+                    dataIem.put(TIME, DateUtils.format(Date.from(record.getTime()), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
                     dataList.add(dataIem);
                 }
             }
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 6f6d219..d694f7a 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
@@ -107,19 +107,20 @@
     @Operation(summary = "获取最后预测值")
     Map<String, BigDecimal> getPredictLastValue(@RequestBody PredictLastValueReqVO reqVO);
 
-    @GetMapping("/predict-data/electric")
-    @Operation(summary = "电力功率因数预测结果查询")
-    Map<String,List<Object[]>> getElectricPredictData(String itemCode);
-
     @GetMapping("/schedule-data/last")
     @Operation(summary = "调度模型最新结果查询")
     List<StScheduleRecordVO> getLastScheduleData(@RequestParam("scheduleCode") String scheduleCode,@RequestParam("limit") Integer limit);
 
-    @GetMapping("/machineRealTimeStatus")
-    @Operation(summary = "发电机组实时状态查询")
-    List<Map<String, Object>> getRealTimeStatus(@RequestBody List<Map<String, Object>> machines);
-
     @PostMapping("/predict-data/itemNo")
     @Operation(summary = "查询时间范围内预测结果")
     Map<String,List<Object[]>> getPredictDataItemNo(@RequestBody PreDataItemNoReqVO reqVO);
+
+    @GetMapping(PREFIX + "/electricityPrice/list")
+    @Operation(summary = "电价时段配置列表")
+    List<ElectricityPriceSegmentedDTO> getElectricityPriceList(@RequestParam("year") String year, @RequestParam("time") String time);
+
+    @PostMapping(PREFIX + "/electricityPrice/create")
+    @Operation(summary = "添加电价时段配置列表")
+    Boolean createElectricityPrice(@RequestBody List<ElectricityPriceSegmentedDTO> list);
+
 }
\ 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..c1048ed
--- /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,56 @@
+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 String year;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+}
\ 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/StAlarmAndSuggestPageReqVO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestPageReqVO.java
index e46f344..ff5d951 100644
--- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestPageReqVO.java
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestPageReqVO.java
@@ -6,6 +6,7 @@
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author PanZhibao
@@ -19,6 +20,9 @@
     @Schema(description = "对象")
     private String obj;
 
+    @Schema(description = "类型(alarm:预警,suggest:建议)")
+    private String type;
+
     @Schema(description = "开始时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date startTime;
@@ -27,4 +31,7 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date endTime;
 
+    @Schema(description = "对象集合")
+    private List<String> objList;
+
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/db/mysql.sql b/iailab-module-model/iailab-module-model-biz/db/mysql.sql
index 6e42fba..95b2b04 100644
--- a/iailab-module-model/iailab-module-model-biz/db/mysql.sql
+++ b/iailab-module-model/iailab-module-model-biz/db/mysql.sql
@@ -880,3 +880,19 @@
 alter table t_mm_predict_alarm_config add column `cul_lower` decimal(10, 4) COMMENT '累计值下限';
 
 alter table t_st_schedule_scheme modify column  `trigger_condition` varchar(50) COMMENT '触发条件'
+
+
+CREATE TABLE `t_electricity_price_segmented` (
+                                                 `id` varchar(36) NOT NULL COMMENT 'ID',
+                                                 `i_time_id` varchar(36) DEFAULT NULL,
+                                                 `rec_id` varchar(36) DEFAULT NULL,
+                                                 `media_id` varchar(36) DEFAULT NULL COMMENT '能介编号',
+                                                 `ref_media_id` varchar(20) DEFAULT NULL,
+                                                 `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间',
+                                                 `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间',
+                                                 `year` varchar(26) DEFAULT NULL,
+                                                 `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+                                                 `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
+                                                 PRIMARY KEY (`id`) USING BTREE,
+                                                 INDEX `ind_i_time_id`(`i_time_id` ASC) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='电价时段配置数据';
\ 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 faa7294..02601f8 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;
 
@@ -667,43 +671,6 @@
     }
 
     @Override
-    public Map<String,List<Object[]>> getElectricPredictData(String itemCode) {
-        ItemVO predictItem = mmPredictItemService.getItemByItemNo(itemCode);
-        if (null == predictItem) {
-            return new HashMap<>();
-        }
-        List<Integer> resultIndexs = new ArrayList<>();
-        resultIndexs.add(0);
-        resultIndexs.add(1);
-        resultIndexs.add(2);
-        List<MmItemOutputEntity> outPuts = mmItemOutputService.getByItemid(predictItem.getId(),"predictValues",resultIndexs);
-        if (CollectionUtils.isEmpty(outPuts)) {
-            return new HashMap<>();
-        }
-        InfluxModelResultByOutPutIdsPOJO pojo = new InfluxModelResultByOutPutIdsPOJO();
-        pojo.setOutPutIds(outPuts.stream().map(MmItemOutputEntity::getId).collect(Collectors.toList()));
-        pojo.setType(DataTypeEnum.FLOAT.getCode());
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(predictItem.getLastTime());
-        calendar.add(Calendar.DAY_OF_YEAR, 7);
-        Map<String, List<InfluxModelResultVO>> outPutDatas = influxDBService.queryModelResultsByOutPutIds(pojo, predictItem.getLastTime(), calendar.getTime());
-        Map<String,List<Object[]>> result = new HashMap<>(outPuts.size());
-        for (MmItemOutputEntity outPut : outPuts) {
-            String outPutId = outPut.getId();
-            if (outPutDatas.containsKey(outPutId)) {
-                List<InfluxModelResultVO> influxModelResultVOS = outPutDatas.get(outPutId);
-                result.put(null == outPut.getResultIndex() ? outPut.getResultstr() : outPut.getResultstr()+"_"+outPut.getResultIndex(),influxModelResultVOS.stream().map(e -> {
-                    Object[] values = new Object[2];
-                    values[0] = DateUtils.format(Date.from(e.getTimestamp()), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
-                    values[1] = Double.valueOf(e.getValue().toString());
-                    return values;
-                }).collect(Collectors.toList()));
-            }
-        }
-        return result;
-    }
-
-    @Override
     public List<StScheduleRecordVO> getLastScheduleData(String scheduleCode, Integer limit) {
         if (StringUtils.isBlank(scheduleCode)) {
             return null;
@@ -712,46 +679,27 @@
     }
 
     @Override
-    public List<Map<String, Object>> getRealTimeStatus(List<Map<String, Object>> machines) {
-        List<String> pointNos = new ArrayList<>(16);
-        for (Map<String, Object> machine : machines) {
-            List<String> list = (List<String>) machine.get("pointNos");
-            pointNos.addAll(list);
-        }
-        Map<String, Object> pointValues = dataPointApi.queryPointsRealValue(pointNos);
-        List<Map<String, Object>> results = new ArrayList<>();
-        for (Map<String, Object> machine : machines) {
-            List<String> pointNoList = (List<String>) machine.get("pointNos");
-            if (!pointValues.containsKey(pointNoList.get(0)) || !pointValues.containsKey(pointNoList.get(1))) {
-                machine.put("status",false);
-                machine.put("num",0);
-                results.add(machine);
-                continue;
-            }
-            Double PValue = Double.valueOf(pointValues.get(pointNoList.get(0)).toString());
-            Double QValue = Double.valueOf(pointValues.get(pointNoList.get(1)).toString());
-            Double cos = calculateCos(PValue, QValue);
-            if (cos.equals(0.0)) {
-                machine.put("status",false);
-                machine.put("num",0);
-            }else {
-                machine.put("status",true);
-                machine.put("num",cos);
-            }
-            results.add(machine);
-        }
-        return results;
-    }
-
-    @Override
     public Map<String, List<Object[]>> getPredictDataItemNo(PreDataItemNoReqVO reqVO) {
-        if (StringUtils.isBlank(reqVO.getItemNo()) || null == reqVO.getStartTime() || null == reqVO.getEndTime()) {
+        if (StringUtils.isBlank(reqVO.getItemNo())) {
             return new HashMap<>();
         }
         ItemVO predictItem = mmPredictItemService.getItemByItemNo(reqVO.getItemNo());
         if (null == predictItem) {
             return new HashMap<>();
         }
+
+        // 默认开始时间:运行时间
+        if (null == reqVO.getStartTime()) {
+            reqVO.setStartTime(predictItem.getLastTime());
+        }
+        // 默认结束时间:运行时间+预测长度*粒度
+        if (null == reqVO.getEndTime()) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(predictItem.getLastTime());
+            calendar.add(Calendar.SECOND,predictItem.getPredictLength() * predictItem.getGranularity());
+            reqVO.setEndTime(calendar.getTime());
+        }
+
         List<String> itemNos = new ArrayList<String>(){{
            add(reqVO.getItemNo());
         }};
@@ -784,6 +732,18 @@
         return result;
     }
 
+    @Override
+    public List<ElectricityPriceSegmentedDTO> getElectricityPriceList(String year, String time) {
+        return electricityPriceSegmentedService.getElectricityPriceList(year, time);
+    }
+
+    @Override
+    public Boolean createElectricityPrice(List<ElectricityPriceSegmentedDTO> list) {
+        electricityPriceSegmentedService.deleteByITimeId(list.get(0).getITimeId());
+        list.forEach(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 6d57df8..b8be6bc 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
@@ -179,12 +179,6 @@
         return CommonResult.success(data);
     }
 
-    @GetMapping("/predict-data/electric")
-    @Operation(summary = "电力功率因数预测结果查询")
-    public CommonResult<Map<String,List<Object[]>>> getElectricPredictData(@RequestParam String itemCode) {
-        Map<String,List<Object[]>> data = mcsApi.getElectricPredictData(itemCode);
-        return CommonResult.success(data);
-    }
     @GetMapping("/schedule-data/last")
     @Operation(summary = "调度模型最新结果查询")
     public CommonResult<List<StScheduleRecordVO>> getLastScheduleData(@RequestParam String scheduleCode, @RequestParam Integer limit) {
@@ -216,15 +210,16 @@
         return CommonResult.success(result);
     }
 
-    @PostMapping("/machineRealTimeStatus")
-    @Operation(summary = "发电机组实时状态查询")
-    CommonResult<List<Map<String, Object>>> getRealTimeStatus(@RequestBody List<Map<String, Object>> machines) {
-        return CommonResult.success(mcsApi.getRealTimeStatus(machines));
-    }
-
     @PostMapping("/predict-data/itemNo")
     @Operation(summary = "查询时间范围内预测结果")
     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(@RequestParam("year") String year, @RequestParam("time") String time) {
+        List<ElectricityPriceSegmentedDTO> electricityPriceSegmentedList = mcsApi.getElectricityPriceList(year, time);
+        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..db4718a
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dto/ElectricityPriceSegmentedDTO.java
@@ -0,0 +1,56 @@
+package com.iailab.module.model.mpk.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 String year;
+
+    /**
+     * 创建时间
+     */
+    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..3474804
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/entity/ElectricityPriceSegmentedEntity.java
@@ -0,0 +1,60 @@
+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 String year;
+
+    /**
+     * 开始时间
+     */
+    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..82591e1
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/ElectricityPriceSegmentedService.java
@@ -0,0 +1,33 @@
+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);
+
+    void deleteByITimeId(String iTimeId);
+
+    List<ElectricityPriceSegmentedDTO> getElectricityPriceList(String year, String time);
+
+    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..86981ea
--- /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,111 @@
+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) {
+        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 void deleteByITimeId(String iTimeId) {
+        QueryWrapper<ElectricityPriceSegmentedEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(iTimeId), "i_time_id", iTimeId);
+        baseDao.delete(wrapper);
+    }
+
+    @Override
+    public List<ElectricityPriceSegmentedDTO> getElectricityPriceList(String year, String time) {
+        List<ElectricityPriceSegmentedDTO> result = new ArrayList<>();
+        QueryWrapper<ElectricityPriceSegmentedEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(year), "year", year)
+                .orderByDesc( "create_time");
+        List<ElectricityPriceSegmentedEntity> list = baseDao.selectList(wrapper);
+        if(CollectionUtils.isNotEmpty(list)){
+            String itimeId = list.get(0).getITimeId();
+            QueryWrapper<ElectricityPriceSegmentedEntity> wrapper1 = new QueryWrapper<>();
+            wrapper1.eq(StringUtils.isNotBlank(itimeId), "i_time_id", itimeId)
+                    .apply(StringUtils.isNotBlank(time),"TIME(start_time) <= TIME({0})", time)
+                    .apply(StringUtils.isNotBlank(time),"TIME(end_time) > TIME({0})", time)
+                    .orderByDesc( "create_time");
+            result = ConvertUtils.sourceToTarget(baseDao.selectList(wrapper1), ElectricityPriceSegmentedDTO.class);
+        }
+        return result;
+    }
+
+    @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
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleRecordDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleRecordDao.xml
index 406a330..3e75434 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleRecordDao.xml
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleRecordDao.xml
@@ -4,7 +4,7 @@
     <select id="getLastScheduleResult" resultType="com.iailab.module.model.api.mdk.dto.StScheduleRecordVO">
         SELECT t2.* FROM t_st_schedule_scheme t1 LEFT JOIN t_st_schedule_record t2 on t1.id = t2.scheme_id
         WHERE t1.`code` = #{scheduleCode} AND result_code = "100"
-        ORDER BY t2.schedule_time desc
+        ORDER BY t2.schedule_time desc,create_time desc
         LIMIT #{limit}
     </select>
 </mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml
index 87a3fdd..eea763b 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml
@@ -20,12 +20,21 @@
             <if test="params.obj != null and params.obj != ''">
                 and t.obj = #{params.obj}
             </if>
+            <if test="params.type != null and params.type != ''">
+                and t.type = #{params.type}
+            </if>
             <if test="params.startTime != null">
                 and t.time &gt;= #{params.startTime}
             </if>
             <if test="params.endTime != null">
                 and t.time &lt;= #{params.endTime}
             </if>
+            <if test="params.objList != null">
+                and t.obj in
+                <foreach collection="params.objList" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
         </where>
         order by t.time desc
 
diff --git a/iailab-module-system/iailab-module-system-biz/pom.xml b/iailab-module-system/iailab-module-system-biz/pom.xml
index 54eec59..70eed45 100644
--- a/iailab-module-system/iailab-module-system-biz/pom.xml
+++ b/iailab-module-system/iailab-module-system-biz/pom.xml
@@ -90,12 +90,6 @@
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
 
-        <!-- Job 定时任务相关 -->
-        <dependency>
-            <groupId>com.iailab</groupId>
-            <artifactId>iailab-common-job</artifactId>
-        </dependency>
-
         <!-- 消息队列相关 -->
         <dependency>
             <groupId>com.iailab</groupId>
diff --git a/iailab-module-system/iailab-module-system-biz/src/main/resources/application-dev.yaml b/iailab-module-system/iailab-module-system-biz/src/main/resources/application-dev.yaml
index 733004c..4188c19 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/resources/application-dev.yaml
+++ b/iailab-module-system/iailab-module-system-biz/src/main/resources/application-dev.yaml
@@ -72,12 +72,6 @@
   kafka:
     bootstrap-servers: 127.0.0.1:9092 # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔
 
---- #################### 定时任务相关配置 ####################
-xxl:
-  job:
-    admin:
-      addresses: http://172.16.8.100:9090/xxl-job-admin # 调度中心部署跟地址
-
 --- #################### 服务保障相关配置 ####################
 
 # Lock4j 配置项
@@ -94,39 +88,6 @@
       base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
       exposure:
         include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
-
-# Spring Boot Admin 配置项
-spring:
-  boot:
-    admin:
-      # Spring Boot Admin Client 客户端的相关配置
-      client:
-        instance:
-          service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
-      # Spring Boot Admin Server 服务端的相关配置
-      context-path: /admin # 配置 Spring
-
---- #################### 微信公众号、小程序相关配置 ####################
-wx:
-  mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
-    #    app-id: wx041349c6f39b268b
-    #    secret: 5abee519483bc9f8cb37ce280e814bd0
-    app-id: wx5b23ba7a5589ecbb # 测试号
-    secret: 2a7b3b20c537e52e74afd395eb85f61f
-    # 存储配置,解决 AccessToken 的跨节点的共享
-    config-storage:
-      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
-      key-prefix: wx # Redis Key 的前缀
-      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
-  miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
-    #    appid: wx62056c0d5e8db250
-    #    secret: 333ae72f41552af1e998fe1f54e1584a
-    appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
-    secret: 6f270509224a7ae1296bbf1c8cb97aed
-    config-storage:
-      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
-      key-prefix: wa # Redis Key 的前缀
-      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
 
 --- #################### 平台相关配置 ####################
 
@@ -146,30 +107,3 @@
   demo: false # 开启演示模式
   captcha:
     enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试
-
-justauth:
-  enabled: true
-  type:
-    DINGTALK: # 钉钉
-      client-id: dingvrnreaje3yqvzhxg
-      client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
-      ignore-check-redirect-uri: true
-    WECHAT_ENTERPRISE: # 企业微信
-      client-id: wwd411c69a39ad2e54
-      client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
-      agent-id: 1000004
-      ignore-check-redirect-uri: true
-    # noinspection SpringBootApplicationYaml
-    WECHAT_MINI_APP: # 微信小程序
-      client-id: ${wx.miniapp.appid}
-      client-secret: ${wx.miniapp.secret}
-      ignore-check-redirect-uri: true
-      ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验
-    WECHAT_MP: # 微信公众号
-      client-id: ${wx.mp.app-id}
-      client-secret: ${wx.mp.secret}
-      ignore-check-redirect-uri: true
-  cache:
-    type: REDIS
-    prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
-    timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
diff --git a/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml b/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml
index c7218fe..c2167c8 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml
+++ b/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml
@@ -136,15 +136,6 @@
     listener:
       missing-topics-fatal: false # 消费监听接口监听的主题不存在时,默认会报错。所以通过设置为 false ,解决报错
 
---- #################### 定时任务相关配置 ####################
-
-xxl:
-  job:
-    executor:
-      appname: ${spring.application.name} # 执行器 AppName
-      logpath: @log.path@/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径
-    accessToken: default_token # 执行器通讯TOKEN
-
 --- #################### 验证码相关配置 ####################
 
 aj:

--
Gitblit v1.9.3