From 5022599fc428bf5603acc15dbe93e3729aa7c1dc Mon Sep 17 00:00:00 2001
From: dengzedong <dengzedong@email>
Date: 星期四, 28 十一月 2024 11:09:30 +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/PreDataJsonReqVO.java                            |   26 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRateRespVO.java                     |   57 +++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmMessageServiceImpl.java   |   12 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemAccuracyRateDao.java                       |    9 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java                                          |   21 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java      |   46 ++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmPredictAlarmConfigController.java |    6 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSuggestEntity.java                 |    2 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisSaveReqVO.java                   |   32 +
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmConfigReqDTO.java                           |   27 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictAlarmConfigRespVO.java                   |    4 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemAccuracyHisServiceImpl.java       |   43 ++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRatePageReqVO.java                  |   22 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestPageReqVO.java                  |   25 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmItemAccuracyRateController.java   |   74 +++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmConfigService.java             |   10 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestRespVO.java                     |   83 ++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemAccuracyRateServiceImpl.java      |   44 ++
 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemOutputDao.xml                                                  |    8 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemAccuracyRateService.java               |   17 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSuggestDao.java                       |   10 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java                     |    1 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemAccuracyHisService.java                |   15 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmMessageService.java            |    2 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisPageReqVO.java                   |   27 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestSaveReqVO.java                  |   88 ++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/controller/admin/McsApiController.java                   |   24 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java                                          |   58 ++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java               |   17 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisRespVO.java                      |   33 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/video/hikvision/utils/MessageCode.java                          |    4 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRateSaveReqVO.java                  |   56 ++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmConfigServiceImpl.java    |   26 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictAlarmConfigDao.java                     |   13 
 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/MmPredictAlarmConfigDao.xml                                          |   19 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmItemAccuracyHisController.java    |   74 +++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemAccuracyHisDao.java                        |   14 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmConfigRespDTO.java                          |   72 +++
 39 files changed, 1,093 insertions(+), 29 deletions(-)

diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java
index 3913af3..339c042 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/controller/admin/ApiDataController.java
@@ -38,7 +38,6 @@
 import javax.annotation.security.PermitAll;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/video/hikvision/utils/MessageCode.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/video/hikvision/utils/MessageCode.java
index 546062b..2a544a1 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/video/hikvision/utils/MessageCode.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/video/hikvision/utils/MessageCode.java
@@ -9,8 +9,8 @@
 	public static final  String JsonSavePath = "D:/hk-project/json";//海康威视抓取图片上传路径
 //	public static final  String JsonSavePath = "D:/DLUT/json";//海康威视抓取图片上传路径
 	
-//	public static final String HIK_WIN_PATH = "hikvision/win64/HCNetSDK.dll";
-	public static final String HIK_WIN_PATH = "D:\\DLUT\\lib\\HCNetSDK.dll";
+	public static final String HIK_WIN_PATH = "hikvision/win64/HCNetSDK.dll";
+//	public static final String HIK_WIN_PATH = "D:\\DLUT\\lib\\HCNetSDK.dll";
 
 	public static final String ModelCode = "Image_feature";//模型代码
 
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 ee39d33..039e10b 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
@@ -40,6 +40,10 @@
     @Operation(summary = "预测数据图表")
     PreDataSingleChartRespVO getPreDataSingleChart(@RequestBody PreDataSingleChartReqVO reqVO);
 
+    @PostMapping(PREFIX + "/predict-data/cur")
+    @Operation(summary = "获取当前预测数据")
+    Map<String, List<Object[]>> getPreDataCur(PreDataJsonReqVO reqVO);
+
     @PostMapping(PREFIX + "/plan-data/single-chart")
     @Operation(summary = "计划数据图表")
     PlanDataSingleChartRespVO getPlanDataSingleChart(@RequestBody PreDataSingleChartReqVO reqVO);
@@ -50,7 +54,15 @@
 
     @GetMapping(PREFIX + "/alarm-message/list")
     @Operation(summary = "获取预警信息列表")
-    List<AlarmMessageRespDTO> listAlarmMessage(@RequestParam Map<String, Object> params);
+    List<AlarmMessageRespDTO> listAlarmMessage(@RequestParam("params") Map<String, Object> params);
+
+    @GetMapping(PREFIX + "/alarm-config/list")
+    @Operation(summary = "获取预警配置列表")
+    List<AlarmConfigRespDTO> listAlarmConfig(@RequestParam("params") Map<String, Object> params);
+
+    @GetMapping(PREFIX + "/alarm-message/last-one")
+    @Operation(summary = "获取最新预警信息")
+    AlarmMessageRespDTO getLastAlarmMessage(@RequestParam("alarmObj") String alarmObj);
 
     @PostMapping(PREFIX + "/schedule-suggest/create")
     @Operation(summary = "添加调度建议")
@@ -58,12 +70,17 @@
 
     @GetMapping(PREFIX + "/schedule-suggest/list")
     @Operation(summary = "获取调度建议列表")
-    List<ScheduleSuggestRespDTO> listScheduleSuggest(@RequestParam ScheduleSuggestReqDTO params);
+    List<ScheduleSuggestRespDTO> listScheduleSuggest(@RequestParam("params") ScheduleSuggestReqDTO params);
 
     @PostMapping(PREFIX + "/predict-model-setting/modify")
     @Operation(summary = "修改预测模型设置参数")
     Boolean modifyPredictModelSetting(@RequestBody List<PredictModelSettingReqDTO> dtos);
 
