From a709abfd8ffec1524cefff30c3581f4425695433 Mon Sep 17 00:00:00 2001
From: houzhongjian <houzhongyi@126.com>
Date: 星期四, 05 十二月 2024 17:05:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java              |   11 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/ScheduleSampleInfoConstructor.java              |   79 ++++++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java                   |    5 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSchemeService.java              |    5 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java                      |   41 ++--
 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mpk/MpkFileDao.xml                                                     |   33 +++
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java                                        |   12 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MdkController.java                    |    4 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelParamService.java          |    2 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelParamService.java                   |    2 
 iailab-module-model/iailab-module-model-biz/db/mysql.sql                                                                                     |    4 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictModelServiceImpl.java        |    7 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dao/MpkFileDao.java                                    |    2 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelParamServiceImpl.java          |    2 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelParamServiceImpl.java |   22 ++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSchemeServiceImpl.java     |   16 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java            |  112 ++++-------
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictModelDao.java                         |    2 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleInfoConstructor.java               |   32 ---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MpkFileController.java                |    4 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java                                        |   10 +
 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/mdk/sample/SampleFactory.java                              |    7 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictAlarmConfigServiceImpl.java  |    4 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StScheduleSchemeDTO.java                       |   81 +++++++++
 25 files changed, 358 insertions(+), 145 deletions(-)

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 2a544a1..546062b 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 039e10b..9e5bd0a 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
@@ -42,7 +42,7 @@
 
     @PostMapping(PREFIX + "/predict-data/cur")
     @Operation(summary = "获取当前预测数据")
-    Map<String, List<Object[]>> getPreDataCur(PreDataJsonReqVO reqVO);
+    Map<String, List<Object[]>> getPreDataCur(@RequestBody PreDataJsonReqVO reqVO);
 
     @PostMapping(PREFIX + "/plan-data/single-chart")
     @Operation(summary = "计划数据图表")
@@ -54,11 +54,11 @@
 
     @GetMapping(PREFIX + "/alarm-message/list")
     @Operation(summary = "获取预警信息列表")
-    List<AlarmMessageRespDTO> listAlarmMessage(@RequestParam("params") Map<String, Object> params);
+    List<AlarmMessageRespDTO> listAlarmMessage(@RequestParam Map<String, Object> params);
 
     @GetMapping(PREFIX + "/alarm-config/list")
     @Operation(summary = "获取预警配置列表")
-    List<AlarmConfigRespDTO> listAlarmConfig(@RequestParam("params") Map<String, Object> params);
+    List<AlarmConfigRespDTO> listAlarmConfig(@RequestParam Map<String, Object> params);
 
     @GetMapping(PREFIX + "/alarm-message/last-one")
     @Operation(summary = "获取最新预警信息")
@@ -70,7 +70,7 @@
 
     @GetMapping(PREFIX + "/schedule-suggest/list")
     @Operation(summary = "获取调度建议列表")
-    List<ScheduleSuggestRespDTO> listScheduleSuggest(@RequestParam("params") ScheduleSuggestReqDTO params);
+    List<ScheduleSuggestRespDTO> listScheduleSuggest(@RequestParam Map<String, Object> params);
 
     @PostMapping(PREFIX + "/predict-model-setting/modify")
     @Operation(summary = "修改预测模型设置参数")
@@ -84,4 +84,8 @@
     @PostMapping(PREFIX + "/schedule-model-setting/modify")
     @Operation(summary = "修改调度模型设置参数")
     Boolean modifyScheduleModelSetting(@RequestBody List<ScheduleModelSettingReqDTO> dtos);
+
+    @GetMapping(PREFIX + "/schedule-scheme/list")
+    @Operation(summary = "获取调度方案列表")
+    List<StScheduleSchemeDTO> listScheduleScheme(@RequestParam Map<String, Object> params);
 }