+    @GetMapping(PREFIX + "/schedule-suggest/last-limit")
+    @Operation(summary = "获取调度建议列表")
+    List<ScheduleSuggestRespDTO> getLastLimitScheduleSuggest(@RequestParam("scheduleObj") String scheduleObj, @RequestParam("limit") Integer limit);
+
+
     @PostMapping(PREFIX + "/schedule-model-setting/modify")
     @Operation(summary = "修改调度模型设置参数")
     Boolean modifyScheduleModelSetting(@RequestBody List<ScheduleModelSettingReqDTO> dtos);
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmConfigReqDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmConfigReqDTO.java
new file mode 100644
index 0000000..657f56f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmConfigReqDTO.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.api.mcs.dto;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月20日
+ */
+@Schema(description = "模型平台 - Request VO")
+@Data
+public class AlarmConfigReqDTO  implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "消息标题")
+    private String title;
+
+    @Schema(description = "监控对象")
+    private String alarmObj;
+}
\ 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/AlarmConfigRespDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmConfigRespDTO.java
new file mode 100644
index 0000000..8e3b6d1
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmConfigRespDTO.java
@@ -0,0 +1,72 @@
+package com.iailab.module.model.api.mcs.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月20日
+ */
+@Schema(description = "模型服务 - 预警配置 Response VO")
+@Data
+public class AlarmConfigRespDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "ID")
+    private String id;
+
+    @Schema(description = "消息标题")
+    private String title;
+
+    @Schema(description = "监控对象")
+    private String alarmObj;
+
+    @Schema(description = "预测项ID")
+    private String itemId;
+
+    private String itemName;
+
+    @Schema(description = "输出ID")
+    private String outId;
+    
+    private String outName;
+
+    @Schema(description = "比较长度")
+    private Integer compLength;
+
+    @Schema(description = "上限")
+    private BigDecimal upperLimit;
+
+    @Schema(description = "下限")
+    private BigDecimal lowerLimit;
+
+    @Schema(description = "单位")
+    private String unit;
+
+    @Schema(description = "转换系数")
+    private BigDecimal coefficient;
+
+    @Schema(description = "调度方案")
+    private String scheduleId;
+
+    @Schema(description = "是否启用(0禁用 1启用)")
+    private Integer isEnable;
+
+    @Schema(description = "创建者")
+    private String creator;
+
+    @Schema(description = "创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新者")
+    private String updater;
+
+    @Schema(description = "更新时间")
+    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/PreDataJsonReqVO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataJsonReqVO.java
new file mode 100644
index 0000000..656b692
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataJsonReqVO.java
@@ -0,0 +1,26 @@
+package com.iailab.module.model.api.mcs.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月27日
+ */
+@Data
+public class PreDataJsonReqVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "预测时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date predictTime;
+
+    @Schema(description = "预测输出ID")
+    private List<String> outputIdList;
+}
\ 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 3aa0c92..3242912 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
@@ -15,7 +15,11 @@
 import com.iailab.module.model.common.enums.PreLineTypeEnum;
 import com.iailab.module.model.mcs.pre.entity.DmModuleEntity;
 import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
+import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmMessageEntity;
 import com.iailab.module.model.mcs.pre.service.*;
+import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmMessageSaveReqVO;
+import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleSuggestService;
 import com.iailab.module.model.mdk.vo.ItemVO;
 import com.iailab.module.model.mpk.service.ChartService;
 import lombok.extern.slf4j.Slf4j;
@@ -64,7 +68,17 @@
     private ChartService chartService;
 
     @Autowired
+    private MmPredictAlarmMessageService mmPredictAlarmMessageService;
+
+    @Autowired
+    private StScheduleSuggestService stScheduleSuggestService;
+
+    @Autowired
     private PlanItemApi planItemApi;
+
+    @Autowired
+    private MmPredictAlarmConfigService mmPredictAlarmConfigService;
+
 
     private int HOUR_MINS = 60;
 
@@ -346,6 +360,18 @@
     }
 
     @Override