\ 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/StScheduleSchemeDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StScheduleSchemeDTO.java
new file mode 100644
index 0000000..c3fbaad
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StScheduleSchemeDTO.java
@@ -0,0 +1,81 @@
+package com.iailab.module.model.api.mcs.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author lirm
+ * @date 2024年12月04日
+ */
+@Data
+public class StScheduleSchemeDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 编号
+     */
+    private String code;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 触发方式
+     */
+    private String triggerMethod;
+
+    /**
+     * 触发条件
+     */
+    private String triggerCondition;
+
+    /**
+     * 调整对象
+     */
+    private String scheduleObj;
+
+    /**
+     * 调整类型
+     */
+    private String scheduleType;
+
+    /**
+     * 调整策略
+     */
+    private String scheduleStrategy;
+
+    /**
+     * 调度模型
+     */
+    private String modelId;
+
+    /**
+     * 调度时间
+     */
+    private Date scheduleTime;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 项目ID
+     */
+    private String mpkprojectid;
+}
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 4768887..6f8e5dd 100644
--- a/iailab-module-model/iailab-module-model-biz/db/mysql.sql
+++ b/iailab-module-model/iailab-module-model-biz/db/mysql.sql
@@ -66,7 +66,7 @@
     id        varchar(36) not null,
     modelid   varchar(36),
     `key`     varchar(36),
-    value     varchar(256),
+    value     varchar(1000),
     name      varchar(36),
     valuetype varchar(36),
     primary key (id),
@@ -638,7 +638,7 @@
     `method_id`   varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '方法id',
     `setting_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'key',
     `name`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数名称',
-    `value`       varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数默认值',
+    `value`       varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数默认值',
     `type`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '输入类型',
     `value_type`  varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数类型',
     `max`         int NULL DEFAULT NULL COMMENT '最大值',
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 3242912..e1d951c 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
@@ -19,6 +19,7 @@
 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.StScheduleSchemeService;
 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;
@@ -79,6 +80,8 @@
     @Autowired
     private MmPredictAlarmConfigService mmPredictAlarmConfigService;
 
+    @Autowired
+    private StScheduleSchemeService stScheduleSchemeService;
 
     private int HOUR_MINS = 60;
 
@@ -516,7 +519,7 @@
     }
 
     @Override
-    public List<ScheduleSuggestRespDTO> listScheduleSuggest(ScheduleSuggestReqDTO params) {
+    public List<ScheduleSuggestRespDTO> listScheduleSuggest(Map<String, Object> params) {
         return Collections.emptyList();
     }
 
@@ -536,6 +539,11 @@
         return true;
     }
 
+    @Override
+    public List<StScheduleSchemeDTO> listScheduleScheme(Map<String, Object> params) {
+        return stScheduleSchemeService.list(params);
+    }
+
 
     private Date[] calResultTime(ItemVO predictItem, Date startTimeReq, Date endTimeReq, int lengthLeft, int lengthRight) {
         Date[] result = new Date[3];
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictModelDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictModelDao.java
index 4ba848d..06b0335 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictModelDao.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictModelDao.java
@@ -20,5 +20,5 @@
 
     List<MmPredictModelEntity> getActiveModelByItemId(String itemId);
 
-    List<MmPredictModelEntity> getSampleLength(String modelId);
+    MmPredictModelEntity getSampleLength(String modelId);
 }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelParamService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelParamService.java
index 830649d..cd38631 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelParamService.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelParamService.java
@@ -12,7 +12,7 @@
 
     void saveList(List<MmModelParamEntity> list);
 
-    List<MmModelParamEntity> getByModelidFromCatch(String modelId);
+    List<MmModelParamEntity> getByModelidFromCache(String modelId);
 
     List<MmModelParamEntity> getByModelid(String modelid);
 
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelParamServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelParamServiceImpl.java
index 023d4d6..c779599 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelParamServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelParamServiceImpl.java
@@ -44,7 +44,7 @@
     }
 
     @Override
-    public List<MmModelParamEntity> getByModelidFromCatch(String modelId) {
+    public List<MmModelParamEntity> getByModelidFromCache(String modelId) {
         if (!modelInputParamMap.containsKey(modelId)) {
             List<MmModelParamEntity> list = getByModelid(modelId);
             if (list != null) {
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 42b9252..5c5043c 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
@@ -5,6 +5,7 @@
 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.common.util.object.ConvertUtils;
 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;
@@ -66,6 +67,7 @@
     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);
+        List<MmPredictAlarmConfigEntity> list = baseDao.selectList(wrapper);
+        return ConvertUtils.sourceToTarget(list, 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/MmPredictModelServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictModelServiceImpl.java
index 12221fc..4738817 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictModelServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictModelServiceImpl.java
@@ -8,6 +8,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -67,11 +68,11 @@
     @Override
     public BigDecimal getSampleLength(String id) {
         BigDecimal result = BigDecimal.ZERO;
-        List<MmPredictModelEntity> list = mmPredictModelDao.getSampleLength(id);
-        if (CollectionUtils.isEmpty(list)) {
+        MmPredictModelEntity entity = mmPredictModelDao.getSampleLength(id);
+        if (ObjectUtils.isEmpty(entity)) {
             return result;
         }
-        result = list.get(0).getPredictsamplength();
+        result = entity.getPredictsamplength();
 
         return result;
     }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelParamService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelParamService.java
index 6c7aada..d07a459 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelParamService.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelParamService.java
@@ -18,4 +18,6 @@
     void deleteByModelId(String modelId);
 
     void saveList(String modelId, List<StScheduleModelParamSaveReqVO> saveList);
+
+    List<StScheduleModelParamEntity> getByModelidFromCache(String modelId);
 }
\ 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/service/StScheduleSchemeService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSchemeService.java
index db4f916..39df287 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSchemeService.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSchemeService.java
@@ -2,11 +2,14 @@
 
 import com.iailab.framework.common.pojo.PageResult;
 import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.api.mcs.dto.StScheduleSchemeDTO;
 import com.iailab.module.model.mcs.sche.entity.StScheduleSchemeEntity;
 import com.iailab.module.model.mcs.sche.vo.StScheduleSchemePageReqVO;
 import com.iailab.module.model.mcs.sche.vo.StScheduleSchemeSaveReqVO;
 
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author PanZhibao
@@ -27,4 +30,6 @@
     void updateTime(String id, Date scheduleTime);
 
     StScheduleSchemeEntity getByCode(String code);
+
+    List<StScheduleSchemeDTO> list(Map<String, Object> params);
 }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelParamServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelParamServiceImpl.java
index 80c17ca..3e951df 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelParamServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelParamServiceImpl.java
@@ -11,7 +11,9 @@
 import org.springframework.util.CollectionUtils;
 
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @author PanZhibao
@@ -21,6 +23,8 @@
 @Service
 public class StScheduleModelParamServiceImpl extends BaseServiceImpl<StScheduleModelParamDao, StScheduleModelParamEntity>
         implements StScheduleModelParamService {
+
+    private static Map<String, List<StScheduleModelParamEntity>> modelInputParamMap = new ConcurrentHashMap<>();
 
     @Override
     public List<StScheduleModelParamEntity> getByModelId(String modelId) {
@@ -51,5 +55,23 @@
             entity.setModelid(modelId);
             baseDao.insert(entity);
         });
+        clearCache();
+    }
+
+    @Override
+    public List<StScheduleModelParamEntity> getByModelidFromCache(String modelId) {
+        if (!modelInputParamMap.containsKey(modelId)) {
+            List<StScheduleModelParamEntity> list = getByModelId(modelId);
+            if (list != null) {
+                modelInputParamMap.put(modelId, list);
+            } else {
+                return null;
+            }
+        }
+        return modelInputParamMap.get(modelId);
+    }
+
+    public void clearCache() {
+        modelInputParamMap.clear();
     }
 }
\ 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/service/impl/StScheduleSchemeServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSchemeServiceImpl.java
index 4ed005f..2de77b6 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSchemeServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSchemeServiceImpl.java
@@ -4,6 +4,10 @@
 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.common.util.object.ConvertUtils;
+import com.iailab.module.model.api.mcs.dto.AlarmConfigRespDTO;
+import com.iailab.module.model.api.mcs.dto.StScheduleSchemeDTO;
+import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmConfigEntity;
 import com.iailab.module.model.mcs.sche.dao.StScheduleSchemeDao;
 import com.iailab.module.model.mcs.sche.entity.StScheduleSchemeEntity;
 import com.iailab.module.model.mcs.sche.service.StScheduleSchemeService;
@@ -11,8 +15,7 @@
 import com.iailab.module.model.mcs.sche.vo.StScheduleSchemeSaveReqVO;
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
-import java.util.UUID;
+import java.util.*;
 
 /**
  * @author PanZhibao
@@ -58,6 +61,15 @@
     }
 
     @Override
+    public List<StScheduleSchemeDTO> list(Map<String, Object> params) {
+        QueryWrapper<StScheduleSchemeEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("trigger_method", "1");
+        queryWrapper.eq("trigger_condition", params.get("trigger_condition"));
+        List<StScheduleSchemeEntity> list = baseDao.selectList(queryWrapper);
+        return ConvertUtils.sourceToTarget(list, StScheduleSchemeDTO.class);
+    }
+
+    @Override
     public void updateTime(String id, Date scheduleTime) {
         StScheduleSchemeEntity entity = new StScheduleSchemeEntity();
         entity.setId(id);
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java
index da91e2d..e8a9142 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java
@@ -16,12 +16,16 @@
 import com.iailab.module.model.mdk.sample.SampleConstructor;
 import com.iailab.module.model.mdk.sample.dto.SampleData;
 import com.iailab.module.model.mdk.vo.PredictResultVO;
+import com.iailab.module.model.mpk.common.MdkConstant;
 import com.iailab.module.model.mpk.common.utils.DllUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author PanZhibao
@@ -65,6 +69,11 @@
             }
             IAILModel newModelBean = composeNewModelBean(predictModel);
             HashMap<String, Object> settings = getPredictSettingsByModelId(modelId);
+            // 校验setting必须有pyFile,否则可能导致程序崩溃
+            if (!settings.containsKey(MdkConstant.PY_FILE_KEY)) {
+                throw new RuntimeException("模型设置参数缺少必要信息【" + MdkConstant.PY_FILE_KEY +  "】,请重新上传模型!");
+            }
+
             if (settings == null) {
                 log.error("模型setting不存在,modelId=" + modelId);
                 return null;
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleInfoConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleInfoConstructor.java
index 88b2f9a..3a8e085 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleInfoConstructor.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleInfoConstructor.java
@@ -6,7 +6,6 @@
 import com.iailab.module.model.mcs.pre.service.MmPredictModelService;
 import com.iailab.module.model.mdk.sample.dto.ColumnItem;
 import com.iailab.module.model.mdk.sample.dto.ColumnItemPort;
-import com.iailab.module.model.mdk.sample.dto.SampleInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
@@ -32,11 +31,6 @@
     @Autowired
     private MmPredictItemService mmPredictItemService;
 
-    @Override
-    public SampleInfo prepareSampleInfo(String modelId, Date predictTime) {
-        return super.prepareSampleInfo(modelId, predictTime);
-    }
-
     /**
      * 返回样本矩阵的列数
      *
@@ -46,30 +40,6 @@
     @Override
     protected Integer getSampleColumn(String modelId) {
         return mmPredictModelService.getSampleLength(modelId).intValue();
-    }
-
-    /**
-     * 返回样本的开始时间
-     *
-     * @param columnItem
-     * @param predictTime
-     * @return
-     */
-    @Override
-    protected Date getStartTime(ColumnItem columnItem, Date predictTime) {
-        return super.getStartTime(columnItem, predictTime);
-    }
-
-    /**
-     * 返回样本的结束时间
-     *
-     * @param columnItem
-     * @param predictTime
-     * @return
-     */
-    @Override
-    protected Date getEndTime(ColumnItem columnItem, Date predictTime) {
-        return super.getEndTime(columnItem, predictTime);
     }
 
     /**
@@ -85,7 +55,7 @@
         List<ColumnItem> columnItemList = new ArrayList<>();
         ColumnItem columnInfo = new ColumnItem();
         ColumnItemPort curPort = new ColumnItemPort();  //当前端口
-        List<MmModelParamEntity> modelInputParamEntityList = mmModelParamService.getByModelidFromCatch(modelId);
+        List<MmModelParamEntity> modelInputParamEntityList = mmModelParamService.getByModelidFromCache(modelId);
         if (CollectionUtils.isEmpty(modelInputParamEntityList)) {
             return null;
         }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleFactory.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleFactory.java
index 55ad888..194b6a3 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleFactory.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleFactory.java
@@ -14,6 +14,9 @@
     private PredictSampleInfoConstructor predictSampleInfoConstructor;
 
     @Autowired
+    private ScheduleSampleInfoConstructor scheduleSampleInfoConstructor;
+
+    @Autowired
     private PredictSampleDataConstructor predictSampleDataConstructor;
 
     /**
@@ -24,11 +27,11 @@
      * @return
      */
     public SampleInfoConstructor createSampleInfo(String typeA, String modelId){
-        PredictSampleInfoConstructor sampleInfoConstructor = null;
+        SampleInfoConstructor sampleInfoConstructor = null;
         if (typeA.compareTo(TypeA.Predict.name()) == 0) {
             sampleInfoConstructor = predictSampleInfoConstructor;
         } else if (typeA.compareTo(TypeA.Schedule.name()) == 0) {
-            sampleInfoConstructor = predictSampleInfoConstructor;
+            sampleInfoConstructor = scheduleSampleInfoConstructor;
         }
         return sampleInfoConstructor;
     }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java
index f59556b..3d53588 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java
@@ -46,14 +46,14 @@
      * @param predictTime
      * @return
      */
-    public SampleInfo prepareSampleInfo(String modelId, Date predictTime) {
+    protected SampleInfo prepareSampleInfo(String modelId, Date predictTime) {
         SampleInfo sampleInfo = new SampleInfo();
         //调用样本列数的方法
-        sampleInfo.setSampleColumn(getSampleColumn(modelId));
+//        sampleInfo.setSampleColumn(getSampleColumn(modelId));
         //样本的列信息
         sampleInfo.setColumnInfo(getColumnInfo(modelId, predictTime));
         //样本的采样周期
-        sampleInfo.setSampleCycle(getSampleCycle(modelId));
+//        sampleInfo.setSampleCycle(getSampleCycle(modelId));
         return sampleInfo;
     }
 
@@ -64,6 +64,24 @@
      * @return
      */
     protected abstract Integer getSampleColumn(String modelId);
+
+
+    /**
+     * 样本的列信息
+     *
+     * @param modelId
+     * @param predictTime
+     * @return
+     */
+    protected abstract List<ColumnItemPort> getColumnInfo(String modelId, Date predictTime);
+
+    /**
+     * 样本的采样周期
+     *
+     * @param modelId
+     * @return
+     */
+    protected abstract Integer getSampleCycle(String modelId);
 
     /**
      * 获取开始时间
@@ -176,23 +194,6 @@
         }
         return granularity;
     }
-
-    /**
-     * 样本的列信息
-     *
-     * @param modelId
-     * @param predictTime
-     * @return
-     */
-    protected abstract List<ColumnItemPort> getColumnInfo(String modelId, Date predictTime);
-
-    /**
-     * 样本的采样周期
-     *
-     * @param modelId
-     * @return
-     */
-    protected abstract Integer getSampleCycle(String modelId);
 
     /**
      * 计算取值的时间
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/ScheduleSampleInfoConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/ScheduleSampleInfoConstructor.java
new file mode 100644
index 0000000..6b62536
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/ScheduleSampleInfoConstructor.java
@@ -0,0 +1,79 @@
+package com.iailab.module.model.mdk.sample;
+
+import com.iailab.module.model.mcs.sche.entity.StScheduleModelParamEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleModelParamService;
+import com.iailab.module.model.mdk.sample.dto.ColumnItem;
+import com.iailab.module.model.mdk.sample.dto.ColumnItemPort;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class ScheduleSampleInfoConstructor extends SampleInfoConstructor {
+
+    @Autowired
+    private StScheduleModelParamService stScheduleModelParamService;
+
+    @Override
+    protected Integer getSampleColumn(String modelId) {
+        return null;
+    }
+
+    @Override
+    protected List<ColumnItemPort> getColumnInfo(String modelId, Date predictTime) {
+        List<ColumnItemPort> resultList = new ArrayList<>();
+        List<ColumnItem> columnItemList = new ArrayList<>();
+        ColumnItem columnInfo = new ColumnItem();
+        ColumnItemPort curPort = new ColumnItemPort();  //当前端口
+        List<StScheduleModelParamEntity> modelInputParamEntityList = stScheduleModelParamService.getByModelidFromCache(modelId);
+        if (CollectionUtils.isEmpty(modelInputParamEntityList)) {
+            return null;
+        }
+        //设置当前端口号,初始值为最小端口(查询结果按端口号从小到达排列)
+        int curPortOrder = modelInputParamEntityList.get(0).getModelparamportorder();
+        //设置当前查询数据长度,初始值为最小端口数据长度
+        int curDataLength = modelInputParamEntityList.get(0).getDatalength();
+        for (StScheduleModelParamEntity entry : modelInputParamEntityList) {
+            columnInfo.setParamType(entry.getModelparamtype());
+            columnInfo.setParamId(entry.getModelparamid());
+            columnInfo.setDataLength(entry.getDatalength());
+            columnInfo.setModelParamOrder(entry.getModelparamorder());
+            columnInfo.setModelParamPortOrder(entry.getModelparamportorder());
+            columnInfo.setStartTime(getStartTime(columnInfo, predictTime));
+            columnInfo.setEndTime(getEndTime(columnInfo, predictTime));
+            columnInfo.setGranularity(super.getGranularity(columnInfo));
+
+            //对每一个爪进行数据项归并
+            if (curPortOrder != entry.getModelparamportorder()){
+                //当数据项端口号不为当前端口号时,封装上一个端口类,操作下一个端口类
+                curPort.setColumnItemList(columnItemList);
+                curPort.setDataLength(curDataLength);
+                curPort.setPortOrder(curPortOrder);
+                resultList.add(curPort);
+                curPort = new ColumnItemPort(); //对象重新初始化,防止引用拷贝导致数据覆盖
+                //封装上一个端口类后更新当前的各个参数
+                columnItemList = new ArrayList<>();
+                curDataLength = entry.getDatalength();
+                curPortOrder = entry.getModelparamportorder();
+            }
+            columnItemList.add(columnInfo);
+            columnInfo = new ColumnItem();    //对象重新初始化,防止引用拷贝导致数据覆盖
+        }
+        //当迭代到最后一个项的时候,封装最后一个端口的信息
+        curPort.setColumnItemList(columnItemList);
+        curPort.setDataLength(curDataLength);
+        curPort.setPortOrder(curPortOrder);
+        resultList.add(curPort);
+        return resultList;
+    }
+
+    @Override
+    protected Integer getSampleCycle(String modelId) {
+        return null;
+    }
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java
index 48a5efb..26a3f6c 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java
@@ -2,7 +2,6 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.iail.IAILMDK;
 import com.iail.model.IAILModel;
 import com.iailab.module.model.common.enums.CommonConstant;
 import com.iailab.module.model.mcs.sche.entity.StScheduleModelEntity;
@@ -17,6 +16,7 @@
 import com.iailab.module.model.mdk.sample.dto.SampleData;
 import com.iailab.module.model.mdk.schedule.ScheduleModelHandler;
 import com.iailab.module.model.mdk.vo.ScheduleResultVO;
+import com.iailab.module.model.mpk.common.MdkConstant;
 import com.iailab.module.model.mpk.common.utils.DllUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,7 +24,9 @@
 import org.springframework.util.CollectionUtils;
 
 import java.text.MessageFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * @author PanZhibao
@@ -58,7 +60,6 @@
         }
         String modelId = scheduleModel.getId();
         try {
-            IAILModel newModelBean = new IAILModel();
             //1.根据模型id构造模型输入样本
             List<SampleData> sampleDataList = sampleConstructor.constructSample(TypeA.Schedule.name(), modelId, scheduleTime);
             if (CollectionUtils.isEmpty(sampleDataList)) {
@@ -66,31 +67,25 @@
                 return null;
             }
 
-            //2.拼接newModelBean的参数结构:a.类名、方法名 b.参数类型
-            String className = scheduleModel.getClassName() .trim();
-            String methodName = scheduleModel.getMethodName().trim();
-            newModelBean.setClassName(className);
-            newModelBean.setMethodName(methodName);
-
-            Class<?>[] paramsArray = new Class[3];
-            paramsArray[0] = double[][].class;
-            paramsArray[1] = double[][].class;
-            paramsArray[2] = HashMap.class;
-            newModelBean.setParamsArray(paramsArray);
-
-            //3.拼接settings参数
-            HashMap<String, Object> settings_predict = getPredictSettingsByModelId(modelId);
-
-            //4.构造param2Values参数结构
-            int count = sampleDataList.size();
-            Object[] param2Values = new Object[count + 1];
-            for (int i = 0; i < count; i++) {
+            IAILModel newModelBean = composeNewModelBean(scheduleModel);
+            HashMap<String, Object> settings = getScheduleSettingsByModelId(modelId);
+            if (settings == null) {
+                log.error("模型setting不存在,modelId=" + modelId);
+                return null;
+            }
+            // 校验setting必须有pyFile,否则可能导致程序崩溃
+            if (!settings.containsKey(MdkConstant.PY_FILE_KEY)) {
+                log.error("模型设置参数缺少必要信息【" + MdkConstant.PY_FILE_KEY +  "】,请重新上传模型!");
+                return null;
+            }
+            int portLength = sampleDataList.size();
+            Object[] param2Values = new Object[portLength + 1];
+            for (int i = 0; i < portLength; i++) {
                 param2Values[i] = sampleDataList.get(i).getMatrix();
             }
-            param2Values[count] = settings_predict;
+            param2Values[portLength] = settings;
 
-            //打印参数
-            log.info("##############调度模型:scheduleScheme=" + scheduleScheme.getCode() + " ##########################");
+            log.info("#######################调度模型 " + scheduleModel.getModelName() + " ##########################");
             JSONObject jsonObjNewModelBean = new JSONObject();
             jsonObjNewModelBean.put("newModelBean", newModelBean);
             log.info(String.valueOf(jsonObjNewModelBean));
@@ -98,7 +93,7 @@
             jsonObjParam2Values.put("param2Values", param2Values);
             log.info(String.valueOf(jsonObjParam2Values));
 
-            //运行模型
+            //IAILMDK.run
             HashMap<String, Object> modelResult = DllUtils.run(newModelBean, param2Values, scheduleScheme.getMpkprojectid());
             if (!modelResult.containsKey(CommonConstant.MDK_STATUS_CODE) || !modelResult.containsKey(CommonConstant.MDK_RESULT) ||
                     !modelResult.get(CommonConstant.MDK_STATUS_CODE).toString().equals(CommonConstant.MDK_STATUS_100)) {
@@ -131,60 +126,23 @@
      * @param modelId
      * @return
      */
-    private HashMap<String, Object> getPredictSettingsByModelId(String modelId) {
+    private HashMap<String, Object> getScheduleSettingsByModelId(String modelId) {
         List<StScheduleModelSettingEntity> list = stScheduleModelSettingService.getByModelId(modelId);
         if (CollectionUtils.isEmpty(list)) {
             return null;
         }
         HashMap<String, Object> result = new HashMap<>();
         for (StScheduleModelSettingEntity entry : list) {
-            String valueType = entry.getValuetype().trim();
-            String valueStr = entry.getValue().trim();
+            String valueType = entry.getValuetype().trim(); //去除两端空格
             if ("int".equals(valueType)) {
-                int value = Integer.parseInt(valueStr);
+                int value = Integer.parseInt(entry.getValue());
                 result.put(entry.getKey(), value);
             } else if ("double".equals(valueType)) {
-                double value = Double.parseDouble(valueStr);
+                double value = Double.parseDouble(entry.getValue());
                 result.put(entry.getKey(), value);
             } else if ("string".equals(valueType)) {
-                String value = valueStr;
+                String value = entry.getValue();
                 result.put(entry.getKey(), value);
-            } else if ("float".equals(valueType)) {
-                float value = Float.parseFloat(valueStr);
-                result.put(entry.getKey(), value);
-            } else if ("[[D".equals(valueType)) {
-                String valueStrTemp = entry.getValue();
-                try {
-                    //1.二位数组的行按照"/"来分割
-                    String[] rowList = valueStrTemp.split("/");
-                    int row = rowList.length;
-                    int col = rowList[0].split(",").length;
-                    double[][] value1 = new double[row][col];
-                    for (int i = 0; i < rowList.length; i++) {
-                        //2.二位数组的列按照","来分割
-                        String[] colList = rowList[i].split(",");
-                        for (int j = 0; j < colList.length; j++) {
-                            value1[i][j] = Double.parseDouble(colList[j]);
-                        }
-                    }
-                    //把从数据库的得到的参数的二维数组降为一维数组
-                    //int len =0;
-                    double[] value = new double[row * col];
-                    /*for (int j = 0; j <value1.length ; j++) {
-                        len+= value1.length;
-                    }*/
-                    //value = new double[len];
-                    int index = 0;
-                    for (int i = 0; i < value1.length; i++) {
-                        for (int j = 0; j < value1[i].length; j++) {
-                            value[index++] = value1[i][j];
-                        }
-                    }
-                    result.put(entry.getKey(), value);
-                } catch (Exception ex) {
-                    System.out.println("二维数组类型的setting格式不正确");
-                    ex.printStackTrace();
-                }
             } else if ("decimalArray".equals(valueType)) {
                 JSONArray valueArray = JSONArray.parseArray(entry.getValue());
                 double[] value = new double[valueArray.size()];
@@ -194,10 +152,26 @@
                 result.put(entry.getKey(), value);
             } else if ("decimal".equals(valueType)) {
                 double value = Double.parseDouble(entry.getValue());
-                //BigDecimal value = new BigDecimal(entry.getValue());
                 result.put(entry.getKey(), value);
             }
         }
         return result;
     }
+
+    private IAILModel composeNewModelBean(StScheduleModelEntity model) {
+        IAILModel newModelBean = new IAILModel();
+        newModelBean.setClassName(model.getClassName().trim());
+        newModelBean.setMethodName(model.getMethodName().trim());
+        //构造参数类型
+        Class<?>[] paramsArray = new Class[model.getPortLength() + 1];
+        for (int i = 0; i < model.getPortLength(); i++) {
+            paramsArray[i] = double[][].class;
+        }
+        paramsArray[model.getPortLength()] = HashMap.class;
+        newModelBean.setParamsArray(paramsArray);
+        //
+//        HashMap<String, Object> dataMap = new HashMap<>();
+//        newModelBean.setDataMap(dataMap);
+        return newModelBean;
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MdkController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MdkController.java
index bd527a4..279bf16 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MdkController.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MdkController.java
@@ -110,6 +110,10 @@
             }
 
             try {
+                if (dto.getModelSettings().stream().noneMatch(e -> e.getSettingKey().equals(MdkConstant.PY_FILE_KEY))) {
+                    return error(GlobalErrorCodeConstants.BAD_REQUEST.getCode(),"模型设置参数缺少必要信息【" + MdkConstant.PY_FILE_KEY +  "】,请重新上传模型!");
+                }
+
                 if (dto.getHasModel()) {
                     paramsValueArray[uuids.size()] = dto.getModel();
                     paramsValueArray[uuids.size() + 1] = handleModelSettings(dto.getModelSettings());
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MpkFileController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MpkFileController.java
index 9de4bee..32aae26 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MpkFileController.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MpkFileController.java
@@ -60,8 +60,8 @@
 
     @PreAuthorize("@ss.hasPermission('mpk:file:query')")
     @GetMapping("list")
-    public CommonResult<List<MpkFileDTO>> list() {
-        List<MpkFileDTO> list = mpkFileService.list(new HashMap<>());
+    public CommonResult<List<MpkFileDTO>> list(@RequestParam Map<String, Object> params) {
+        List<MpkFileDTO> list = mpkFileService.list(params);
 
         return success(list);
     }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dao/MpkFileDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dao/MpkFileDao.java
index 356721a..3e61336 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dao/MpkFileDao.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dao/MpkFileDao.java
@@ -30,4 +30,6 @@
     int getProjectModelCount(String projectId);
 
     List<MpkFileDTO> getProjectModel(@Param("params") Map<String, Object> params);
+
+    List<MpkFileDTO> list(@Param("params") Map<String, Object> params);
 }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java
index 8560966..ecac7f6 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java
@@ -87,9 +87,10 @@
 
     @Override
     public List<MpkFileDTO> list(Map<String, Object> params) {
-        List<MpkFileEntity> entityList = baseDao.selectList(getWrapper(params).orderByDesc("create_date"));
+//        List<MpkFileEntity> entityList = baseDao.selectList(getWrapper(params).orderByDesc("create_date"));
+        List<MpkFileDTO> list = baseDao.list(params);
 
-        return ConvertUtils.sourceToTarget(entityList, MpkFileDTO.class);
+        return list;
     }
 
     private QueryWrapper<MpkFileEntity> getWrapper(Map<String, Object> params) {
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mpk/MpkFileDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mpk/MpkFileDao.xml
index 84df17f..6c672b9 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mpk/MpkFileDao.xml
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mpk/MpkFileDao.xml
@@ -102,6 +102,39 @@
         </foreach>
         ORDER BY b.sort,c.sort,d.sort,e.sort,f.sort,a.create_date
     </select>
+    <select id="list" resultMap="mpkFile" parameterType="java.util.Map">
+        SELECT
+        a.*,
+        b.id method_id,
+        b.method_name,
+        b.data_length,
+        b.model,
+        b.result_key,
+        c.id setting_id,
+        c.setting_key,
+        c.name setting_name,
+        c.value,
+        c.type,
+        c.value_type,
+        c.max,
+        c.min,
+        d.id select_id,
+        d.select_key,
+        d.name select_name
+        FROM
+        t_mpk_file a
+        LEFT JOIN t_mpk_model_method b ON a.id = b.mpk_file_id
+        LEFT JOIN t_mpk_method_setting c ON b.id = c.method_id
+        LEFT JOIN t_mpk_setting_select d ON c.id = d.setting_id
+        LEFT JOIN t_mpk_file_menu e ON e.name = a.menu_name
+        LEFT JOIN t_mpk_file_group f ON f.menu_id = e.id and f.name = a.group_name
+        <where>
+            <if test="params.pyType != null and params.pyType != ''">
+                AND a.py_type = #{params.pyType}
+            </if>
+        </where>
+        ORDER BY b.sort,c.sort,d.sort,e.sort,f.sort,a.create_date
+    </select>
     <select id="getProjectModelCount" resultType="java.lang.Integer" parameterType="java.lang.String">
         SELECT
             count(*)

--
Gitblit v1.9.3