+    public Map<String, List<Object[]>> getPreDataCur(PreDataJsonReqVO reqVO) {
+        Map<String, List<Object[]>> result = new HashMap<>();
+        if (reqVO == null || reqVO.getPredictTime() == null || CollectionUtils.isEmpty(reqVO.getOutputIdList())) {
+            return result;
+        }
+        reqVO.getOutputIdList().forEach(outPutId -> {
+            result.put(outPutId, mmItemResultJsonService.getData(outPutId, reqVO.getPredictTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
+        });
+        return result;
+    }
+
+    @Override
     public PlanDataSingleChartRespVO getPlanDataSingleChart(PreDataSingleChartReqVO reqVO) {
         PlanDataSingleChartRespVO result = new PlanDataSingleChartRespVO();
         Map<String, String> chartParams = chartService.getByChartCode(reqVO.getChartCode());
@@ -452,14 +478,36 @@
         return result;
     }
 
+    /**
+     * 新增预警信息
+     *
+     * @param dto
+     * @return
+     */
     @Override
     public Boolean createAlarmMessage(AlarmMessageRespDTO dto) {
-        return true;
+        try {
+            mmPredictAlarmMessageService.create(ConvertUtils.sourceToTarget(dto, MmPredictAlarmMessageSaveReqVO.class));
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
     }
 
     @Override
     public List<AlarmMessageRespDTO> listAlarmMessage(Map<String, Object> params) {
         return null;
+    }
+
+    @Override
+    public List<AlarmConfigRespDTO> listAlarmConfig(Map<String, Object> params) {
+        return mmPredictAlarmConfigService.list(params);
+    }
+
+    @Override
+    public AlarmMessageRespDTO getLastAlarmMessage(String alarmObj) {
+        MmPredictAlarmMessageEntity entity = mmPredictAlarmMessageService.getLast(alarmObj);
+        return ConvertUtils.sourceToTarget(entity, AlarmMessageRespDTO.class);
     }
 
     @Override
@@ -469,7 +517,13 @@
 
     @Override
     public List<ScheduleSuggestRespDTO> listScheduleSuggest(ScheduleSuggestReqDTO params) {
-        return null;
+        return Collections.emptyList();
+    }
+
+    @Override
+    public List<ScheduleSuggestRespDTO> getLastLimitScheduleSuggest(String scheduleObj, Integer limit) {
+        List<StScheduleSuggestEntity> list = stScheduleSuggestService.getList(scheduleObj, limit);
+        return ConvertUtils.sourceToTarget(list, ScheduleSuggestRespDTO.class);
     }
 
     @Override
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 a0421b1..41b12ec 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
@@ -19,6 +19,7 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
+
 import static com.iailab.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 
 /**
@@ -90,7 +91,6 @@
 
     @GetMapping("/predict-data/exportValue")
     @Operation(summary = "导出预测数据")
-    @ApiAccessLog(operateType = EXPORT)
     public void exportPointValue(@RequestParam("itemId") String itemId,
                                  @RequestParam("startTime") String startTime,
                                  @RequestParam("endTime") String endTime,
@@ -100,13 +100,13 @@
         reqVO.setItemId(itemId);
         try {
             if (startTime == "") {
-                reqVO.setStartTime(new Date((new Date()).getTime() - 60*60*1000));
+                reqVO.setStartTime(new Date((new Date()).getTime() - 60 * 60 * 1000));
             } else {
                 reqVO.setStartTime(formatter.parse(startTime));
 
             }
             if (endTime == "") {
-                reqVO.setEndTime(new Date((new Date()).getTime() + 60*60*1000));
+                reqVO.setEndTime(new Date((new Date()).getTime() + 60 * 60 * 1000));
             } else {
                 reqVO.setEndTime(formatter.parse(endTime));
             }
@@ -115,10 +115,26 @@
         }
         PreDataItemChartRespVO respVO = mcsApi.getPreDataItemChart(reqVO);
         try {
-            String sheetTitle =  "sheet1";
+            String sheetTitle = "sheet1";
             ExcelUtil.exportchart(sheetTitle, respVO, response);
         } catch (Exception ex) {
             ex.printStackTrace();
         }
     }
+
+    @GetMapping("/alarm-message/last-one")
+    @Operation(summary = "根据监控对象获取最新预警信息")
+    public CommonResult<AlarmMessageRespDTO> getLastAlarmMessage(HttpServletResponse response, HttpServletRequest
+            request, @RequestParam("alarmObj") String alarmObj) {
+        AlarmMessageRespDTO data = mcsApi.getLastAlarmMessage(alarmObj);
+        return CommonResult.success(data);
+    }
+
+    @GetMapping("/schedule-suggest/last-limit")
+    @Operation(summary = "根据监控对象获取最新预警信息")
+    public CommonResult<List<ScheduleSuggestRespDTO>> getLastLimitScheduleSuggest(HttpServletResponse response, HttpServletRequest
+            request, @RequestParam("scheduleObj") String scheduleObj, @RequestParam("limit") Integer limit) {
+        List<ScheduleSuggestRespDTO> data = mcsApi.getLastLimitScheduleSuggest(scheduleObj, limit);
+        return CommonResult.success(data);
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmItemAccuracyHisController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmItemAccuracyHisController.java
new file mode 100644
index 0000000..7197455
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmItemAccuracyHisController.java
@@ -0,0 +1,74 @@
+package com.iailab.module.model.mcs.pre.controller.admin;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.module.model.mcs.pre.entity.MmItemAccuracyHisEntity;
+import com.iailab.module.model.mcs.pre.service.MmItemAccuracyHisService;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyHisPageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyHisRespVO;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyHisSaveReqVO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年11月25日
+ */
+@RestController
+@RequestMapping("/model/item/accuracy-his")
+public class MmItemAccuracyHisController {
+
+    @Autowired
+    private MmItemAccuracyHisService mmItemAccuracyHisService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建预测精准度历史配置")
+    @PreAuthorize("@ss.hasPermission('item:accuracy-his:create')")
+    public CommonResult<Boolean> create(@Valid @RequestBody MmItemAccuracyHisSaveReqVO createReqVO) {
+        mmItemAccuracyHisService.create(createReqVO);
+        return success(true);
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新预测精准度历史配置")
+    @PreAuthorize("@ss.hasPermission('item:accuracy-his:update')")
+    public CommonResult<Boolean> update(@Valid @RequestBody MmItemAccuracyHisSaveReqVO updateReqVO) {
+        mmItemAccuracyHisService.update(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除预测精准度历史配置")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('item:accuracy-his:delete')")
+    public CommonResult<Boolean> deleteTenant(@RequestParam("id") String id) {
+        mmItemAccuracyHisService.delete(id);
+        return success(true);
+    }
+
+    @GetMapping("/get/{id}")
+    @Operation(summary = "获得预测精准度历史配置")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('item:accuracy-his:query')")
+    public CommonResult<MmItemAccuracyHisRespVO> getInfo(@PathVariable("id") String id) {
+        MmItemAccuracyHisEntity entity = mmItemAccuracyHisService.getInfo(id);
+        return success(BeanUtils.toBean(entity, MmItemAccuracyHisRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得预测精准度历史配置分页")
+    @PreAuthorize("@ss.hasPermission('item:accuracy-his:query')")
+    public CommonResult<PageResult<MmItemAccuracyHisRespVO>> getTenantPage(@Valid MmItemAccuracyHisPageReqVO pageVO) {
+        PageResult<MmItemAccuracyHisEntity> pageResult = mmItemAccuracyHisService.page(pageVO);
+        return success(BeanUtils.toBean(pageResult, MmItemAccuracyHisRespVO.class));
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmItemAccuracyRateController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmItemAccuracyRateController.java
new file mode 100644
index 0000000..c3b3fb9
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmItemAccuracyRateController.java
@@ -0,0 +1,74 @@
+package com.iailab.module.model.mcs.pre.controller.admin;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.module.model.mcs.pre.entity.MmItemAccuracyRateEntity;
+import com.iailab.module.model.mcs.pre.service.MmItemAccuracyRateService;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyRatePageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyRateRespVO;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyRateSaveReqVO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author lirm
+ * @Description
+ * @createTime 2024年11月25日
+ */
+@RestController
+@RequestMapping("/model/item/accuracy-rate")
+public class MmItemAccuracyRateController {
+
+    @Autowired
+    private MmItemAccuracyRateService mmItemAccuracyRateService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建预测精准度配置")
+    @PreAuthorize("@ss.hasPermission('item:accuracy-rate:create')")
+    public CommonResult<Boolean> create(@Valid @RequestBody MmItemAccuracyRateSaveReqVO createReqVO) {
+        mmItemAccuracyRateService.create(createReqVO);
+        return success(true);
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新预测精准度配置")
+    @PreAuthorize("@ss.hasPermission('item:accuracy-rate:update')")
+    public CommonResult<Boolean> update(@Valid @RequestBody MmItemAccuracyRateSaveReqVO updateReqVO) {
+        mmItemAccuracyRateService.update(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除预测精准度配置")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('item:accuracy-rate:delete')")
+    public CommonResult<Boolean> deleteTenant(@RequestParam("id") String id) {
+        mmItemAccuracyRateService.delete(id);
+        return success(true);
+    }
+
+    @GetMapping("/get/{id}")
+    @Operation(summary = "获得预测精准度配置")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('item:accuracy-rate:query')")
+    public CommonResult<MmItemAccuracyRateRespVO> getInfo(@PathVariable("id") String id) {
+        MmItemAccuracyRateEntity entity = mmItemAccuracyRateService.getInfo(id);
+        return success(BeanUtils.toBean(entity, MmItemAccuracyRateRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得预测精准度配置分页")
+    @PreAuthorize("@ss.hasPermission('item:accuracy-rate:query')")
+    public CommonResult<PageResult<MmItemAccuracyRateRespVO>> getTenantPage(@Valid MmItemAccuracyRatePageReqVO pageVO) {
+        PageResult<MmItemAccuracyRateEntity> pageResult = mmItemAccuracyRateService.page(pageVO);
+        return success(BeanUtils.toBean(pageResult, MmItemAccuracyRateRespVO.class));
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmPredictAlarmConfigController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmPredictAlarmConfigController.java
index 26c1675..9a8ddd0 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmPredictAlarmConfigController.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmPredictAlarmConfigController.java
@@ -55,11 +55,11 @@
         return success(true);
     }
 
-    @GetMapping("/get")
+    @GetMapping("/get/{id}")
     @Operation(summary = "获得预警配置")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('pre:alarm-config:query')")
-    public CommonResult<MmPredictAlarmConfigRespVO> getInfo(@RequestParam("id") String id) {
+    public CommonResult<MmPredictAlarmConfigRespVO> getInfo(@PathVariable("id") String id) {
         MmPredictAlarmConfigEntity entity = mmPredictAlarmConfigService.getInfo(id);
         return success(BeanUtils.toBean(entity, MmPredictAlarmConfigRespVO.class));
     }
@@ -68,7 +68,7 @@
     @Operation(summary = "获得预警配置分页")
     @PreAuthorize("@ss.hasPermission('pre:alarm-config:query')")
     public CommonResult<PageResult<MmPredictAlarmConfigRespVO>> getTenantPage(@Valid MmPredictAlarmConfigPageReqVO pageVO) {
-        PageResult<MmPredictAlarmConfigEntity> pageResult = mmPredictAlarmConfigService.page(pageVO);
+        PageResult<MmPredictAlarmConfigRespVO> pageResult = mmPredictAlarmConfigService.page(pageVO);
         return success(BeanUtils.toBean(pageResult, MmPredictAlarmConfigRespVO.class));
     }
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemAccuracyHisDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemAccuracyHisDao.java
index a64d56d..e5175d2 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemAccuracyHisDao.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemAccuracyHisDao.java
@@ -1,8 +1,13 @@
 package com.iailab.module.model.mcs.pre.dao;
 
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.model.mcs.pre.entity.MmItemAccuracyHisEntity;
+import com.iailab.module.model.mcs.pre.entity.MmItemAccuracyHisEntity;
+import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmConfigEntity;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyHisPageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -13,4 +18,11 @@
 @TenantDS
 @Mapper
 public interface MmItemAccuracyHisDao extends BaseMapperX<MmItemAccuracyHisEntity> {
-}
+
+    default PageResult<MmItemAccuracyHisEntity> selectPage(MmItemAccuracyHisPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MmItemAccuracyHisEntity>()
+                .likeIfPresent(MmItemAccuracyHisEntity::getRateId, reqVO.getRateId())
+                .likeIfPresent(MmItemAccuracyHisEntity::getInDeviation, reqVO.getInDeviation())
+                .orderByDesc(MmItemAccuracyHisEntity::getCreateTime));
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemAccuracyRateDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemAccuracyRateDao.java
index ed4228d..a63a7c3 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemAccuracyRateDao.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemAccuracyRateDao.java
@@ -1,8 +1,12 @@
 package com.iailab.module.model.mcs.pre.dao;
 
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.model.mcs.pre.entity.MmItemAccuracyRateEntity;
+import com.iailab.module.model.mcs.pre.entity.MmItemAccuracyRateEntity;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyRatePageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -13,4 +17,9 @@
 @TenantDS
 @Mapper
 public interface MmItemAccuracyRateDao extends BaseMapperX<MmItemAccuracyRateEntity> {
+
+    default PageResult<MmItemAccuracyRateEntity> selectPage(MmItemAccuracyRatePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MmItemAccuracyRateEntity>()
+                .orderByDesc(MmItemAccuracyRateEntity::getCreateTime));
+    }
 }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictAlarmConfigDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictAlarmConfigDao.java
index 47fe438..1fa68e5 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictAlarmConfigDao.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictAlarmConfigDao.java
@@ -1,12 +1,14 @@
 package com.iailab.module.model.mcs.pre.dao;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
-import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmConfigEntity;
 import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigPageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigRespVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @author PanZhibao
@@ -17,10 +19,9 @@
 @Mapper
 public interface MmPredictAlarmConfigDao extends BaseMapperX<MmPredictAlarmConfigEntity> {
 
-    default PageResult<MmPredictAlarmConfigEntity> selectPage(MmPredictAlarmConfigPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<MmPredictAlarmConfigEntity>()
-                .likeIfPresent(MmPredictAlarmConfigEntity::getTitle, reqVO.getTitle())
-                .likeIfPresent(MmPredictAlarmConfigEntity::getAlarmObj, reqVO.getAlarmObj())
-                .orderByDesc(MmPredictAlarmConfigEntity::getCreateTime));
+    IPage<MmPredictAlarmConfigRespVO> getPageList(IPage<MmPredictAlarmConfigEntity> page, @Param("params") MmPredictAlarmConfigPageReqVO reqVO);
+
+    default IPage<MmPredictAlarmConfigRespVO> selectPage(MmPredictAlarmConfigPageReqVO reqVO) {
+        return getPageList(getPage(reqVO), reqVO);
     }
 }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemAccuracyHisService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemAccuracyHisService.java
index 3243536..a08bee5 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemAccuracyHisService.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemAccuracyHisService.java
@@ -1,9 +1,24 @@
 package com.iailab.module.model.mcs.pre.service;
 
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.module.model.mcs.pre.entity.MmItemAccuracyHisEntity;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyHisPageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyHisSaveReqVO;
+
 /**
  * @author PanZhibao
  * @Description
  * @createTime 2024年11月19日
  */
 public interface MmItemAccuracyHisService {
+
+    PageResult<MmItemAccuracyHisEntity> page(MmItemAccuracyHisPageReqVO pageVO);
+
+    MmItemAccuracyHisEntity getInfo(String id);
+
+    void create(MmItemAccuracyHisSaveReqVO createReqVO);
+
+    void update(MmItemAccuracyHisSaveReqVO updateReqVO);
+
+    void delete(String id);
 }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemAccuracyRateService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemAccuracyRateService.java
index 09a3036..42ee025 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemAccuracyRateService.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemAccuracyRateService.java
@@ -1,9 +1,26 @@
 package com.iailab.module.model.mcs.pre.service;
 
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.module.model.mcs.pre.entity.MmItemAccuracyRateEntity;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyRatePageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyRateSaveReqVO;
+
+import javax.validation.Valid;
+
 /**
  * @author PanZhibao
  * @Description
  * @createTime 2024年11月19日
  */
 public interface MmItemAccuracyRateService {
+
+    PageResult<MmItemAccuracyRateEntity> page(MmItemAccuracyRatePageReqVO pageVO);
+
+    MmItemAccuracyRateEntity getInfo(String id);
+
+    void create(MmItemAccuracyRateSaveReqVO createReqVO);
+
+    void update(MmItemAccuracyRateSaveReqVO updateReqVO);
+
+    void delete(String id);
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmConfigService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmConfigService.java
index 9bc8319..fb480b2 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmConfigService.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmConfigService.java
@@ -1,10 +1,16 @@
 package com.iailab.module.model.mcs.pre.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.api.mcs.dto.AlarmConfigRespDTO;
 import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmConfigEntity;
 import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigPageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigRespVO;
 import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigSaveReqVO;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author PanZhibao
@@ -13,7 +19,7 @@
  */
 public interface MmPredictAlarmConfigService extends BaseService<MmPredictAlarmConfigEntity> {
 
-    PageResult<MmPredictAlarmConfigEntity> page(MmPredictAlarmConfigPageReqVO reqVO);
+    PageResult<MmPredictAlarmConfigRespVO> page(MmPredictAlarmConfigPageReqVO reqVO);
 
     MmPredictAlarmConfigEntity getInfo(String id);
 
@@ -22,4 +28,6 @@
     void update(MmPredictAlarmConfigSaveReqVO reqVO);
 
     void delete(String id);
+
+    List<AlarmConfigRespDTO> list(Map<String, Object> params);
 }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmMessageService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmMessageService.java
index 3e1485e..5512dde 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmMessageService.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictAlarmMessageService.java
@@ -17,6 +17,8 @@
 
     MmPredictAlarmMessageEntity getInfo(String id);
 
+    MmPredictAlarmMessageEntity getLast(String alarmObj);
+
     void create(MmPredictAlarmMessageSaveReqVO reqVO);
 
     void update(MmPredictAlarmMessageSaveReqVO reqVO);
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemAccuracyHisServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemAccuracyHisServiceImpl.java
index 241c579..e17491d 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemAccuracyHisServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemAccuracyHisServiceImpl.java
@@ -1,7 +1,19 @@
 package com.iailab.module.model.mcs.pre.service.impl;
 
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.framework.security.core.util.SecurityFrameworkUtils;
+import com.iailab.module.model.mcs.pre.dao.MmItemAccuracyHisDao;
+import com.iailab.module.model.mcs.pre.entity.MmItemAccuracyHisEntity;
 import com.iailab.module.model.mcs.pre.service.MmItemAccuracyHisService;
+import com.iailab.module.model.mcs.pre.service.MmItemAccuracyHisService;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyHisPageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyHisSaveReqVO;
 import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.UUID;
 
 /**
  * @author PanZhibao
@@ -9,5 +21,34 @@
  * @createTime 2024年11月19日
  */
 @Service
-public class MmItemAccuracyHisServiceImpl implements MmItemAccuracyHisService {
+public class MmItemAccuracyHisServiceImpl extends BaseServiceImpl<MmItemAccuracyHisDao, MmItemAccuracyHisEntity>
+        implements MmItemAccuracyHisService {
+    @Override
+    public PageResult<MmItemAccuracyHisEntity> page(MmItemAccuracyHisPageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    @Override
+    public MmItemAccuracyHisEntity getInfo(String id) {
+        return baseDao.selectById(id);
+    }
+
+    @Override
+    public void create(MmItemAccuracyHisSaveReqVO reqVO) {
+        MmItemAccuracyHisEntity entity = BeanUtils.toBean(reqVO, MmItemAccuracyHisEntity.class);
+        entity.setId(UUID.randomUUID().toString());
+        entity.setCreateTime(new Date());
+        baseDao.insert(entity);
+    }
+
+    @Override
+    public void update(MmItemAccuracyHisSaveReqVO reqVO) {
+        MmItemAccuracyHisEntity entity = BeanUtils.toBean(reqVO, MmItemAccuracyHisEntity.class);
+        baseDao.updateById(entity);
+    }
+
+    @Override
+    public void delete(String id) {
+        baseDao.deleteById(id);
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemAccuracyRateServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemAccuracyRateServiceImpl.java
index abaade9..79951cb 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemAccuracyRateServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemAccuracyRateServiceImpl.java
@@ -1,7 +1,19 @@
 package com.iailab.module.model.mcs.pre.service.impl;
 
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.framework.security.core.util.SecurityFrameworkUtils;
+import com.iailab.module.model.mcs.pre.dao.MmItemAccuracyRateDao;
+import com.iailab.module.model.mcs.pre.entity.MmItemAccuracyRateEntity;
 import com.iailab.module.model.mcs.pre.service.MmItemAccuracyRateService;
+import com.iailab.module.model.mcs.pre.service.MmItemAccuracyRateService;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyRatePageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmItemAccuracyRateSaveReqVO;
 import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.UUID;
 
 /**
  * @author PanZhibao
@@ -9,5 +21,35 @@
  * @createTime 2024年11月19日
  */
 @Service
-public class MmItemAccuracyRateServiceImpl implements MmItemAccuracyRateService {
+public class MmItemAccuracyRateServiceImpl extends BaseServiceImpl<MmItemAccuracyRateDao, MmItemAccuracyRateEntity>
+        implements MmItemAccuracyRateService {
+    @Override
+    public PageResult<MmItemAccuracyRateEntity> page(MmItemAccuracyRatePageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    @Override
+    public MmItemAccuracyRateEntity getInfo(String id) {
+        return baseDao.selectById(id);
+    }
+
+    @Override
+    public void create(MmItemAccuracyRateSaveReqVO reqVO) {
+        MmItemAccuracyRateEntity entity = BeanUtils.toBean(reqVO, MmItemAccuracyRateEntity.class);
+        entity.setId(UUID.randomUUID().toString());
+        entity.setCreateTime(new Date());
+        baseDao.insert(entity);
+    }
+
+    @Override
+    public void update(MmItemAccuracyRateSaveReqVO reqVO) {
+        MmItemAccuracyRateEntity entity = BeanUtils.toBean(reqVO, MmItemAccuracyRateEntity.class);
+        entity.setUpdateTime(new Date());
+        baseDao.updateById(entity);
+    }
+
+    @Override
+    public void delete(String id) {
+        baseDao.deleteById(id);
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmConfigServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmConfigServiceImpl.java
index 6536a6c..42b9252 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmConfigServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmConfigServiceImpl.java
@@ -1,17 +1,24 @@
 package com.iailab.module.model.mcs.pre.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.service.impl.BaseServiceImpl;
 import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.framework.security.core.util.SecurityFrameworkUtils;
+import com.iailab.module.model.api.mcs.dto.AlarmConfigRespDTO;
 import com.iailab.module.model.mcs.pre.dao.MmPredictAlarmConfigDao;
+import com.iailab.module.model.mcs.pre.entity.DmModuleEntity;
 import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmConfigEntity;
+import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmMessageEntity;
 import com.iailab.module.model.mcs.pre.service.MmPredictAlarmConfigService;
 import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigPageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigRespVO;
 import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigSaveReqVO;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
-import java.util.UUID;
+import java.util.*;
 
 /**
  * @author PanZhibao
@@ -23,8 +30,9 @@
         implements MmPredictAlarmConfigService {
 
     @Override
-    public PageResult<MmPredictAlarmConfigEntity> page(MmPredictAlarmConfigPageReqVO reqVO) {
-        return baseDao.selectPage(reqVO);
+    public PageResult<MmPredictAlarmConfigRespVO> page(MmPredictAlarmConfigPageReqVO reqVO) {
+        IPage<MmPredictAlarmConfigRespVO> page = baseDao.selectPage(reqVO);
+        return new PageResult<>(page.getRecords(), page.getTotal());
     }
 
     @Override
@@ -36,6 +44,7 @@
     public void create(MmPredictAlarmConfigSaveReqVO reqVO) {
         MmPredictAlarmConfigEntity entity = BeanUtils.toBean(reqVO, MmPredictAlarmConfigEntity.class);
         entity.setId(UUID.randomUUID().toString());
+        entity.setCreator(SecurityFrameworkUtils.getLoginUserNickname());
         entity.setCreateTime(new Date());
         baseDao.insert(entity);
     }
@@ -43,6 +52,8 @@
     @Override
     public void update(MmPredictAlarmConfigSaveReqVO reqVO) {
         MmPredictAlarmConfigEntity entity = BeanUtils.toBean(reqVO, MmPredictAlarmConfigEntity.class);
+        entity.setUpdater(SecurityFrameworkUtils.getLoginUserNickname());
+        entity.setUpdateTime(new Date());
         baseDao.updateById(entity);
     }
 
@@ -50,4 +61,11 @@
     public void delete(String id) {
         baseDao.deleteById(id);
     }
+
+    @Override
+    public List<AlarmConfigRespDTO> list(Map<String, Object> params) {
+        QueryWrapper<MmPredictAlarmConfigEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq("is_enable", 1);
+        return BeanUtils.toBean(baseDao.selectList(wrapper), AlarmConfigRespDTO.class);
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmMessageServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmMessageServiceImpl.java
index 33da851..1f55917 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmMessageServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmMessageServiceImpl.java
@@ -1,5 +1,6 @@
 package com.iailab.module.model.mcs.pre.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.service.impl.BaseServiceImpl;
 import com.iailab.framework.common.util.object.BeanUtils;
@@ -9,8 +10,10 @@
 import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmMessagePageReqVO;
 import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmMessageSaveReqVO;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.util.Date;
+import java.util.List;
 import java.util.UUID;
 
 /**
@@ -34,6 +37,15 @@
     }
 
     @Override
+    public MmPredictAlarmMessageEntity getLast(String alarmObj) {
+        QueryWrapper<MmPredictAlarmMessageEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("alarm_obj", alarmObj)
+                .orderByDesc("alarm_time")
+                .last("limit 1");
+        return baseDao.selectOne(queryWrapper);
+    }
+
+    @Override
     public void create(MmPredictAlarmMessageSaveReqVO reqVO) {
         MmPredictAlarmMessageEntity entity = BeanUtils.toBean(reqVO, MmPredictAlarmMessageEntity.class);
         entity.setId(UUID.randomUUID().toString());
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisPageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisPageReqVO.java
new file mode 100644
index 0000000..6b0c166
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisPageReqVO.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.math.BigDecimal;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月20日
+ */
+@Schema(description = "模型平台 - Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MmItemAccuracyHisPageReqVO extends PageParam {
+
+    @Schema(description = "预测精准度ID")
+    private String rateId;
+
+    @Schema(description = "精准误差")
+    private String inDeviation;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisRespVO.java
new file mode 100644
index 0000000..6343ee8
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisRespVO.java
@@ -0,0 +1,33 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月20日
+ */
+@Schema(description = "模型服务 - 预警配置 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MmItemAccuracyHisRespVO {
+    @Schema(description = "ID")
+    private String id;
+
+    private String rateId;
+
+    private BigDecimal inDeviation;
+
+    private BigDecimal inAccuracyRate;
+
+    private BigDecimal outDeviation;
+
+    private BigDecimal outAccuracyRate;
+
+    private Date createTime;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisSaveReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisSaveReqVO.java
new file mode 100644
index 0000000..21f90e0
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyHisSaveReqVO.java
@@ -0,0 +1,32 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月20日
+ */
+@Schema(description = "模型服务 - 预警信息创建/修改 Request VO")
+@Data
+public class MmItemAccuracyHisSaveReqVO {
+
+    @Schema(description = "ID")
+    private String id;
+
+    private String rateId;
+
+    private BigDecimal inDeviation;
+
+    private BigDecimal inAccuracyRate;
+
+    private BigDecimal outDeviation;
+
+    private BigDecimal outAccuracyRate;
+
+    private Date createTime;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRatePageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRatePageReqVO.java
new file mode 100644
index 0000000..0b3e20e
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRatePageReqVO.java
@@ -0,0 +1,22 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月20日
+ */
+@Schema(description = "模型平台 - Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MmItemAccuracyRatePageReqVO extends PageParam {
+
+    @Schema(description = "预测项ID")
+    private String itemId;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRateRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRateRespVO.java
new file mode 100644
index 0000000..75cc8a2
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRateRespVO.java
@@ -0,0 +1,57 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月20日
+ */
+@Schema(description = "模型服务 - 预警配置 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MmItemAccuracyRateRespVO {
+    @Schema(description = "ID")
+    private String id;
+
+
+    private String itemId;
+
+
+    private String outId;
+
+
+    private Integer sampleLength;
+
+
+    private Integer valueType;
+
+
+    private Date beginTime;
+
+
+    private BigDecimal inDeviation;
+
+
+    private BigDecimal inAccuracyRate;
+
+
+    private BigDecimal outDeviation;
+
+
+    private BigDecimal outAccuracyRate;
+
+
+    private Integer isEnable;
+
+
+    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/mcs/pre/vo/MmItemAccuracyRateSaveReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRateSaveReqVO.java
new file mode 100644
index 0000000..9fc685c
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemAccuracyRateSaveReqVO.java
@@ -0,0 +1,56 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月20日
+ */
+@Schema(description = "模型服务 - 预警信息创建/修改 Request VO")
+@Data
+public class MmItemAccuracyRateSaveReqVO {
+
+    @Schema(description = "ID")
+    private String id;
+
+
+    private String itemId;
+
+
+    private String outId;
+
+
+    private Integer sampleLength;
+
+
+    private Integer valueType;
+
+
+    private Date beginTime;
+
+
+    private BigDecimal inDeviation;
+
+
+    private BigDecimal inAccuracyRate;
+
+
+    private BigDecimal outDeviation;
+
+
+    private BigDecimal outAccuracyRate;
+
+
+    private Integer isEnable;
+
+
+    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/mcs/pre/vo/MmPredictAlarmConfigRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictAlarmConfigRespVO.java
index 5807ec9..9b06aec 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictAlarmConfigRespVO.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictAlarmConfigRespVO.java
@@ -28,8 +28,12 @@
     @Schema(description = "预测项ID")
     private String itemId;
 
+    private String itemName;
+
     @Schema(description = "输出ID")
     private String outId;
+    
+    private String outName;
 
     @Schema(description = "比较长度")
     private Integer compLength;
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSuggestDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSuggestDao.java
index 23fab12..ea81414 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSuggestDao.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSuggestDao.java
@@ -1,8 +1,11 @@
 package com.iailab.module.model.mcs.sche.dao;
 
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
 import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity;
+import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestPageReqVO;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -13,4 +16,11 @@
 @TenantDS
 @Mapper
 public interface StScheduleSuggestDao extends BaseMapperX<StScheduleSuggestEntity> {
+
+    default PageResult<StScheduleSuggestEntity> selectPage(StScheduleSuggestPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<StScheduleSuggestEntity>()
+                .likeIfPresent(StScheduleSuggestEntity::getTitle, reqVO.getTitle())
+                .likeIfPresent(StScheduleSuggestEntity::getScheduleObj, reqVO.getScheduleObj())
+                .orderByDesc(StScheduleSuggestEntity::getCreateTime));
+    }
 }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSuggestEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSuggestEntity.java
index babae42..9dda28a 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSuggestEntity.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSuggestEntity.java
@@ -111,7 +111,7 @@
     private Date scheduleTime;
 
     /**
-     * 状态
+     * 状态(0未处理 1已采纳 2已忽略)
      */
     private Integer status;
 
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java
index 72104b3..489487f 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java
@@ -1,7 +1,12 @@
 package com.iailab.module.model.mcs.sche.service;
 
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.service.BaseService;
 import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity;
+import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestPageReqVO;
+import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestSaveReqVO;
+
+import java.util.List;
 
 /**
  * @author PanZhibao
@@ -9,4 +14,16 @@
  * @createTime 2024年09月06日
  */
 public interface StScheduleSuggestService extends BaseService<StScheduleSuggestEntity> {
+
+    PageResult<StScheduleSuggestEntity> page(StScheduleSuggestPageReqVO reqVO);
+
+    void create(StScheduleSuggestSaveReqVO createReqVO);
+
+    void update(StScheduleSuggestSaveReqVO createReqVO);
+
+    void delete(String id);
+
+    StScheduleSuggestEntity getInfo(String id);
+
+    List<StScheduleSuggestEntity> getList(String scheduleObj, Integer limit);
 }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java
index 32b7055..46cdb20 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java
@@ -1,10 +1,18 @@
 package com.iailab.module.model.mcs.sche.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.framework.common.util.object.BeanUtils;
 import com.iailab.module.model.mcs.sche.dao.StScheduleSuggestDao;
 import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity;
 import com.iailab.module.model.mcs.sche.service.StScheduleSuggestService;
+import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestPageReqVO;
+import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestSaveReqVO;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.UUID;
 
 /**
  * @author PanZhibao
@@ -14,4 +22,42 @@
 @Service
 public class StScheduleSuggestServiceImpl extends BaseServiceImpl<StScheduleSuggestDao, StScheduleSuggestEntity>
         implements StScheduleSuggestService {
+
+    @Override
+    public PageResult<StScheduleSuggestEntity> page(StScheduleSuggestPageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    @Override
+    public void create(StScheduleSuggestSaveReqVO createReqVO) {
+        StScheduleSuggestEntity entity = BeanUtils.toBean(createReqVO, StScheduleSuggestEntity.class);
+        entity.setId(UUID.randomUUID().toString());
+        baseDao.insert(entity);
+    }
+
+    @Override
+    public void update(StScheduleSuggestSaveReqVO createReqVO) {
+        StScheduleSuggestEntity entity = BeanUtils.toBean(createReqVO, StScheduleSuggestEntity.class);
+        baseDao.updateById(entity);
+    }
+
+    @Override
+    public void delete(String id) {
+        baseDao.deleteById(id);
+    }
+
+    @Override
+    public StScheduleSuggestEntity getInfo(String id) {
+        return baseDao.selectById(id);
+    }
+
+    @Override
+    public List<StScheduleSuggestEntity> getList(String scheduleObj, Integer limit) {
+        QueryWrapper<StScheduleSuggestEntity> queryWrapper = new QueryWrapper<>();
+        limit = limit == null ? 1 : limit;
+        queryWrapper.eq("schedule_obj", scheduleObj)
+                .orderByDesc("create_time")
+                .last("limit " + limit);
+        return baseDao.selectList(queryWrapper);
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestPageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestPageReqVO.java
new file mode 100644
index 0000000..1bc0564
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestPageReqVO.java
@@ -0,0 +1,25 @@
+package com.iailab.module.model.mcs.sche.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月27日
+ */
+@Schema(description = "模型服务 - 调度建议分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class StScheduleSuggestPageReqVO extends PageParam {
+
+    @Schema(description = "标题,模糊匹配", example = "")
+    private String title;
+
+    @Schema(description = "调整对象,模糊匹配", example = "")
+    private String scheduleObj;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestRespVO.java
new file mode 100644
index 0000000..7c3e0e7
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestRespVO.java
@@ -0,0 +1,83 @@
+package com.iailab.module.model.mcs.sche.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月27日
+ */
+@Schema(description = "模型服务 - 调度建议 Response VO")
+@Data
+public class StScheduleSuggestRespVO {
+
+    @Schema(description = "ID")
+    private String id;
+
+    @Schema(description = "标题")
+    private String title;
+
+    @Schema(description = "内容")
+    private String content;
+
+    @Schema(description = "排序")
+    private Integer sort;
+
+    @Schema(description = "方案ID")
+    private String schemeId;
+
+    @Schema(description = "预警ID")
+    private String alarmId;
+
+    @Schema(description = "预测项ID")
+    private String itemId;
+
+    @Schema(description = "模型ID")
+    private String modelId;
+
+    @Schema(description = "调整对象")
+    private String scheduleObj;
+
+    @Schema(description = "调整类型")
+    private String scheduleType;
+
+    @Schema(description = "调整策略")
+    private String scheduleStrategy;
+
+    @Schema(description = "调整方式")
+    private String adjustMode;
+
+    @Schema(description = "调整值")
+    private BigDecimal adjustValue;
+
+    @Schema(description = "调整单位")
+    private String adjustUnit;
+
+    @Schema(description = "持续时长")
+    private BigDecimal adjustTimes;
+
+    @Schema(description = "调整开始时间")
+    private Date adjustStart;
+
+    @Schema(description = "调整结束时间")
+    private Date adjustEnd;
+
+    @Schema(description = "调度时间")
+    private Date scheduleTime;
+
+    @Schema(description = "状态(0未处理 1已采纳 2已忽略)")
+    private Integer status;
+
+    @Schema(description = "处理人")
+    private String handler;
+
+    @Schema(description = "处理时间")
+    private Date handleTime;
+
+    @Schema(description = "创建时间")
+    private Date createTime;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestSaveReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestSaveReqVO.java
new file mode 100644
index 0000000..fa3a51b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleSuggestSaveReqVO.java
@@ -0,0 +1,88 @@
+package com.iailab.module.model.mcs.sche.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月27日
+ */
+@Schema(description = "模型服务 - 调度建议创建/修改 Request VO")
+@Data
+public class StScheduleSuggestSaveReqVO {
+
+    @Schema(description = "ID")
+    private String id;
+
+    @Schema(description = "标题")
+    @NotNull(message = "应用编号不能为空")
+    private String title;
+
+    @Schema(description = "内容")
+    @NotNull(message = "应用编号不能为空")
+    private String content;
+
+    @Schema(description = "排序")
+    @NotNull(message = "应用编号不能为空")
+    private Integer sort;
+
+    @Schema(description = "方案ID")
+    private String schemeId;
+
+    @Schema(description = "预警ID")
+    private String alarmId;
+
+    @Schema(description = "预测项ID")
+    private String itemId;
+
+    @Schema(description = "模型ID")
+    private String modelId;
+
+    @Schema(description = "调整对象")
+    @NotNull(message = "应用编号不能为空")
+    private String scheduleObj;
+
+    @Schema(description = "调整类型")
+    private String scheduleType;
+
+    @Schema(description = "调整策略")
+    private String scheduleStrategy;
+
+    @Schema(description = "调整方式")
+    private String adjustMode;
+
+    @Schema(description = "调整值")
+    private BigDecimal adjustValue;
+
+    @Schema(description = "调整单位")
+    private String adjustUnit;
+
+    @Schema(description = "持续时长")
+    private BigDecimal adjustTimes;
+
+    @Schema(description = "调整开始时间")
+    private Date adjustStart;
+
+    @Schema(description = "调整结束时间")
+    private Date adjustEnd;
+
+    @Schema(description = "调度时间")
+    private Date scheduleTime;
+
+    @Schema(description = "状态(0未处理 1已采纳 2已忽略)")
+    private Integer status;
+
+    @Schema(description = "处理人")
+    private String handler;
+
+    @Schema(description = "处理时间")
+    private Date handleTime;
+
+    @Schema(description = "创建时间")
+    private Date createTime;
+}
\ 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 61cdbda..9883f9f 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
@@ -193,6 +193,7 @@
       - t_mm_item_result_json
       - t_mm_item_result_last_point
       - t_mm_item_accuracy_rate
+      - t_mm_item_accuracy_his
       - t_mm_predict_alarm_config
       - t_mm_predict_alarm_message
       - t_mm_sequence_num
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemOutputDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemOutputDao.xml
index 7579f95..be28aad 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemOutputDao.xml
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemOutputDao.xml
@@ -3,4 +3,12 @@
 
 <mapper namespace="com.iailab.module.model.mcs.pre.dao.MmItemOutputDao">
 
+    <select id="queryList" resultType="com.iailab.module.model.mcs.pre.dto.MmItemOutputDTO">
+        select * from t_mm_item_output t
+        <where>
+            <if test="params.itemid != null and params.itemid != ''">
+                AND t.itemid LIKE CONCAT('%', #{params.itemid},'%')
+            </if>
+        </where>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictAlarmConfigDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictAlarmConfigDao.xml
new file mode 100644
index 0000000..9cee8c2
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictAlarmConfigDao.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.iailab.module.model.mcs.pre.dao.MmPredictAlarmConfigDao">
+    <select id="getPageList" resultType="com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigRespVO">
+        select t1.*,t2.itemname itemName,t3.tagname outName
+        from t_mm_predict_alarm_config t1
+        left join t_mm_predict_item t2 on t2.id = t1.item_id
+        left join t_mm_item_output t3 on t3.id = t1.out_id
+        <where>
+            <if test="params.title != null and params.title != ''">
+                AND t.title LIKE CONCAT('%', #{params.title},'%')
+            </if>
+            <if test="params.alarmObj != null and params.alarmObj != ''">
+                AND t.alarmObj LIKE CONCAT('%', #{params.alarmObj},'%')
+            </if>
+        </where>
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3