From 7fd198b8ebe97cd06b10f96b9179caebe679783c Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期四, 05 九月 2024 10:43:26 +0800
Subject: [PATCH] 重构model

---
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictReqDTO.java                              |   22 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemIncreaseCodeEnum.java                        |   10 
 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemTypeDao.xml                                                      |   24 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmResultTableRespVO.java                            |   26 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmResultTablePageReqVO.java                         |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java                   |  148 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java                          |  197 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmResultTableDao.java                              |   23 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelParamDao.java                               |   13 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/ScheduleSchemeDetailesVo.java                      |   61 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultService.java                       |   22 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java                              |   43 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleParamServiceImpl.java          |   51 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleObjectService.java                  |   27 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/RealDataLackException.java               |   20 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmResultTableController.java                |   79 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/DmModuleDao.java                                   |   22 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictMergeItemEntity.java                   |   41 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleEnergyTypePageReqVO.java                 |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleService.java                        |   26 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictModuleRespDTO.java                       |   23 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemOutputServiceImpl.java              |   78 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeDetailesEntity.java            |   46 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleInfoConstructor.java                   |  142 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleParamSettingServiceImpl.java   |   49 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmModelResultstrController.java             |   40 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleEnergyTypeService.java              |   27 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelArithSettingsEntity.java                 |   55 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleParamService.java                   |   15 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleUserServiceImpl.java           |   74 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/DmModuleItemDao.java                               |   13 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/DmModuleItemServiceImpl.java              |   42 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java                                            |   55 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleEnergyTypeServiceImpl.java     |   75 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictModelService.java                     |   27 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java                          |   73 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/ItemEntityFactory.java                             |  163 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/SamplePrepareException.java              |   19 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleController.java                  |   78 
 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemResultDao.xml                                                    |   32 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java                                 |   33 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleEnergyTypeDao.java                      |   22 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/SequenceNumServiceImpl.java               |   29 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dto/StScheduleModelDto.java                           |   80 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/ColumnItemPort.java                             |   32 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeEvalValueDao.java                 |   13 
 iailab-module-model/iailab-module-model-biz/pom.xml                                                                                              |   90 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictItemServiceImpl.java             |  264 +
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictDataDTO.java                             |   20 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelVO.java                                            |  122 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dto/StSchedulePredictItemDto.java                     |   81 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeDetailesDao.java                  |   25 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemTypeImpl.java                       |   84 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelResultstrEntity.java                     |   29 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleEntity.java                          |   38 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dto/MmPredictItemDTO.java                              |   32 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemOutputPageReqVO.java                          |   19 
 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/mcs/pre/controller/DmModuleController.java                     |   93 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/DataAccessException.java                 |   19 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/ColumnItem.java                                 |   61 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/enums/ApiConstants.java                                        |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemNormalHandlerImpl.java             |   74 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java                                            |  137 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelResultstrServiceImpl.java          |   29 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleFactory.java                                  |   41 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictMergeItemDao.java                         |   13 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/ModelServiceApplication.java                                                |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmModelResultstrPageReqVO.java                      |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/PredictItemFactory.java                            |   40 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ModelInvokeException.java                |   25 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleObjectRespVO.java                        |   28 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelInputParamVO.java                                  |   46 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleRespDTO.java                            |   14 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSchemeService.java                  |   11 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelArithParamVO.java                                  |   30 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/MmItemOutputVO.java                                     |   17 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/ScheduleModelUserParamVo.java                      |   90 
 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictModelDao.xml                                                  |   27 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleObjectDao.java                          |   23 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/enums/ItemPredictStatus.java                        |   27 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/CountItemtypeVO.java                                |   25 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ItemInvokeException.java                 |   22 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/DmModuleRespVO.java                                 |   59 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelUserParamService.java          |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ErrorCalculateFailedException.java       |   19 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictModelEntity.java                       |  130 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageDTO.java                               |   60 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleData.java                                 |   14 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/SequenceNumDao.java                                |   13 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleParamDao.java                           |   13 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmModelResultstrRespVO.java                         |   27 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ItemVO.java                                             |   29 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleUserRespVO.java                          |   28 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemOutputRespVO.java                             |   46 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeDao.java                          |   22 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelParamEntity.java                         |   68 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java              |  170 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEvalValueEntity.java           |   46 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictItemDao.java                              |   39 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java                                            |   41 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleObjectController.java            |   80 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmItemOutputController.java                 |   36 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleEnergyTypeRespVO.java                    |   20 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictMergeItemService.java                 |   15 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleModelDao.java                           |   27 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewRespDTO.java                            |   94 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewReqDTO.java                             |   25 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeEvalTypeDao.java                  |   13 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleObjectEntity.java                    |   37 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleServiceImpl.java               |   72 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmResultTableService.java                      |   25 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictModelServiceImpl.java            |   76 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelArithSettingsService.java               |   17 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleObjectPageReqVO.java                     |   21 
 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictItemDao.xml                                                   |  121 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemTypeEnum.java                                |   24 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEvalTypeEntity.java            |   30 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StSchedulePageReqVO.java                           |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemOutputService.java                       |   30 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/DmModuleEntity.java                             |   74 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmResultTableServiceImpl.java             |   69 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/SequenceNumService.java                        |   13 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/enums/TypeA.java                                    |    9 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java                          |   90 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictItemInfoDTO.java                            |   27 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/DmModuleItemService.java                       |   15 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelUserParamServiceImpl.java |   67 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSchemeDetailesServiceImpl.java |   39 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java                  |  167 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleParamSettingService.java            |   15 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ArithInvokeException.java                |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleParamEntity.java                     |   60 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictItemTreeDTO.java                            |   22 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelParamService.java                       |   17 
 iailab-module-model/iailab-module-model-biz/db/mysql.sql                                                                                         |   79 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleReqDTO.java                             |   20 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictItemEntity.java                        |   99 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictItemService.java                      |   46 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/ModelEntityFactory.java                            |  150 
 iailab-module-model/iailab-module-model-biz/src/main/resources/iailmdk.properties                                                                |    4 
 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemOutputDao.xml                                                    |   49 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultJsonEntity.java                     |   30 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelParamServiceImpl.java              |   45 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictMergeItemServiceImpl.java        |   47 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictItemPageReqVO.java                         |   19 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelServiceImpl.java          |  145 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleModelUserParamDao.java                  |   26 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultEntity.java                         |   39 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmResultTableEntity.java                        |   31 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dto/MmItemOutputDTO.java                               |   40 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemOutputDao.java                               |   27 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/DataValueVO.java                                        |   23 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemOutputEntity.java                         |   52 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictItemRespVO.java                            |   85 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictItemRespDTO.java                         |   23 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java              |  131 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleUserEntity.java                      |   40 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StSchedulePredictItemEntity.java               |   58 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleObjectServiceImpl.java         |   76 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ArrayLengthMisMatchException.java        |   19 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelResultstrService.java                   |   20 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleUserPageReqVO.java                       |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/MergeItemVO.java                                        |   18 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleEnergyTypeController.java        |   86 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/DmModuleItemEntity.java                         |   53 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleParamSettingEntity.java              |   50 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelArithSettingsServiceImpl.java      |   49 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleEnergyTypeEntity.java                |   34 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/DmModulePageReqVO.java                              |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleModelRespVO.java                         |   75 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModelHandler.java                           |   17 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelService.java                   |   31 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleRespVO.java                              |   30 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/PredictResultVO.java                                    |   51 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/dto/MdkDataDTO.java                                 |    9 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleParamSettingDao.java                    |   13 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmItemTypeController.java                   |   82 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleUserController.java              |   80 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSchemeDetailesService.java          |   19 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleDao.java                                |   23 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleModelController.java             |   85 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleModelPageReqVO.java                      |   19 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemTypeService.java                         |   27 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultDao.java                               |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/DmModuleService.java                           |   31 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemTypeRespVO.java                               |   36 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemTypePageReqVO.java                            |   21 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictItemHandler.java                            |   17 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemTypeEntity.java                           |   43 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleUserDao.java                            |   22 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEntity.java                    |   62 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelResultstrDao.java                           |   22 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleModelEntity.java                     |   69 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleModelUserParamEntity.java            |   81 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictModelDao.java                             |   22 
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestDTO.java                            |   74 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmPredictItemController.java                |  113 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleDataConstructor.java                          |   95 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemTypeDao.java                                 |   26 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/SequenceNumEntity.java                          |   48 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleUserService.java                    |   27 
 /dev/null                                                                                                                                        |   14 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/DmModuleServiceImpl.java                  |   95 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemStatus.java                                  |   32 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelArithSettingsDao.java                       |   31 
 206 files changed, 9,552 insertions(+), 107 deletions(-)

diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/api/mdk/MdkApi.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/api/mdk/MdkApi.java
deleted file mode 100644
index 006bbba..0000000
--- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/api/mdk/MdkApi.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.iailab.api.mdk;
-
-import com.iailab.api.mdk.dto.MdkPredictReqDTO;
-import com.iailab.enums.ApiConstants;
-import com.iailab.framework.common.pojo.CommonResult;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.RequestBody;
-
-import javax.validation.Valid;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年08月26日
- */
-@FeignClient(name = ApiConstants.NAME)
-@Tag(name = "RPC 服务 - 部门")
-public interface MdkApi {
-
-    CommonResult<Boolean> predict(@Valid @RequestBody MdkPredictReqDTO reqDTO);
-}
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/api/mdk/dto/MdkPredictReqDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/api/mdk/dto/MdkPredictReqDTO.java
deleted file mode 100644
index 944b277..0000000
--- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/api/mdk/dto/MdkPredictReqDTO.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.iailab.api.mdk.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年08月26日
- */
-@Schema(description = "RPC 模型 - 预测 DTO")
-@Data
-public class MdkPredictReqDTO {
-
-    private Date predictTime;
-
-    private String moduleType;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/enums/ApiConstants.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/enums/ApiConstants.java
deleted file mode 100644
index 5d8d96c..0000000
--- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/enums/ApiConstants.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.iailab.enums;
-
-import com.iailab.framework.common.enums.RpcConstants;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年08月26日
- */
-public class ApiConstants {
-    /**
-     * 服务名
-     *
-     * 注意,需要保证和 spring.application.name 保持一致
-     */
-    public static final String NAME = "model-server";
-
-    public static final String PREFIX = RpcConstants.RPC_API_PREFIX +  "/model";
-
-    public static final String VERSION = "1.0.0";
-}
\ 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/McsApi.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
new file mode 100644
index 0000000..abb31a0
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
@@ -0,0 +1,55 @@
+package com.iailab.module.model.api.mcs;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.module.model.api.mcs.dto.AlarmMessageDTO;
+import com.iailab.module.model.api.mcs.dto.PredictItemInfoDTO;
+import com.iailab.module.model.api.mcs.dto.PredictItemTreeDTO;
+import com.iailab.module.model.api.mcs.dto.ScheduleSuggestDTO;
+import com.iailab.module.model.enums.ApiConstants;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@FeignClient(name = ApiConstants.NAME)
+@Tag(name = "RPC 服务 - MCS")
+public interface McsApi {
+
+    String PREFIX = ApiConstants.PREFIX + "/mcs";
+
+    @GetMapping(PREFIX + "/predict-item-tree")
+    @Operation(summary = "预测项树")
+    CommonResult<List<PredictItemTreeDTO>> getPredictItemTree();
+
+    @GetMapping(PREFIX + "/predict-item-info")
+    @Operation(summary = "预测项详情")
+    CommonResult<PredictItemInfoDTO> getPredictItemInfo(@RequestParam Map<String, Object> params);
+
+    @PostMapping(PREFIX + "/alarm-message/create")
+    @Operation(summary = "添加预警信息")
+    CommonResult<Boolean> createAlarmMessage(@RequestBody AlarmMessageDTO dto);
+
+    @GetMapping(PREFIX + "/alarm-message/list")
+    @Operation(summary = "获取预警信息")
+    CommonResult<AlarmMessageDTO> listAlarmMessage(@RequestParam Map<String, Object> params);
+
+    @PostMapping(PREFIX + "/schedule-suggest/create")
+    @Operation(summary = "添加调度建议")
+    CommonResult<Boolean> createScheduleSuggest(@RequestBody ScheduleSuggestDTO dto);
+
+    @GetMapping(PREFIX + "/alarm-message/list")
+    @Operation(summary = "获取调度建议")
+    CommonResult<ScheduleSuggestDTO> listScheduleSuggest(@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/AlarmMessageDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageDTO.java
new file mode 100644
index 0000000..e4be30f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageDTO.java
@@ -0,0 +1,60 @@
+package com.iailab.module.model.api.mcs.dto;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月29日
+ */
+
+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年08月29日
+ */
+@Schema(description = "RPC 模型 - 预警消息 DTO")
+@Data
+public class AlarmMessageDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "ID")
+    private String id;
+
+    @Schema(description = "消息标题")
+    private String title;
+
+    @Schema(description = "消息内容")
+    private String content;
+
+    @Schema(description = "监控对象")
+    private String alarmObj;
+
+    @Schema(description = "监控点位ID")
+    private String pointId;
+
+    @Schema(description = "预测项ID")
+    private String itemId;
+
+    @Schema(description = "当前值")
+    private BigDecimal currentValue;
+
+    @Schema(description = "超出时间")
+    private Date outTime;
+
+    @Schema(description = "超出值")
+    private BigDecimal outValue;
+
+    @Schema(description = "预警类型")
+    private String alarmType;
+
+    @Schema(description = "预警时间")
+    private Date alarmTime;
+
+}
\ 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/PreDataViewReqDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewReqDTO.java
new file mode 100644
index 0000000..3ae56b2
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewReqDTO.java
@@ -0,0 +1,25 @@
+package com.iailab.module.model.api.mcs.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "RPC 模型 - 预测数据 DTO")
+@Data
+public class PreDataViewReqDTO {
+
+    @Schema(description = "预测项ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private String itemId;
+
+    private String startTime;
+
+    private String endTime;
+
+    private Date predictTime;
+}
\ 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/PreDataViewRespDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewRespDTO.java
new file mode 100644
index 0000000..add373f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewRespDTO.java
@@ -0,0 +1,94 @@
+package com.iailab.module.model.api.mcs.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "RPC 模型 - 预测数据 DTO")
+@Data
+public class PreDataViewRespDTO {
+
+    @Schema(description = "预测项ID")
+    private String itemId;
+
+    @Schema(description = "预测项名称")
+    private String itemName;
+
+    @Schema(description = "预测时间")
+    private Date predictTime;
+
+    @Schema(description = "量程上限")
+    private BigDecimal rangeH;
+
+    @Schema(description = "量程下限")
+    private BigDecimal rangeL;
+
+    @Schema(description = "柜位上限")
+    private BigDecimal deadLineH;
+
+    @Schema(description = "柜位下限")
+    private BigDecimal deadLineL;
+
+    @Schema(description = "运行上限")
+    private BigDecimal limtH;
+
+    @Schema(description = "运行下限")
+    private BigDecimal limtL;
+
+    @Schema(description = "最大值")
+    private BigDecimal maxValue;
+
+    @Schema(description = "最小值")
+    private BigDecimal minValue;
+
+    @Schema(description = "历史最大值")
+    private BigDecimal hisMax;
+
+    @Schema(description = "历史最小值")
+    private BigDecimal hisMin;
+
+    @Schema(description = "历史平均值")
+    private BigDecimal hisAvg;
+
+    @Schema(description = "历史最大值")
+    private BigDecimal hisCumulant;
+
+    @Schema(description = "预测最大值")
+    private BigDecimal preMax;
+
+    @Schema(description = "预测最小值")
+    private BigDecimal preMin;
+
+    @Schema(description = "预测平均值")
+    private BigDecimal preAvg;
+
+    @Schema(description = "预测累计值")
+    private BigDecimal preCumulant;
+
+    @Schema(description = "属性")
+    private Map<String, Object> prop;
+
+    @Schema(description = "真实值")
+    private List<Object[]> realData;
+
+    @Schema(description = "T+N预测值,N表示预测频率")
+    private List<Object[]> preDataN;
+
+    @Schema(description = "T+L预测值,L表示预测长度")
+    private List<Object[]> preDataL;
+
+    @Schema(description = "当时预测值")
+    private List<Object[]> curData;
+
+    @Schema(description = "调整值")
+    private List<Object[]> adjData;
+}
\ 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/PredictItemInfoDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictItemInfoDTO.java
new file mode 100644
index 0000000..3e5f060
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictItemInfoDTO.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.api.mcs.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年07月31日
+ */
+@Data
+public class PredictItemInfoDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String itemId;
+
+    private String itemNo;
+
+    private String itemName;
+
+    private BigDecimal predictLength;
+}
\ 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/PredictItemTreeDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictItemTreeDTO.java
new file mode 100644
index 0000000..eee163a
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictItemTreeDTO.java
@@ -0,0 +1,22 @@
+package com.iailab.module.model.api.mcs.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年07月31日
+ */
+@Data
+public class PredictItemTreeDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    private String label;
+
+    private List<PredictItemTreeDTO> children;
+}
\ 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/ScheduleSuggestDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestDTO.java
new file mode 100644
index 0000000..9151fae
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestDTO.java
@@ -0,0 +1,74 @@
+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年08月29日
+ */
+@Schema(description = "RPC 模型 - 调度建议 DTO")
+@Data
+public class ScheduleSuggestDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @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 alarmId;
+
+    @Schema(description = "预测项ID")
+    private String itemId;
+
+    @Schema(description = "模型ID")
+    private String modelId;
+
+    @Schema(description = "调整对象")
+    private String adjustObj;
+
+    @Schema(description = "调整介质")
+    private String adjustMedium;
+
+    @Schema(description = "调整策略")
+    private String adjustStrategy;
+
+    @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 suggestTime;
+
+    @Schema(description = "状态(0未处理 1已采纳 2已忽略)")
+    private Integer status;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java
new file mode 100644
index 0000000..d098d94
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/MdkApi.java
@@ -0,0 +1,41 @@
+package com.iailab.module.model.api.mdk;
+
+import com.iailab.module.model.api.mdk.dto.*;
+import com.iailab.module.model.enums.ApiConstants;
+import com.iailab.framework.common.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@FeignClient(name = ApiConstants.NAME)
+@Tag(name = "RPC 服务 - MDK")
+public interface MdkApi {
+
+    String PREFIX = ApiConstants.PREFIX + "/mdk";
+
+    @GetMapping(PREFIX + "/predict-module")
+    @Operation(summary = "模块预测")
+    CommonResult<MdkPredictModuleRespDTO> predictModule(@Valid @RequestBody MdkPredictReqDTO reqDTO);
+
+    @GetMapping(PREFIX + "/predict-item")
+    @Operation(summary = "单独预测")
+    CommonResult<MdkPredictItemRespDTO> predictItem(@Valid @RequestBody MdkPredictReqDTO reqDTO);
+
+    @GetMapping(PREFIX + "/predict-auto-adjust")
+    @Operation(summary = "预测自动调整")
+    CommonResult<Boolean> predictAutoAdjust(@Valid @RequestBody MdkPredictReqDTO reqDTO);
+
+
+    @GetMapping(PREFIX + "/schedule")
+    @Operation(summary = "执行调度")
+    CommonResult<MdkScheduleRespDTO> doSchedule(@Valid @RequestBody MdkScheduleReqDTO reqDTO);
+}
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictDataDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictDataDTO.java
new file mode 100644
index 0000000..2391f63
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictDataDTO.java
@@ -0,0 +1,20 @@
+package com.iailab.module.model.api.mdk.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "RPC 模型 - 预测数据 DTO")
+@Data
+public class MdkPredictDataDTO {
+
+    private Date dataTime;
+
+    private Double dataValue;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictItemRespDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictItemRespDTO.java
new file mode 100644
index 0000000..d67c117
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictItemRespDTO.java
@@ -0,0 +1,23 @@
+package com.iailab.module.model.api.mdk.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "RPC 模型 - 调度 DTO")
+@Data
+public class MdkPredictItemRespDTO {
+
+    private String itemId;
+
+    private Date predictTime;
+
+    private List<MdkPredictDataDTO> predictData;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictModuleRespDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictModuleRespDTO.java
new file mode 100644
index 0000000..987fb79
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictModuleRespDTO.java
@@ -0,0 +1,23 @@
+package com.iailab.module.model.api.mdk.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "RPC 模型 - 调度 DTO")
+@Data
+public class MdkPredictModuleRespDTO {
+
+    private Date predictTime;
+
+    private String moduleType;
+
+    private Map<String, MdkPredictItemRespDTO> predictItemRespMap;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictReqDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictReqDTO.java
new file mode 100644
index 0000000..0cef75c
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictReqDTO.java
@@ -0,0 +1,22 @@
+package com.iailab.module.model.api.mdk.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "RPC 模型 - 预测 DTO")
+@Data
+public class MdkPredictReqDTO {
+
+    private Date predictTime;
+
+    private String moduleType;
+
+    private String itemNo;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleReqDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleReqDTO.java
new file mode 100644
index 0000000..f4bb80e
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleReqDTO.java
@@ -0,0 +1,20 @@
+package com.iailab.module.model.api.mdk.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "RPC 模型 - 调度 DTO")
+@Data
+public class MdkScheduleReqDTO {
+
+    private Date scheduleTime;
+
+    private String modelCode;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleRespDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleRespDTO.java
new file mode 100644
index 0000000..40e1861
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleRespDTO.java
@@ -0,0 +1,14 @@
+package com.iailab.module.model.api.mdk.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Schema(description = "RPC 模型 - 调度 DTO")
+@Data
+public class MdkScheduleRespDTO {
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/enums/ApiConstants.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/enums/ApiConstants.java
new file mode 100644
index 0000000..8d1ef28
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/enums/ApiConstants.java
@@ -0,0 +1,21 @@
+package com.iailab.module.model.enums;
+
+import com.iailab.framework.common.enums.RpcConstants;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+public class ApiConstants {
+    /**
+     * 服务名
+     *
+     * 注意,需要保证和 spring.application.name 保持一致
+     */
+    public static final String NAME = "model-server";
+
+    public static final String PREFIX = RpcConstants.RPC_API_PREFIX +  "/model";
+
+    public static final String VERSION = "1.0.0";
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/db/mysql.sql b/iailab-module-model/iailab-module-model-biz/db/mysql.sql
index 2b3e68e..4bab7e5 100644
--- a/iailab-module-model/iailab-module-model-biz/db/mysql.sql
+++ b/iailab-module-model/iailab-module-model-biz/db/mysql.sql
@@ -437,22 +437,47 @@
 ) engine = innodb
   default character set utf8mb4;
 
-create table
-  t_mm_predict_alarm_message
+create table t_mm_predict_alarm_config
 (
-  id           varchar(64) not null,
-  item_id      varchar(64),
-  title        varchar(64),
-  content      varchar(128),
-  predict_time datetime,
-  out_time     datetime,
-  create_time  datetime default current_timestamp,
-  type         varchar(64),
+  id            varchar(36) not null,
+  title         varchar(36) COMMENT '消息标题',
+  alarm_obj     varchar(36) COMMENT '监控对象',
+  item_id       varchar(36) COMMENT '预测项ID',
+  comp_length   int COMMENT '比较长度',
+  upper_limit   decimal(10, 4) COMMENT '上限',
+  lower_limit   decimal(10, 4) COMMENT '下限',
+  unit          varchar(10) COMMENT '单位',
+  coefficient   decimal(10, 4) COMMENT '转换系数',
+  model_id      varchar(36) COMMENT '调度建议模型',
+  is_enable     tinyint     NOT NULL COMMENT '是否启用(0禁用 1启用)',
+  `creator`     varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
+  `create_time` datetime    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `updater`     varchar(64)          DEFAULT '' COMMENT '更新者',
+  `update_time` datetime    NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  primary key (id)
+) engine = innodb
+  default character set utf8mb4 COMMENT = '预警配置表';
+
+create table t_mm_predict_alarm_message
+(
+  id            varchar(36) not null,
+  title         varchar(36) COMMENT '消息标题',
+  content       varchar(128) COMMENT '消息内容',
+  alarm_obj     varchar(36) COMMENT '监控对象',
+  point_id      varchar(36) COMMENT '监控点位ID',
+  item_id       varchar(36) COMMENT '预测项ID',
+  current_value decimal(18, 4) COMMENT '当前值',
+  out_time      datetime COMMENT '超出时间',
+  out_value     decimal(18, 4) COMMENT '超出值',
+  alarm_type    varchar(10) COMMENT '预警类型',
+  alarm_time    datetime COMMENT '预警时间',
+  create_time   datetime    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   primary key (id),
   key idx_item_id (item_id),
-  key idx_type (type)
+  key idx_alarm_obj (alarm_obj),
+  key idx_alarm_time (alarm_time)
 ) engine = innodb
-  default character set utf8mb4;
+  default character set utf8mb4 COMMENT = '预警消息表';
 
 create table
   t_mm_item_result_json
@@ -502,17 +527,27 @@
 create table
   t_st_schedule_suggest
 (
-  id          varchar(64) not null,
-  title       varchar(128),
-  content     varchar(256),
-  order_index integer,
-  type        varchar(64),
-  item_id     varchar(64),
-  is_adjusted integer,
-  model_id    varchar(64),
-  create_time datetime default current_timestamp,
+  id              varchar(36) not null,
+  title           varchar(50) COMMENT '标题',
+  content         varchar(256) COMMENT '内容',
+  sort            integer COMMENT '排序',
+  alarm_id        varchar(36) COMMENT '预警ID',
+  item_id         varchar(36) COMMENT '预测项ID',
+  model_id        varchar(36) COMMENT '模型ID',
+  adjust_obj      varchar(20) COMMENT '调整对象',
+  adjust_medium   varchar(20) COMMENT '调整介质',
+  adjust_strategy varchar(20) COMMENT '调整策略',
+  adjust_mode     varchar(20) COMMENT '调整方式',
+  adjust_value    decimal(18, 4) COMMENT '调整值',
+  adjust_unit     varchar(20) COMMENT '调整单位',
+  adjust_times    decimal(18, 4) COMMENT '持续时长',
+  adjust_start     datetime COMMENT '调整开始时间',
+  adjust_end       datetime COMMENT '调整结束时间',
+  suggest_time    datetime COMMENT '建议时间',
+  status          tinyint     NOT NULL COMMENT '状态(0未处理 1已采纳 2已忽略)',
+  create_time     datetime default current_timestamp COMMENT '创建时间',
   primary key (id),
   key idx_model_id (model_id),
   key idx_type (type)
 ) engine = innodb
-  default character set utf8mb4;
\ No newline at end of file
+  default character set utf8mb4 COMMENT = '调度建议表';
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/pom.xml b/iailab-module-model/iailab-module-model-biz/pom.xml
index 5627af3..5271e15 100644
--- a/iailab-module-model/iailab-module-model-biz/pom.xml
+++ b/iailab-module-model/iailab-module-model-biz/pom.xml
@@ -15,6 +15,7 @@
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <mdk.version>MDK.taisteel.202308231710</mdk.version>
     </properties>
 
     <dependencies>
@@ -94,37 +95,6 @@
             <version>2.3.2</version>
         </dependency>
 
-<!--        <dependency>-->
-<!--            <groupId>org.quartz-scheduler</groupId>-->
-<!--            <artifactId>quartz</artifactId>-->
-<!--            <version>${quartz.version}</version>-->
-<!--            <exclusions>-->
-<!--                <exclusion>-->
-<!--                    <groupId>com.mchange</groupId>-->
-<!--                    <artifactId>c3p0</artifactId>-->
-<!--                </exclusion>-->
-<!--                <exclusion>-->
-<!--                    <groupId>com.zaxxer</groupId>-->
-<!--                    <artifactId>HikariCP-java6</artifactId>-->
-<!--                </exclusion>-->
-<!--            </exclusions>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>cn.afterturn</groupId>-->
-<!--            <artifactId>easypoi-base</artifactId>-->
-<!--            <version>${easypoi.version}</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>cn.afterturn</groupId>-->
-<!--            <artifactId>easypoi-web</artifactId>-->
-<!--            <version>${easypoi.version}</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>cn.afterturn</groupId>-->
-<!--            <artifactId>easypoi-annotation</artifactId>-->
-<!--            <version>${easypoi.version}</version>-->
-<!--        </dependency>-->
-
         <!-- 引用POI -->
         <dependency>
             <groupId>org.apache.poi</groupId>
@@ -139,46 +109,6 @@
             <scope>compile</scope>
         </dependency>
 
-        <!-- ModBus TCP -->
-        <dependency>
-            <groupId>com.infiniteautomation</groupId>
-            <artifactId>modbus4j</artifactId>
-            <version>3.0.4</version>
-        </dependency>
-
-        <!-- OPC UA -->
-        <dependency>
-            <groupId>org.eclipse.milo</groupId>
-            <artifactId>sdk-client</artifactId>
-            <version>0.6.9</version>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.milo</groupId>
-            <artifactId>sdk-server</artifactId>
-            <version>0.6.9</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>31.0.1-jre</version>
-        </dependency>
-        <dependency>
-            <groupId>org.quartz-scheduler</groupId>
-            <artifactId>quartz</artifactId>
-            <version>2.3.2</version>
-        </dependency>
-        <!-- influxdb -->
-        <dependency>
-            <groupId>com.influxdb</groupId>
-            <artifactId>influxdb-client-java</artifactId>
-            <version>6.8.0</version>
-        </dependency>
-
-        <!-- websocket -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-websocket</artifactId>
-        </dependency>
         <dependency>
             <groupId>com.iailab</groupId>
             <artifactId>iailab-module-data-biz</artifactId>
@@ -192,6 +122,24 @@
             <scope>test</scope>
         </dependency>
 
+        <!-- 引用MDK -->
+        <dependency>
+            <groupId>com.iail</groupId>
+            <artifactId>IAILMDK</artifactId>
+            <version>0.94.9</version>
+        </dependency>
+        <dependency>
+            <groupId>com.iail</groupId>
+            <artifactId>MDK</artifactId>
+            <version>${mdk.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.iail</groupId>
+            <artifactId>IAILMDK</artifactId>
+            <version>0.94.9</version>
+        </dependency>
+
+
     </dependencies>
 
     <build>
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/ModelServiceApplication.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/ModelServiceApplication.java
index 18ac48e..2dc1c60 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/ModelServiceApplication.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/ModelServiceApplication.java
@@ -3,10 +3,31 @@
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import com.iail.IAILMDK;
+import org.springframework.scheduling.annotation.EnableAsync;
 
+import java.io.InputStream;
+import java.util.Properties;
+
+@EnableAsync
 @SpringBootApplication
 public class ModelServiceApplication implements CommandLineRunner {
 
+    static {
+        //加载动态链接库
+        try {
+            Properties properties = new Properties();
+            InputStream in = ModelServiceApplication.class.getClassLoader().getResourceAsStream("iailmdk.properties");
+            properties.load(in);
+            String mdkInitPath = properties.getProperty("mdk-init-path");
+            System.out.println("mdkInitPath=" + mdkInitPath);
+            IAILMDK.initWithBean(mdkInitPath, false);
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.out.println("动态链接库IAILMDK初始化失败");
+        }
+    }
+
 
     public static void main(String[] args) {
         SpringApplication.run(ModelServiceApplication.class, args);
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/annotation/DataFilter.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/annotation/DataFilter.java
deleted file mode 100644
index 3634883..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/annotation/DataFilter.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Copyright (c) 2018 人人开源 All rights reserved.
- *
- * https://www.renren.io
- *
- * 版权所有,侵权必究!
- */
-
-package com.iailab.common.annotation;
-
-import java.lang.annotation.*;
-
-/**
- * 数据过滤注解
- *
- * @author Mark sunlightcs@gmail.com
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface DataFilter {
-    /**
-     * 表的别名
-     */
-    String tableAlias() default "";
-
-    /**
-     * 用户ID
-     */
-    String userId() default "creator";
-
-    /**
-     * 部门ID
-     */
-    String deptId() default "dept_id";
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/annotation/LogOperation.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/annotation/LogOperation.java
deleted file mode 100644
index 13d06d8..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/annotation/LogOperation.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Copyright (c) 2018 人人开源 All rights reserved.
- *
- * https://www.renren.io
- *
- * 版权所有,侵权必究!
- */
-
-package com.iailab.common.annotation;
-
-import java.lang.annotation.*;
-
-/**
- * 操作日志注解
- *
- * @author Mark sunlightcs@gmail.com
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface LogOperation {
-
-	String value() default "";
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/config/MybatisPlusConfig.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/config/MybatisPlusConfig.java
deleted file mode 100644
index 8a07c72..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/config/MybatisPlusConfig.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.iailab.common.config;
-
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import com.iailab.framework.mybatis.interceptor.DataFilterInterceptor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * mybatis-plus配置
- *
- * @author Mark sunlightcs@gmail.com
- * @since 1.0.0
- */
-@Configuration
-public class MybatisPlusConfig {
-
-    @Bean
-    public MybatisPlusInterceptor mybatisPlusInterceptor() {
-        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
-        // 数据权限
-        mybatisPlusInterceptor.addInnerInterceptor(new DataFilterInterceptor());
-        // 分页插件
-        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
-        // 乐观锁
-        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
-        // 防止全表更新与删除
-        mybatisPlusInterceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
-
-        return mybatisPlusInterceptor;
-    }
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/CommonConstant.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/CommonConstant.java
deleted file mode 100644
index bab24ad..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/CommonConstant.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.iailab.common.enums;
-
-
-/**
- * @Description: 通用常量
- */
-public interface CommonConstant {
-
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/HttpMethodEnum.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/HttpMethodEnum.java
deleted file mode 100644
index 5191e0c..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/HttpMethodEnum.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.iailab.common.enums;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年07月28日 11:28:00
- */
-public enum HttpMethodEnum {
-    GET("GET"),
-    POST("POST");
-
-    private String value;
-
-    HttpMethodEnum(String value) {
-        this.value = value;
-    }
-
-    public String value() {
-        return this.value;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/IsEnableEnum.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/IsEnableEnum.java
deleted file mode 100644
index 2a8f5fe..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/IsEnableEnum.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.iailab.common.enums;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年07月17日 17:41:00
- */
-public enum IsEnableEnum {
-    DISABLE(0), // 手动
-    ENABLE(1);  //自动
-
-    private Integer value;
-
-    IsEnableEnum(Integer value) {
-        this.value = value;
-    }
-
-    public Integer value() {
-        return this.value;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/ModelTypeEnum.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/ModelTypeEnum.java
deleted file mode 100644
index cb92880..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/enums/ModelTypeEnum.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.iailab.common.enums;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年07月20日 08:47:00
- */
-public enum ModelTypeEnum {
-    Python("Python"),
-    MATLAB("MATLAB");
-
-    private String value;
-
-    ModelTypeEnum(String value) {
-        this.value = value;
-    }
-
-    public String value() {
-        return this.value;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/exception/RRException.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/exception/RRException.java
deleted file mode 100644
index 64788a7..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/exception/RRException.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.iailab.common.exception;
-
-/**
- * 自定义异常
- *
- * @author Mark sunlightcs@gmail.com
- */
-public class RRException extends RuntimeException {
-	private static final long serialVersionUID = 1L;
-
-    private String msg;
-    private int code = 500;
-
-    public RRException(String msg) {
-		super(msg);
-		this.msg = msg;
-	}
-
-	public RRException(String msg, Throwable e) {
-		super(msg, e);
-		this.msg = msg;
-	}
-
-	public RRException(String msg, int code) {
-		super(msg);
-		this.msg = msg;
-		this.code = code;
-	}
-
-	public RRException(String msg, int code, Throwable e) {
-		super(msg, e);
-		this.msg = msg;
-		this.code = code;
-	}
-
-	public String getMsg() {
-		return msg;
-	}
-
-	public void setMsg(String msg) {
-		this.msg = msg;
-	}
-
-	public int getCode() {
-		return code;
-	}
-
-	public void setCode(int code) {
-		this.code = code;
-	}
-
-
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/interceptor/DataFilterInterceptor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/interceptor/DataFilterInterceptor.java
deleted file mode 100644
index 73fc509..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/interceptor/DataFilterInterceptor.java
+++ /dev/null
@@ -1,89 +0,0 @@
-///**
-// * Copyright (c) 2018 人人开源 All rights reserved.
-// *
-// * https://www.renren.io
-// *
-// * 版权所有,侵权必究!
-// */
-//
-//package com.iailab.common.interceptor;
-//
-//import cn.hutool.core.util.StrUtil;
-//import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
-//import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
-//import net.sf.jsqlparser.JSQLParserException;
-//import net.sf.jsqlparser.expression.Expression;
-//import net.sf.jsqlparser.expression.StringValue;
-//import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
-//import net.sf.jsqlparser.parser.CCJSqlParserUtil;
-//import net.sf.jsqlparser.statement.select.PlainSelect;
-//import net.sf.jsqlparser.statement.select.Select;
-//import org.apache.ibatis.executor.Executor;
-//import org.apache.ibatis.mapping.BoundSql;
-//import org.apache.ibatis.mapping.MappedStatement;
-//import org.apache.ibatis.session.ResultHandler;
-//import org.apache.ibatis.session.RowBounds;
-//
-//import java.util.Map;
-//
-///**
-// * 数据过滤
-// *
-// * @author Mark sunlightcs@gmail.com
-// */
-//public class DataFilterInterceptor implements InnerInterceptor {
-//
-//    @Override
-//    public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
-//        DataScope scope = getDataScope(parameter);
-//        // 不进行数据过滤
-//        if(scope == null || StrUtil.isBlank(scope.getSqlFilter())){
-//            return;
-//        }
-//
-//        // 拼接新SQL
-//        String buildSql = getSelect(boundSql.getSql(), scope);
-//
-//        // 重写SQL
-//        PluginUtils.mpBoundSql(boundSql).sql(buildSql);
-//    }
-//
-//    private DataScope getDataScope(Object parameter){
-//        if (parameter == null){
-//            return null;
-//        }
-//
-//        // 判断参数里是否有DataScope对象
-//        if (parameter instanceof Map) {
-//            Map<?, ?> parameterMap = (Map<?, ?>) parameter;
-//            for (Map.Entry entry : parameterMap.entrySet()) {
-//                if (entry.getValue() != null && entry.getValue() instanceof DataScope) {
-//                    return (DataScope) entry.getValue();
-//                }
-//            }
-//        } else if (parameter instanceof DataScope) {
-//            return (DataScope) parameter;
-//        }
-//
-//        return null;
-//    }
-//
-//    private String getSelect(String buildSql, DataScope scope){
-//        try {
-//            Select select = (Select) CCJSqlParserUtil.parse(buildSql);
-//            PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
-//
-//            Expression expression = plainSelect.getWhere();
-//            if(expression == null){
-//                plainSelect.setWhere(new StringValue(scope.getSqlFilter()));
-//            }else{
-//                AndExpression andExpression =  new AndExpression(expression, new StringValue(scope.getSqlFilter()));
-//                plainSelect.setWhere(andExpression);
-//            }
-//
-//            return select.toString().replaceAll("'", "");
-//        }catch (JSQLParserException e){
-//            return buildSql;
-//        }
-//    }
-//}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/interceptor/DataScope.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/interceptor/DataScope.java
deleted file mode 100644
index a2e5b49..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/interceptor/DataScope.java
+++ /dev/null
@@ -1,36 +0,0 @@
-///**
-// * Copyright (c) 2018 人人开源 All rights reserved.
-// *
-// * https://www.renren.io
-// *
-// * 版权所有,侵权必究!
-// */
-//
-//package com.iailab.common.interceptor;
-//
-///**
-// * 数据范围
-// *
-// * @author Mark sunlightcs@gmail.com
-// * @since 1.0.0
-// */
-//public class DataScope {
-//    private String sqlFilter;
-//
-//    public DataScope(String sqlFilter) {
-//        this.sqlFilter = sqlFilter;
-//    }
-//
-//    public String getSqlFilter() {
-//        return sqlFilter;
-//    }
-//
-//    public void setSqlFilter(String sqlFilter) {
-//        this.sqlFilter = sqlFilter;
-//    }
-//
-//    @Override
-//    public String toString() {
-//        return this.sqlFilter;
-//    }
-//}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/CommonUtils.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/CommonUtils.java
deleted file mode 100644
index 556f90e..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/CommonUtils.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.iailab.common.utils;
-
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-public class CommonUtils {
-    /**
-     *<p>获取当前日期<p>
-     *<p>格式yyyyMMdd<p>
-   */
-    public static String getCurrDate(){
-    	Date date=new Date(); 
-    	SimpleDateFormat df1 = new SimpleDateFormat("yyyyMMdd"); 
-		String tDate = df1.format(date);   
-    	return tDate;
-    }
-    
-    /**
-     *<p>获取当前时间<p>
-     *<p>格式yyyyMMddHHmmss<p>
-   */
-    public static String getCurrDate2(){
-    	Date date=new Date(); 
-    	SimpleDateFormat df1 = new SimpleDateFormat("yyyyMMddHHmmss"); 
-		String tDate = df1.format(date);   
-    	return tDate;
-    }
-    
-    /**
-     *<p>获取当前时间<p>
-     *<p>格式yyyy-MM-dd HH:mm:ss<p>
-   */
-    public static String getCurrDate3(){
-    	Date date=new Date(); 
-    	SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
-		String tDate = df1.format(date);   
-    	return tDate;
-    }
-    
-	  /**
-	   * 由年月日时分秒+3位随机数
-	   * 生成流水号
-	   * @return
-	   */
-	  public static Long Getnum(){
-		  String t = getCurrDate2();
-		  int x=(int)(Math.random()*900)+100;
-		  String serial = t + x;
-		  Long num = new Long(serial);
-		  return num;
-	  }
-
-	public static BigDecimal getJSONValue(Object obj) {
-	  	if (obj == null) {
-	  		return null;
-		}
-	  	return new BigDecimal(obj.toString());
-	}
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/Constant.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/Constant.java
deleted file mode 100644
index 03d628e..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/Constant.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.iailab.common.utils;
-
-/**
- * 常量
- *
- * @author Mark sunlightcs@gmail.com
- */
-public class Constant {
-	/** 超级管理员ID */
-	public static final String SUPER_ADMIN = "1";
-    /**
-     * 当前页码
-     */
-    public static final String PAGE = "page";
-    /**
-     * 每页显示记录数
-     */
-    public static final String LIMIT = "limit";
-    /**
-     * 排序字段
-     */
-    public static final String ORDER_FIELD = "sidx";
-    /**
-     * 排序方式
-     */
-    public static final String ORDER = "order";
-    /**
-     *  升序
-     */
-    public static final String ASC = "asc";
-	/**
-	 * 菜单类型
-	 *
-	 * @author chenshun
-	 * @email sunlightcs@gmail.com
-	 * @date 2016年11月15日 下午1:24:29
-	 */
-    public enum MenuType {
-        /**
-         * 目录
-         */
-    	CATALOG(0),
-        /**
-         * 菜单
-         */
-        MENU(1),
-        /**
-         * 按钮
-         */
-        BUTTON(2);
-
-        private int value;
-
-        MenuType(int value) {
-            this.value = value;
-        }
-
-        public int getValue() {
-            return value;
-        }
-    }
-
-    /**
-     * 定时任务状态
-     *
-     * @author chenshun
-     * @email sunlightcs@gmail.com
-     * @date 2016年12月3日 上午12:07:22
-     */
-    public enum ScheduleStatus {
-        /**
-         * 正常
-         */
-    	NORMAL(0),
-        /**
-         * 暂停
-         */
-    	PAUSE(1);
-
-        private int value;
-
-        ScheduleStatus(int value) {
-            this.value = value;
-        }
-
-        public int getValue() {
-            return value;
-        }
-    }
-
-    /**
-     * 云服务商
-     */
-    public enum CloudService {
-        /**
-         * 七牛云
-         */
-        QINIU(1),
-        /**
-         * 阿里云
-         */
-        ALIYUN(2),
-        /**
-         * 腾讯云
-         */
-        QCLOUD(3);
-
-        private int value;
-
-        CloudService(int value) {
-            this.value = value;
-        }
-
-        public int getValue() {
-            return value;
-        }
-    }
-
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/DateUtils.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/DateUtils.java
deleted file mode 100644
index ef64f0a..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/DateUtils.java
+++ /dev/null
@@ -1,219 +0,0 @@
-package com.iailab.common.utils;
-
-import org.apache.commons.lang3.StringUtils;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.format.DateTimeFormat;
-import org.joda.time.format.DateTimeFormatter;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * 日期处理
- *
- * @author Mark sunlightcs@gmail.com
- */
-public class DateUtils {
-    /** 时间格式(yyyy-MM-dd) */
-    public final static String DATE_PATTERN = "yyyy-MM-dd";
-    /** 时间格式(yyyy-MM-dd HH:mm:ss) */
-    public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
-
-    public final static String DATE_TIME_PATTERN_MIN = "yyyy-MM-dd HH:mm";
-
-    public final static String TIME2_PATTERN = "mmss";
-
-    public final static String DATE_PATTERN_MON = "yyyy-MM";
-
-    public final static String DATE_PATTERN_YEAR = "yyyy-MM";
-
-    /**
-     * 日期格式化 日期格式为:yyyy-MM-dd
-     * @param date  日期
-     * @return 返回yyyy-MM-dd格式日期
-     */
-    public static String format(Date date) {
-        return format(date, DATE_PATTERN);
-    }
-
-    /**
-     * 日期格式化 日期格式为:yyyy-MM-dd
-     * @param date  日期
-     * @param pattern  格式,如:DateUtils.DATE_TIME_PATTERN
-     * @return 返回yyyy-MM-dd格式日期
-     */
-    public static String format(Date date, String pattern) {
-        if (date != null) {
-            SimpleDateFormat df = new SimpleDateFormat(pattern);
-            return df.format(date);
-        }
-        return null;
-    }
-
-    /**
-     * 日期解析
-     * @param date  日期
-     * @param pattern  格式,如:DateUtils.DATE_TIME_PATTERN
-     * @return 返回Date
-     */
-    public static Date parse(String date, String pattern) {
-        try {
-            return new SimpleDateFormat(pattern).parse(date);
-        } catch (ParseException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    /**
-     * 字符串转换成日期
-     * @param strDate 日期字符串
-     * @param pattern 日期的格式,如:DateUtils.DATE_TIME_PATTERN
-     */
-    public static Date stringToDate(String strDate, String pattern) {
-        if (StringUtils.isBlank(strDate)) {
-            return null;
-        }
-
-        DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern);
-        return fmt.parseLocalDateTime(strDate).toDate();
-    }
-
-    /**
-     * 根据周数,获取开始日期、结束日期
-     * @param week  周期  0本周,-1上周,-2上上周,1下周,2下下周
-     * @return 返回date[0]开始日期、date[1]结束日期
-     */
-    public static Date[] getWeekStartAndEnd(int week) {
-        DateTime dateTime = new DateTime();
-        LocalDate date = new LocalDate(dateTime.plusWeeks(week));
-
-        date = date.dayOfWeek().withMinimumValue();
-        Date beginDate = date.toDate();
-        Date endDate = date.plusDays(6).toDate();
-        return new Date[]{beginDate, endDate};
-    }
-
-    /**
-     * 对日期的【秒】进行加/减
-     *
-     * @param date 日期
-     * @param seconds 秒数,负数为减
-     * @return 加/减几秒后的日期
-     */
-    public static Date addDateSeconds(Date date, int seconds) {
-        DateTime dateTime = new DateTime(date);
-        return dateTime.plusSeconds(seconds).toDate();
-    }
-
-    /**
-     * 对日期的【分钟】进行加/减
-     *
-     * @param date 日期
-     * @param minutes 分钟数,负数为减
-     * @return 加/减几分钟后的日期
-     */
-    public static Date addDateMinutes(Date date, int minutes) {
-        DateTime dateTime = new DateTime(date);
-        return dateTime.plusMinutes(minutes).toDate();
-    }
-
-    /**
-     * 对日期的【小时】进行加/减
-     *
-     * @param date 日期
-     * @param hours 小时数,负数为减
-     * @return 加/减几小时后的日期
-     */
-    public static Date addDateHours(Date date, int hours) {
-        DateTime dateTime = new DateTime(date);
-        return dateTime.plusHours(hours).toDate();
-    }
-
-    /**
-     * 对日期的【天】进行加/减
-     *
-     * @param date 日期
-     * @param days 天数,负数为减
-     * @return 加/减几天后的日期
-     */
-    public static Date addDateDays(Date date, int days) {
-        DateTime dateTime = new DateTime(date);
-        return dateTime.plusDays(days).toDate();
-    }
-
-    /**
-     * 对日期的【周】进行加/减
-     *
-     * @param date 日期
-     * @param weeks 周数,负数为减
-     * @return 加/减几周后的日期
-     */
-    public static Date addDateWeeks(Date date, int weeks) {
-        DateTime dateTime = new DateTime(date);
-        return dateTime.plusWeeks(weeks).toDate();
-    }
-
-    /**
-     * 对日期的【月】进行加/减
-     *
-     * @param date 日期
-     * @param months 月数,负数为减
-     * @return 加/减几月后的日期
-     */
-    public static Date addDateMonths(Date date, int months) {
-        DateTime dateTime = new DateTime(date);
-        return dateTime.plusMonths(months).toDate();
-    }
-
-    /**
-     * 对日期的【年】进行加/减
-     *
-     * @param date 日期
-     * @param years 年数,负数为减
-     * @return 加/减几年后的日期
-     */
-    public static Date addDateYears(Date date, int years) {
-        DateTime dateTime = new DateTime(date);
-        return dateTime.plusYears(years).toDate();
-    }
-
-    public static List<String> getDays(Date startDate, Date endDate) {
-        List<String> days = new ArrayList<String>();
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(startDate);
-
-        while (calendar.getTime().compareTo(endDate) < 0) {
-            days.add(DateUtils.format(calendar.getTime(), "yyyy-MM-dd"));
-            calendar.add(6, 1);
-        }
-        return days;
-    }
-
-    public static List<String> getYearTime(Date startDate, Date endDate) {
-        List<String> days = new ArrayList<String>();
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(startDate);
-
-        while (calendar.getTime().compareTo(endDate) <= 0) {
-            days.add(DateUtils.format(calendar.getTime(), DATE_PATTERN_YEAR));
-            calendar.add(Calendar.YEAR, 1);
-        }
-        return days;
-    }
-
-    public static List<String> getMonTime(Date startDate, Date endDate) {
-        List<String> days = new ArrayList<String>();
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(startDate);
-
-        while (calendar.getTime().compareTo(endDate) <= 0) {
-            days.add(DateUtils.format(calendar.getTime(), DATE_PATTERN_MON));
-            calendar.add(Calendar.MONTH, 1);
-        }
-        return days;
-    }
-
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/ExcelUtil.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/ExcelUtil.java
deleted file mode 100644
index f3e73e7..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/ExcelUtil.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package com.iailab.common.utils;
-
-import org.apache.poi.hssf.usermodel.*;
-import org.apache.poi.ss.usermodel.HorizontalAlignment;
-import org.apache.poi.ss.usermodel.VerticalAlignment;
-import org.apache.poi.ss.util.CellRangeAddress;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.lang.reflect.Field;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Excel 导出通用工具类
- *
- * @author PanZhibao
- * @date 2021年06月29日 9:06
- */
-public class ExcelUtil {
-
-    /**
-     * 导出PointValueExcel
-     *
-     * @param sheetTitle
-     * @param title
-     * @param list
-     * @param response
-     * @return
-     */
-    public static byte[] exportPointValue(String sheetTitle, String[] title, List<Object> list, HttpServletResponse response) {
-
-        HSSFWorkbook wb = new HSSFWorkbook();//创建excel表
-        HSSFSheet sheet = wb.createSheet(sheetTitle);
-        sheet.setDefaultColumnWidth(20);//设置默认行宽
-
-        //表头样式(加粗,水平居中,垂直居中)
-        HSSFCellStyle cellStyle = wb.createCellStyle();
-        cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
-        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
-
-        HSSFFont fontStyle = wb.createFont();
-
-        cellStyle.setFont(fontStyle);
-
-        //标题样式(加粗,垂直居中)
-        HSSFCellStyle cellStyle2 = wb.createCellStyle();
-        cellStyle2.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
-        cellStyle2.setFont(fontStyle);
-
-        //字段样式(垂直居中)
-        HSSFCellStyle cellStyle3 = wb.createCellStyle();
-        cellStyle3.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
-
-        //数字样式
-        HSSFCellStyle cellStyle4 = wb.createCellStyle();
-        HSSFDataFormat df = wb.createDataFormat(); // 此处设置数据格式
-        cellStyle4.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
-        cellStyle4.setDataFormat(df.getFormat("#,##0.000000"));//设置数值类型格式为保留两位小数
-
-        //创建表头
-        HSSFRow row = sheet.createRow(0);
-        //row.setHeightInPoints(20);//行高
-
-        HSSFCell cell = row.createCell(0);
-        cell.setCellValue(sheetTitle);
-        cell.setCellStyle(cellStyle);
-
-        sheet.addMergedRegion(new CellRangeAddress(0,0,0,(title.length-1)));
-
-        //创建标题
-        HSSFRow rowTitle = sheet.createRow(1);
-        //rowTitle.setHeightInPoints(20);
-
-        HSSFCell hc;
-        for (int i = 0; i < title.length; i++) {
-            hc = rowTitle.createCell(i);
-            hc.setCellValue(title[i]);
-            hc.setCellStyle(cellStyle2);
-        }
-
-        byte result[] = null;
-
-        try {
-            //创建表格数据
-            Field[] fields;
-            int i = 2;
-            for (Object obj : list) {
-                fields = obj.getClass().getDeclaredFields();
-
-                HSSFRow rowBody = sheet.createRow(i);
-                //rowBody.setHeightInPoints(20);
-
-                int j = 0;
-                for (Field f : fields) {
-
-                    f.setAccessible(true);
-
-                    Object va = f.get(obj);
-                    if (null == va) {
-                        va = "";
-                    }
-
-                    hc = rowBody.createCell(j);
-
-                    if (j == 0) {
-                        hc.setCellValue(Double.parseDouble(va.toString()));
-                        hc.setCellStyle(cellStyle4);
-                    } else {
-                        hc.setCellValue(va.toString());
-                        hc.setCellStyle(cellStyle3);
-                    }
-
-
-                    j++;
-                }
-
-                i++;
-            }
-
-            //设置Http响应头告诉浏览器下载这个附件
-            response.setHeader("Content-Disposition", "attachment;Filename=" + System.currentTimeMillis() + ".xls");
-            OutputStream outputStream = response.getOutputStream();
-            wb.write(outputStream);
-            outputStream.close();
-            return wb.getBytes();
-        } catch (Exception ex) {
-            Logger.getLogger(ExcelUtil.class.getName()).log(Level.SEVERE, null, ex);
-            return result;
-        } finally{
-            try {
-                wb.close();
-            } catch (IOException ex) {
-                Logger.getLogger(ExcelUtil.class.getName()).log(Level.SEVERE, null, ex);
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/ExcelUtils.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/ExcelUtils.java
deleted file mode 100644
index e097b51..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/ExcelUtils.java
+++ /dev/null
@@ -1,77 +0,0 @@
-///**
-// * Copyright (c) 2018 人人开源 All rights reserved.
-// *
-// * https://www.renren.io
-// *
-// * 版权所有,侵权必究!
-// */
-//
-//package com.iailab.common.utils;
-//
-//import cn.afterturn.easypoi.excel.ExcelExportUtil;
-//import cn.afterturn.easypoi.excel.entity.ExportParams;
-//import org.apache.commons.lang3.StringUtils;
-//import org.apache.poi.ss.usermodel.Workbook;
-//import org.springframework.beans.BeanUtils;
-//
-//import javax.servlet.ServletOutputStream;
-//import javax.servlet.http.HttpServletResponse;
-//import java.io.IOException;
-//import java.net.URLEncoder;
-//import java.util.ArrayList;
-//import java.util.Collection;
-//import java.util.Date;
-//import java.util.List;
-//
-///**
-// * excel工具类
-// *
-// * @author Mark sunlightcs@gmail.com
-// */
-//public class ExcelUtils {
-//
-//    /**
-//     * Excel导出
-//     *
-//     * @param response      response
-//     * @param fileName      文件名
-//     * @param list          数据List
-//     * @param pojoClass     对象Class
-//     */
-//    public static void exportExcel(HttpServletResponse response, String fileName, Collection<?> list,
-//                                     Class<?> pojoClass) throws IOException {
-//        if(StringUtils.isBlank(fileName)){
-//            //当前日期
-//            fileName = DateUtils.format(new Date());
-//        }
-//
-//        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), pojoClass, list);
-//        response.setCharacterEncoding("UTF-8");
-//        response.setHeader("content-Type", "application/vnd.ms-excel");
-//        response.setHeader("Content-Disposition",
-//                "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xls");
-//        ServletOutputStream out = response.getOutputStream();
-//        workbook.write(out);
-//        out.flush();
-//    }
-//
-//    /**
-//     * Excel导出,先sourceList转换成List<targetClass>,再导出
-//     *
-//     * @param response      response
-//     * @param fileName      文件名
-//     * @param sourceList    原数据List
-//     * @param targetClass   目标对象Class
-//     */
-//    public static void exportExcelToTarget(HttpServletResponse response, String fileName, Collection<?> sourceList,
-//                                     Class<?> targetClass) throws Exception {
-//        List targetList = new ArrayList<>(sourceList.size());
-//        for(Object source : sourceList){
-//            Object target = targetClass.newInstance();
-//            BeanUtils.copyProperties(source, target);
-//            targetList.add(target);
-//        }
-//
-//        exportExcel(response, fileName, targetList, targetClass);
-//    }
-//}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/HttpRequest.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/HttpRequest.java
deleted file mode 100644
index 69f46bf..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/HttpRequest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.iailab.common.utils;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @date 2021年06月03日 15:31
- */
-public class HttpRequest {
-    /**
-     * 向指定URL发送GET方法的请求
-     *
-     * @param url   发送请求的URL
-     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
-     * @return URL 所代表远程资源的响应结果
-     */
-    public static String sendGet(String url, String param) {
-        String result = "";
-        BufferedReader in = null;
-        try {
-            String urlNameString = url + "?" + param;
-            URL realUrl = new URL(urlNameString);
-            // 打开和URL之间的连接
-            URLConnection connection = realUrl.openConnection();
-            // 设置通用的请求属性
-            connection.setRequestProperty("accept", "*/*");
-            connection.setRequestProperty("connection", "Keep-Alive");
-            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
-
-            // 建立实际的连接
-            connection.connect();
-            // 获取所有响应头字段
-            Map<String, List<String>> map = connection.getHeaderFields();
-            // 遍历所有的响应头字段
-            for (String key : map.keySet()) {
-                System.out.println(key + "--->" + map.get(key));
-            }
-            // 定义 BufferedReader输入流来读取URL的响应
-            in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
-            String line;
-            while ((line = in.readLine()) != null) {
-                result += line;
-            }
-        } catch (Exception e) {
-            System.out.println("发送GET请求出现异常!" + e);
-            e.printStackTrace();
-        }
-        // 使用finally块来关闭输入流
-        finally {
-            try {
-                if (in != null) {
-                    in.close();
-                }
-            } catch (Exception e2) {
-                e2.printStackTrace();
-            }
-        }
-        return result;
-    }
-
-    /**
-     * 向指定 URL 发送POST方法的请求
-     *
-     * @param url   发送请求的 URL
-     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
-     * @return 所代表远程资源的响应结果
-     */
-    public static String sendPost(String url, String param) {
-        PrintWriter out = null;
-        BufferedReader in = null;
-        String result = "";
-        try {
-            URL realUrl = new URL(url);
-            // 打开和URL之间的连接
-            URLConnection conn = realUrl.openConnection();
-            // 设置通用的请求属性
-            conn.setRequestProperty("accept", "*/*");
-            conn.setRequestProperty("connection", "Keep-Alive");
-            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
-
-            // 发送POST请求必须设置如下两行
-            conn.setDoOutput(true);
-            conn.setDoInput(true);
-            // 获取URLConnection对象对应的输出流
-            out = new PrintWriter(conn.getOutputStream());
-            // 发送请求参数
-            out.print(param);
-            // flush输出流的缓冲
-            out.flush();
-            // 定义BufferedReader输入流来读取URL的响应
-            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
-            String line;
-            while ((line = in.readLine()) != null) {
-                result += line;
-            }
-        } catch (Exception e) {
-            System.out.println("发送 POST 请求出现异常!" + e);
-            e.printStackTrace();
-        }
-        //使用finally块来关闭输出流、输入流
-        finally {
-            try {
-                if (out != null) {
-                    out.close();
-                }
-                if (in != null) {
-                    in.close();
-                }
-            } catch (IOException ex) {
-                ex.printStackTrace();
-            }
-        }
-        return result;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/HttpsRequest.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/HttpsRequest.java
deleted file mode 100644
index e442989..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/HttpsRequest.java
+++ /dev/null
@@ -1,322 +0,0 @@
-package com.iailab.common.utils;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.util.EntityUtils;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @date 2021年06月03日 16:40
- */
-@Slf4j
-@Component
-public class HttpsRequest {
-
-    /**
-     * doGet
-     *
-     * @param url
-     * @param map
-     * @param charset
-     * @param token
-     * @return
-     */
-    public String doGet(String url, Map<String, String> map, String charset, String token) {
-        org.apache.http.client.HttpClient httpClient = null;
-        HttpGet httpGet = null;
-        String result = null;
-        try {
-            httpClient = new SSLClient();
-            StringBuilder sb = new StringBuilder();
-            sb.append(url);
-            if (!CollectionUtils.isEmpty(map)) {
-                if ((url.indexOf("?") == -1)) {
-                    sb.append("?");
-                } else {
-                    sb.append("&");
-                }
-                map.forEach((k, v) -> {
-                    try {
-                        sb.append(k + "=" + URLEncoder.encode(v, charset) + "&");
-                    } catch (UnsupportedEncodingException e) {
-                        e.printStackTrace();
-                    }
-                });
-                sb.append("t=" + System.currentTimeMillis());
-            }
-            log.info("doGet,url=" + sb.toString());
-            httpGet = new HttpGet(sb.toString());
-            //设置参数
-            httpGet.addHeader("Accept", "application/json");
-            httpGet.addHeader("Content-Type", "application/json;charset=UTF-8");
-            httpGet.addHeader("Authorization", token);
-            HttpResponse response = httpClient.execute(httpGet);
-            if (response != null) {
-                HttpEntity resEntity = response.getEntity();
-                if (resEntity != null) {
-                    result = EntityUtils.toString(resEntity, charset);
-                }
-            }
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-        return result;
-    }
-
-    /**
-     * doPost
-     *
-     * @param url
-     * @param map
-     * @param json
-     * @param charset
-     * @param token
-     * @return
-     */
-    public String doPost(String url, Map<String, String> map, String json, String charset, String token) {
-        org.apache.http.client.HttpClient httpClient = null;
-        HttpPost httpPost = null;
-        String result = null;
-        try {
-            httpClient = new SSLClient();
-            StringBuilder sb = new StringBuilder();
-            sb.append(url);
-            if (!CollectionUtils.isEmpty(map)) {
-                sb.append("?");
-                map.forEach((k, v) -> {
-                    try {
-                        sb.append(k + "=" + URLEncoder.encode(v, charset) + "&");
-                    } catch (UnsupportedEncodingException e) {
-                        e.printStackTrace();
-                    }
-                });
-                sb.append("t=" + System.currentTimeMillis());
-            }
-            httpPost = new HttpPost(sb.toString());
-            //设置参数
-            httpPost.addHeader("Accept", "application/json");
-            httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
-            httpPost.addHeader("token", token);
-            StringEntity stringEntity = new StringEntity(json);
-            stringEntity.setContentEncoding("UTF-8");
-            stringEntity.setContentType("application/json");
-            httpPost.setEntity(stringEntity);
-            HttpResponse response = httpClient.execute(httpPost);
-            if (response != null) {
-                HttpEntity resEntity = response.getEntity();
-                if (resEntity != null) {
-                    result = EntityUtils.toString(resEntity, charset);
-                }
-            }
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-        return result;
-    }
-    /**
-     * doPost
-     *
-     * @param url
-     * @param map
-     * @param json
-     * @param charset
-     * @param token
-     * @return
-     */
-    public String doPostAuthorization(String url, Map<String, String> map, String json, String charset, String token) {
-        org.apache.http.client.HttpClient httpClient = null;
-        HttpPost httpPost = null;
-        String result = null;
-        try {
-            httpClient = new SSLClient();
-            StringBuilder sb = new StringBuilder();
-            sb.append(url);
-            if (!CollectionUtils.isEmpty(map)) {
-                sb.append("?");
-                map.forEach((k, v) -> {
-                    try {
-                        sb.append(k + "=" + URLEncoder.encode(v, charset) + "&");
-                    } catch (UnsupportedEncodingException e) {
-                        e.printStackTrace();
-                    }
-                });
-                sb.append("t=" + System.currentTimeMillis());
-            }
-            httpPost = new HttpPost(sb.toString());
-            //设置参数
-            httpPost.addHeader("Accept", "application/json");
-            httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
-            httpPost.addHeader("Authorization", "Bearer{" + token + "}");
-            StringEntity stringEntity = new StringEntity(json);
-            stringEntity.setContentEncoding("UTF-8");
-            stringEntity.setContentType("application/json");
-            httpPost.setEntity(stringEntity);
-            HttpResponse response = httpClient.execute(httpPost);
-            if (response != null) {
-                HttpEntity resEntity = response.getEntity();
-                if (resEntity != null) {
-                    result = EntityUtils.toString(resEntity, charset);
-                }
-            }
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-        return result;
-    }
-
-    /**
-     * doPost
-     *
-     * @param url
-     * @param map
-     * @param json
-     * @param charset
-     * @return
-     */
-    public String doPostToken(String url, Map<String, String> map, String json, String charset) {
-        org.apache.http.client.HttpClient httpClient = null;
-        HttpPost httpPost = null;
-        String result = null;
-        try {
-            httpClient = new SSLClient();
-            StringBuilder sb = new StringBuilder();
-            sb.append(url);
-            if (!CollectionUtils.isEmpty(map)) {
-                sb.append("?");
-                map.forEach((k, v) -> {
-                    try {
-                        sb.append(k + "=" + URLEncoder.encode(v, charset) + "&");
-                    } catch (UnsupportedEncodingException e) {
-                        e.printStackTrace();
-                    }
-                });
-                sb.append("t=" + System.currentTimeMillis());
-            }
-            httpPost = new HttpPost(sb.toString());
-            //设置参数
-            httpPost.addHeader("Accept", "application/json");
-            httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
-            StringEntity stringEntity = new StringEntity(json);
-            stringEntity.setContentEncoding("UTF-8");
-            stringEntity.setContentType("application/json");
-            httpPost.setEntity(stringEntity);
-            HttpResponse response = httpClient.execute(httpPost);
-            if (response != null) {
-                Header[] resHeader = response.getHeaders("X-Auth-Tkn");
-                if (resHeader != null) {
-                    result = resHeader[0].getValue();
-                }
-            }
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-        return result;
-    }
-
-    /**
-     * doGet
-     *
-     * @param url
-     * @param map
-     * @param charset
-     * @param token
-     * @param tMap
-     * @return
-     */
-    public String doGetSDData(String url, Map<String, String> map, String charset, String token, Map<String, String> tMap) {
-        org.apache.http.client.HttpClient httpClient = null;
-        HttpGet httpGet = null;
-        String result = null;
-        try {
-            httpClient = new SSLClient();
-            StringBuilder sb = new StringBuilder();
-            sb.append(url);
-            if (!CollectionUtils.isEmpty(map)) {
-                sb.append("?");
-                map.forEach((k, v) -> {
-                    try {
-                        sb.append(k + "=" + URLEncoder.encode(v, charset) + "&");
-                    } catch (UnsupportedEncodingException e) {
-                        e.printStackTrace();
-                    }
-                });
-                sb.append("t=" + System.currentTimeMillis());
-            }
-            log.info("doGet,url=" + sb.toString());
-            httpGet = new HttpGet(sb.toString());
-            //设置参数
-            httpGet.addHeader("Content-Type", "application/json");
-            httpGet.addHeader("X-Auth-Tkn", token);
-            httpGet.addHeader("X-Forwarded-OrgSet", tMap.get("X-Forwarded-OrgSet"));
-            httpGet.addHeader("X-Forwarded-PrId", tMap.get("X-Forwarded-PrId"));
-            httpGet.addHeader("X-Request-Id", tMap.get("X-Request-Id"));
-            HttpResponse response = httpClient.execute(httpGet);
-            if (response != null) {
-                HttpEntity resEntity = response.getEntity();
-                if (resEntity != null) {
-                    result = EntityUtils.toString(resEntity, charset);
-                }
-            }
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-        return result;
-    }
-
-    /**
-     * doGet
-     *
-     * @param url
-     * @param map
-     * @param charset
-     * @param token
-     * @return
-     */
-    public String doGetDeviceList(String url, Map<String, String> map, String charset, String token) {
-        org.apache.http.client.HttpClient httpClient = null;
-        HttpGet httpGet = null;
-        String result = null;
-        try {
-            httpClient = new SSLClient();
-            StringBuilder sb = new StringBuilder();
-            sb.append(url);
-            if (!CollectionUtils.isEmpty(map)) {
-                sb.append("?");
-                map.forEach((k, v) -> {
-                    try {
-                        sb.append(k + "=" + URLEncoder.encode(v, charset) + "&");
-                    } catch (UnsupportedEncodingException e) {
-                        e.printStackTrace();
-                    }
-                });
-                sb.append("t=" + System.currentTimeMillis());
-            }
-            log.info("doGet,url=" + sb.toString());
-            httpGet = new HttpGet(sb.toString());
-            //设置参数
-            httpGet.addHeader("Content-Type", "application/json");
-            httpGet.addHeader("X-App-Secret", token);
-            HttpResponse response = httpClient.execute(httpGet);
-            if (response != null) {
-                HttpEntity resEntity = response.getEntity();
-                if (resEntity != null) {
-                    result = EntityUtils.toString(resEntity, charset);
-                }
-            }
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-        return result;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/MatlabUtil.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/MatlabUtil.java
deleted file mode 100644
index 6e3355a..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/MatlabUtil.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.iailab.common.utils;
-
-import cn.hutool.core.util.ReflectUtil;
-import com.iailab.module.model.IAILModel;
-import lombok.extern.slf4j.Slf4j;
-
-import java.lang.reflect.Method;
-import java.util.HashMap;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年01月11日 11:03:00
- */
-@Slf4j
-public class MatlabUtil {
-
-    public static HashMap<String, Object> execML(IAILModel model, Object[] paramValues) {
-
-        //获取预测项的预测程序的类
-        HashMap<String, Object> tMap = null;
-        try {
-//            double[][] realTimeData ={{12.1,5.1,1.45},{12.2,5.2,1.43},{12,3,5.3,1.425},{13.4,5.4,1.46},{14.5,5.5,1.48},{11.6,5.6,1.5},{12.7,5.7,1.47},{12.8,5.8,1.45},{12.9,5.9,1.43},{12.6,6,1.425},{12.1,5.1,1.46},{12.2,5.2,1.47} ,{12.3,5.3,1.5},{13.4,5.4,1.47},{14.5,5.5,1.45},{11.6,5.6,1.43},{12.7,5.7,1.425}, {12.8,5.8,1.46},{12.9,5.9,1.48},{12.6,6,1.5},{12.1,5.1,1.47},{12.2,5.2,1.45},{12.3,5.3,1.43},{13.4,5.4,1.425},{14.5,5.5,1.46},{11.6,5.6,1.47},{12.7,5.7,1.5},{12.8,5.8,1.47},{12.9,5.9,1.45},{12.6,6,1.45}};
-
-            Class<?> clazz = Class.forName(model.getClassName());
-
-            Method method = ReflectUtil.getPublicMethod(clazz, model.getMethodName(), model.getParamsArray());
-
-            //tMap = ReflectUtil.invoke(clazz.newInstance(), method, paramValues);
-
-            tMap = (HashMap<String, Object>) method.invoke(clazz.newInstance(), paramValues);
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.error("exception message : {}", e.getMessage());
-        }
-        return tMap;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/PythonUtil.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/PythonUtil.java
deleted file mode 100644
index 896d76b..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/PythonUtil.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.iailab.common.utils;
-
-import com.alibaba.fastjson.JSONObject;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年01月11日 11:03:00
- */
-@Slf4j
-public class PythonUtil {
-
-    public static Map<String, Object> execPy(String[] command) throws Exception {
-        List<String> lines = new ArrayList<>();
-        try {
-            Process proc = Runtime.getRuntime().exec(command);
-            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream(), "GBK"));
-            String line = null;
-
-            while ((line = in.readLine()) != null) {
-                log.info(line);
-                lines.add(line);
-            }
-            // 0表示成功,1表示远程调用失败,2表示python脚本出错
-            int waitFor = proc.waitFor();
-            log.info("waitFor=" + waitFor);
-            if (waitFor == 1) {
-                throw new Exception("远程调用失败");
-            } else if (waitFor == 2) {
-                throw new Exception("python脚本出错");
-            } else if (waitFor == 9009) {
-                throw new Exception("环境变量配置错误");
-            } else if (waitFor != 0) {
-                throw new Exception("调用python失败");
-            }
-        } catch (Exception ex) {
-            log.error("运行python异常!command=" + command.toString());
-            throw ex;
-        }
-        return JSONObject.parseObject(lines.get(0));
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/SSLClient.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/SSLClient.java
deleted file mode 100644
index a3c4051..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/SSLClient.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.iailab.common.utils;
-
-
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.conn.ssl.SSLSocketFactory;
-import org.apache.http.impl.client.DefaultHttpClient;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-
-/**
- * @author PanZhibao
- * @date 2021年06月03日 15:35
- */
-public class SSLClient extends DefaultHttpClient {
-    public SSLClient() throws Exception {
-        super();
-        //传输协议需要根据自己的判断
-        SSLContext ctx = SSLContext.getInstance("TLS");
-        X509TrustManager tm = new X509TrustManager() {
-            @Override
-            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-            }
-
-            @Override
-            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-            }
-
-            @Override
-            public X509Certificate[] getAcceptedIssuers() {
-                return null;
-            }
-        };
-        ctx.init(null, new TrustManager[]{tm}, null);
-        SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
-        ClientConnectionManager ccm = this.getConnectionManager();
-        SchemeRegistry sr = ccm.getSchemeRegistry();
-        sr.register(new Scheme("https", 443, ssf));
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/UnzipUtils.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/UnzipUtils.java
deleted file mode 100644
index 2ed4454..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/common/utils/UnzipUtils.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package com.iailab.common.utils;
-
-import java.io.*;
-import java.nio.charset.Charset;
-import java.util.Enumeration;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月25日 15:28:00
- */
-public class UnzipUtils {
-    /**
-     * 解压zip压缩文件到指定目录
-     *
-     * @param zipPath zip压缩文件绝对路径
-     * @param descDir 指定的解压目录
-     */
-    public static void unzipFile(String zipPath, String descDir) throws IOException {
-        try {
-            File zipFile = new File(zipPath);
-            if (!zipFile.exists()) {
-                throw new IOException("要解压的压缩文件不存在");
-            }
-            File pathFile = new File(descDir);
-            if (!pathFile.exists()) {
-                pathFile.mkdirs();
-            }
-            unzipWithStream(zipPath, descDir);
-        } catch (Exception e) {
-            throw new IOException(e);
-        }
-    }
-
-    /**
-     * 解压
-     *
-     * @param zipPath
-     * @param descDir
-     */
-    public static void unzipWithStream(String zipPath, String descDir) {
-        try (ZipFile zipFile = new ZipFile(zipPath, Charset.forName("GBK"))) {
-            Enumeration e = zipFile.entries();
-            while (e.hasMoreElements()) {
-                ZipEntry zipEntry = (ZipEntry)e.nextElement();
-                String zipEntryNameStr = zipEntry.getName();
-                String zipEntryName = zipEntryNameStr;
-                /*if (zipEntryNameStr.contains("/")) {
-                    String str1 = zipEntryNameStr.substring(0, zipEntryNameStr.indexOf("/"));
-                    zipEntryName = zipEntryNameStr.substring(str1.length() + 1);
-                }*/
-                String outPath = (descDir + zipEntryName).replace("\\\\", "/");
-                File outFile = new File(outPath.substring(0, outPath.lastIndexOf('/')));
-                if (!outFile.exists()) {
-                    outFile.mkdirs();
-                }
-                if (new File(outPath).isDirectory()) {
-                    continue;
-                }
-                writeFile(outPath, zipFile.getInputStream(zipEntry));
-            }
-            System.out.println("======解压成功=======");
-        } catch (IOException e) {
-            System.out.println("压缩包处理异常,异常信息{}" + e);
-        }
-    }
-
-    /**
-     * 将流写到文件中
-     *
-     * @param filePath
-     * @param zipInputStream
-     */
-    public static void writeFile(String filePath, InputStream zipInputStream) throws IOException {
-        try (OutputStream outputStream = new FileOutputStream(filePath)) {
-            byte[] bytes = new byte[4096];
-            int len;
-            while ((len = zipInputStream.read(bytes)) != -1) {
-                outputStream.write(bytes, 0, len);
-            }
-        } catch (IOException ex) {
-            System.out.println("解压文件时,写出到文件出错");
-        } finally {
-            zipInputStream.close();
-        }
-    }
-
-    /**
-     * 测试方法
-     *
-     * @param args
-     * @throws IOException
-     */
-    public static void test(String[] args) throws IOException {
-
-        String zipPath = "D:/test/测试文件.zip";
-        String descDir = "D:/test/解压/";
-
-        unzipFile(zipPath, descDir);
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/api/MdkApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/api/MdkApiImpl.java
deleted file mode 100644
index cac50e7..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/api/MdkApiImpl.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.iailab.module.api;
-
-import com.iailab.api.mdk.MdkApi;
-import com.iailab.api.mdk.dto.MdkPredictReqDTO;
-import com.iailab.framework.common.pojo.CommonResult;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RestController;
-
-import static com.iailab.framework.common.pojo.CommonResult.success;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年08月26日
- */
-@RestController
-@Validated
-public class MdkApiImpl implements MdkApi {
-
-    @Override
-    public CommonResult<Boolean> predict(MdkPredictReqDTO reqDTO) {
-
-        return success(true);
-    }
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelController.java
deleted file mode 100644
index 5f18372..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelController.java
+++ /dev/null
@@ -1,250 +0,0 @@
-package com.iailab.module.mcs.controller;
-
-import com.iailab.common.annotation.LogOperation;
-import com.iailab.common.enums.IsEnableEnum;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.common.utils.Constant;
-import com.iailab.framework.common.util.object.ConvertUtils;
-import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.framework.common.util.validation.ValidationUtils;
-import com.iailab.framework.common.validation.group.AddGroup;
-import com.iailab.framework.common.validation.group.DefaultGroup;
-import com.iailab.framework.common.validation.group.UpdateGroup;
-import com.iailab.framework.security.core.util.SecurityFrameworkUtils;
-import com.iailab.module.mcs.dto.StModelDTO;
-import com.iailab.module.mcs.dto.StModelOutDTO;
-import com.iailab.module.mcs.dto.StModelParamDTO;
-import com.iailab.module.mcs.dto.StModelSettingDTO;
-import com.iailab.module.mcs.entity.StModelOutEntity;
-import com.iailab.module.mcs.entity.StModelParamEntity;
-import com.iailab.module.mcs.entity.StModelSettingEntity;
-import com.iailab.module.mcs.service.StModelOutService;
-import com.iailab.module.mcs.service.StModelParamService;
-import com.iailab.module.mcs.service.StModelService;
-import com.iailab.module.mcs.service.StModelSettingService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
-import javax.annotation.Resource;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.IOException;
-import java.util.*;
-
-import static com.iailab.framework.common.pojo.CommonResult.success;
-
-
-/**
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-@RestController
-@RequestMapping("/model/mcs/st-model")
-public class StModelController {
-    @Resource
-    private StModelService stModelService;
-
-    @Resource
-    private StModelParamService stModelParamService;
-
-    @Resource
-    private StModelSettingService stModelSettingService;
-    
-    @Resource
-    private StModelOutService stModelOutService;
-
-    @GetMapping("page")
-    @Operation(summary = "分页")
-    @Parameters({
-            @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true),
-            @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true),
-            @Parameter(name = Constant.ORDER_FIELD, description = "排序字段"),
-            @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)")
-    })
-    public CommonResult<PageData<StModelDTO>> page(@RequestParam Map<String, Object> params) {
-        PageData<StModelDTO> page = stModelService.page(params);
-
-        return success(page);
-    }
-
-    @GetMapping("{id}")
-    @Operation(summary = "信息")
-    public CommonResult<StModelDTO> get(@PathVariable("id") String id) {
-        StModelDTO data = stModelService.get(id);
-
-        List<StModelParamDTO> tParamPage = stModelParamService.getByModelId(id);
-        data.setModelParamList(tParamPage);
-
-        Map<String, Object> params = new HashMap<String, Object>(1);
-        params.put("modelId", data.getId());
-        List<StModelSettingDTO> tSettingPage = stModelSettingService.getAll(params);
-        data.setModelSettingList(tSettingPage);
-        
-        Map<String, Object> out = new HashMap<String, Object>(1);
-        out.put("modelId", data.getId());
-        List<StModelOutDTO> tOutPage = stModelOutService.getAll(out);
-        data.setModelOutList(tOutPage);
-
-        return new CommonResult<StModelDTO>().setData(data);
-    }
-
-    @PostMapping
-    @Operation(summary = "保存")
-    @LogOperation("保存")
-    @Transactional
-    public CommonResult save(@RequestBody StModelDTO dto) {
-        //效验数据
-        ValidationUtils.validate(dto, AddGroup.class, DefaultGroup.class);
-
-        dto.setId(UUID.randomUUID().toString());
-        List<StModelParamDTO> tParamList = dto.getModelParamList();
-        if (tParamList != null) {
-            for (int i = 0; i < tParamList.size(); i++) {
-                StModelParamDTO tParamDTO = new StModelParamDTO();
-                tParamDTO = tParamList.get(i);
-                StModelParamEntity tParamEntity = new StModelParamEntity();
-                tParamEntity.setModelId(dto.getId());
-                tParamEntity.setParamName(tParamDTO.getParamName());
-                tParamEntity.setParamId(tParamDTO.getParamId());
-                tParamEntity.setParamOrder(tParamDTO.getParamOrder());
-                tParamEntity.setParamPortOrder(tParamDTO.getParamPortOrder());
-                tParamEntity.setDataLength(tParamDTO.getDataLength());
-                tParamEntity.setParamType(tParamDTO.getParamType());
-                stModelParamService.insert(tParamEntity);
-            }
-        }
-        List<StModelSettingDTO> tSettingList = dto.getModelSettingList();
-        if (tSettingList != null) {
-            for (int i = 0; i < tSettingList.size(); i++) {
-                StModelSettingEntity tSettingEntity = ConvertUtils.sourceToTarget(tSettingList.get(i), StModelSettingEntity.class);
-                tSettingEntity.setModelId(dto.getId());
-                stModelSettingService.insert(tSettingEntity);
-            }
-        }
-        
-        List<StModelOutDTO> tOutList = dto.getModelOutList();
-        if (tOutList != null) {
-        	for (int i = 0; i < tOutList.size(); i++) {
-        		StModelOutEntity tOutEntity = ConvertUtils.sourceToTarget(tOutList.get(i), StModelOutEntity.class);
-        		tOutEntity.setModelId(dto.getId());
-        		tOutEntity.setSort(i+1);
-        		stModelOutService.insert(tOutEntity);
-        	}
-        }
-        dto.setCreator(SecurityFrameworkUtils.getLoginUserId());
-        dto.setCreateDate(new Date());
-        dto.setUpdater(SecurityFrameworkUtils.getLoginUserId());
-        dto.setUpdateDate(new Date());
-        dto.setIsEnable(IsEnableEnum.ENABLE.value());
-        stModelService.save(dto);
-        return new CommonResult();
-    }
-
-    @PutMapping
-    @Operation(summary = "修改")
-    @LogOperation("修改")
-    @Transactional
-    public CommonResult update(@RequestBody StModelDTO dto) {
-        //效验数据
-        ValidationUtils.validate(dto, UpdateGroup.class, DefaultGroup.class);
-
-        List<StModelParamDTO> tParamList = dto.getModelParamList();
-        if (tParamList != null) {
-            stModelParamService.deleteByModelId(dto.getId());
-            for (int i = 0; i < tParamList.size(); i++) {
-                StModelParamDTO tParamDTO = new StModelParamDTO();
-                tParamDTO = tParamList.get(i);
-                StModelParamEntity tParamEntity = new StModelParamEntity();
-                tParamEntity.setModelId(dto.getId());
-                tParamEntity.setParamName(tParamDTO.getParamName());
-                tParamEntity.setParamId(tParamDTO.getParamId());
-                tParamEntity.setParamOrder(tParamDTO.getParamOrder());
-                tParamEntity.setParamPortOrder(tParamDTO.getParamPortOrder());
-                tParamEntity.setDataLength(tParamDTO.getDataLength());
-                tParamEntity.setParamType(tParamDTO.getParamType());
-
-                stModelParamService.insert(tParamEntity);
-            }
-        }
-        List<StModelSettingDTO> tSettingList = dto.getModelSettingList();
-        if (tSettingList != null) {
-            stModelSettingService.deleteByModelId(dto.getId());
-            for (int i = 0; i < tSettingList.size(); i++) {
-                StModelSettingEntity tSettingEntity = ConvertUtils.sourceToTarget(tSettingList.get(i), StModelSettingEntity.class);
-                tSettingEntity.setModelId(dto.getId());
-                stModelSettingService.insert(tSettingEntity);
-            }
-        }
-        List<StModelOutDTO> tOutList = dto.getModelOutList();
-        if (tOutList != null) {
-        	stModelOutService.deleteByModelId(dto.getId());
-        	for (int i = 0; i < tOutList.size(); i++) {
-                StModelOutEntity tOutEntity = ConvertUtils.sourceToTarget(tOutList.get(i), StModelOutEntity.class);
-                tOutEntity.setModelId(dto.getId());
-                tOutEntity.setSort(i+1);
-                stModelOutService.insert(tOutEntity);
-        	}
-        }
-
-        Long id = SecurityFrameworkUtils.getLoginUserId();
-        dto.setUpdater(id);
-        dto.setUpdateDate(new Date());
-        stModelService.update(dto);
-
-        return new CommonResult<Object>();
-    }
-
-    @DeleteMapping
-    @Operation(summary = "删除")
-    @LogOperation("删除")
-    @Transactional
-    public CommonResult delete(@RequestBody String[] ids) {
-        List<String> idsList = Arrays.asList(ids);
-        for (int i = 0; i < idsList.size(); i++) {
-            stModelParamService.deleteByModelId(idsList.get(i));//删除模型参数表数据
-            stModelSettingService.deleteByModelId(idsList.get(i));//删除模型设置表数据
-        }
-
-        stModelService.deleteByIds(ids);//删除模型表数据
-
-        return new CommonResult();
-    }
-
-    @PutMapping("/enable")
-    @Operation(summary = "启用")
-    @LogOperation("启用")
-    @Transactional
-    public CommonResult enable(@RequestBody String[] ids) {
-        stModelService.enableByIds(ids);
-        return new CommonResult();
-    }
-
-    @PutMapping("/disable")
-    @Operation(summary = "禁用")
-    @LogOperation("禁用")
-    @Transactional
-    public CommonResult disable(@RequestBody String[] ids) {
-        stModelService.disableByIds(ids);
-        return new CommonResult();
-    }
-
-
-    /**
-     * 上传模型
-     */
-    @Operation(summary = "上传模型")
-    @PostMapping("/upload")
-    public CommonResult<Map<String, Object>> upload(@RequestParam("file") MultipartFile file) throws IOException {
-        Map<String, Object> data = stModelService.upload(file);
-        return new CommonResult<Map<String, Object>>().setData(data);
-    }
-
-    @Operation(summary = "上传模型")
-    @GetMapping("/relation")
-    public CommonResult getRelation() {
-        Map<String, Object> data = stModelService.getRelation();
-        return new CommonResult().setData(data);
-    }
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelDocController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelDocController.java
deleted file mode 100644
index 6cd8d06..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelDocController.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.iailab.module.mcs.controller;
-
-import com.iailab.common.annotation.LogOperation;
-import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.framework.common.util.validation.ValidationUtils;
-import com.iailab.framework.common.validation.group.DefaultGroup;
-import com.iailab.framework.common.validation.group.UpdateGroup;
-import com.iailab.module.mcs.dto.StModelDocDTO;
-import com.iailab.module.mcs.service.StModelDocService;
-import io.swagger.v3.oas.annotations.Operation;
-import javax.annotation.Resource;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.*;
-
-
-@RestController
-@RequestMapping("/model/mcs/st-model-doc")
-public class StModelDocController {
-
-    @Resource
-    private StModelDocService stModelDocService;
-
-    @GetMapping("{id}")
-    @Operation(summary = "信息")
-    public CommonResult<StModelDocDTO> get(@PathVariable("id") String id) {
-        StModelDocDTO data = stModelDocService.get(id);
-
-        return new CommonResult<StModelDocDTO>().setData(data);
-    }
-
-    @PutMapping
-    @Operation(summary = "修改")
-    @LogOperation("修改")
-    public CommonResult update(@RequestBody StModelDocDTO dto){
-        //效验数据
-        ValidationUtils.validate(dto, UpdateGroup.class, DefaultGroup.class);
-        stModelDocService.update(dto);
-        return new CommonResult();
-    }
-
-    @PostMapping
-    @Operation(summary = "保存")
-    @LogOperation("保存")
-    @Transactional
-    public CommonResult save(@RequestBody StModelDocDTO dto){
-        //效验数据
-        ValidationUtils.validate(dto, UpdateGroup.class, DefaultGroup.class);
-        stModelDocService.save(dto);
-        return new CommonResult();
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelRequestLogController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelRequestLogController.java
deleted file mode 100644
index b1a636d..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelRequestLogController.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.iailab.module.mcs.controller;
-
-import com.iailab.framework.common.constant.Constant;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.pojo.CommonResult;
-import com.iailab.module.mcs.dto.StModelRequestLogDTO;
-import com.iailab.module.mcs.service.StModelRequestLogService;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
-import javax.annotation.Resource;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年05月22日
- */
-@RestController
-@RequestMapping("/model/mcs/model-request-log")
-@Tag(name = "模型调用日志表")
-public class StModelRequestLogController {
-
-    @Resource
-    private StModelRequestLogService stModelRequestLogService;
-
-    @GetMapping("page")
-    @Operation(summary = "分页")
-    @Parameters({
-            @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true) ,
-            @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true) ,
-            @Parameter(name = Constant.ORDER_FIELD, description = "排序字段") ,
-            @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)") 
-    })
-    public CommonResult<PageData<StModelRequestLogDTO>> page(@RequestParam Map<String, Object> params){
-        PageData<StModelRequestLogDTO> page = stModelRequestLogService.page(params);
-        return new CommonResult<PageData<StModelRequestLogDTO>>().setData(page);
-    }
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelRunlogController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelRunlogController.java
deleted file mode 100644
index 77d97d1..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/controller/StModelRunlogController.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.iailab.module.mcs.controller;
-
-import com.iailab.common.annotation.LogOperation;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.common.utils.Constant;
-import com.iailab.framework.common.pojo.CommonResult;
-
-import com.iailab.framework.common.util.validation.ValidationUtils;
-import com.iailab.framework.common.validation.group.AddGroup;
-import com.iailab.framework.common.validation.group.DefaultGroup;
-import com.iailab.framework.common.validation.group.UpdateGroup;
-import com.iailab.module.mcs.dto.StModelRunlogDTO;
-import com.iailab.module.mcs.service.StModelRunlogService;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
-import javax.annotation.Resource;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-
-import java.util.Map;
-
-
-/**
- * 运行日志表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-07-04
- */
-@RestController
-@RequestMapping("/model/mcs/runlog")
-@Tag(name = "运行日志表")
-public class StModelRunlogController {
-    @Resource
-    private StModelRunlogService runlogService;
-
-    @GetMapping("page")
-    @Operation(summary = "分页")
-    @Parameters({
-        @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true) ,
-        @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true) ,
-        @Parameter(name = Constant.ORDER_FIELD, description = "排序字段") ,
-        @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)")
-    })
-    public CommonResult<PageData<StModelRunlogDTO>> page(@RequestParam Map<String, Object> params){
-        PageData<StModelRunlogDTO> page = runlogService.queryPage(params);
-
-        return new CommonResult<PageData<StModelRunlogDTO>>().setData(page);
-    }
-
-    @GetMapping("{id}")
-    @Operation(summary = "信息")
-    @PreAuthorize("@ss.hasPermission('mcs:runlog:info')")
-    public CommonResult<StModelRunlogDTO> get(@PathVariable("id") Long id){
-        StModelRunlogDTO data = runlogService.get(id);
-
-        return new CommonResult<StModelRunlogDTO>().setData(data);
-    }
-
-    @PostMapping
-    @Operation(summary = "保存")
-    @LogOperation("保存")
-    @PreAuthorize("@ss.hasPermission('mcs:runlog:save')")
-    public CommonResult save(@RequestBody StModelRunlogDTO dto){
-        //效验数据
-        ValidationUtils.validate(dto, AddGroup.class, DefaultGroup.class);
-
-        runlogService.save(dto);
-
-        return new CommonResult();
-    }
-
-    @PutMapping
-    @Operation(summary = "修改")
-    @LogOperation("修改")
-    @PreAuthorize("@ss.hasPermission('mcs:runlog:update')")
-    public CommonResult update(@RequestBody StModelRunlogDTO dto){
-        //效验数据
-        ValidationUtils.validate(dto, UpdateGroup.class, DefaultGroup.class);
-
-        runlogService.update(dto);
-
-        return new CommonResult();
-    }
-
-    @DeleteMapping
-    @Operation(summary = "删除")
-    @LogOperation("删除")
-    @PreAuthorize("@ss.hasPermission('mcs:runlog:delete')")
-    public CommonResult delete(@RequestBody Long[] ids){
-        runlogService.delete(ids);
-        return new CommonResult();
-    }
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelDao.java
deleted file mode 100644
index 5817ace..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelDao.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.iailab.module.mcs.dao;
-
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.module.mcs.entity.StModelEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 模型信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Mapper
-public interface StModelDao extends BaseDao<StModelEntity> {
-	
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelDocDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelDocDao.java
deleted file mode 100644
index 942f61d..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelDocDao.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.iailab.module.mcs.dao;
-
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.module.mcs.entity.StModelDocEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 模型信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Mapper
-public interface StModelDocDao extends BaseDao<StModelDocEntity> {
-	
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelOutDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelOutDao.java
deleted file mode 100644
index 9164d35..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelOutDao.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.iailab.module.mcs.dao;
-
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.module.mcs.dto.StModelOutDTO;
-import com.iailab.module.mcs.entity.StModelOutEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年08月02日 13:30:00
- */
-@Mapper
-public interface StModelOutDao extends BaseDao<StModelOutEntity> {
-
-	List<StModelOutDTO> getAll(Map<String, Object> out);
-
-	List<StModelOutDTO> getOutPoint(Map<String, Object> params);
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelParamDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelParamDao.java
deleted file mode 100644
index eb25f4a..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelParamDao.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.iailab.module.mcs.dao;
-
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.module.mcs.dto.StModelParamDTO;
-import com.iailab.module.mcs.entity.StModelParamEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 
- *
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-@Mapper
-public interface StModelParamDao extends BaseDao<StModelParamEntity> {
-
-	List<StModelParamDTO> getAll(Map<String, Object> params);
-
-	void deleteByModelId(String modelId);
-	
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelRequestLogDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelRequestLogDao.java
deleted file mode 100644
index 9d7288d..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelRequestLogDao.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.iailab.module.mcs.dao;
-
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.module.mcs.entity.StModelRequestLogEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年05月22日
- */
-@Mapper
-public interface StModelRequestLogDao extends BaseDao<StModelRequestLogEntity> {
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelResultDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelResultDao.java
deleted file mode 100644
index 0c25bb3..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelResultDao.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.iailab.module.mcs.dao;
-
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.module.mcs.dto.StModelResultDTO;
-import com.iailab.module.mcs.entity.StModelResultEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 模型返回信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Mapper
-public interface StModelResultDao extends BaseDao<StModelResultEntity> {
-
-	List<StModelResultEntity> getResultList(Map<String, Object> params);
-
-	List<StModelResultDTO> getLastResultByCode(Map<String, Object> params);
-
-	List<StModelResultDTO> getResultByCodeDate(Map<String, Object> params);
-
-	void insertList(List<StModelResultEntity> list);
-
-	void cleanModelResult(Map<String, Object> params);
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelRunlogDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelRunlogDao.java
deleted file mode 100644
index ee9970c..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelRunlogDao.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.iailab.module.mcs.dao;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.module.mcs.dto.StModelRunlogDTO;
-import com.iailab.module.mcs.entity.StModelRunlogEntity;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 运行日志表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Mapper
-public interface StModelRunlogDao extends BaseDao<StModelRunlogEntity> {
-
-
-	List<StModelRunlogDTO> getLastLog(Map<String, Object> params);
-
-	void cleanRunlogTask(Map<String, Date> tMap);
-
-	IPage<StModelRunlogEntity> queryList(IPage<StModelRunlogEntity> page, @Param("params") Map<String, Object> params);
-
-	List<StModelRunlogDTO> listAll(Map<String, Object> params);
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelSettingDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelSettingDao.java
deleted file mode 100644
index 709518d..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dao/StModelSettingDao.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.iailab.module.mcs.dao;
-
-import com.iailab.framework.common.dao.BaseDao;
-import com.iailab.module.mcs.dto.StModelSettingDTO;
-import com.iailab.module.mcs.entity.StModelSettingEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 
- *
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-@Mapper
-public interface StModelSettingDao extends BaseDao<StModelSettingEntity> {
-
-	List<StModelSettingDTO> getAll(Map<String, Object> params);
-
-	void deleteByModelId(String modelId);
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/RelationLineDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/RelationLineDTO.java
deleted file mode 100644
index 9625799..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/RelationLineDTO.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.iailab.module.mcs.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年05月23日
- */
-@Data
-@Schema(name = "模型关系线")
-public class RelationLineDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String from;
-
-    private String to;
-
-    private String text = "";
-
-    private Integer animation = 1;
-
-    private Boolean isHideArrow = true;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/RelationNodeDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/RelationNodeDTO.java
deleted file mode 100644
index 7492463..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/RelationNodeDTO.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.iailab.module.mcs.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年05月23日
- */
-@Data
-@Schema(name = "模型关系点")
-public class RelationNodeDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String id;
-
-    private String text;
-
-    private StModelDTO data;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelDTO.java
deleted file mode 100644
index eb2aa10..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelDTO.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.iailab.module.mcs.dto;
-
-import com.iailab.framework.excel.core.annotations.DictFormat;
-import io.swagger.v3.oas.annotations.media.Schema;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-
-/**
- * 模型表
- *
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-@Data
-@Schema(name = "模型表")
-public class StModelDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @Schema(name = "id")
-    private String id;
-
-    @Schema(name = "模型编码")
-    private String modelCode;
-
-    @Schema(name = "模型名称")
-    private String modelName;
-
-    @Schema(name = "模型父级")
-    private String modelParent;
-    
-    @Schema(name = "模型类型")
-    private String modelType;
-
-    @DictFormat("model_type")
-    @Schema(name = "模型类型名称")
-    private String modelTypeName;
-
-    @Schema(name = "模型路径")
-    private String modelPath;
-
-    @Schema(name = "类名")
-    private String className;
-
-    @Schema(name = "方法名")
-    private String methodName;
-
-    @Schema(name = "参数结构")
-    private String paramsStructure;
-
-    @Schema(name = "备注")
-    private String remark;
-
-    @Schema(name = "回路")
-    private String modelLoop;
-
-    @Schema(name = "执行顺序")
-    private Integer runSort;
-
-    @Schema(name = "运行时间")
-    private Date runTime;
-
-    @Schema(name = "是否启用")
-    private Integer isEnable;
-
-    @Schema(name = "创建人")
-    private Long creator;
-
-    @Schema(name = "创建时间")
-    private Date createDate;
-
-    @Schema(name = "修改人")
-    private Long updater;
-
-    @Schema(name = "修改时间")
-    private Date updateDate;
-
-    @Schema(name = "模型输入参数")
-    private List<StModelParamDTO> modelParamList;
-
-    @Schema(name = "模型设置")
-    private List<StModelSettingDTO> modelSettingList;
-    
-    @Schema(name = "模型下发配置")
-    private List<StModelOutDTO> modelOutList;
-
-    @Schema(name = "模型版本")
-    private String modelVersion;
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelDocDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelDocDTO.java
deleted file mode 100644
index e4dfbd7..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelDocDTO.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.iailab.module.mcs.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-
-/**
- * 模型表
- *
- * @author dongyukun
- * @since 1.0.0 2023-05-10
- */
-@Data
-@Schema(name = "模型接口文档表")
-public class StModelDocDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @Schema(name = "id")
-    private String id;
-
-    @Schema(name = "模型ID")
-    private String modelId;
-
-    @Schema(name = "URL")
-    private String url;
-
-    @Schema(name = "方法")
-    private String method;
-
-    @Schema(name = "输入参数")
-    private String params;
-
-    @Schema(name = "参数示例")
-    private String paramsExample;
-
-    @Schema(name = "输出结果")
-    private String result;
-
-    @Schema(name = "结果示例")
-    private String resultExample;
-
-    @Schema(name = "创建人")
-    private Long creator;
-
-    @Schema(name = "创建时间")
-    private Date createDate;
-
-    @Schema(name = "修改人")
-    private Long updater;
-
-    @Schema(name = "修改时间")
-    private Date updateDate;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelOutDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelOutDTO.java
deleted file mode 100644
index 3ee188b..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelOutDTO.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.iailab.module.mcs.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年08月02日 13:35:00
- */
-@Data
-@Schema(name = "模型下发配置")
-public class StModelOutDTO implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-    
-    @Schema(name = "id")
-    private String id;
-    
-    @Schema(name = "模型ID")
-    private String modelId;
-
-    @Schema(name = "输出key")
-    private String resultKey;
-
-    @Schema(name = "是否下发")
-    private String isWrite;
-
-    @Schema(name = "下发的点位")
-    private String pointNo;
-
-    @Schema(name = "排序")
-    private Integer sort;
-
-    @Schema(name = "无扰切换点位")
-    private String disturbancePointNo;
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelParamDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelParamDTO.java
deleted file mode 100644
index 27a6ebf..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelParamDTO.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.iailab.module.mcs.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-
-/**
- * 模型参谋
- *
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-@Data
-@Schema(name = "模型参谋")
-public class StModelParamDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-	@Schema(name = "id")
-	private String id;
-
-	@Schema(name = "模型ID")
-	private String modelId;
-
-	@Schema(name = "参数名称")
-	private String paramName;
-
-	@Schema(name = "参数ID")
-	private String paramId;
-
-	@Schema(name = "参数排序")
-	private Integer paramOrder;
-
-	@Schema(name = "参数端口排序")
-	private Integer paramPortOrder;
-
-	@Schema(name = "参数长度")
-	private Integer dataLength;
-
-	@Schema(name = "参数类型")
-	private String paramType;
-
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelRequestLogDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelRequestLogDTO.java
deleted file mode 100644
index 43914ee..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelRequestLogDTO.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.iailab.module.mcs.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年05月22日
- */
-@Data
-@Schema(name = "模型调用日志表")
-public class StModelRequestLogDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @Schema(name = "id")
-    private String id;
-
-    @Schema(name = "模型ID")
-    private String modelId;
-
-    @Schema(name = "调用方账号")
-    private String appKey;
-
-    @Schema(name = "调用时间")
-    private Date requestTime;
-
-    @Schema(name = "请求参数")
-    private String requestParams;
-
-    @Schema(name = "返回结果")
-    private String responseResult;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelResultDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelResultDTO.java
deleted file mode 100644
index 6cec60b..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelResultDTO.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.iailab.module.mcs.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-
-/**
- * 模型返回信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Data
-@Schema(name = "模型返回信息表")
-public class StModelResultDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-	@Schema(name = "id")
-	private String id;
-
-	@Schema(name = "模型ID")
-	private String modelId;
-
-	@Schema(name = "行号")
-	private Integer lineIndex;
-
-	@Schema(name = "输出key")
-	private String resultKey;
-
-	@Schema(name = "输出值")
-	private String resultValue;
-
-	@Schema(name = "输出时间")
-	private Date resultTime;
-	
-	@Schema(name = "合介密度AI给定值")
-	private String densityAI;
-	
-	@Schema(name = "精煤灰分设定值")
-	private String ashJm;
-	
-	@Schema(name = "凝聚剂流量")
-	private String flowNjj;
-	
-	@Schema(name = "絮凝剂流量")
-	private String flowXnj;
-	
-	@Schema(name = "底流流量")
-	private String flowBottom;
-
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelRunlogDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelRunlogDTO.java
deleted file mode 100644
index e4e5204..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelRunlogDTO.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.iailab.module.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;
-
-
-/**
- * 运行日志表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Data
-@Schema(name = "运行日志表")
-public class StModelRunlogDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-	@Schema(name = "id")
-	private String id;
-
-	@Schema(name = "模型id")
-	private String modelid;
-
-	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-	@Schema(name = "运行时间")
-	private Date runTime;
-
-	@Schema(name = "类别")
-	private String runType;
-
-	@Schema(name = "运行结果")
-	private String runResult;
-	
-	@Schema(name = "模型代码")
-	private String modelCode;
-
-	@Schema(name = "模型名称")
-	private String modelName;
-
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelSettingDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelSettingDTO.java
deleted file mode 100644
index cf05019..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/dto/StModelSettingDTO.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.iailab.module.mcs.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-
-/**
- * 模型参谋
- *
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-@Data
-@Schema(name = "模型参谋")
-public class StModelSettingDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-	@Schema(name = "ID")
-	private String id;
-
-	@Schema(name = "模型ID")
-	private String modelId;
-
-	@Schema(name = "参数键")
-	private String settingKey;
-
-	@Schema(name = "参数值")
-	private String settingValue;
-
-	@Schema(name = "值类型")
-	private String valueType;
-	
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelDocEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelDocEntity.java
deleted file mode 100644
index 0902d4e..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelDocEntity.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.iailab.module.mcs.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 模型信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Data
-@TableName("t_st_model_doc")
-public class StModelDocEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ASSIGN_UUID)
-    private String id;
-
-    /**
-     * 模型ID
-     */
-    private String modelId;
-
-    /**
-     * URL
-     */
-    private String url;
-
-    /**
-     * 方法
-     */
-    private String method;
-
-    /**
-     * 输入参数
-     */
-    private String params;
-
-    /**
-     * 参数示例
-     */
-    private String paramsExample;
-
-    /**
-     * 输出结果
-     */
-    private String result;
-
-    /**
-     * 结果示例
-     */
-    private String resultExample;
-
-    /**
-     * 创建人
-     */
-    private Long creator;
-
-    /**
-     * 创建时间
-     */
-    private Date createDate;
-
-    /**
-     * 修改人
-     */
-    private Long updater;
-
-    /**
-     * 修改时间
-     */
-    private Date updateDate;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelEntity.java
deleted file mode 100644
index 3d076c7..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelEntity.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.iailab.module.mcs.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 模型信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Data
-@TableName("t_st_model")
-public class StModelEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ASSIGN_UUID)
-    private String id;
-
-    /**
-     * 模型编码
-     */
-    private String modelCode;
-
-    /**
-     * 模型名称
-     */
-    private String modelName;
-
-    /**
-     * 模型父级
-     */
-    private String modelParent;
-
-    /**
-     * 模型类型
-     */
-    private String modelType;
-
-    /**
-     * 模型路径
-     */
-    private String modelPath;
-
-    /**
-     * 类名
-     */
-    private String className;
-
-    /**
-     * 方法名
-     */
-    private String methodName;
-
-    /**
-     * 参数结构
-     */
-    private String paramsStructure;
-
-    /**
-     * 备注
-     */
-    private String remark;
-
-    /**
-     * 回路
-     */
-    private String modelLoop;
-
-    /**
-     * 执行顺序
-     */
-    private Integer runSort;
-
-    /**
-     * 运行时间
-     */
-    private Date runTime;
-
-    /**
-     * 是否启用
-     */
-    private Integer isEnable;
-
-    /**
-     * 创建人
-     */
-    private Long creator;
-
-    /**
-     * 创建时间
-     */
-    private Date createDate;
-
-    /**
-     * 修改人
-     */
-    private Long updater;
-
-    /**
-     * 修改时间
-     */
-    private Date updateDate;
-
-    /**
-     * 模型版本
-     */
-    private String modelVersion;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelOutEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelOutEntity.java
deleted file mode 100644
index 14e8f02..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelOutEntity.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.iailab.module.mcs.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 模型下发信息表
- *
- * @author PanZhibao
- * @Description
- * @createTime 2023年08月02日 13:26:00
- */
-@Data
-@TableName("t_st_model_out")
-public class StModelOutEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ASSIGN_UUID)
-    private String id;
-
-    /**
-     * 模型ID
-     */
-    private String modelId;
-
-    /**
-     * 输出key
-     */
-    private String resultKey;
-
-    /**
-     * 是否下发
-     */
-    private String isWrite;
-
-    /**
-     * 下发的点位
-     */
-    private String pointNo;
-
-    /**
-     * 排序
-     */
-    private Integer sort;
-
-    /**
-     * 无扰切换点位
-     */
-    private String disturbancePointNo;
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelParamEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelParamEntity.java
deleted file mode 100644
index 2d36d32..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelParamEntity.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.iailab.module.mcs.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 模型参数信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Data
-@TableName("t_st_model_param")
-public class StModelParamEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ASSIGN_UUID)
-	private String id;
-    /**
-     * 模型ID
-     */
-	private String modelId;
-    /**
-     * 参数名称
-     */
-	private String paramName;
-    /**
-     * 参数ID
-     */
-	private String paramId;
-    /**
-     * 参数排序
-     */
-	private Integer paramOrder;
-    /**
-     * 输入排序
-     */
-	private Integer paramPortOrder;
-    /**
-     * 数据长度
-     */
-	private Integer dataLength;
-    /**
-     * 参数类型
-     */
-	private String paramType;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelRequestLogEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelRequestLogEntity.java
deleted file mode 100644
index f2471fe..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelRequestLogEntity.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.iailab.module.mcs.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年05月22日
- */
-@Data
-@TableName("t_st_model_request_log")
-public class StModelRequestLogEntity implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ASSIGN_UUID)
-    private String id;
-
-    /**
-     * 模型ID
-     */
-    private String modelId;
-
-    /**
-     * 调用方账号
-     */
-    private String appKey;
-
-    /**
-     * 调用时间
-     */
-    private Date requestTime;
-
-    /**
-     * 请求参数
-     */
-    private String requestParams;
-
-    /**
-     * 返回结果
-     */
-    private String responseCommonResult;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelResultEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelResultEntity.java
deleted file mode 100644
index 32a2cd4..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelResultEntity.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.iailab.module.mcs.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * 模型返回信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Data
-@TableName("t_st_model_result")
-public class StModelResultEntity {
-
-    /**
-     * id
-     */
-	private String id;
-    /**
-     * 模型ID
-     */
-	private String modelId;
-    /**
-     * 行号
-     */
-	private Integer lineIndex;
-    /**
-     * 输出key
-     */
-	private String resultKey;
-    /**
-     * 输出值
-     */
-	private String resultValue;
-    /**
-     * 输出时间
-     */
-	private Date resultTime;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelRunlogEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelRunlogEntity.java
deleted file mode 100644
index 84544b4..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelRunlogEntity.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.iailab.module.mcs.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 运行日志表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Data
-@TableName("t_st_model_runlog")
-public class StModelRunlogEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ASSIGN_UUID)
-    private String id;
-    /**
-     * 模型id
-     */
-	private String modelid;
-    /**
-     * 运行时间
-     */
-	private Date runTime;
-    /**
-     * 类别
-     */
-	private String runType;
-    /**
-     * 运行结果
-     */
-	private String runCommonResult;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelSettingEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelSettingEntity.java
deleted file mode 100644
index d4f0721..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/entity/StModelSettingEntity.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.iailab.module.mcs.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 模型设置表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Data
-@TableName("t_st_model_setting")
-public class StModelSettingEntity implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * id
-     */
-    @TableId(type = IdType.ASSIGN_UUID)
-    private String id;
-
-    /**
-     * 模型ID
-     */
-    private String modelId;
-
-    /**
-     * 参数键
-     */
-    private String settingKey;
-
-    /**
-     * 参数值
-     */
-    private String settingValue;
-
-    /**
-     * 值类型
-     */
-    private String valueType;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelDocService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelDocService.java
deleted file mode 100644
index 917546d..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelDocService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.iailab.module.mcs.service;
-
-import com.iailab.framework.common.service.BaseService;
-import com.iailab.module.mcs.dto.StModelDocDTO;
-import com.iailab.module.mcs.entity.StModelDocEntity;
-
-/**
- * 模型信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-public interface StModelDocService extends BaseService<StModelDocEntity> {
-
-	StModelDocDTO get(String modelId);
-
-	void update(StModelDocDTO stModelDocDTO);
-
-	void save(StModelDocDTO stModelDocDTO);
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelOutService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelOutService.java
deleted file mode 100644
index 7dc494b..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelOutService.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.iailab.module.mcs.service;
-
-import com.iailab.framework.common.service.CrudService;
-import com.iailab.module.mcs.dto.StModelOutDTO;
-import com.iailab.module.mcs.entity.StModelOutEntity;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年08月02日 13:33:00
- */
-public interface StModelOutService extends CrudService<StModelOutEntity, StModelOutDTO> {
-
-    void deleteByModelId(String modelId);
-
-    List<StModelOutDTO> getWriteByModelId(String modelId);
-
-    List<StModelOutDTO> getOutPoint(String modelCode);
-
-	List<StModelOutDTO> getAll(Map<String, Object> out);
-
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelParamService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelParamService.java
deleted file mode 100644
index cc56bc3..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelParamService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.iailab.module.mcs.service;
-
-import com.iailab.framework.common.service.CrudService;
-import com.iailab.module.mcs.dto.StModelParamDTO;
-import com.iailab.module.mcs.entity.StModelParamEntity;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 
- *
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-public interface StModelParamService extends CrudService<StModelParamEntity, StModelParamDTO> {
-
-    List<StModelParamDTO> getAll(Map<String, Object> params);
-
-    void deleteByModelId(String modelId);
-
-    List<StModelParamDTO> getByModelId(String modelId);
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelRequestLogService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelRequestLogService.java
deleted file mode 100644
index 714d72d..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelRequestLogService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.iailab.module.mcs.service;
-
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.BaseService;
-import com.iailab.module.mcs.dto.StModelRequestLogDTO;
-import com.iailab.module.mcs.entity.StModelRequestLogEntity;
-
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年05月22日
- */
-public interface StModelRequestLogService extends BaseService<StModelRequestLogEntity> {
-
-    PageData<StModelRequestLogDTO> page(Map<String, Object> params);
-
-    void save(StModelRequestLogDTO dto);
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelResultService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelResultService.java
deleted file mode 100644
index bd2c2b7..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelResultService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.iailab.module.mcs.service;
-
-import com.iailab.framework.common.service.CrudService;
-import com.iailab.module.mcs.dto.StModelResultDTO;
-import com.iailab.module.mcs.entity.StModelResultEntity;
-import com.iailab.module.model.sample.entity.DataEntity;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 模型返回信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-public interface StModelResultService extends CrudService<StModelResultEntity, StModelResultDTO> {
-
-	Map<String, Object> getLastResultMap(Map<String, Object> params);
-
-	Map<String, Object> getResultByCodeDate(Map<String, Object> params);
-
-	List<DataEntity> getValueList(String resultKey, Date startTime, Date endTime);
-
-	void addML(String id, Map<String, Object> result, Date runTime);
-
-	List<Map<String, Object>> getList(Map<String, Object> params);
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelRunlogService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelRunlogService.java
deleted file mode 100644
index 824c066..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelRunlogService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.iailab.module.mcs.service;
-
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.CrudService;
-import com.iailab.module.mcs.dto.StModelRunlogDTO;
-import com.iailab.module.mcs.entity.StModelRunlogEntity;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 运行日志表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-public interface StModelRunlogService extends CrudService<StModelRunlogEntity, StModelRunlogDTO> {
-
-    void add(StModelRunlogDTO dto);
-
-    PageData<StModelRunlogDTO> queryPage(Map<String, Object> params);
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelService.java
deleted file mode 100644
index 84c0127..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelService.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.iailab.module.mcs.service;
-
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.BaseService;
-import com.iailab.module.mcs.dto.StModelDTO;
-import com.iailab.module.mcs.entity.StModelEntity;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.IOException;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 模型信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-public interface StModelService extends BaseService<StModelEntity> {
-
-    PageData<StModelDTO> page(Map<String, Object> params);
-	
-	StModelDTO get(String id);
-
-    List<StModelDTO> getListAll(Map<String, Object> params);
-
-    void save(StModelDTO dto);
-
-    void update(StModelDTO dto);
-
-    StModelDTO getByCode(String code);
-
-    void deleteByIds(String[] ids);
-
-    void enableByIds(String[] ids);
-
-    void disableByIds(String[] ids);
-
-    void updateTime(String id, Date runTime);
-
-    Map<String, Object> upload(MultipartFile file) throws IOException;
-
-    Map<String, Object> getRelation();
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelSettingService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelSettingService.java
deleted file mode 100644
index 3a7e5a7..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/StModelSettingService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.iailab.module.mcs.service;
-
-import com.iailab.framework.common.service.CrudService;
-import com.iailab.module.mcs.dto.StModelSettingDTO;
-import com.iailab.module.mcs.entity.StModelSettingEntity;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 
- *
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-public interface StModelSettingService  extends CrudService<StModelSettingEntity, StModelSettingDTO>{
-
-	List<StModelSettingDTO> getAll(Map<String, Object> params);
-
-	void deleteByModelId(String modelId);
-
-	Map<String, Object> getByModelId(String modelId);
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelDocServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelDocServiceImpl.java
deleted file mode 100644
index 8862b7b..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelDocServiceImpl.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.iailab.module.mcs.service.impl;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.iailab.framework.common.service.impl.BaseServiceImpl;
-import com.iailab.framework.common.util.object.ConvertUtils;
-import com.iailab.module.mcs.dao.StModelDocDao;
-import com.iailab.module.mcs.dto.StModelDocDTO;
-import com.iailab.module.mcs.entity.StModelDocEntity;
-import com.iailab.module.mcs.service.StModelDocService;
-import org.springframework.stereotype.Service;
-
-/**
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-@Service
-public class StModelDocServiceImpl extends BaseServiceImpl<StModelDocDao, StModelDocEntity> implements StModelDocService {
-
-    @Override
-    public StModelDocDTO get(String id) {
-        StModelDocEntity entity = baseDao.selectOne(new QueryWrapper<StModelDocEntity>().eq("model_id",id));
-
-        return ConvertUtils.sourceToTarget(entity, StModelDocDTO.class);
-    }
-
-    @Override
-    public void update(StModelDocDTO stModelDocDTO) {
-        StModelDocEntity stModelDocEntity = ConvertUtils.sourceToTarget(stModelDocDTO,StModelDocEntity.class);
-        updateById(stModelDocEntity);
-    }
-
-    @Override
-    public void save(StModelDocDTO stModelDocDTO) {
-        StModelDocEntity stModelDocEntity = ConvertUtils.sourceToTarget(stModelDocDTO, StModelDocEntity.class);
-        insert(stModelDocEntity);
-    }
-
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelOutServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelOutServiceImpl.java
deleted file mode 100644
index 5524c30..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelOutServiceImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.iailab.module.mcs.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.iailab.framework.common.service.impl.CrudServiceImpl;
-import com.iailab.framework.common.util.object.ConvertUtils;
-import com.iailab.module.mcs.dao.StModelOutDao;
-import com.iailab.module.mcs.dto.StModelOutDTO;
-import com.iailab.module.mcs.entity.StModelOutEntity;
-import com.iailab.module.mcs.service.StModelOutService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年08月02日 13:33:00
- */
-@Service
-public class StModelOutServiceImpl extends CrudServiceImpl<StModelOutDao, StModelOutEntity, StModelOutDTO> implements StModelOutService {
-
-    @Resource
-    private StModelOutDao stModelOutDao;
-
-    @Override
-    public QueryWrapper<StModelOutEntity> getWrapper(Map<String, Object> params) {
-        String modelId = (String) params.get("model_id");
-
-        QueryWrapper<StModelOutEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.isNotBlank(modelId), "model_id", modelId);
-
-        return wrapper;
-    }
-
-    @Override
-    public void deleteByModelId(String modelId) {
-        Map<String, Object> params = new HashMap<>();
-        params.put("model_id", modelId);
-        baseDao.delete(this.getWrapper(params));
-    }
-
-    @Override
-    public List<StModelOutDTO> getWriteByModelId(String modelId) {
-        QueryWrapper queryWrapper = new QueryWrapper<StModelOutEntity>()
-                .eq("model_id", modelId)
-                .eq("is_write", "1")
-                .orderByAsc("sort");
-        return ConvertUtils.sourceToTarget(baseDao.selectList(queryWrapper), StModelOutDTO.class);
-    }
-
-    @Override
-    public List<StModelOutDTO> getOutPoint(String modelCode) {
-        Map<String, Object> params = new HashMap<>(1);
-        params.put("modelCode", modelCode);
-        return stModelOutDao.getOutPoint(params);
-    }
-
-    @Override
-    public List<StModelOutDTO> getAll(Map<String, Object> out) {
-        return stModelOutDao.getAll(out);
-    }
-
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelParamServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelParamServiceImpl.java
deleted file mode 100644
index a6928c6..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelParamServiceImpl.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.iailab.module.mcs.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.iailab.framework.common.service.impl.CrudServiceImpl;
-import com.iailab.framework.common.util.object.ConvertUtils;
-import com.iailab.module.mcs.dao.StModelParamDao;
-import com.iailab.module.mcs.dto.StModelParamDTO;
-import com.iailab.module.mcs.entity.StModelParamEntity;
-import com.iailab.module.mcs.service.StModelParamService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 
- *
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-@Service
-public class StModelParamServiceImpl  extends CrudServiceImpl<StModelParamDao, StModelParamEntity, StModelParamDTO>
-		implements StModelParamService {
-
-
-	@Override
-	public List<StModelParamDTO> getAll(Map<String, Object> params) {
-		return baseDao.getAll(params);
-	}
-	@Override
-	public QueryWrapper<StModelParamEntity> getWrapper(Map<String, Object> params) {
-		String id = (String)params.get("id");
-
-        QueryWrapper<StModelParamEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.isNotBlank(id), "id", id);
-
-        return wrapper;
-	}
-	@Override
-	public void deleteByModelId(String modelId) {
-		baseDao.deleteByModelId(modelId);
-	}
-
-	@Override
-	public List<StModelParamDTO> getByModelId(String modelId) {
-		QueryWrapper queryWrapper = new QueryWrapper<StModelParamEntity>()
-				.eq("model_id", modelId)
-				.orderByAsc("param_port_order")
-				.orderByAsc("param_order");
-		return ConvertUtils.sourceToTarget(baseDao.selectList(queryWrapper), StModelParamDTO.class);
-	}
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelRequestLogServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelRequestLogServiceImpl.java
deleted file mode 100644
index e3edfa7..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelRequestLogServiceImpl.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.iailab.module.mcs.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.impl.BaseServiceImpl;
-import com.iailab.framework.common.util.object.ConvertUtils;
-import com.iailab.module.mcs.dao.StModelRequestLogDao;
-import com.iailab.module.mcs.dto.StModelRequestLogDTO;
-import com.iailab.module.mcs.entity.StModelRequestLogEntity;
-import com.iailab.module.mcs.service.StModelRequestLogService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-
-import java.util.Map;
-import java.util.UUID;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年05月22日
- */
-@Service
-public class StModelRequestLogServiceImpl extends BaseServiceImpl<StModelRequestLogDao, StModelRequestLogEntity> implements StModelRequestLogService {
-
-    @Override
-    public PageData<StModelRequestLogDTO> page(Map<String, Object> params) {
-        IPage<StModelRequestLogEntity> page = baseDao.selectPage(
-                getPage(params, "request_time", false),
-                getWrapper(params)
-        );
-        return getPageData(page, StModelRequestLogDTO.class);
-    }
-
-    private QueryWrapper<StModelRequestLogEntity> getWrapper(Map<String, Object> params) {
-        String modelId = (String) params.get("modelId");
-        String appKey = (String) params.get("appKey");
-        String startTime = (String) params.get("startTime");
-        String endTime = (String) params.get("endTime");
-
-        QueryWrapper<StModelRequestLogEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.isNotBlank(modelId), "model_id", modelId)
-                .like(StringUtils.isNotBlank(appKey), "app_key", appKey)
-                .ge(StringUtils.isNotBlank(startTime), "request_time", startTime)
-                .le(StringUtils.isNotBlank(endTime), "request_time", endTime);
-        return wrapper;
-    }
-
-    @Override
-    public void save(StModelRequestLogDTO dto) {
-        StModelRequestLogEntity entity = ConvertUtils.sourceToTarget(dto, StModelRequestLogEntity.class);
-        entity.setId(UUID.randomUUID().toString());
-        insert(entity);
-    }
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelResultServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelResultServiceImpl.java
deleted file mode 100644
index 1883ad5..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelResultServiceImpl.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package com.iailab.module.mcs.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.iailab.framework.common.service.impl.CrudServiceImpl;
-import com.iailab.common.utils.DateUtils;
-import com.iailab.module.mcs.dao.StModelResultDao;
-import com.iailab.module.mcs.dto.StModelResultDTO;
-import com.iailab.module.mcs.entity.StModelResultEntity;
-import com.iailab.module.mcs.service.StModelResultService;
-import com.iailab.module.model.sample.entity.DataEntity;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import javax.annotation.Resource;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 模型返回信息表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Service
-public class StModelResultServiceImpl extends CrudServiceImpl<StModelResultDao, StModelResultEntity, StModelResultDTO> implements StModelResultService {
-
-	@Resource
-	private StModelResultDao stModelResultDao;
-	
-    @Override
-    public QueryWrapper<StModelResultEntity> getWrapper(Map<String, Object> params){
-        String id = (String)params.get("id");
-
-        QueryWrapper<StModelResultEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.isNotBlank(id), "id", id);
-
-        return wrapper;
-    }
-
-    @Override
-    public List<Map<String, Object>> getList(Map<String, Object> params) {
-        if (params.get("isAsc") != null && params.get("isAsc").toString().equals("false")) {
-            params.put("sortType", "desc");
-        } else {
-            params.put("sortType", "asc");
-        }
-        List<Map<String, Object>> result = new ArrayList<>();
-        List<StModelResultEntity> list = stModelResultDao.getResultList(params);
-        List<Date> dateList = list.stream().map(t -> t.getResultTime()).distinct().collect(Collectors.toList());
-        Map<Date, List<StModelResultEntity>> groupList = list.stream().collect(Collectors.groupingBy(StModelResultEntity::getResultTime));
-        dateList.forEach(item -> {
-            Map<String, Object> vt = new HashMap<>();
-            groupList.get(item).forEach(v -> {
-                vt.put(v.getResultKey(), v.getResultValue());
-            });
-            vt.put("resultTime", item);
-            result.add(vt);
-        });
-        return result;
-    }
-    
-    @Override
-    public Map<String, Object> getLastResultMap(Map<String, Object> params) {
-        Map<String, Object> result = new HashMap<>(1);
-        List<StModelResultDTO> list = baseDao.getLastResultByCode(params);
-        if (CollectionUtils.isEmpty(list)) {
-            return result;
-        }
-        list.forEach(item -> {
-            result.put(item.getResultKey(), item.getResultValue());
-        });
-        result.put("result_time", list.get(0).getResultTime());
-        return result;
-    }
-
-    @Override
-    public Map<String, Object> getResultByCodeDate(Map<String, Object> params) {
-        Map<String, Object> result = new HashMap<>(1);
-        List<StModelResultDTO> list = baseDao.getResultByCodeDate(params);
-        if (CollectionUtils.isEmpty(list)) {
-            return result;
-        }
-        list.forEach(item -> {
-            result.put(item.getResultKey(), item.getResultValue());
-        });
-        result.put("result_time", list.get(0).getResultTime());
-        return result;
-    }
-
-    @Override
-    public List<DataEntity> getValueList(String resultKey, Date startTime, Date endTime) {
-        List<DataEntity> result = new ArrayList<>();
-        String[] params = resultKey.split(":");
-
-        QueryWrapper<StModelResultEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq("result_key", params[1])
-                .ge("result_time", startTime)
-                .le("result_time", endTime)
-                .orderByAsc("result_time");
-        List<StModelResultEntity> list = baseDao.selectList(wrapper);
-        if (CollectionUtils.isEmpty(list)) {
-            return result;
-        }
-        for (int i = 0; i < list.size(); i++) {
-        	DataEntity dataEntity = new DataEntity();
-        	dataEntity.setTimeStamp(list.get(i).getResultTime());
-        	dataEntity.setDataValue(Double.parseDouble(list.get(i).getResultValue()));
-        	result.add(dataEntity);
-		}
-        return result;
-    }
-
-	@Override
-	public void addML(String modelId, Map<String,Object> tMap, Date runTime) {
-        if (tMap == null) {
-            return;
-        }
-        List<StModelResultEntity> list = new ArrayList<>();
-        for(String key:tMap.keySet()){
-        	StModelResultEntity entity = new StModelResultEntity();
-        	entity.setId(UUID.randomUUID().toString());
-        	entity.setModelId(modelId);
-        	entity.setLineIndex(0);
-        	entity.setResultKey(key);
-        	entity.setResultValue(tMap.get(key).toString());
-        	entity.setResultTime(runTime);
-        	list.add(entity);
-        }
-        
-        baseDao.insertList(list);
-	}
-
-    public QueryWrapper<StModelResultEntity> getDateWrapper(Map<String, Date> params) {
-        String startDate = DateUtils.format(params.get("startdate"),DateUtils.DATE_TIME_PATTERN);
-        String endDate = DateUtils.format(params.get("enddate"),DateUtils.DATE_TIME_PATTERN);
-
-        QueryWrapper<StModelResultEntity> wrapper = new QueryWrapper<>();
-        wrapper.ge(StringUtils.isNotBlank(startDate), "result_time", startDate);
-        wrapper.le(StringUtils.isNotBlank(endDate), "result_time", endDate);
-        return wrapper;
-    }
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelRunlogServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelRunlogServiceImpl.java
deleted file mode 100644
index 0b34b95..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelRunlogServiceImpl.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.iailab.module.mcs.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.iailab.common.utils.Constant;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.impl.CrudServiceImpl;
-import com.iailab.framework.common.util.object.ConvertUtils;
-import com.iailab.module.mcs.dao.StModelRunlogDao;
-import com.iailab.module.mcs.dto.StModelRunlogDTO;
-import com.iailab.module.mcs.entity.StModelRunlogEntity;
-import com.iailab.module.mcs.service.StModelRunlogService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.Map;
-
-
-/**
- * 运行日志表
- *
- * @author lirm ${email}
- * @since 1.0.0 2023-06-21
- */
-@Service
-public class StModelRunlogServiceImpl extends CrudServiceImpl<StModelRunlogDao, StModelRunlogEntity, StModelRunlogDTO> implements StModelRunlogService {
-
-    @Override
-    public PageData<StModelRunlogDTO> queryPage(Map<String, Object> params) {
-        long curPage = 1;
-        long limit = 10;
-
-        if(params.get(Constant.PAGE) != null){
-            curPage = Long.parseLong((String)params.get(Constant.PAGE));
-        }
-        if(params.get(Constant.LIMIT) != null){
-            limit = Long.parseLong((String)params.get(Constant.LIMIT));
-        }
-
-        IPage<StModelRunlogEntity> page = baseDao.queryList(new Page<>(curPage, limit), params);
-        return getPageData(page, StModelRunlogDTO.class);
-    }
-
-    @Override
-    public QueryWrapper<StModelRunlogEntity> getWrapper(Map<String, Object> params){
-        String modelCode = (String)params.get("modelCode");
-        String modelName = (String)params.get("modelName");
-
-        QueryWrapper<StModelRunlogEntity> wrapper = new QueryWrapper<>();
-        wrapper.like(StringUtils.isNotBlank(modelCode), "model_code", modelCode);
-        wrapper.like(StringUtils.isNotBlank(modelName), "model_name", modelName);
-
-        return wrapper;
-    }
-
-    @Override
-    public void add(StModelRunlogDTO dto) {
-        StModelRunlogEntity entity = ConvertUtils.sourceToTarget(dto, StModelRunlogEntity.class);
-        baseDao.insert(entity);
-    }
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelServiceImpl.java
deleted file mode 100644
index 3ff5c27..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelServiceImpl.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package com.iailab.module.mcs.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.iailab.common.enums.IsEnableEnum;
-import com.iailab.framework.common.page.PageData;
-import com.iailab.framework.common.service.impl.BaseServiceImpl;
-import com.iailab.framework.common.util.object.ConvertUtils;
-import com.iailab.common.utils.UnzipUtils;
-import com.iailab.module.mcs.dao.StModelDao;
-import com.iailab.module.mcs.dto.RelationLineDTO;
-import com.iailab.module.mcs.dto.RelationNodeDTO;
-import com.iailab.module.mcs.dto.StModelDTO;
-import com.iailab.module.mcs.entity.StModelEntity;
-import com.iailab.module.mcs.service.StModelService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-@Service
-public class StModelServiceImpl extends BaseServiceImpl<StModelDao, StModelEntity> implements StModelService {
-
-    private final String PATH_ZIP = "/zip/";
-
-    @Override
-    public PageData<StModelDTO> page(Map<String, Object> params) {
-        IPage<StModelEntity> page = baseDao.selectPage(
-                getPage(params, "create_date", false),
-                getWrapper(params)
-        );
-
-        return getPageData(page, StModelDTO.class);
-    }
-
-    private QueryWrapper<StModelEntity> getWrapper(Map<String, Object> params) {
-        String modelCode = (String) params.get("modelCode");
-        String modelName = (String) params.get("modelName");
-        String modelType = (String) params.get("modelType");
-        String isEnable = (String) params.get("isEnable");
-
-        QueryWrapper<StModelEntity> wrapper = new QueryWrapper<>();
-        wrapper.like(StringUtils.isNotBlank(modelName), "model_name", modelName)
-                .like(StringUtils.isNotBlank(modelCode), "model_code", modelCode)
-                .eq(StringUtils.isNotBlank(modelType), "model_type", modelType)
-                .eq(StringUtils.isNotBlank(isEnable), "is_enable", isEnable);
-        return wrapper;
-    }
-
-    @Override
-    public void save(StModelDTO dto) {
-        StModelEntity entity = ConvertUtils.sourceToTarget(dto, StModelEntity.class);
-        insert(entity);
-    }
-
-    @Override
-    public void update(StModelDTO dto) {
-        StModelEntity entity = ConvertUtils.sourceToTarget(dto, StModelEntity.class);
-        updateById(entity);
-    }
-
-    @Override
-    public StModelDTO get(String id) {
-        StModelEntity entity = baseDao.selectById(id);
-
-        return ConvertUtils.sourceToTarget(entity, StModelDTO.class);
-    }
-
-    @Override
-    public List<StModelDTO> getListAll(Map<String, Object> params) {
-        String modelLoop = (String)params.get("modelLoop");
-
-        QueryWrapper<StModelEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq("is_enable", IsEnableEnum.ENABLE.value())
-                .eq(StringUtils.isNotBlank(modelLoop), "model_loop", modelLoop)
-        .orderByAsc("run_sort");
-
-        List<StModelEntity> list = baseDao.selectList(wrapper);
-        return ConvertUtils.sourceToTarget(list, StModelDTO.class);
-    }
-
-
-    @Override
-    public StModelDTO getByCode(String code) {
-        QueryWrapper<StModelEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq("model_code", code);
-        wrapper.eq("is_enable",1);
-        StModelEntity entity = baseDao.selectOne(wrapper);
-        return ConvertUtils.sourceToTarget(entity, StModelDTO.class);
-    }
-
-    @Override
-    public void deleteByIds(String[] ids) {
-        baseDao.deleteBatchIds(Arrays.asList(ids));
-    }
-
-    @Override
-    public void enableByIds(String[] ids) {
-        if (CollectionUtils.isEmpty(Arrays.asList(ids))) {
-            return;
-        }
-        Arrays.asList(ids).forEach(item -> {
-            StModelEntity entity = new StModelEntity();
-            entity.setId(item);
-            entity.setIsEnable(IsEnableEnum.ENABLE.value());
-            baseDao.updateById(entity);
-        });
-    }
-
-    @Override
-    public void disableByIds(String[] ids) {
-        if (CollectionUtils.isEmpty(Arrays.asList(ids))) {
-            return;
-        }
-        Arrays.asList(ids).forEach(item -> {
-            StModelEntity entity = new StModelEntity();
-            entity.setId(item);
-            entity.setIsEnable(IsEnableEnum.DISABLE.value());
-            baseDao.updateById(entity);
-        });
-    }
-
-    @Override
-    public void updateTime(String id, Date runTime) {
-        StModelEntity entity = new StModelEntity();
-        entity.setId(id);
-        entity.setRunTime(runTime);
-        baseDao.updateById(entity);
-    }
-
-    @Override
-    public Map<String, Object> upload(MultipartFile file) throws IOException {
-        Map<String, Object> result = new HashMap<>();
-        String modelPath = "";
-        String modelStart = "";
-        String uploadDir = modelPath + PATH_ZIP + file.getOriginalFilename();
-        File uploadFile = new File(uploadDir);
-        if (!uploadFile.exists()) {
-            uploadFile.mkdirs();
-        }
-        file.transferTo(new File(uploadDir));
-
-        // 解压
-        UnzipUtils.unzipFile(uploadDir, modelPath + "/");
-        result.put("path", modelPath + "/" + file.getOriginalFilename().substring(0, file.getOriginalFilename().indexOf(".")) + "/" + modelStart);
-        return result;
-    }
-
-    @Override
-    public Map<String, Object> getRelation() {
-        Map<String, Object> result = new HashMap<>();
-        List<RelationNodeDTO> nodes = new ArrayList<>();
-        List<RelationLineDTO> lines = new ArrayList<>();
-        List<StModelDTO> modelList = getListAll(new HashMap<>());
-        if (CollectionUtils.isEmpty(modelList)) {
-            return result;
-        }
-        RelationNodeDTO rootNode = new RelationNodeDTO();
-        rootNode.setId("root");
-        rootNode.setText("模型库");
-        nodes.add(rootNode);
-        List<String> parents = modelList.stream().map(t -> t.getModelParent()).distinct().collect(Collectors.toList());
-        Map<String, List<StModelDTO>> modelGroup = modelList.stream().collect(Collectors.groupingBy(StModelDTO::getModelParent));
-        for (int i = 0; i < parents.size(); i++) {
-            RelationNodeDTO pNode = new RelationNodeDTO();
-            pNode.setId("p-" + i);
-            pNode.setText(parents.get(i));
-            List<StModelDTO> groupList = modelGroup.get(parents.get(i));
-            for (int j = 0; j < groupList.size(); j++) {
-                StModelDTO stModel = groupList.get(j);
-                RelationNodeDTO mNode = new RelationNodeDTO();
-                mNode.setId(stModel.getId());
-                mNode.setText(stModel.getModelName());
-                mNode.setData(stModel);
-                nodes.add(mNode);
-
-                RelationLineDTO mLine = new RelationLineDTO();
-                mLine.setFrom(pNode.getId());
-                mLine.setTo(mNode.getId());
-                lines.add(mLine);
-            }
-            nodes.add(pNode);
-
-            RelationLineDTO pLine = new RelationLineDTO();
-            pLine.setFrom("root");
-            pLine.setTo(pNode.getId());
-            lines.add(pLine);
-        }
-        result.put("nodes", nodes);
-        result.put("lines", lines);
-        return result;
-    }
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelSettingServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelSettingServiceImpl.java
deleted file mode 100644
index 564fdfe..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/mcs/service/impl/StModelSettingServiceImpl.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.iailab.module.mcs.service.impl;
-
-import com.alibaba.fastjson.JSONArray;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.iailab.framework.common.service.impl.CrudServiceImpl;
-import com.iailab.module.mcs.dao.StModelSettingDao;
-import com.iailab.module.mcs.dto.StModelSettingDTO;
-import com.iailab.module.mcs.entity.StModelSettingEntity;
-import com.iailab.module.mcs.service.StModelSettingService;
-import org.apache.commons.lang3.StringUtils;
-import javax.annotation.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author lirm 1343021927@qq.com
- * @since 1.0.0 2023-05-10
- */
-@Service
-public class StModelSettingServiceImpl extends CrudServiceImpl<StModelSettingDao, StModelSettingEntity, StModelSettingDTO>
-        implements StModelSettingService {
-
-    @Resource
-    private StModelSettingDao StModelSettingDao;
-
-    @Override
-    public List<StModelSettingDTO> getAll(Map<String, Object> params) {
-        return StModelSettingDao.getAll(params);
-    }
-
-    @Override
-    public QueryWrapper<StModelSettingEntity> getWrapper(Map<String, Object> params) {
-        String id = (String) params.get("id");
-
-        QueryWrapper<StModelSettingEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.isNotBlank(id), "id", id);
-
-        return wrapper;
-    }
-
-    @Override
-    public void deleteByModelId(String modelId) {
-        StModelSettingDao.deleteByModelId(modelId);
-    }
-
-    @Override
-    public Map<String, Object> getByModelId(String modelId) {
-        Map<String, Object> result = new HashMap<>();
-        List<StModelSettingEntity> list = baseDao.selectList(new QueryWrapper<StModelSettingEntity>().eq("model_id", modelId));
-        if (!CollectionUtils.isEmpty(list)) {
-            list.forEach(item -> {
-                if ("int".equals(item.getValueType())) {
-                    int value = Integer.parseInt(item.getSettingValue());
-                    result.put(item.getSettingKey(), value);
-                } else if ("double".equals(item.getValueType())) {
-                    double value = Double.parseDouble(item.getSettingValue());
-                    result.put(item.getSettingKey(), value);
-                } else if ("string".equals(item.getValueType())) {
-                    String value = item.getSettingValue();
-                    result.put(item.getSettingKey(), value);
-                } else if ("decimalArray".equals(item.getValueType())) {
-                    JSONArray valueArray = JSONArray.parseArray(item.getSettingValue());
-                    double[] value = new double[valueArray.size()];
-                    for(int i = 0; i < valueArray.size(); i ++) {
-                        value[i] = Double.parseDouble(valueArray.get(i).toString());
-                    }
-                } else {
-                    result.put(item.getSettingKey(), item.getSettingValue());
-                }
-            });
-        }
-        return result;
-    }
-
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/IAILModel.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/IAILModel.java
deleted file mode 100644
index 668dafd..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/IAILModel.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package com.iailab.module.model;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-public class IAILModel implements Serializable {
-    private static final long serialVersionUID = -4537530431274769332L;
-    private String className;
-    private String methodName;
-    private Class<?>[] paramsArray;
-    private String resultKey;
-    private String filePath;
-    private Map dataMap;
-    private Map settingConfigMap;
-    private Map loadSettingMap;
-    private List<String> paramNameList;
-    private List<String> paramPathList;
-    private List<String> fileBase64List;
-    private String version;
-    private String info1;
-    private String info2;
-    private String info3;
-
-    public IAILModel() {
-    }
-
-    public String getFilePath() {
-        return this.filePath;
-    }
-
-    public void setFilePath(String filePath) {
-        this.filePath = filePath;
-    }
-
-    public Map getDataMap() {
-        return this.dataMap;
-    }
-
-    public void setDataMap(Map dataMap) {
-        this.dataMap = dataMap;
-    }
-
-    public Map getSettingConfigMap() {
-        return this.settingConfigMap;
-    }
-
-    public void setSettingConfigMap(Map settingConfigMap) {
-        this.settingConfigMap = settingConfigMap;
-    }
-
-    public Map getLoadSettingMap() {
-        return this.loadSettingMap;
-    }
-
-    public void setLoadSettingMap(Map loadSettingMap) {
-        this.loadSettingMap = loadSettingMap;
-    }
-
-    public List<String> getParamNameList() {
-        return this.paramNameList;
-    }
-
-    public void setParamNameList(List<String> paramNameList) {
-        this.paramNameList = paramNameList;
-    }
-
-    public List<String> getParamPathList() {
-        return this.paramPathList;
-    }
-
-    public void setParamPathList(List<String> paramPathList) {
-        this.paramPathList = paramPathList;
-    }
-
-    public List<String> getFileBase64List() {
-        return this.fileBase64List;
-    }
-
-    public void setFileBase64List(List<String> fileBase64List) {
-        this.fileBase64List = fileBase64List;
-    }
-
-    public String getClassName() {
-        return this.className;
-    }
-
-    public void setClassName(String className) {
-        this.className = className;
-    }
-
-    public String getMethodName() {
-        return this.methodName;
-    }
-
-    public void setMethodName(String methodName) {
-        this.methodName = methodName;
-    }
-
-    public Class<?>[] getParamsArray() {
-        return this.paramsArray;
-    }
-
-    public void setParamsArray(Class<?>[] paramsArray) {
-        this.paramsArray = paramsArray;
-    }
-
-    public String getResultKey() {
-        return this.resultKey;
-    }
-
-    public void setResultKey(String resultKey) {
-        this.resultKey = resultKey;
-    }
-
-    public String getVersion() {
-        return this.version;
-    }
-
-    public void setVersion(String version) {
-        this.version = version;
-    }
-
-    public String getInfo1() {
-        return this.info1;
-    }
-
-    public void setInfo1(String info1) {
-        this.info1 = info1;
-    }
-
-    public String getInfo2() {
-        return this.info2;
-    }
-
-    public void setInfo2(String info2) {
-        this.info2 = info2;
-    }
-
-    public String getInfo3() {
-        return this.info3;
-    }
-
-    public void setInfo3(String info3) {
-        this.info3 = info3;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java
new file mode 100644
index 0000000..6a7df4f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java
@@ -0,0 +1,137 @@
+package com.iailab.module.model.api;
+
+import com.alibaba.fastjson.JSON;
+import com.iailab.module.model.api.mdk.MdkApi;
+import com.iailab.module.model.api.mdk.dto.*;
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.module.model.mcs.pre.entity.DmModuleEntity;
+import com.iailab.module.model.mcs.pre.service.DmModuleService;
+import com.iailab.module.model.mcs.pre.service.MmPredictItemService;
+import com.iailab.module.model.mdk.predict.PredictModuleHandler;
+import com.iailab.module.model.mdk.vo.ItemVO;
+import com.iailab.module.model.mdk.vo.PredictResultVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月26日
+ */
+@Slf4j
+@RestController
+@Validated
+public class MdkApiImpl implements MdkApi {
+
+    @Autowired
+    private DmModuleService dmModuleService;
+
+    @Autowired
+    private MmPredictItemService mmPredictItemService;
+
+    @Autowired
+    private PredictModuleHandler predictModuleHandler;
+
+    /**
+     * 按模块预测
+     *
+     * @param reqDTO
+     * @return
+     */
+    @Override
+    public CommonResult<MdkPredictModuleRespDTO> predictModule(MdkPredictReqDTO reqDTO) {
+        MdkPredictModuleRespDTO resp = new MdkPredictModuleRespDTO();
+        Map<String, MdkPredictItemRespDTO> predictItemRespMap = new HashMap<>();
+        try {
+            if (reqDTO.getPredictTime() == null) {
+                throw new Exception("PredictTime不能为空");
+            }
+            if (reqDTO.getModuleType() == null) {
+                throw new Exception("ModuleType不能为空");
+            }
+            log.info("预测参数:" + JSON.toJSONString(reqDTO));
+            MdkPredictModuleRespDTO result = new MdkPredictModuleRespDTO();
+            result.setPredictTime(reqDTO.getPredictTime());
+            result.setModuleType(reqDTO.getModuleType());
+            List<DmModuleEntity> moduleList = dmModuleService.getModuleByModuleType(reqDTO.getModuleType());
+            log.info("预测计算开始: " + System.currentTimeMillis());
+            for (DmModuleEntity module : moduleList) {
+                int intervalTime = 0;
+                if (module.getPredicttime() != null) {
+                    intervalTime = (int) (reqDTO.getPredictTime().getTime() - module.getPredicttime().getTime()) / (1000 * 60);
+                }
+                List<ItemVO> predictItemList = mmPredictItemService.getByModuleId(module.getId());
+                Map<String, PredictResultVO> predictResultMap = predictModuleHandler.predict(predictItemList, reqDTO.getPredictTime(), intervalTime);
+                for (Map.Entry<String, PredictResultVO> entry : predictResultMap.entrySet()) {
+                    List<MdkPredictDataDTO> predictData = entry.getValue().getPredictList().stream().map(t-> {
+                        MdkPredictDataDTO dto1 = new MdkPredictDataDTO();
+                        dto1.setDataTime(t.getDataTime());
+                        dto1.setDataValue(t.getDataValue());
+                        return dto1;
+                    }).collect(Collectors.toList());
+                    MdkPredictItemRespDTO itemResp = new MdkPredictItemRespDTO();
+                    itemResp.setItemId(entry.getValue().getPredictId());
+                    itemResp.setPredictData(predictData);
+                    predictItemRespMap.put(entry.getKey(), itemResp);
+                }
+            }
+            log.info("预测计算结束: " + System.currentTimeMillis());
+        } catch (Exception ex) {
+            return error(999, ex.getMessage());
+        }
+        resp.setPredictItemRespMap(predictItemRespMap);
+        return success(resp);
+    }
+
+    /**
+     * 单个预测
+     *
+     * @param reqDTO
+     * @return
+     */
+    @Override
+    public CommonResult<MdkPredictItemRespDTO> predictItem(@Valid @RequestBody MdkPredictReqDTO reqDTO) {
+        MdkPredictItemRespDTO resp = new MdkPredictItemRespDTO();
+
+        return success(resp);
+    }
+
+    /**
+     * 预测调整
+     *
+     * @param reqDTO
+     * @return
+     */
+    @Override
+    public CommonResult<Boolean> predictAutoAdjust(@Valid @RequestBody MdkPredictReqDTO reqDTO) {
+
+
+        return success(true);
+    }
+
+    /**
+     * 执行调度模型
+     *
+     * @param reqDTO
+     * @return
+     */
+    @Override
+    public CommonResult<MdkScheduleRespDTO> doSchedule(@Valid @RequestBody MdkScheduleReqDTO reqDTO) {
+        MdkScheduleRespDTO resp = new MdkScheduleRespDTO();
+
+        return success(resp);
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/command/MLCommand.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/command/MLCommand.java
deleted file mode 100644
index 2473047..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/command/MLCommand.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.iailab.module.model.command;
-
-import com.iailab.module.mcs.dto.StModelDTO;
-import com.iailab.module.model.sample.dto.SampleData;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月17日 11:50:00
- */
-@Slf4j
-@Component
-public class MLCommand {
-
-    public Object[] getCommand(StModelDTO stModel, List<Object> params, Map<String, Object> settings, List<SampleData> sampleDataList) {
-
-        int portLength = sampleDataList.size();
-        Object[] paramValues = new Object[portLength + 1];
-        for (int i = 0; i < portLength; i++) {
-            paramValues[i] = sampleDataList.get(i).getMatrix();
-        }
-    	paramValues[portLength] = settings;
-        return paramValues;
-    }
-
-    public Object[] getCommand1(StModelDTO stModel, List<Object> params, Map<String, Object> settings, List<double[][]> sampleDataList) {
-
-        int portLength = sampleDataList.size();
-        Object[] paramValues = new Object[portLength + 1];
-        for (int i = 0; i < portLength; i++) {
-            paramValues[i] = sampleDataList.get(i);
-        }
-        paramValues[portLength] = settings;
-        return paramValues;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/command/PyCommand.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/command/PyCommand.java
deleted file mode 100644
index 9d65e7a..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/command/PyCommand.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.iailab.module.model.command;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.iailab.module.mcs.dto.StModelDTO;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月17日 11:50:00
- */
-@Slf4j
-@Component
-public class PyCommand {
-
-    public String[] getCommand(StModelDTO stModel, List<Object> params, Map<String, Object> settings) {
-        String[] command = new String[2 + params.size() + 1];
-        command[0] = "python";
-        command[1] = stModel.getModelPath();
-        for (int i = 0; i < params.size(); i++) {
-            command[2 + i] = JSONArray.toJSONString(params.get(i));
-        }
-    	command[command.length - 1] = JSONObject.toJSONString(settings).replace("\"", "'");
-        return command;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/dto/RunSetDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/dto/RunSetDTO.java
deleted file mode 100644
index 919caf0..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/dto/RunSetDTO.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.iailab.module.model.dto;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2024年06月15日
- */
-@Data
-public class RunSetDTO implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    List<double[][]> dataList;
-
-    private Map<String, Object> settings;
-}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/entity/ModelEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/entity/ModelEntity.java
deleted file mode 100644
index da4647e..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/entity/ModelEntity.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.iailab.module.model.entity;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.math.BigDecimal;
-
-/**
- * 模型实体
- */
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-public class ModelEntity {
-    /**
-     * 模型ID
-     */
-    private String id;
-
-    /**
-     * 模型编号
-     */
-    private String modelNo;
-
-    /**
-     * 模型名称
-     */
-    private String modelName;
-
-    /**
-     * 预测项ID
-     */
-    private String itemId;
-
-    /**
-     * 算法ID
-     */
-    private String arithId;
-
-    /**
-     * 训练样本长度
-     */
-    private Integer trainSampleLength;
-
-    /**
-     * 预测样本长度
-     */
-    private Integer predictSampleLength;
-
-    /**
-     * 是否在线训练
-     */
-    private Integer isOnlineTrain;
-
-    /**
-     * 模型路径
-     */
-    private String modelPath;
-
-    /**
-     * 是否归一化
-     */
-    private Integer isNormal;
-
-    /**
-     * 归一化后的最大值
-     */
-    private Double normalMax;
-
-    /**
-     * 归一化后的最小值
-     */
-    private Double normalMin;
-
-    /**
-     * 是否参与预测
-     */
-    private Integer status;
-
-    /**
-     * 类名称
-     */
-    private String className;
-
-    /**
-     * 方法名称
-     */
-    private String methodName;
-
-    /**
-     * 模型构造器
-     */
-    private String modelParamStructure;
-
-    /**
-     * 结果ID
-     */
-    private String resultstrid;
-
-    /**
-     * settingMap
-     */
-    private String settingMap;
-
-    /**
-     * 训练模型路径
-     */
-    private String trainModelPath;
-
-    /**
-     * 模型路径状态(1:需要更换,0:不需要更换)
-     */
-    private BigDecimal pathStatus;
-
-    /**
-     * 预测阶段需要输入的数据长度
-     */
-    private Integer pdim;
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/handler/ModelHandler.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/handler/ModelHandler.java
deleted file mode 100644
index 45d95df..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/handler/ModelHandler.java
+++ /dev/null
@@ -1,360 +0,0 @@
-package com.iailab.module.model.handler;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.iailab.common.utils.PythonUtil;
-import com.iailab.module.mcs.dto.StModelDTO;
-import com.iailab.module.mcs.dto.StModelRequestLogDTO;
-import com.iailab.module.mcs.dto.StModelRunlogDTO;
-import com.iailab.module.mcs.service.*;
-import com.iailab.module.model.IAILModel;
-import com.iailab.module.model.command.MLCommand;
-import com.iailab.module.model.command.PyCommand;
-import com.iailab.module.model.sample.constructor.SampleConstructor;
-import com.iailab.module.model.sample.dto.SampleData;
-import lombok.extern.slf4j.Slf4j;
-import javax.annotation.Resource;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.util.*;
-
-/**
- * 浮选模型处理
- *
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月16日 13:33:00
- */
-@Slf4j
-@Component
-public class ModelHandler {
-
-    @Resource
-    private PyCommand pyCommand;
-
-    @Resource
-    private MLCommand mLCommand;
-
-    @Resource
-    private StModelService stModelService;
-
-    @Resource
-    private StModelSettingService stModelSettingService;
-
-    @Resource
-    private StModelRunlogService runlogService;
-
-    @Resource
-    private StModelResultService stModelResultService;
-
-    @Resource
-    private SampleConstructor sampleConstructor;
-
-    @Resource
-    private StModelRequestLogService stModelRequestLogService;
-
-    /**
-     * 运行模型
-     *
-     * @param modelCode
-     * @param runTime
-     * @return
-     * @throws Exception
-     */
-    public Map<String, Object> run(String modelCode, Date runTime) throws Exception {
-        Map<String, Object> result = new HashMap<>();
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(runTime);
-        calendar.set(Calendar.SECOND, 0);
-        Date dataTime = calendar.getTime();
-        try {
-            // 1、查找模型
-            StModelDTO stModel = stModelService.getByCode(modelCode);
-            if (stModel == null) {
-                throw new Exception("modelCode错误!");
-            }
-
-            // 2、构建输入参数
-            List<SampleData> sampleDataList = sampleConstructor.constructSample(stModel.getId(), dataTime);
-            List<Object> params = new ArrayList<>();
-            if (!CollectionUtils.isEmpty(sampleDataList)) {
-                sampleDataList.forEach(item -> {
-                    params.add(item.getMatrix());
-                });
-            }
-
-            // 3、构建配置参数
-            Map<String, Object> settings = stModelSettingService.getByModelId(stModel.getId());
-
-            // 4、执行算法
-            log.info("################ modelCode=" + modelCode + " ###################");
-            String[] command = pyCommand.getCommand(stModel, params, settings);
-            log.info("command=" + JSONArray.toJSONString(command));
-            result = PythonUtil.execPy(command);
-            log.info("result=" + JSON.toJSONString(result));
-            stModelResultService.addML(stModel.getId(), result, runTime);
-            stModelService.updateTime(stModel.getId(), runTime);
-
-            // 6、插入运行日志
-            String jsonString = dealResult(result);
-            this.addLog(stModel.getId(), modelCode, runTime, jsonString);
-        } catch (Exception ex) {
-            ex.printStackTrace();
-            throw ex;
-        }
-        return result;
-    }
-
-    public String dealResult(Map<String, Object> result) {
-        ObjectMapper mapper = new ObjectMapper();
-        String jsonString = "";
-        try {
-            jsonString = mapper.writeValueAsString(result);
-            jsonString = jsonString.replace("mv_fl_kd_307", "307分流阀开度");
-            jsonString = jsonString.replace("mv_hj_water_valve_main_307", "315合介桶加水阀开度");
-            jsonString = jsonString.replace("mv_xj_water_valve_307", "333稀介桶加水阀开度");
-            jsonString = jsonString.replace("mv_hj_water_valve_small_307", "315合介桶密度微调阀开度");
-            jsonString = jsonString.replace("mv_mn_water_valve_307", "325煤泥桶加水阀开度");
-
-            jsonString = jsonString.replace("mv_fl_kd_308", "308分流阀开度");
-            jsonString = jsonString.replace("mv_hj_water_valve_main_308", "316合介桶加水阀开度");
-            jsonString = jsonString.replace("mv_xj_water_valve_308", "332稀介桶加水阀开度");
-            jsonString = jsonString.replace("mv_hj_water_valve_small_308", "316合介桶密度微调阀开度");
-            jsonString = jsonString.replace("mv_mn_water_valve_308", "325煤泥桶加水阀开度");
-
-            jsonString = jsonString.replace("mv_valve_fl_3318", "3318分流阀开度");
-            jsonString = jsonString.replace("mv_pump_hl_3318", "3308混料桶排水泵频率");
-            jsonString = jsonString.replace("mv_pump_hj_3318", "3344合介桶排水泵频率");
-            jsonString = jsonString.replace("mv_valve_hj_water_3318", "3344合介桶加水阀开度");
-            jsonString = jsonString.replace("mv_valve_jj_3318", "3344合介桶加介阀开度");
-            jsonString = jsonString.replace("mv_valve_xj_water_3318", "3348稀介桶加水阀开度");
-            jsonString = jsonString.replace("mv_pump_xj_3318", "3348稀介桶排水泵频率");
-            jsonString = jsonString.replace("mv_pump_mn_3318", "4402煤泥桶排水泵频率");
-            jsonString = jsonString.replace("mv_valve_mn_water_3318", "4402煤泥桶加水阀开度");
-            jsonString = jsonString.replace("target_md_3318", "3318目标合介密度");
-
-
-            jsonString = jsonString.replace("mv_valve_fl_3319", "3319分流阀开度");
-            jsonString = jsonString.replace("mv_pump_hl_3319", "3317混料桶排水泵频率");
-            jsonString = jsonString.replace("mv_pump_hj_3319", "3345合介桶排水泵频率");
-            jsonString = jsonString.replace("mv_valve_hj_water_3319", "3345合介桶加水阀开度");
-            jsonString = jsonString.replace("mv_valve_jj_3319", "3345合介桶加介阀开度");
-            jsonString = jsonString.replace("mv_valve_xj_water_3319", "3349稀介桶加水阀开度");
-            jsonString = jsonString.replace("mv_pump_xj_3319", "3349稀介桶排水泵频率");
-            jsonString = jsonString.replace("mv_pump_mn_3319", "4403煤泥桶排水泵频率");
-            jsonString = jsonString.replace("mv_valve_mn_water_3319", "4403煤泥桶加水阀开度");
-            jsonString = jsonString.replace("target_md_3319", "3319目标合介密度");
-
-            jsonString = jsonString.replace("status_first_start", "第一组风机启动信号");
-            jsonString = jsonString.replace("status_first_stop", "第一组风机停止信号");
-            jsonString = jsonString.replace("status_second_start", "第二组风机启动信号");
-            jsonString = jsonString.replace("status_second_stop", "第二组风机停止信号");
-            jsonString = jsonString.replace("mv_1_346", "346高压风机频率设定");
-            jsonString = jsonString.replace("mv_1_347", "347高压风机频率设定");
-            jsonString = jsonString.replace("mv_2_4454", "4454高压风机频率设定");
-
-            jsonString = jsonString.replace("Thickener_OF_XL", "501 浓缩池循环水池浊度预测值");
-            jsonString = jsonString.replace("Thickener_BF_XL", "501浓缩池出料浓度预测值");
-            jsonString = jsonString.replace("Thickener_H_XL", "501浓缩池污泥厚度预测值");
-            jsonString = jsonString.replace("Dos_yin_det1_XL", "507_1加药泵频率");
-            jsonString = jsonString.replace("Dos_yang_det1_XL", "508_1加药泵频率");
-            jsonString = jsonString.replace("Dos_yin_det2_XL", "507_2加药泵频率");
-            jsonString = jsonString.replace("Dos_yang_det2_XL", "508_2加药泵频率");
-
-            jsonString = jsonString.replace("Thickener_OF_QC", "浓缩池循环水池浊度预测值");
-            jsonString = jsonString.replace("Thickener_BF_QC", "浓缩池出料浓度预测值");
-            jsonString = jsonString.replace("Thickener_H_QC", "浓缩池污泥厚度预测值");
-            jsonString = jsonString.replace("Dos_yin_det_QC", "350加药系统频率");
-            jsonString = jsonString.replace("Dos_yang_det_QC", "351加药系统频率");
-
-            jsonString = jsonString.replace("UF_pumb1", "503底流泵启停");
-            jsonString = jsonString.replace("UF_pumb2", "502底流泵启停");
-            jsonString = jsonString.replace("zt4418_res", "4418启停信号");
-            jsonString = jsonString.replace("zt4419_res", "4419启停信号");
-            jsonString = jsonString.replace("zt4420_res", "4420启停信号");
-            jsonString = jsonString.replace("zt4421_res", "4421启停信号");
-            jsonString = jsonString.replace("zt4422_res", "4422启停信号");
-            jsonString = jsonString.replace("zt4428_res", "4428启停信号");
-            jsonString = jsonString.replace("zt4429_res", "4429启停信号");
-            jsonString = jsonString.replace("zt4430_res", "4430启停信号");
-            jsonString = jsonString.replace("zt4431_res", "4431启停信号");
-            jsonString = jsonString.replace("zt4432_res", "4432启停信号");
-
-
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
-        return jsonString;
-    }
-
-    /**
-     * 调用模型
-     *
-     * @param modelCode
-     * @param runTime
-     * @param sampleDataList
-     * @param appKey
-     * @return
-     * @throws Exception
-     */
-    public Map<String, Object> run(String modelCode, Date runTime, List<double[][]> sampleDataList, String appKey) throws Exception {
-        Map<String, Object> result = new HashMap<>();
-        try {
-            // 1、查找模型
-            StModelDTO stModel = stModelService.getByCode(modelCode);
-            if (stModel == null) {
-                throw new Exception("modelCode错误!");
-            }
-
-            // 2、构建输入参数
-            List<Object> params = new ArrayList<>();
-            if (!CollectionUtils.isEmpty(sampleDataList)) {
-                sampleDataList.forEach(item -> {
-                    params.add(item);
-                });
-            }
-
-            // 3、构建配置参数
-            Map<String, Object> settings = stModelSettingService.getByModelId(stModel.getId());
-
-            // 4、执行算法
-            log.info("################ modelCode=" + modelCode + " ###################");
-            String[] command = pyCommand.getCommand(stModel, params, settings);
-            log.info("command=" + JSONArray.toJSONString(command));
-            result = PythonUtil.execPy(command);
-            log.info("result=" + JSON.toJSONString(result));
-
-            // 5、插入调用日志
-            StModelRequestLogDTO logDto = new StModelRequestLogDTO();
-            logDto.setModelId(stModel.getId());
-            logDto.setAppKey(appKey);
-            logDto.setRequestTime(runTime);
-            logDto.setRequestParams(JSONArray.toJSONString(sampleDataList));
-            logDto.setResponseResult(JSONObject.toJSONString(result));
-            stModelRequestLogService.save(logDto);
-        } catch (Exception ex) {
-            ex.printStackTrace();
-            throw ex;
-        }
-        return result;
-    }
-
-    /**
-     * 调用模型
-     *
-     * @param modelCode
-     * @param sampleDataList
-     * @return
-     * @throws Exception
-     */
-    public Map<String, Object> run(String modelCode, List<double[][]> sampleDataList) throws Exception {
-        Map<String, Object> result = new HashMap<>();
-        try {
-            // 1、查找模型
-            StModelDTO stModel = stModelService.getByCode(modelCode);
-            if (stModel == null) {
-                throw new Exception("modelCode错误!");
-            }
-
-            // 2、构建输入参数
-            List<Object> params = new ArrayList<>();
-            if (!CollectionUtils.isEmpty(sampleDataList)) {
-                sampleDataList.forEach(item -> {
-                    params.add(item);
-                });
-            }
-
-            // 3、构建配置参数
-            Map<String, Object> settings = stModelSettingService.getByModelId(stModel.getId());
-
-            // 4、执行算法
-            log.info("################ modelCode=" + modelCode + " ###################");
-            String[] command = pyCommand.getCommand(stModel, params, settings);
-            log.info("command=" + JSONArray.toJSONString(command));
-            result = PythonUtil.execPy(command);
-            log.info("result=" + JSON.toJSONString(result));
-
-        } catch (Exception ex) {
-            ex.printStackTrace();
-            throw ex;
-        }
-        return result;
-    }
-
-    /**
-     * 调用模型
-     *
-     * @param modelCode
-     * @param sampleDataList
-     * @param settings
-     * @return
-     * @throws Exception
-     */
-    public Map<String, Object> run(String modelCode, List<double[][]> sampleDataList, Map<String, Object> settings) throws Exception {
-        Map<String, Object> result = new HashMap<>();
-        try {
-            // 1、查找模型
-            StModelDTO stModel = stModelService.getByCode(modelCode);
-            if (stModel == null) {
-                throw new Exception("modelCode错误!");
-            }
-
-            // 2、构建输入参数
-            List<Object> params = new ArrayList<>();
-            if (!CollectionUtils.isEmpty(sampleDataList)) {
-                sampleDataList.forEach(item -> {
-                    params.add(item);
-                });
-            }
-
-            // 4、执行算法
-            log.info("################ modelCode=" + modelCode + " ###################");
-            String[] command = pyCommand.getCommand(stModel, params, settings);
-            log.info("command=" + JSONArray.toJSONString(command));
-            result = PythonUtil.execPy(command);
-            log.info("result=" + JSON.toJSONString(result));
-
-        } catch (Exception ex) {
-            ex.printStackTrace();
-            throw ex;
-        }
-        return result;
-    }
-
-    /**
-     * 构造IAILMDK.run()方法的newModelBean参数
-     *
-     * @param stModel
-     * @return
-     */
-    private IAILModel composeNewModelBean(StModelDTO stModel) {
-        IAILModel newModelBean = new IAILModel();
-        newModelBean.setClassName(stModel.getClassName().trim());
-        newModelBean.setMethodName(stModel.getMethodName().trim());
-        //构造参数类型
-        String[] paArStr = stModel.getParamsStructure().trim().split(",");
-        Class<?>[] paramsArray = new Class[paArStr.length];
-        for (int i = 0; i < paArStr.length; i++) {
-            if ("[[D".equals(paArStr[i])) {
-                paramsArray[i] = double[][].class;
-            } else if ("Map".equals(paArStr[i]) || "java.util.HashMap".equals(paArStr[i])) {
-                paramsArray[i] = HashMap.class;
-            }
-        }
-        newModelBean.setParamsArray(paramsArray);
-        return newModelBean;
-    }
-
-    public void addLog(String modelId, String modelCode, Date runTime, String jsonString) {
-        StModelRunlogDTO logDto = new StModelRunlogDTO();
-        logDto.setModelid(modelId);
-        logDto.setRunTime(runTime);
-        logDto.setRunType(modelCode);
-        logDto.setRunResult(jsonString);
-        runlogService.add(logDto);
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/DmModuleController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/DmModuleController.java
new file mode 100644
index 0000000..f20722f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/DmModuleController.java
@@ -0,0 +1,93 @@
+package com.iailab.module.model.mcs.pre.controller;
+
+import com.iailab.framework.common.exception.ErrorCode;
+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.DmModuleEntity;
+import com.iailab.module.model.mcs.pre.service.DmModuleService;
+import com.iailab.module.model.mcs.pre.vo.DmModulePageReqVO;
+import com.iailab.module.model.mcs.pre.vo.DmModuleRespVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 9:05
+ */
+@RestController
+@RequestMapping("/pre/module")
+public class DmModuleController {
+
+    @Autowired
+    private DmModuleService dmModuleService;
+
+    /**
+     * 管网列表
+     */
+    @GetMapping("/page")
+    public CommonResult<PageResult<DmModuleRespVO>> page(@Validated DmModulePageReqVO reqVO) {
+        PageResult<DmModuleEntity> page = dmModuleService.queryPage(reqVO);
+
+        return success(BeanUtils.toBean(page, DmModuleRespVO.class));
+    }
+
+    /**
+     * 管网列表
+     */
+    @GetMapping("/list")
+    public CommonResult<List<DmModuleEntity>> list(@RequestParam Map<String, Object> params) {
+        List<DmModuleEntity> list = dmModuleService.list(params);
+
+        return success(list);
+    }
+
+    /**
+     * 管网信息
+     */
+    @GetMapping("/get")
+    public CommonResult<DmModuleEntity> info(@RequestParam("id") String id){
+        DmModuleEntity module = dmModuleService.selectById(id);
+
+        return success(module);
+    }
+
+    /**
+     * 保存管网
+     */
+    @PostMapping("/create")
+    public CommonResult<Boolean> save(@RequestBody DmModuleEntity module){
+        int count = dmModuleService.check(module);
+        if (count > 0) {
+            ErrorCode errorCode = new ErrorCode(999, "名称重复");
+            return error(errorCode);
+        }
+        dmModuleService.saveModule(module);
+        return success(true);
+    }
+
+    /**
+     * 修改管网
+     */
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody DmModuleEntity module){
+        dmModuleService.update(module);
+        return success(true);
+    }
+
+    /**
+     * 删除管网
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id){
+        dmModuleService.deleteBatch(new String[]{id});
+        return success(true);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmItemOutputController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmItemOutputController.java
new file mode 100644
index 0000000..2bce340
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmItemOutputController.java
@@ -0,0 +1,36 @@
+package com.iailab.module.model.mcs.pre.controller;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.module.model.mcs.pre.service.MmItemOutputService;
+import com.iailab.module.model.mcs.pre.dto.MmItemOutputDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月23日 11:13
+ */
+@RestController
+@RequestMapping("/pre/item-output")
+public class MmItemOutputController {
+
+    @Autowired
+    private MmItemOutputService mmItemOutputService;
+
+    /**
+     * 预测项输出列表
+     */
+    @GetMapping("/list/all")
+    public CommonResult<List<MmItemOutputDTO>> queryAll(@RequestParam Map<String, Object> params){
+        List<MmItemOutputDTO> data = mmItemOutputService.queryList(params);
+        return success(data);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmItemTypeController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmItemTypeController.java
new file mode 100644
index 0000000..527eda0
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmItemTypeController.java
@@ -0,0 +1,82 @@
+package com.iailab.module.model.mcs.pre.controller;
+
+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.MmItemTypeEntity;
+import com.iailab.module.model.mcs.pre.service.MmItemTypeService;
+import com.iailab.module.model.mcs.pre.vo.MmItemTypePageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmItemTypeRespVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月22日 9:57
+ */
+@RestController
+@RequestMapping("/pre/item-type")
+public class MmItemTypeController {
+
+    @Autowired
+    private MmItemTypeService mmItemTypeService;
+
+    /**
+     * 预测项类型列表
+     */
+    @GetMapping("/page")
+    public CommonResult<PageResult<MmItemTypeRespVO>> page(@Validated MmItemTypePageReqVO reqVO) {
+        PageResult<MmItemTypeEntity> page = mmItemTypeService.page(reqVO);
+
+        return success(BeanUtils.toBean(page, MmItemTypeRespVO.class));
+    }
+
+    /**
+     * 预测项类型信息
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<MmItemTypeEntity> info(@PathVariable("id") String id) {
+        MmItemTypeEntity itemType = mmItemTypeService.selectById(id);
+
+        return success(itemType);
+    }
+
+    /**
+     * 保存预测项类型
+     */
+    @PostMapping("/create")
+    public CommonResult<Boolean> save(@RequestBody MmItemTypeEntity itemType) {
+        int count = mmItemTypeService.check(itemType);
+        if (count > 0) {
+            return error(999,"名称重复");
+        }
+        mmItemTypeService.saveItemType(itemType);
+        return success(true);
+    }
+
+    /**
+     * 修改预测项类型
+     */
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody MmItemTypeEntity itemType) {
+        int count = mmItemTypeService.check(itemType);
+        if (count > 0) {
+            return error(999,"名称重复");
+        }
+        mmItemTypeService.update(itemType);
+        return success(true);
+    }
+
+    /**
+     * 删除预测项类型
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
+        mmItemTypeService.deleteBatch(new String[]{id});
+        return success(true);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmModelResultstrController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmModelResultstrController.java
new file mode 100644
index 0000000..3cd7b2f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmModelResultstrController.java
@@ -0,0 +1,40 @@
+package com.iailab.module.model.mcs.pre.controller;
+
+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.MmModelResultstrEntity;
+import com.iailab.module.model.mcs.pre.service.MmModelResultstrService;
+import com.iailab.module.model.mcs.pre.vo.MmModelResultstrPageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmModelResultstrRespVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月07日 16:53
+ */
+@RestController
+@RequestMapping("/pre/model-resultstr")
+public class MmModelResultstrController {
+
+    @Autowired
+    private MmModelResultstrService mmModelResultstrService;
+
+    /**
+     * 预测项结果列表
+     */
+    @GetMapping("/page")
+    public CommonResult<PageResult<MmModelResultstrRespVO>> page(@Validated MmModelResultstrPageReqVO reqVO) {
+        PageResult<MmModelResultstrEntity> page = mmModelResultstrService.page(reqVO);
+
+        return success(BeanUtils.toBean(page, MmModelResultstrRespVO.class));
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmPredictItemController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmPredictItemController.java
new file mode 100644
index 0000000..c4c397e
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmPredictItemController.java
@@ -0,0 +1,113 @@
+package com.iailab.module.model.mcs.pre.controller;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.module.model.mcs.pre.dto.MmPredictItemDTO;
+import com.iailab.module.model.mcs.pre.service.MmPredictItemService;
+import com.iailab.module.model.mcs.pre.vo.CountItemtypeVO;
+import com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月26日 14:42
+ */
+@RestController
+@RequestMapping("/pre/predict-item")
+public class MmPredictItemController {
+
+    @Autowired
+    private MmPredictItemService mmPredictItemService;
+
+    /**
+     * 预测项列表
+     */
+    @GetMapping("/page")
+    public CommonResult<PageResult<MmPredictItemRespVO>> page(@RequestParam Map<String, Object> params) {
+        PageResult<MmPredictItemRespVO> page = mmPredictItemService.getPageList(params);
+        return success(page);
+    }
+
+    /**
+     * 预测项信息
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<MmPredictItemDTO> info(@PathVariable("id") String id, @RequestParam Map<String, Object> params){
+        MmPredictItemDTO predictItem = mmPredictItemService.getDetailById(id, params);
+        return success(predictItem);
+    }
+
+    /**
+     * 保存预测项
+     */
+    @PostMapping
+    public CommonResult<Boolean> save(@RequestBody MmPredictItemDTO mmPredictItemDto){
+        int count = mmPredictItemService.check(mmPredictItemDto.getMmPredictItem());
+        if (count > 0) {
+            return error(999, "名称或编号重复");
+        }
+        mmPredictItemService.savePredictItem(mmPredictItemDto);
+        return success(true);
+    }
+
+    /**
+     * 修改预测项
+     */
+    @PutMapping
+    public CommonResult<Boolean> update(@RequestBody MmPredictItemDTO mmPredictItemDto){
+        int count = mmPredictItemService.check(mmPredictItemDto.getMmPredictItem());
+        if (count > 0) {
+            return error(999, "名称或编号重复");
+        }
+        mmPredictItemService.update(mmPredictItemDto);
+        return success(true);
+    }
+
+    /**
+     * 删除预测项
+     */
+    @DeleteMapping("{id}")
+    public CommonResult<Boolean> delete(@RequestBody String[] itemIds){
+        if (itemIds == null || itemIds.length == 0) {
+            return error(999, "参数不能为空");
+        }
+        mmPredictItemService.deleteBatch(itemIds);
+        return success(true);
+    }
+
+    /**
+     * 预测项列表
+     */
+    @GetMapping("/count-itemtype")
+    public CommonResult<List<CountItemtypeVO>> countItemtype(@RequestParam Map<String, Object> params){
+        List<CountItemtypeVO> list = new ArrayList<>();
+        return success(list);
+    }
+
+    /**
+     * 数量
+     */
+    @GetMapping("/count")
+    public CommonResult<Long> count() {
+        Long count = mmPredictItemService.count();
+        return success(count);
+    }
+
+    /**
+     * 上传模型
+     */
+    @PostMapping("/uploadModel")
+    public CommonResult<Boolean> uploadModel(@RequestParam("file") MultipartFile file) throws Exception {
+
+        return success(true);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmResultTableController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmResultTableController.java
new file mode 100644
index 0000000..b49bbdb
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/MmResultTableController.java
@@ -0,0 +1,79 @@
+package com.iailab.module.model.mcs.pre.controller;
+
+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.MmResultTableEntity;
+import com.iailab.module.model.mcs.pre.service.MmResultTableService;
+import com.iailab.module.model.mcs.pre.vo.MmItemTypeRespVO;
+import com.iailab.module.model.mcs.pre.vo.MmResultTablePageReqVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月22日 9:57
+ */
+@RestController
+@RequestMapping("/pre/result-table")
+public class MmResultTableController {
+
+    @Autowired
+    private MmResultTableService mmResultTableService;
+
+    /**
+     * 结果存放列表
+     */
+    @GetMapping("/page")
+    public CommonResult<PageResult<MmItemTypeRespVO>> page(@Validated MmResultTablePageReqVO reqVO) {
+        PageResult<MmResultTableEntity> page = mmResultTableService.page(reqVO);
+
+        return success(BeanUtils.toBean(page, MmItemTypeRespVO.class));
+    }
+
+    @GetMapping("/info/{id}")
+    public CommonResult<MmResultTableEntity> info(@PathVariable("id") String id){
+        MmResultTableEntity resultTable = mmResultTableService.selectById(id);
+
+        return success(resultTable);
+    }
+
+    /**
+     * 保存结果存放
+     */
+    @PostMapping
+    public CommonResult<Boolean> save(@RequestBody MmResultTableEntity resultTable){
+        int count = mmResultTableService.check(resultTable);
+        if (count > 0) {
+            return error(999,"名称重复");
+        }
+        mmResultTableService.saveResultTable(resultTable);
+        return success(true);
+    }
+
+    /**
+     * 修改结果存放
+     */
+    @PutMapping
+    public CommonResult<Boolean> update(@RequestBody MmResultTableEntity resultTable){
+        int count = mmResultTableService.check(resultTable);
+        if (count > 0) {
+            return error(999,"名称重复");
+        }
+        mmResultTableService.update(resultTable);
+        return success(true);
+    }
+
+    /**
+     * 删除结果存放
+     */
+    @DeleteMapping("{id}")
+    public CommonResult<Boolean> delete(@RequestBody String[] ids){
+        mmResultTableService.deleteBatch(ids);
+        return success(true);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/DmModuleDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/DmModuleDao.java
new file mode 100644
index 0000000..908fc69
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/DmModuleDao.java
@@ -0,0 +1,22 @@
+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.module.model.mcs.pre.entity.DmModuleEntity;
+import com.iailab.module.model.mcs.pre.vo.DmModulePageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 8:30
+ */
+@Mapper
+public interface DmModuleDao extends BaseMapperX<DmModuleEntity> {
+
+    default PageResult<DmModuleEntity> selectPage(DmModulePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<DmModuleEntity>()
+                .likeIfPresent(DmModuleEntity::getModulename, reqVO.getModulename())
+                .orderByDesc(DmModuleEntity::getCreateTime));
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/DmModuleItemDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/DmModuleItemDao.java
new file mode 100644
index 0000000..92718d5
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/DmModuleItemDao.java
@@ -0,0 +1,13 @@
+package com.iailab.module.model.mcs.pre.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.pre.entity.DmModuleItemEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 8:39
+ */
+@Mapper
+public interface DmModuleItemDao extends BaseMapperX<DmModuleItemEntity> {
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemOutputDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemOutputDao.java
new file mode 100644
index 0000000..9f71246
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemOutputDao.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mcs.pre.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
+import com.iailab.module.model.mcs.pre.dto.MmItemOutputDTO;
+import com.iailab.module.model.mdk.vo.MmItemOutputVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 8:43
+ */
+@Mapper
+public interface MmItemOutputDao extends BaseMapperX<MmItemOutputEntity> {
+
+    List<MmItemOutputDTO> queryList(@Param("params") Map<String, Object> params);
+
+    List<MmItemOutputVO> getOutPutById(String outputid);
+
+    List<MmItemOutputVO> getOutPutByItemId(String itemid);
+
+    List<MmItemOutputVO> getOutPutByPointId(String pointid);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultDao.java
new file mode 100644
index 0000000..ed73a00
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultDao.java
@@ -0,0 +1,21 @@
+package com.iailab.module.model.mcs.pre.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.pre.entity.MmItemResultEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月28日 10:27
+ */
+@Mapper
+public interface MmItemResultDao extends BaseMapperX<MmItemResultEntity> {
+
+    void deletePredictValue(Map<String, Object> params);
+
+    void savePredictValue(Map<String, Object> params);
+
+    void savePredictJsonValue(Map<String, Object> params);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemTypeDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemTypeDao.java
new file mode 100644
index 0000000..d9744f9
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemTypeDao.java
@@ -0,0 +1,26 @@
+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.module.model.mcs.pre.entity.MmItemTypeEntity;
+import com.iailab.module.model.mcs.pre.vo.MmItemTypePageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 15:23
+ */
+@Mapper
+public interface MmItemTypeDao extends BaseMapperX<MmItemTypeEntity> {
+
+    default PageResult<MmItemTypeEntity> selectPage(MmItemTypePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MmItemTypeEntity>()
+                .likeIfPresent(MmItemTypeEntity::getItemtypename, reqVO.getItemtypename())
+                .orderByDesc(MmItemTypeEntity::getItemtypename));
+    }
+
+    List<MmItemTypeEntity> getItemTypeByItemId(String itemId);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelArithSettingsDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelArithSettingsDao.java
new file mode 100644
index 0000000..4e5da14
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelArithSettingsDao.java
@@ -0,0 +1,31 @@
+package com.iailab.module.model.mcs.pre.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.pre.entity.MmModelArithSettingsEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 8:58
+ */
+@Mapper
+public interface MmModelArithSettingsDao extends BaseMapperX<MmModelArithSettingsEntity> {
+
+    /**
+     * getMmModelArithSettings
+     *
+     * @param params
+     * @return
+     */
+    List<MmModelArithSettingsEntity> getMmModelArithSettings(Map<String, Object> params);
+
+    /**
+     * insertList
+     *
+     * @param list
+     */
+    void insertList(List<MmModelArithSettingsEntity> list);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelParamDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelParamDao.java
new file mode 100644
index 0000000..5c37024
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelParamDao.java
@@ -0,0 +1,13 @@
+package com.iailab.module.model.mcs.pre.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.pre.entity.MmModelParamEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 8:55
+ */
+@Mapper
+public interface MmModelParamDao extends BaseMapperX<MmModelParamEntity> {
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelResultstrDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelResultstrDao.java
new file mode 100644
index 0000000..c0fb8ad
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmModelResultstrDao.java
@@ -0,0 +1,22 @@
+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.module.model.mcs.pre.entity.MmModelResultstrEntity;
+import com.iailab.module.model.mcs.pre.vo.MmModelResultstrPageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月07日 16:38
+ */
+@Mapper
+public interface MmModelResultstrDao extends BaseMapperX<MmModelResultstrEntity> {
+
+    default PageResult<MmModelResultstrEntity> selectPage(MmModelResultstrPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MmModelResultstrEntity>()
+                .likeIfPresent(MmModelResultstrEntity::getResultstr, reqVO.getResultstr())
+                .orderByDesc(MmModelResultstrEntity::getResultstr));
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictItemDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictItemDao.java
new file mode 100644
index 0000000..abfd1a0
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictItemDao.java
@@ -0,0 +1,39 @@
+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.module.model.mcs.pre.entity.MmPredictItemEntity;
+import com.iailab.module.model.mcs.pre.entity.MmPredictItemEntity;
+import com.iailab.module.model.mcs.pre.vo.MmPredictItemPageReqVO;
+import com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO;
+import com.iailab.module.model.mdk.vo.ItemVO;
+import com.iailab.module.model.mdk.vo.MergeItemVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月26日 11:35
+ */
+@Mapper
+public interface MmPredictItemDao extends BaseMapperX<MmPredictItemEntity> {
+
+    /**
+     * 查询列表
+     *
+     * @param params
+     * @return
+     */
+    IPage<MmPredictItemRespVO> getPageList(IPage<MmPredictItemEntity> page, @Param("params") Map<String, Object> params);
+
+    List<ItemVO> getByModuleId(Map<String, Object> params);
+
+    List<ItemVO> getItem(Map<String, Object> params);
+
+    List<MergeItemVO> getMergeItemByItemId(Map<String, Object> params);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictMergeItemDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictMergeItemDao.java
new file mode 100644
index 0000000..09f9f9f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictMergeItemDao.java
@@ -0,0 +1,13 @@
+package com.iailab.module.model.mcs.pre.dao;
+
+import com.iailab.framework.common.dao.BaseDao;
+import com.iailab.module.model.mcs.pre.entity.MmPredictMergeItemEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 8:50
+ */
+@Mapper
+public interface MmPredictMergeItemDao extends BaseDao<MmPredictMergeItemEntity> {
+}
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
new file mode 100644
index 0000000..041d69c
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmPredictModelDao.java
@@ -0,0 +1,22 @@
+package com.iailab.module.model.mcs.pre.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 11:29
+ */
+@Mapper
+public interface MmPredictModelDao extends BaseMapperX<MmPredictModelEntity> {
+
+    List<MmPredictModelEntity> getNoSettingmapPredictModel(Map<String, Object> params);
+
+    List<MmPredictModelEntity> getActiveModelByItemId(String itemId);
+
+    List<MmPredictModelEntity> getSampleLength(String modelId);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmResultTableDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmResultTableDao.java
new file mode 100644
index 0000000..42e4803
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmResultTableDao.java
@@ -0,0 +1,23 @@
+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.module.model.mcs.pre.entity.MmResultTableEntity;
+import com.iailab.module.model.mcs.pre.entity.MmResultTableEntity;
+import com.iailab.module.model.mcs.pre.vo.MmResultTablePageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 16:20
+ */
+@Mapper
+public interface MmResultTableDao extends BaseMapperX<MmResultTableEntity> {
+
+    default PageResult<MmResultTableEntity> selectPage(MmResultTablePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MmResultTableEntity>()
+                .likeIfPresent(MmResultTableEntity::getTablename, reqVO.getTablename())
+                .orderByDesc(MmResultTableEntity::getTablename));
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/SequenceNumDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/SequenceNumDao.java
new file mode 100644
index 0000000..8369277
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/SequenceNumDao.java
@@ -0,0 +1,13 @@
+package com.iailab.module.model.mcs.pre.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iailab.module.model.mcs.pre.entity.SequenceNumEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月06日 13:07
+ */
+@Mapper
+public interface SequenceNumDao extends BaseMapper<SequenceNumEntity> {
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dto/MmItemOutputDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dto/MmItemOutputDTO.java
new file mode 100644
index 0000000..e290357
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dto/MmItemOutputDTO.java
@@ -0,0 +1,40 @@
+package com.iailab.module.model.mcs.pre.dto;
+
+import lombok.Data;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月23日 10:13
+ */
+@Data
+public class MmItemOutputDTO {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 预测项ID
+     */
+    private String itemid;
+
+    /**
+     * 数据点ID
+     */
+    private String pointid;
+
+    /**
+     * 存放表ID
+     */
+    private String resulttableid;
+
+    /**
+     * 数据点名称
+     */
+    private String tagname;
+
+    /**
+     * 预测项名称
+     */
+    private String itemname;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dto/MmPredictItemDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dto/MmPredictItemDTO.java
new file mode 100644
index 0000000..221c13a
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dto/MmPredictItemDTO.java
@@ -0,0 +1,32 @@
+package com.iailab.module.model.mcs.pre.dto;
+
+import com.iailab.module.model.mcs.pre.entity.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月26日 16:27
+ */
+@Data
+public class MmPredictItemDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private MmPredictItemEntity mmPredictItem;
+
+    private DmModuleItemEntity dmModuleItem;
+
+    private MmItemOutputEntity mmItemOutput;
+
+    private MmPredictModelEntity mmPredictModel;
+
+    private MmPredictMergeItemEntity mmPredictMergeItem;
+
+    private List<MmModelArithSettingsEntity> mmModelArithSettingsList;
+
+    private List<MmModelParamEntity> mmModelParamList;
+
+    private List<MmItemResultEntity> mmItemResultList;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/DmModuleEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/DmModuleEntity.java
new file mode 100644
index 0000000..1544124
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/DmModuleEntity.java
@@ -0,0 +1,74 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月22日 18:00
+ */
+@Data
+@TableName("T_DM_MODULE")
+public class DmModuleEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 名称
+     */
+    @NotBlank(message="名称不能为空")
+    private String modulename;
+
+    /**
+     * 类型
+     */
+    @NotBlank(message="类型")
+    private String moduletype;
+
+    /**
+     * 周期
+     */
+    @NotNull(message="周期")
+    private BigDecimal cycle;
+
+    /**
+     * 模块配置
+     */
+    private String modulenavconfig;
+
+    /**
+     * 预测时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private Date predicttime;
+
+    /**
+     * 收集时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private Date collecttime;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/DmModuleItemEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/DmModuleItemEntity.java
new file mode 100644
index 0000000..2b0c22b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/DmModuleItemEntity.java
@@ -0,0 +1,53 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月25日 16:00
+ */
+@Data
+@TableName("T_DM_MODULE_ITEM")
+public class DmModuleItemEntity implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 管网ID
+     */
+    @NotBlank(message="管网ID不能为空")
+    private String moduleid;
+
+    /**
+     * 预测项ID
+     */
+    private String itemid;
+
+    /**
+     * 排序
+     */
+    @NotNull(message="排序不能为空不能为空")
+    private Integer itemorder;
+
+    /**
+     * 是否启用
+     */
+    @NotNull(message="是否启用不能为空")
+    private Integer status;
+
+    /**
+     * 类别ID
+     */
+    @NotBlank(message="类别ID不能为空")
+    private String categoryid;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemOutputEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemOutputEntity.java
new file mode 100644
index 0000000..e8d2bbd
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemOutputEntity.java
@@ -0,0 +1,52 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月25日 16:23
+ */
+@Data
+@TableName("T_MM_ITEM_OUTPUT")
+public class MmItemOutputEntity implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 预测项ID
+     */
+    private String itemid;
+
+    /**
+     * 数据点ID
+     */
+    @NotBlank(message="数据点ID不能为空")
+    private String pointid;
+
+    /**
+     * 存放表ID
+     */
+    @NotBlank(message="存放表ID不能为空")
+    private String resulttableid;
+
+    /**
+     * 数据点名称
+     */
+    @NotBlank(message="数据点名称不能为空")
+    private String tagname;
+
+    /**
+     * 排序(默认值1)
+     */
+    private BigDecimal outputorder;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultEntity.java
new file mode 100644
index 0000000..2953562
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultEntity.java
@@ -0,0 +1,39 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月28日 10:18
+ */
+@Data
+@TableName("T_MM_ITEM_RESULT")
+public class MmItemResultEntity implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 输出ID
+     */
+    private String outputid;
+
+    /**
+     * 预测时间
+     */
+    private Date datatime;
+
+    /**
+     * 预测值
+     */
+    private BigDecimal datavalue;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultJsonEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultJsonEntity.java
new file mode 100644
index 0000000..2509a5c
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultJsonEntity.java
@@ -0,0 +1,30 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月02日
+ */
+@Data
+@TableName("T_MM_ITEM_RESULT")
+public class MmItemResultJsonEntity implements Serializable {
+
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    private String outputid;
+
+    private Date predicttime;
+
+    private String jsonvalue;
+
+    private String cumulant;
+}
\ 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/entity/MmItemTypeEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemTypeEntity.java
new file mode 100644
index 0000000..25e8b22
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemTypeEntity.java
@@ -0,0 +1,43 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 15:17
+ */
+@Data
+@TableName("T_MM_ITEM_TYPE")
+public class MmItemTypeEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 名称
+     */
+    @NotBlank(message="名称不能为空")
+    private String itemtypename;
+
+    /**
+     * 类名
+     */
+    @NotNull(message="类名不能为空")
+    private String itemclasstype;
+
+    /**
+     * 程序集
+     */
+    private String assemblyname;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelArithSettingsEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelArithSettingsEntity.java
new file mode 100644
index 0000000..6f0a923
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelArithSettingsEntity.java
@@ -0,0 +1,55 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月25日 17:29
+ */
+@Data
+@TableName("T_MM_MODEL_ARITH_SETTINGS")
+public class MmModelArithSettingsEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 模型ID
+     */
+    @NotBlank(message="模型ID不能为空")
+    private String modelid;
+
+    /**
+     * 键
+     */
+    @NotBlank(message="键不能为空")
+    private String key;
+
+    /**
+     * 值
+     */
+    @NotBlank(message="值不能为空")
+    private String value;
+
+    /**
+     * 名称
+     */
+    @NotBlank(message="名称不能为空")
+    private String name;
+
+    /**
+     * 类型
+     */
+    @NotBlank(message="类型不能为空")
+    private String valuetype;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelParamEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelParamEntity.java
new file mode 100644
index 0000000..90f9f43
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelParamEntity.java
@@ -0,0 +1,68 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月25日 17:47
+ */
+@Data
+@TableName("T_MM_MODEL_PARAM")
+public class MmModelParamEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 模型ID
+     */
+    @NotBlank(message="模型ID不能为空")
+    private String modelid;
+
+    /**
+     * 参数名称
+     */
+    @NotBlank(message="参数名称不能为空")
+    private String modelparamname;
+
+    /**
+     * 参数ID
+     */
+    @NotBlank(message="参数ID不能为空")
+    private String modelparamid;
+
+    /**
+     * 序号
+     */
+    @NotBlank(message="序号不能为空")
+    private Integer modelparamorder;
+
+    /**
+     * 端口
+     */
+    @NotBlank(message="端口不能为空")
+    private Integer modelparamportorder;
+
+    /**
+     * 参数长度
+     */
+    @NotNull(message="参数不能为空")
+    private Integer datalength;
+
+    /**
+     * 参数类型
+     */
+    @NotBlank(message="参数类型不能为空")
+    private String modelparamtype;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelResultstrEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelResultstrEntity.java
new file mode 100644
index 0000000..57e3b72
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmModelResultstrEntity.java
@@ -0,0 +1,29 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月07日 16:36
+ */
+@Data
+@TableName("T_MM_MODEL_RESULTSTR")
+public class MmModelResultstrEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 结果
+     */
+    private String resultstr;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictItemEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictItemEntity.java
new file mode 100644
index 0000000..885b96c
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictItemEntity.java
@@ -0,0 +1,99 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月25日 15:05
+ */
+@Data
+@TableName("T_MM_PREDICT_ITEM")
+public class MmPredictItemEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 编号
+     */
+    private String itemno;
+
+    /**
+     * 预测项名
+     */
+    @NotBlank(message="预测项名不能为空")
+    private String itemname;
+
+    /**
+     * 计算类型
+     */
+    private String caltypeid;
+
+    /**
+     * 类型
+     */
+    @NotBlank(message="类型不能为空")
+    private String itemtypeid;
+
+    /**
+     * 预测长度
+     */
+    private BigDecimal predictlength;
+
+    /**
+     * 粒度
+     */
+    private BigDecimal granularity;
+
+    /**
+     * 是否启用
+     */
+    private BigDecimal status;
+
+    /**
+     * isfuse
+     */
+    private BigDecimal isfuse;
+
+    /**
+     * predictphase
+     */
+    private BigDecimal predictphase;
+
+    /**
+     * 是否检查
+     */
+    private BigDecimal workchecked;
+
+    /**
+     * unittransfactor
+     */
+    private BigDecimal unittransfactor;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 保留的预测点位 (T+2 则n=2, T+30则n=30, T+n则表示从最后点位开始,n=预测长度;n由系统配置得出)
+     */
+    private String saveindex;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictMergeItemEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictMergeItemEntity.java
new file mode 100644
index 0000000..619e29b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictMergeItemEntity.java
@@ -0,0 +1,41 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月26日 8:33
+ */
+@Data
+@TableName("T_MM_PREDICT_MERGE_ITEM")
+public class MmPredictMergeItemEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 预测项ID
+     */
+    private String itemid;
+
+    /**
+     * 表达式
+     */
+    @NotBlank(message="表达式不能为空")
+    private String expression;
+
+    /**
+     * num
+     */
+    private Integer num;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictModelEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictModelEntity.java
new file mode 100644
index 0000000..c182564
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictModelEntity.java
@@ -0,0 +1,130 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月25日 16:36
+ */
+@Data
+@TableName("T_MM_PREDICT_MODEL")
+public class MmPredictModelEntity implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 编号
+     */
+    private String modelno;
+
+    /**
+     * 模型名称
+     */
+    @NotBlank(message="模型名称不能为空")
+    private String modelname;
+
+    /**
+     * 预测项ID
+     */
+    private String itemid;
+
+    /**
+     * arithid
+     */
+    private String arithid;
+
+    /**
+     * trainsamplength
+     */
+    private BigDecimal trainsamplength;
+
+    /**
+     * predictsamplength
+     */
+    private BigDecimal predictsamplength;
+
+    /**
+     * isonlinetrain
+     */
+    private BigDecimal isonlinetrain;
+
+    /**
+     * 模型路径
+     */
+    @NotBlank(message="模型路径不能为空")
+    private String modelpath;
+
+    /**
+     * isnormal
+     */
+    private BigDecimal isnormal;
+
+    /**
+     * normalmax
+     */
+    private BigDecimal normalmax;
+
+    /**
+     * normalmin
+     */
+    private BigDecimal normalmin;
+
+    /**
+     * status
+     */
+    private BigDecimal status;
+
+    /**
+     * 类名
+     */
+    @NotBlank(message="类名不能为空")
+    private String classname;
+
+    /**
+     * 方法名
+     */
+    @NotBlank(message="方法名不能为空")
+    private String methodname;
+
+    /**
+     * 参数
+     */
+    @NotBlank(message="参数不能为空")
+    private String modelparamstructure;
+
+    /**
+     * 结果
+     */
+    @NotBlank(message="结果不能为空")
+    private String resultstrid;
+
+    /**
+     * 模型设置
+     */
+    private String settingmap;
+
+    /**
+     * 训练模型路径
+     */
+    private String trainmodelpath;
+
+    /**
+     * 路径状态
+     */
+    private BigDecimal pathstatus;
+
+    /**
+     * 预测阶段需要输入的数据长度
+     */
+    private Integer pdim;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmResultTableEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmResultTableEntity.java
new file mode 100644
index 0000000..002d6b4
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmResultTableEntity.java
@@ -0,0 +1,31 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 16:16
+ */
+@Data
+@TableName("T_MM_RESULT_TABLE")
+public class MmResultTableEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 表名
+     */
+    @NotBlank(message="表名不能为空")
+    private String tablename;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/SequenceNumEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/SequenceNumEntity.java
new file mode 100644
index 0000000..92c3d99
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/SequenceNumEntity.java
@@ -0,0 +1,48 @@
+package com.iailab.module.model.mcs.pre.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月06日 12:00
+ */
+@Data
+@TableName("T_SEQUENCE_NUM")
+public class SequenceNumEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 编号
+     */
+    @NotBlank(message="编号不能为空")
+    private String code;
+
+    /**
+     * 名称
+     */
+    @NotBlank(message="名称不能为空")
+    private String name;
+
+    /**
+     * 序号
+     */
+    @NotBlank(message="序号不能为空")
+    private Integer sequenceNum;
+
+    /**
+     * 前缀
+     */
+    private String prefix;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemIncreaseCodeEnum.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemIncreaseCodeEnum.java
new file mode 100644
index 0000000..bddb2da
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemIncreaseCodeEnum.java
@@ -0,0 +1,10 @@
+package com.iailab.module.model.mcs.pre.enums;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年01月02日 16:19:00
+ */
+public enum ItemIncreaseCodeEnum {
+    PRE_MDL, CM, IC, IM
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemStatus.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemStatus.java
new file mode 100644
index 0000000..a79dad0
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemStatus.java
@@ -0,0 +1,32 @@
+package com.iailab.module.model.mcs.pre.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月01日
+ */
+@Getter
+@AllArgsConstructor
+public enum ItemStatus {
+    STATUS0(0, "禁用"),
+    STATUS1(0, "启用");
+
+    private Integer code;
+    private String desc;
+
+    public static ItemStatus getEumByCode(Integer code) {
+        if (code == null) {
+            return null;
+        }
+
+        for (ItemStatus statusEnum : ItemStatus.values()) {
+            if (statusEnum.getCode().equals(code)) {
+                return statusEnum;
+            }
+        }
+        return null;
+    }
+}
\ 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/enums/ItemTypeEnum.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemTypeEnum.java
new file mode 100644
index 0000000..8c9b3bd
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/enums/ItemTypeEnum.java
@@ -0,0 +1,24 @@
+package com.iailab.module.model.mcs.pre.enums;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月26日 17:20
+ */
+public enum ItemTypeEnum {
+
+    NORMAL_ITEM("NormalItem"),MERGE_ITEM("MergeItem"),STEAMSP_ITEM("SteamSpItem");
+
+    private String name;
+
+    ItemTypeEnum(String name){
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/DmModuleItemService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/DmModuleItemService.java
new file mode 100644
index 0000000..9c486ee
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/DmModuleItemService.java
@@ -0,0 +1,15 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.entity.DmModuleItemEntity;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 9:11
+ */
+public interface DmModuleItemService extends BaseService<DmModuleItemEntity> {
+
+    void saveModuleItem(DmModuleItemEntity moduleItem);
+
+    void update(DmModuleItemEntity moduleItem);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/DmModuleService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/DmModuleService.java
new file mode 100644
index 0000000..361d4a0
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/DmModuleService.java
@@ -0,0 +1,31 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.entity.DmModuleEntity;
+import com.iailab.module.model.mcs.pre.vo.DmModulePageReqVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 8:35
+ */
+public interface DmModuleService extends BaseService<DmModuleEntity> {
+
+    void saveModule(DmModuleEntity module);
+
+    void update(DmModuleEntity module);
+
+    void deleteBatch(String[] module);
+
+    int check(DmModuleEntity module);
+
+    PageResult<DmModuleEntity> queryPage(DmModulePageReqVO reqVO);
+
+    List<DmModuleEntity> list(Map<String, Object> params);
+
+    List<DmModuleEntity> getModuleByModuleType(String moduletype);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemOutputService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemOutputService.java
new file mode 100644
index 0000000..d6ed981
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemOutputService.java
@@ -0,0 +1,30 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
+import com.iailab.module.model.mcs.pre.dto.MmItemOutputDTO;
+import com.iailab.module.model.mdk.vo.MmItemOutputVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 9:13
+ */
+public interface MmItemOutputService extends BaseService<MmItemOutputEntity> {
+
+    void saveMmItemOutput(MmItemOutputEntity mmItemOutput);
+
+    void update(MmItemOutputEntity mmItemOutput);
+
+    List<MmItemOutputDTO> queryList(Map<String, Object> params);
+
+    MmItemOutputVO getOutPutById(String outputid);
+
+    List<MmItemOutputVO> getOutPutByItemId(String itemid);
+
+    List<MmItemOutputVO> getOutPutByPointId(String pointid);
+
+    MmItemOutputEntity getByItemid(String itemid);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultService.java
new file mode 100644
index 0000000..a5d28b6
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultService.java
@@ -0,0 +1,22 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.module.data.api.point.dto.ApiPointDTO;
+import com.iailab.module.model.mcs.pre.entity.MmItemResultEntity;
+import com.iailab.module.model.mdk.vo.DataValueVO;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月28日 10:34
+ */
+public interface MmItemResultService {
+
+    List<MmItemResultEntity> getListByOutputId(String outputid, Map<String, Object> params);
+
+    void savePredictValue(Map<String, List<DataValueVO>> predictValueMap, int t, String nIndex, Date predictTime);
+
+    List<DataValueVO> getPredictValue(String outputid, Date startTime, Date endTime);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemTypeService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemTypeService.java
new file mode 100644
index 0000000..ec6c900
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemTypeService.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.entity.MmItemTypeEntity;
+import com.iailab.module.model.mcs.pre.vo.MmItemTypePageReqVO;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 15:27
+ */
+public interface MmItemTypeService extends BaseService<MmItemTypeEntity> {
+
+    void saveItemType(MmItemTypeEntity module);
+
+    void update(MmItemTypeEntity module);
+
+    void deleteBatch(String[] module);
+
+    int check(MmItemTypeEntity module);
+
+    PageResult<MmItemTypeEntity> page(MmItemTypePageReqVO reqVO);
+
+    MmItemTypeEntity getItemTypeByItemId(String itemId);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelArithSettingsService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelArithSettingsService.java
new file mode 100644
index 0000000..ea9734b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelArithSettingsService.java
@@ -0,0 +1,17 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.entity.MmModelArithSettingsEntity;
+
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 9:06
+ */
+public interface MmModelArithSettingsService extends BaseService<MmModelArithSettingsEntity> {
+
+    void saveList(List<MmModelArithSettingsEntity> list);
+
+    List<MmModelArithSettingsEntity> getByModelId(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
new file mode 100644
index 0000000..5a2fb5d
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelParamService.java
@@ -0,0 +1,17 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.entity.MmModelParamEntity;
+
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 9:09
+ */
+public interface MmModelParamService extends BaseService<MmModelParamEntity> {
+
+    void saveList(List<MmModelParamEntity> list);
+
+    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/MmModelResultstrService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelResultstrService.java
new file mode 100644
index 0000000..9207065
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmModelResultstrService.java
@@ -0,0 +1,20 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.entity.MmModelResultstrEntity;
+import com.iailab.module.model.mcs.pre.vo.MmModelResultstrPageReqVO;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月07日 16:42
+ */
+public interface MmModelResultstrService extends BaseService<MmModelResultstrEntity> {
+
+    PageResult<MmModelResultstrEntity> page(MmModelResultstrPageReqVO reqVO);
+
+    MmModelResultstrEntity getInfo(String id);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictItemService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictItemService.java
new file mode 100644
index 0000000..718600f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictItemService.java
@@ -0,0 +1,46 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.dto.MmPredictItemDTO;
+import com.iailab.module.model.mcs.pre.entity.MmPredictItemEntity;
+import com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO;
+import com.iailab.module.model.mdk.vo.ItemVO;
+import com.iailab.module.model.mdk.vo.MergeItemVO;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月26日 13:57
+ */
+public interface MmPredictItemService extends BaseService<MmPredictItemEntity> {
+
+    void savePredictItem(MmPredictItemDTO mmPredictItemDto);
+
+    void update(MmPredictItemDTO mmPredictItemDto);
+
+    void deleteBatch(String[] itemIds);
+
+    MmPredictItemDTO getDetailById(String id, Map<String, Object> params);
+
+    boolean exportItemResult(HttpServletResponse response, HttpServletRequest request, String id, Map<String, Object> params);
+
+    int check(MmPredictItemEntity mmPredictItem);
+
+    PageResult<MmPredictItemRespVO> getPageList(Map<String, Object> params);
+
+    Long count();
+
+    List<ItemVO> getByModuleId(String moduleId);
+
+    ItemVO getItemByItemNo(String itemNo);
+
+    ItemVO getItemById(String itemId);
+
+    MergeItemVO getMergeItemByItemId(String itemId);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictMergeItemService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictMergeItemService.java
new file mode 100644
index 0000000..0825a59
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictMergeItemService.java
@@ -0,0 +1,15 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.entity.MmPredictMergeItemEntity;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 9:00
+ */
+public interface MmPredictMergeItemService extends BaseService<MmPredictMergeItemEntity> {
+
+    void savePredictMergeItem(MmPredictMergeItemEntity resultTable);
+
+    void update(MmPredictMergeItemEntity resultTable);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictModelService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictModelService.java
new file mode 100644
index 0000000..a4055c0
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictModelService.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 11:26
+ */
+public interface MmPredictModelService extends BaseService<MmPredictModelEntity> {
+
+    void savePredictModel(MmPredictModelEntity predictModel);
+
+    void update(MmPredictModelEntity predictModel);
+
+    MmPredictModelEntity getInfo(String id);
+
+    BigDecimal getSampleLength(String id);
+
+    List<MmPredictModelEntity> getNoSettingmapPredictModel(Map<String, Object> params);
+
+    List<MmPredictModelEntity> getActiveModelByItemId(String itemId);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmResultTableService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmResultTableService.java
new file mode 100644
index 0000000..2b14706
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmResultTableService.java
@@ -0,0 +1,25 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.pre.entity.MmResultTableEntity;
+import com.iailab.module.model.mcs.pre.vo.MmResultTablePageReqVO;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 16:25
+ */
+public interface MmResultTableService extends BaseService<MmResultTableEntity> {
+    void saveResultTable(MmResultTableEntity resultTable);
+
+    void update(MmResultTableEntity resultTable);
+
+    void deleteBatch(String[] resultTableIds);
+
+    int check(MmResultTableEntity resultTable);
+
+    PageResult<MmResultTableEntity> page(MmResultTablePageReqVO reqVO);
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/SequenceNumService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/SequenceNumService.java
new file mode 100644
index 0000000..3ed0fab
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/SequenceNumService.java
@@ -0,0 +1,13 @@
+package com.iailab.module.model.mcs.pre.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.iailab.module.model.mcs.pre.entity.SequenceNumEntity;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月06日 13:15
+ */
+public interface SequenceNumService extends IService<SequenceNumEntity> {
+
+    SequenceNumEntity getAndIncreaseByCode(String code);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/DmModuleItemServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/DmModuleItemServiceImpl.java
new file mode 100644
index 0000000..90073a4
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/DmModuleItemServiceImpl.java
@@ -0,0 +1,42 @@
+package com.iailab.module.model.mcs.pre.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.pre.dao.DmModuleItemDao;
+import com.iailab.module.model.mcs.pre.entity.DmModuleItemEntity;
+import com.iailab.module.model.mcs.pre.service.DmModuleItemService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 9:20
+ */
+@Service("dmModuleItemService")
+public class DmModuleItemServiceImpl extends BaseServiceImpl<DmModuleItemDao, DmModuleItemEntity> implements DmModuleItemService {
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveModuleItem(DmModuleItemEntity moduleItem) {
+        moduleItem.setId(UUID.randomUUID().toString());
+        baseDao.insert(moduleItem);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(DmModuleItemEntity moduleItem) {
+        baseDao.updateById(moduleItem);
+    }
+
+    public DmModuleItemEntity getByItemid(String itemid) {
+        List<DmModuleItemEntity> list = baseDao.selectList(new QueryWrapper<DmModuleItemEntity>().in("itemid", itemid));
+        if (CollectionUtils.isEmpty(list)) {
+            return new DmModuleItemEntity();
+        }
+        return list.get(0);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/DmModuleServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/DmModuleServiceImpl.java
new file mode 100644
index 0000000..cefe08a
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/DmModuleServiceImpl.java
@@ -0,0 +1,95 @@
+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.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.pre.dao.DmModuleDao;
+import com.iailab.module.model.mcs.pre.entity.DmModuleEntity;
+import com.iailab.module.model.mcs.pre.service.DmModuleService;
+import com.iailab.module.model.mcs.pre.vo.DmModulePageReqVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 8:36
+ */
+@Service("dmModuleService")
+public class DmModuleServiceImpl extends BaseServiceImpl<DmModuleDao, DmModuleEntity> implements DmModuleService {
+
+    @Override
+    public PageResult<DmModuleEntity> queryPage(DmModulePageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    @Override
+    public List<DmModuleEntity> list(Map<String, Object> params) {
+        QueryWrapper<DmModuleEntity> wrapper = getWrapper(params);
+        wrapper.orderByDesc("CREATE_TIME");
+        return baseDao.selectList(wrapper);
+    }
+
+    private QueryWrapper<DmModuleEntity> getWrapper(Map<String, Object> params) {
+        String modulename = (String) params.get("modulename");
+        String moduletype = (String) params.get("moduletype");
+
+        QueryWrapper<DmModuleEntity> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotBlank(modulename), "modulename", modulename)
+                .eq(StringUtils.isNotBlank(moduletype), "moduletype", moduletype);
+
+        return wrapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveModule(DmModuleEntity module) {
+        module.setId(UUID.randomUUID().toString());
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.SECOND, 0);
+        calendar.set(Calendar.MILLISECOND, 0);
+        module.setPredicttime(calendar.getTime());
+        module.setCollecttime(calendar.getTime());
+        module.setUpdateTime(new Date());
+        baseDao.insert(module);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(DmModuleEntity module) {
+        module.setUpdateTime(new Date());
+        baseDao.updateById(module);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteBatch(String[] moduleIds) {
+        baseDao.deleteBatchIds(Arrays.asList(moduleIds));
+    }
+
+    @Override
+    public List<DmModuleEntity> getModuleByModuleType(String moduletype) {
+        Map<String, Object> params = new HashMap<>(1);
+        params.put("moduletype", moduletype);
+        QueryWrapper<DmModuleEntity> wrapper = getWrapper(params);
+        return baseDao.selectList(wrapper);
+
+    }
+
+    @Override
+    public int check(DmModuleEntity module) {
+        String id = module.getId();
+        String modulename = module.getModulename();
+        QueryWrapper<DmModuleEntity> moduleWrapper = new QueryWrapper<>();
+        moduleWrapper.ne(StringUtils.isNotBlank(id), "id", id);
+        moduleWrapper.and(wrapper -> wrapper.eq("modulename", modulename));
+
+        List<DmModuleEntity> list = baseDao.selectList(moduleWrapper);
+        return list.size();
+    }
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemOutputServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemOutputServiceImpl.java
new file mode 100644
index 0000000..4868760
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemOutputServiceImpl.java
@@ -0,0 +1,78 @@
+package com.iailab.module.model.mcs.pre.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.pre.dao.MmItemOutputDao;
+import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
+import com.iailab.module.model.mcs.pre.service.MmItemOutputService;
+import com.iailab.module.model.mcs.pre.dto.MmItemOutputDTO;
+import com.iailab.module.model.mdk.vo.MmItemOutputVO;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 9:22
+ */
+@Service("mmItemOutputService")
+public class MmItemOutputServiceImpl extends BaseServiceImpl<MmItemOutputDao, MmItemOutputEntity> implements MmItemOutputService {
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveMmItemOutput(MmItemOutputEntity mmItemOutput) {
+        mmItemOutput.setId(UUID.randomUUID().toString());
+        baseDao.insert(mmItemOutput);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MmItemOutputEntity mmItemOutput) {
+        this.updateById(mmItemOutput);
+    }
+
+    public void deleteBatch(String[] itemIds) {
+        QueryWrapper<MmItemOutputEntity> queryWrapper = new QueryWrapper<MmItemOutputEntity>();
+        queryWrapper.in("itemid", itemIds);
+        baseDao.delete(queryWrapper);
+    }
+
+    @Override
+    public MmItemOutputEntity getByItemid(String itemid) {
+        QueryWrapper<MmItemOutputEntity> queryWrapper = new QueryWrapper<MmItemOutputEntity>();
+        queryWrapper.eq("itemid", itemid);
+        List<MmItemOutputEntity> list = baseDao.selectList(queryWrapper);
+        if (CollectionUtils.isEmpty(list)) {
+            return new MmItemOutputEntity();
+        }
+        return list.get(0);
+    }
+
+    @Override
+    public List<MmItemOutputDTO> queryList(Map<String, Object> params) {
+        return baseDao.queryList(params);
+    }
+
+    @Override
+    public MmItemOutputVO getOutPutById(String outputid) {
+        List<MmItemOutputVO> list = baseDao.getOutPutById(outputid);
+        if (CollectionUtils.isEmpty(list)) {
+            return null;
+        }
+        return list.get(0);
+    }
+
+    @Override
+    public List<MmItemOutputVO> getOutPutByItemId(String itemid) {
+        return baseDao.getOutPutByItemId(itemid);
+    }
+
+    @Override
+    public List<MmItemOutputVO> getOutPutByPointId(String pointid) {
+        return baseDao.getOutPutByPointId(pointid);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java
new file mode 100644
index 0000000..0465a2d
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java
@@ -0,0 +1,170 @@
+package com.iailab.module.model.mcs.pre.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.data.api.point.dto.ApiPointDTO;
+import com.iailab.module.model.mcs.pre.dao.MmItemResultDao;
+import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
+import com.iailab.module.model.mcs.pre.entity.MmItemResultEntity;
+import com.iailab.module.model.mcs.pre.entity.MmItemResultJsonEntity;
+import com.iailab.module.model.mcs.pre.service.MmItemOutputService;
+import com.iailab.module.model.mcs.pre.service.MmItemResultService;
+import com.iailab.module.model.mdk.vo.DataValueVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月28日 10:34
+ */
+@Service("mmItemResultService")
+public class MmItemResultServiceImpl extends BaseServiceImpl<MmItemResultDao, MmItemResultEntity>
+        implements MmItemResultService {
+
+    private final int max_group_count = 100;
+
+    private final String T_MM_ITEM_RESULT = "T_MM_ITEM_RESULT";
+
+    @Autowired
+    private MmItemOutputService mmItemOutputService;
+
+    @Override
+    public List<MmItemResultEntity> getListByOutputId(String outputid, Map<String, Object> params) {
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date startDateParam = null;
+        try {
+            startDateParam = sdf.parse((String)params.get("startTime"));
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        Date endDateParam = null;
+        try {
+            endDateParam = sdf.parse((String)params.get("endTime"));
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+
+        List<MmItemResultEntity> list = baseDao.selectList(
+                new QueryWrapper<MmItemResultEntity>()
+                        .eq("outputid", outputid)
+                        .between("datatime", startDateParam, endDateParam)
+                        .orderByAsc("datatime")
+        );
+        return list;
+    }
+
+    @Override
+    public void savePredictValue(Map<String, List<DataValueVO>> predictValueMap, int t, String nIndex, Date predictTime) {
+        List<MmItemResultEntity> importList = new ArrayList<>();
+        List<MmItemResultEntity> lastList = new ArrayList<>();
+        for (Map.Entry<String, List<DataValueVO>> entry : predictValueMap.entrySet()) {
+            for (DataValueVO dataVo : entry.getValue()) {
+                MmItemResultEntity importData = new MmItemResultEntity();
+                importData.setId(String.valueOf(UUID.randomUUID()));
+                importData.setOutputid(entry.getKey());
+                importData.setDatatime(dataVo.getDataTime());
+                importData.setDatavalue(new BigDecimal(dataVo.getDataValue()));
+                importList.add(importData);
+            }
+
+            List<DataValueVO> lastVoList = new ArrayList<>();
+            int size = entry.getValue().size();
+            t = t > 0 ? t : 0;
+            int n = "n".equals(nIndex) ? size : Integer.parseInt(nIndex);
+            int length = (n - t) > 0 ? (n - t) : 0; //预测完不变的数据长度
+            if (size >= n) {
+                for (int i = 0; i < (size - length); i ++) {
+                    int index = length + i;
+                    lastVoList.add(entry.getValue().get(index));
+                }
+            } else {
+                lastVoList = entry.getValue();
+            }
+
+            for (DataValueVO dataVo : lastVoList) {
+                MmItemResultEntity importData = new MmItemResultEntity();
+                importData.setId(String.valueOf(UUID.randomUUID()));
+                importData.setOutputid(entry.getKey());
+                importData.setDatatime(dataVo.getDataTime());
+                importData.setDatavalue(new BigDecimal(dataVo.getDataValue()));
+                lastList.add(importData);
+            }
+
+            MmItemResultJsonEntity resultJson = new MmItemResultJsonEntity();
+            resultJson.setId(UUID.randomUUID().toString());
+            resultJson.setOutputid(entry.getKey());
+            resultJson.setPredicttime(predictTime);
+            resultJson.setJsonvalue(JSONArray.toJSONString(entry.getValue()));
+            Map<String, Object> map4 = new HashMap(2);
+            map4.put("TABLENAME", "T_MM_ITEM_RESULT_JSON");
+            map4.put("entity", resultJson);
+            baseDao.savePredictJsonValue(map4);
+        }
+
+        Map<String, Object> params = new HashMap(4);
+        params.put("TABLENAME", T_MM_ITEM_RESULT);
+        params.put("OUTPUTID", importList.get(0).getOutputid());
+        params.put("STARTTIME", importList.get(0).getDatatime());
+        params.put("ENDTIME", importList.get(importList.size() - 1).getDatatime());
+        baseDao.deletePredictValue(params);
+
+        int num1 = importList.size() / max_group_count;
+        int num2 = importList.size() % max_group_count;
+        if (num2 != 0) {
+            num1++;
+        }
+
+        List<MmItemResultEntity> tempList;
+        //先删除已经存在的数据,再插入新数据
+        for (int i = 0; i < num1; i++) {
+            int startIndex = max_group_count * i;
+            int count = max_group_count;
+            if (num2!=0 && i == num1 - 1) {
+                count = num2;
+            }
+            tempList = new ArrayList<>();
+            //获取某个索引范围内的对象集合
+            for (int j = startIndex; j < startIndex + count; j++) {
+                tempList.add(importList.get(j));
+            }
+            Map<String, Object> map2 = new HashMap<>(2);
+            map2.put("TABLENAME", T_MM_ITEM_RESULT);
+            map2.put("list", tempList);
+            baseDao.savePredictValue(map2);
+        }
+
+        Map<String, Object> map3 = new HashMap<>(2);
+        map3.put("TABLENAME", "T_MM_ITEM_RESULT_LAST_POINT");
+        map3.put("list", lastList);
+        baseDao.savePredictValue(map3);
+    }
+
+    @Override
+    public List<DataValueVO> getPredictValue(String outputid, Date startTime, Date endTime) {
+        List<DataValueVO> result = new ArrayList<>();
+        QueryWrapper<MmItemResultEntity> queryWrapper = new QueryWrapper<MmItemResultEntity>()
+                .eq("outputid", outputid)
+                .between("datatime", startTime, endTime)
+                .orderByAsc("datatime");
+        List<MmItemResultEntity> list = baseDao.selectList(queryWrapper);
+        if (CollectionUtils.isEmpty(list)) {
+            return result;
+        }
+        result = list.stream().map(t -> {
+            DataValueVO dv = new DataValueVO();
+            dv.setDataTime(t.getDatatime());
+            dv.setDataValue(t.getDatavalue().doubleValue());
+            return dv;
+        }).collect(Collectors.toList());
+        return result;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemTypeImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemTypeImpl.java
new file mode 100644
index 0000000..17344d5
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemTypeImpl.java
@@ -0,0 +1,84 @@
+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.collection.CollectionUtils;
+import com.iailab.module.model.mcs.pre.dao.MmItemTypeDao;
+import com.iailab.module.model.mcs.pre.entity.MmItemTypeEntity;
+import com.iailab.module.model.mcs.pre.service.MmItemTypeService;
+import com.iailab.module.model.mcs.pre.vo.MmItemTypePageReqVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 15:29
+ */
+@Service("mmItemTypeService")
+public class MmItemTypeImpl extends BaseServiceImpl<MmItemTypeDao, MmItemTypeEntity> implements MmItemTypeService {
+
+    @Override
+    public PageResult<MmItemTypeEntity> page(MmItemTypePageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    private QueryWrapper<MmItemTypeEntity> getWrapper(Map<String, Object> params) {
+        String itemtypename = (String)params.get("itemtypename");
+
+        QueryWrapper<MmItemTypeEntity> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotBlank(itemtypename),"itemtypename", itemtypename);
+
+        return wrapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveItemType(MmItemTypeEntity itemType) {
+        itemType.setId(UUID.randomUUID().toString());
+        baseDao.insert(itemType);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MmItemTypeEntity itemType) {
+        baseDao.updateById(itemType);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteBatch(String[] moduleIds) {
+        baseDao.deleteBatchIds(Arrays.asList(moduleIds));
+    }
+
+    @Override
+    public int check(MmItemTypeEntity itemType) {
+        String id = itemType.getId();
+        String itemtypename = itemType.getItemtypename();
+        QueryWrapper<MmItemTypeEntity> moduleWrapper = new QueryWrapper<>();
+        moduleWrapper.ne(StringUtils.isNotBlank(id), "id", id);
+        moduleWrapper.and(wrapper -> wrapper.eq("itemtypename",itemtypename));
+        List<MmItemTypeEntity> list = baseDao.selectList(moduleWrapper);
+        return list.size();
+    }
+
+    public MmItemTypeEntity getById(String itemtypeid) {
+        MmItemTypeEntity entity = baseDao.selectById(itemtypeid);
+        return entity;
+    }
+
+    @Override
+    public MmItemTypeEntity getItemTypeByItemId(String itemId) {
+        List<MmItemTypeEntity> list = baseDao.getItemTypeByItemId(itemId);
+        if (CollectionUtils.isAnyEmpty(list)) {
+            return null;
+        }
+        return list.get(0);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelArithSettingsServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelArithSettingsServiceImpl.java
new file mode 100644
index 0000000..fff6acd
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelArithSettingsServiceImpl.java
@@ -0,0 +1,49 @@
+package com.iailab.module.model.mcs.pre.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.pre.dao.MmModelArithSettingsDao;
+import com.iailab.module.model.mcs.pre.entity.MmModelArithSettingsEntity;
+import com.iailab.module.model.mcs.pre.service.MmModelArithSettingsService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 9:24
+ */
+@Service
+public class MmModelArithSettingsServiceImpl extends BaseServiceImpl<MmModelArithSettingsDao, MmModelArithSettingsEntity>
+        implements MmModelArithSettingsService {
+
+    @Override
+    public void saveList(List<MmModelArithSettingsEntity> list) {
+        QueryWrapper<MmModelArithSettingsEntity> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("modelid", list.get(0).getModelid());
+        baseDao.delete(queryWrapper);
+        list.forEach(item -> {
+            item.setId(UUID.randomUUID().toString());
+        });
+        baseDao.insertList(list);
+    }
+
+    public List<MmModelArithSettingsEntity> getByModelid(String modelid) {
+        Map<String, Object> params = new HashMap<>(1);
+        params.put("modelid", modelid);
+        List<MmModelArithSettingsEntity> list = baseDao.getMmModelArithSettings(params);
+
+        if (CollectionUtils.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list;
+    }
+
+    @Override
+    public List<MmModelArithSettingsEntity> getByModelId(String modelId) {
+        QueryWrapper<MmModelArithSettingsEntity> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("modelid", modelId);
+        return baseDao.selectList(queryWrapper);
+    }
+}
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
new file mode 100644
index 0000000..cea16cc
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelParamServiceImpl.java
@@ -0,0 +1,45 @@
+package com.iailab.module.model.mcs.pre.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.pre.dao.MmModelParamDao;
+import com.iailab.module.model.mcs.pre.entity.MmModelParamEntity;
+import com.iailab.module.model.mcs.pre.service.MmModelParamService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 9:25
+ */
+@Service("mmModelParamService")
+public class MmModelParamServiceImpl extends BaseServiceImpl<MmModelParamDao, MmModelParamEntity> implements MmModelParamService {
+
+    @Override
+    public void saveList(List<MmModelParamEntity> list) {
+        QueryWrapper<MmModelParamEntity> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("modelid", list.get(0).getModelid());
+        baseDao.delete(queryWrapper);
+        list.forEach(item -> {
+            item.setId(UUID.randomUUID().toString());
+            baseDao.insert(item);
+        });
+    }
+
+    @Override
+    public List<MmModelParamEntity> getByModelid(String modelid) {
+        QueryWrapper<MmModelParamEntity> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("modelid", modelid);
+        queryWrapper.orderByAsc("MODELPARAMPORTORDER");
+        queryWrapper.orderByAsc("MODELPARAMORDER");
+        List<MmModelParamEntity> list = baseDao.selectList(queryWrapper);
+        if (CollectionUtils.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelResultstrServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelResultstrServiceImpl.java
new file mode 100644
index 0000000..339defd
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmModelResultstrServiceImpl.java
@@ -0,0 +1,29 @@
+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.module.model.mcs.pre.dao.MmModelResultstrDao;
+import com.iailab.module.model.mcs.pre.entity.MmModelResultstrEntity;
+import com.iailab.module.model.mcs.pre.service.MmModelResultstrService;
+import com.iailab.module.model.mcs.pre.vo.MmModelResultstrPageReqVO;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月07日 16:43
+ */
+@Service("mmModelResultstrService")
+public class MmModelResultstrServiceImpl extends BaseServiceImpl<MmModelResultstrDao, MmModelResultstrEntity>
+        implements MmModelResultstrService {
+
+    @Override
+    public PageResult<MmModelResultstrEntity> page(MmModelResultstrPageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    @Override
+    public MmModelResultstrEntity getInfo(String id) {
+        return baseDao.selectById(id);
+
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictItemServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictItemServiceImpl.java
new file mode 100644
index 0000000..810f29d
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictItemServiceImpl.java
@@ -0,0 +1,264 @@
+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.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.pre.dao.MmPredictItemDao;
+import com.iailab.module.model.mcs.pre.dto.MmPredictItemDTO;
+import com.iailab.module.model.mcs.pre.entity.*;
+import com.iailab.module.model.mcs.pre.enums.ItemIncreaseCodeEnum;
+import com.iailab.module.model.mcs.pre.enums.ItemTypeEnum;
+import com.iailab.module.model.mcs.pre.service.MmPredictItemService;
+import com.iailab.module.model.mcs.pre.service.SequenceNumService;
+import com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO;
+import com.iailab.module.model.mdk.vo.ItemVO;
+import com.iailab.module.model.mdk.vo.MergeItemVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月26日 14:03
+ */
+@Service("mmPredictItemService")
+public class MmPredictItemServiceImpl extends BaseServiceImpl<MmPredictItemDao, MmPredictItemEntity> implements MmPredictItemService {
+
+    @Autowired
+    private DmModuleItemServiceImpl dmModuleItemService;
+
+    @Autowired
+    private MmItemOutputServiceImpl mmItemOutputService;
+
+    @Autowired
+    private MmPredictModelServiceImpl mmPredictModelService;
+
+    @Autowired
+    private MmModelArithSettingsServiceImpl mmModelArithSettingsService;
+
+    @Autowired
+    private MmModelParamServiceImpl mmModelParamService;
+
+    @Autowired
+    private MmPredictMergeItemServiceImpl mmPredictMergeItemService;
+
+    @Autowired
+    private MmItemTypeImpl mmItemTypeImpl;
+
+    @Autowired
+    private SequenceNumService sequenceNumService;
+
+    @Override
+    public PageResult<MmPredictItemRespVO> getPageList(Map<String, Object> params) {
+        PageResult<MmPredictItemRespVO> result = new PageResult();
+        IPage<MmPredictItemRespVO> page = baseDao.getPageList(
+                getPage(params, "CREATE_TIME", false),
+                params
+        );
+        result.setList(page.getRecords());
+        result.setTotal(page.getTotal());
+        return result;
+    }
+
+    private QueryWrapper<MmPredictItemEntity> getWrapper(Map<String, Object> params) {
+        QueryWrapper<MmPredictItemEntity> wrapper = new QueryWrapper<>();
+        return wrapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void savePredictItem(MmPredictItemDTO mmPredictItemDto) {
+        MmPredictItemEntity predictItem = mmPredictItemDto.getMmPredictItem();
+        predictItem.setId(UUID.randomUUID().toString());
+        predictItem.setCreateTime(new Date());
+        predictItem.setUpdateTime(new Date());
+
+        MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
+        if (ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
+            SequenceNumEntity sequenceNumEntity = sequenceNumService.getAndIncreaseByCode(ItemIncreaseCodeEnum.IM.toString());
+            String str = String.format("%010d", sequenceNumEntity.getSequenceNum());
+            predictItem.setItemno(sequenceNumEntity.getPrefix() + str);
+
+            MmPredictModelEntity mmPredictModel = mmPredictItemDto.getMmPredictModel();
+            SequenceNumEntity preMdlSequenceNumEntity = sequenceNumService.getAndIncreaseByCode(ItemIncreaseCodeEnum.PRE_MDL.toString());
+            String preMdlStr = String.format("%04d", preMdlSequenceNumEntity.getSequenceNum());
+            mmPredictModel.setModelno(preMdlSequenceNumEntity.getPrefix() + preMdlStr);
+            mmPredictModel.setItemid(predictItem.getId());
+            mmPredictModelService.savePredictModel(mmPredictModel);
+
+            List<MmModelArithSettingsEntity> mmModelArithSettingsList = mmPredictItemDto.getMmModelArithSettingsList();
+            mmModelArithSettingsList.forEach(item -> {
+                item.setModelid(mmPredictModel.getId());
+            });
+            mmModelArithSettingsService.saveList(mmModelArithSettingsList);
+
+            List<MmModelParamEntity> mmModelParamList = mmPredictItemDto.getMmModelParamList();
+            mmModelParamList.forEach(item -> {
+                item.setModelid(mmPredictModel.getId());
+            });
+            mmModelParamService.saveList(mmModelParamList);
+        } else if (ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
+            SequenceNumEntity sequenceNumEntity = sequenceNumService.getAndIncreaseByCode(ItemIncreaseCodeEnum.IC.toString());
+            String str = String.format("%010d", sequenceNumEntity.getSequenceNum());
+            predictItem.setItemno(sequenceNumEntity.getPrefix() + str);
+
+            MmPredictMergeItemEntity mMmPredictMergeItem = mmPredictItemDto.getMmPredictMergeItem();
+            mMmPredictMergeItem.setItemid(predictItem.getId());
+            mmPredictMergeItemService.savePredictMergeItem(mMmPredictMergeItem);
+        }
+        insert(predictItem);
+        DmModuleItemEntity dmModuleItem = mmPredictItemDto.getDmModuleItem();
+        dmModuleItem.setItemid(predictItem.getId());
+        dmModuleItemService.saveModuleItem(dmModuleItem);
+
+        MmItemOutputEntity mmItemOutput = mmPredictItemDto.getMmItemOutput();
+        mmItemOutput.setItemid(predictItem.getId());
+        mmItemOutputService.saveMmItemOutput(mmItemOutput);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MmPredictItemDTO mmPredictItemDto) {
+        MmPredictItemEntity predictItem = mmPredictItemDto.getMmPredictItem();
+        predictItem.setUpdateTime(new Date());
+        this.updateById(predictItem);
+        MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
+        if (ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
+            MmPredictModelEntity mmPredictModel = mmPredictItemDto.getMmPredictModel();
+            mmPredictModelService.update(mmPredictModel);
+
+            List<MmModelArithSettingsEntity> mmModelArithSettingsList = mmPredictItemDto.getMmModelArithSettingsList();
+            mmModelArithSettingsList.forEach(item -> {
+                item.setModelid(mmPredictModel.getId());
+            });
+            mmModelArithSettingsService.saveList(mmModelArithSettingsList);
+
+            List<MmModelParamEntity> mmModelParamList = mmPredictItemDto.getMmModelParamList();
+            mmModelParamList.forEach(item -> {
+                item.setModelid(mmPredictModel.getId());
+            });
+            mmModelParamService.saveList(mmModelParamList);
+        } else if (ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
+            MmPredictMergeItemEntity mMmPredictMergeItem = mmPredictItemDto.getMmPredictMergeItem();
+            mmPredictMergeItemService.update(mMmPredictMergeItem);
+        }
+        DmModuleItemEntity dmModuleItem = mmPredictItemDto.getDmModuleItem();
+        dmModuleItemService.update(dmModuleItem);
+
+        MmItemOutputEntity mmItemOutput = mmPredictItemDto.getMmItemOutput();
+        mmItemOutputService.update(mmItemOutput);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteBatch(String[] itemIds) {
+        deleteBatchIds(Arrays.asList(itemIds));
+        mmPredictMergeItemService.deleteBatch(itemIds);
+        mmPredictModelService.deleteBatch(itemIds);
+        mmItemOutputService.deleteBatch(itemIds);
+    }
+
+    @Override
+    public MmPredictItemDTO getDetailById(String id, Map<String, Object> params) {
+        MmPredictItemDTO mmPredictItemDto = new MmPredictItemDTO();
+        MmPredictItemEntity predictItem = selectById(id);
+        mmPredictItemDto.setMmPredictItem(predictItem);
+        mmPredictItemDto.setDmModuleItem(dmModuleItemService.getByItemid(id));
+        mmPredictItemDto.setMmItemOutput(mmItemOutputService.getByItemid(id));
+        MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid());
+        if (ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) {
+            MmPredictModelEntity mmPredictModel = mmPredictModelService.getByItemid(id);
+            mmPredictItemDto.setMmPredictModel(mmPredictModel);
+            mmPredictItemDto.setMmModelArithSettingsList(mmModelArithSettingsService.getByModelid(mmPredictModel.getId()));
+            mmPredictItemDto.setMmModelParamList(mmModelParamService.getByModelid(mmPredictModel.getId()));
+        } else if (ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) {
+            mmPredictItemDto.setMmPredictMergeItem(mmPredictMergeItemService.getByItemid(id));
+        }
+
+        return mmPredictItemDto;
+    }
+
+    @Override
+    public boolean exportItemResult(HttpServletResponse response, HttpServletRequest request, String id, Map<String, Object> params) {
+        //MmPredictItemDTO mmPredictItemDto = this.getPredictValuesById(id, params);
+        //List<MmItemResultEntity> itemResultList = mmPredictItemDto.getMmItemResultList();
+
+        return true;
+    }
+
+    @Override
+    public int check(MmPredictItemEntity mmPredictItem) {
+        String id = mmPredictItem.getId();
+        String itemname = mmPredictItem.getItemname();
+        String itemno = mmPredictItem.getItemno();
+        QueryWrapper<MmPredictItemEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.ne(StringUtils.isNotBlank(id), "id", id);
+        queryWrapper.and(wrapper -> wrapper.eq("itemname", itemname).or().eq("itemno", itemno));
+        List<MmPredictItemEntity> list = baseDao.selectList(queryWrapper);
+        return list.size();
+    }
+
+    @Override
+    public Long count() {
+        QueryWrapper<MmPredictItemEntity> queryWrapper = new QueryWrapper<>();
+        return baseDao.selectCount(queryWrapper);
+    }
+
+    @Override
+    public List<ItemVO> getByModuleId(String moduleId) {
+        Map<String, Object> params = new HashMap<>();
+
+        return baseDao.getByModuleId(params);
+    }
+
+    @Override
+    public ItemVO getItemByItemNo(String itemNo) {
+        if (StringUtils.isBlank(itemNo)) {
+            return null;
+        }
+        Map<String, Object> params = new HashMap(1);
+        params.put("ITEMNO", itemNo);
+        List<ItemVO> list = baseDao.getItem(params);
+        if (CollectionUtils.isEmpty(list)) {
+            return null;
+        }
+        return list.get(0);
+    }
+
+    @Override
+    public ItemVO getItemById(String itemId) {
+        if (StringUtils.isBlank(itemId)) {
+            return null;
+        }
+        Map<String, Object> params = new HashMap(1);
+        params.put("ITEMID", itemId);
+        List<ItemVO> list = baseDao.getItem(params);
+        if (CollectionUtils.isEmpty(list)) {
+            return null;
+        }
+        return list.get(0);
+    }
+
+    @Override
+    public MergeItemVO getMergeItemByItemId(String itemId) {
+        if (StringUtils.isBlank(itemId)) {
+            return null;
+        }
+        Map<String, Object> params = new HashMap(1);
+        params.put("ITEMID", itemId);
+        List<MergeItemVO> list = baseDao.getMergeItemByItemId(params);
+        if (CollectionUtils.isEmpty(list)) {
+            return null;
+        }
+        return list.get(0);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictMergeItemServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictMergeItemServiceImpl.java
new file mode 100644
index 0000000..8e03ef2
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictMergeItemServiceImpl.java
@@ -0,0 +1,47 @@
+package com.iailab.module.model.mcs.pre.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.pre.dao.MmPredictMergeItemDao;
+import com.iailab.module.model.mcs.pre.entity.MmPredictMergeItemEntity;
+import com.iailab.module.model.mcs.pre.service.MmPredictMergeItemService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 9:27
+ */
+@Service("mmPredictMergeItemService")
+public class MmPredictMergeItemServiceImpl extends BaseServiceImpl<MmPredictMergeItemDao, MmPredictMergeItemEntity> implements MmPredictMergeItemService {
+
+    @Override
+    public void savePredictMergeItem(MmPredictMergeItemEntity predictMergeItem) {
+        predictMergeItem.setId(UUID.randomUUID().toString());
+        baseDao.insert(predictMergeItem);
+    }
+
+    @Override
+    public void update(MmPredictMergeItemEntity predictMergeItem) {
+        this.updateById(predictMergeItem);
+    }
+
+    public void deleteBatch(String[] itemIds) {
+        QueryWrapper queryWrapper = new QueryWrapper<MmPredictMergeItemEntity>();
+        queryWrapper.in("itemid", itemIds);
+        baseDao.delete(queryWrapper);
+    }
+
+    public MmPredictMergeItemEntity getByItemid(String itemid) {
+        QueryWrapper queryWrapper = new QueryWrapper<MmPredictMergeItemEntity>();
+        queryWrapper.eq("itemid", itemid);
+        List<MmPredictMergeItemEntity> list = baseDao.selectList(queryWrapper);
+        if (CollectionUtils.isEmpty(list)) {
+            return new MmPredictMergeItemEntity();
+        }
+        return list.get(0);
+    }
+}
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
new file mode 100644
index 0000000..eb61a05
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictModelServiceImpl.java
@@ -0,0 +1,76 @@
+package com.iailab.module.model.mcs.pre.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.pre.dao.MmPredictModelDao;
+import com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity;
+import com.iailab.module.model.mcs.pre.service.MmPredictModelService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月27日 11:30
+ */
+@Service("mmPredictModelService")
+public class MmPredictModelServiceImpl extends BaseServiceImpl<MmPredictModelDao, MmPredictModelEntity> implements MmPredictModelService {
+
+    @Override
+    public void savePredictModel(MmPredictModelEntity predictModel) {
+        predictModel.setId(UUID.randomUUID().toString());
+        baseDao.insert(predictModel);
+    }
+
+    @Override
+    public void update(MmPredictModelEntity predictModel) {
+        this.updateById(predictModel);
+    }
+
+    @Override
+    public MmPredictModelEntity getInfo(String id) {
+        return baseDao.selectById(id);
+    }
+
+    @Override
+    public BigDecimal getSampleLength(String id) {
+        BigDecimal result = BigDecimal.ZERO;
+        List<MmPredictModelEntity> list = baseDao.getSampleLength(id);
+        if (CollectionUtils.isEmpty(list)) {
+            return result;
+        }
+        result = list.get(0).getPredictsamplength();
+
+        return result;
+    }
+
+    public void deleteBatch(String[] itemIds) {
+        QueryWrapper<MmPredictModelEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in("itemid", itemIds);
+        baseDao.delete(queryWrapper);
+    }
+
+    public MmPredictModelEntity getByItemid(String itemid) {
+        QueryWrapper<MmPredictModelEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("itemid", itemid);
+        List<MmPredictModelEntity> list = baseDao.selectList(queryWrapper);
+        if (CollectionUtils.isEmpty(list)) {
+            return new MmPredictModelEntity();
+        }
+        return list.get(0);
+    }
+
+    @Override
+    public List<MmPredictModelEntity> getNoSettingmapPredictModel(Map<String, Object> params) {
+        return baseDao.getNoSettingmapPredictModel(params);
+    }
+
+    @Override
+    public List<MmPredictModelEntity> getActiveModelByItemId(String itemId) {
+        return baseDao.getActiveModelByItemId(itemId);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmResultTableServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmResultTableServiceImpl.java
new file mode 100644
index 0000000..597002c
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmResultTableServiceImpl.java
@@ -0,0 +1,69 @@
+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.module.model.mcs.pre.dao.MmResultTableDao;
+import com.iailab.module.model.mcs.pre.entity.MmResultTableEntity;
+import com.iailab.module.model.mcs.pre.service.MmResultTableService;;
+import com.iailab.module.model.mcs.pre.vo.MmResultTablePageReqVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月23日 16:28
+ */
+@Service("mmResultTableService")
+public class MmResultTableServiceImpl extends BaseServiceImpl<MmResultTableDao, MmResultTableEntity> implements MmResultTableService {
+    @Override
+    public PageResult<MmResultTableEntity> page(MmResultTablePageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    private QueryWrapper<MmResultTableEntity> getWrapper(Map<String, Object> params) {
+        String tablename = (String)params.get("tablename");
+
+        QueryWrapper<MmResultTableEntity> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotBlank(tablename),"tablename", tablename);
+
+        return wrapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveResultTable(MmResultTableEntity resultTable) {
+        resultTable.setId(UUID.randomUUID().toString());
+        baseDao.insert(resultTable);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(MmResultTableEntity resultTable) {
+        baseDao.updateById(resultTable);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteBatch(String[] resultTableIds) {
+        baseDao.deleteBatchIds(Arrays.asList(resultTableIds));
+    }
+
+    @Override
+    public int check(MmResultTableEntity resultTable) {
+        String id = resultTable.getId();
+        String tablename = resultTable.getTablename();
+        QueryWrapper<MmResultTableEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.ne(StringUtils.isNotBlank(id), "id", id);
+        queryWrapper.and(wrapper -> wrapper.eq("tablename",tablename));
+
+        List<MmResultTableEntity> list = baseDao.selectList(queryWrapper);
+        return list.size();
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/SequenceNumServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/SequenceNumServiceImpl.java
new file mode 100644
index 0000000..731ae18
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/SequenceNumServiceImpl.java
@@ -0,0 +1,29 @@
+package com.iailab.module.model.mcs.pre.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iailab.module.model.mcs.pre.dao.SequenceNumDao;
+import com.iailab.module.model.mcs.pre.entity.SequenceNumEntity;
+import com.iailab.module.model.mcs.pre.service.SequenceNumService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月06日 13:20
+ */
+@Service("sequenceNumService")
+public class SequenceNumServiceImpl extends ServiceImpl<SequenceNumDao, SequenceNumEntity> implements SequenceNumService {
+
+    @Override
+    public synchronized SequenceNumEntity getAndIncreaseByCode (String code) {
+        QueryWrapper queryWrapper = new QueryWrapper<SequenceNumEntity>();
+        queryWrapper.eq("code", code);
+        SequenceNumEntity sequenceNumEntity =  this.getOne(queryWrapper);
+
+        SequenceNumEntity sequenceNumUpdate = new SequenceNumEntity();
+        sequenceNumUpdate.setId(sequenceNumEntity.getId());
+        sequenceNumUpdate.setSequenceNum(sequenceNumEntity.getSequenceNum() + 1);
+        this.updateById(sequenceNumUpdate);
+        return sequenceNumEntity;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/CountItemtypeVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/CountItemtypeVO.java
new file mode 100644
index 0000000..7645781
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/CountItemtypeVO.java
@@ -0,0 +1,25 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年05月10日 13:31
+ */
+@Data
+public class CountItemtypeVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 预测项类型名
+     */
+    private String name;
+
+    /**
+     * 数量
+     */
+    private Integer count;
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/DmModulePageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/DmModulePageReqVO.java
new file mode 100644
index 0000000..8f2af57
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/DmModulePageReqVO.java
@@ -0,0 +1,21 @@
+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年08月29日
+ */
+@Schema(description = "模型平台 - 管网分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class DmModulePageReqVO extends PageParam {
+
+    private String modulename;
+}
\ 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/DmModuleRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/DmModuleRespVO.java
new file mode 100644
index 0000000..1dba4b7
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/DmModuleRespVO.java
@@ -0,0 +1,59 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月29日
+ */
+@Schema(description = "模型平台 - ModBusDevice Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class DmModuleRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "名称")
+    @ExcelProperty("名称")
+    private String modulename;
+
+    @Schema(description = "类型")
+    @ExcelProperty("类型")
+    private String moduletype;
+
+    @Schema(description = "周期")
+    @ExcelProperty("周期")
+    private BigDecimal cycle;
+
+    @Schema(description = "模块配置")
+    @ExcelProperty("模块配置")
+    private String modulenavconfig;
+
+    @Schema(description = "预测时间")
+    @ExcelProperty("预测时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private Date predicttime;
+
+    @Schema(description = "采集时间")
+    @ExcelProperty("采集时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private Date collecttime;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+    @Schema(description = "更新时间")
+    @ExcelProperty("更新时间")
+    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/MmItemOutputPageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemOutputPageReqVO.java
new file mode 100644
index 0000000..5f1be51
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemOutputPageReqVO.java
@@ -0,0 +1,19 @@
+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年09月04日
+ */
+@Schema(description = "模型平台 - Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MmItemOutputPageReqVO extends PageParam {
+}
\ 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/MmItemOutputRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemOutputRespVO.java
new file mode 100644
index 0000000..6f145a3
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemOutputRespVO.java
@@ -0,0 +1,46 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月04日
+ */
+@Schema(description = "模型平台 - MmItemOutput Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MmItemOutputRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "预测项ID")
+    @ExcelProperty("预测项ID")
+    private String itemid;
+
+    @Schema(description = "数据点ID")
+    @ExcelProperty("数据点ID")
+    private String pointid;
+
+    @Schema(description = "存放表ID")
+    @ExcelProperty("存放表ID")
+    private String resulttableid;
+
+    @Schema(description = "数据点名称")
+    @ExcelProperty("数据点名称")
+    private String tagname;
+
+    @Schema(description = "排序(默认值1)")
+    @ExcelProperty("排序")
+    private BigDecimal outputorder;
+}
\ 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/MmItemTypePageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemTypePageReqVO.java
new file mode 100644
index 0000000..6d6c192
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemTypePageReqVO.java
@@ -0,0 +1,21 @@
+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年09月04日
+ */
+@Schema(description = "模型平台 - Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MmItemTypePageReqVO extends PageParam {
+
+    private String itemtypename;
+}
\ 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/MmItemTypeRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemTypeRespVO.java
new file mode 100644
index 0000000..060f3d9
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmItemTypeRespVO.java
@@ -0,0 +1,36 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月04日
+ */
+@Schema(description = "模型平台 - MmItemType Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MmItemTypeRespVO {
+
+    @Schema(description = "ID")
+    @ExcelProperty("ID")
+    private String id;
+
+    @Schema(description = "名称")
+    @ExcelProperty("名称")
+    private String itemtypename;
+
+    @Schema(description = "类名")
+    @ExcelProperty("类名")
+    private String itemclasstype;
+
+    @Schema(description = "程序集")
+    @ExcelProperty("程序集")
+    private String assemblyname;
+}
\ 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/MmModelResultstrPageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmModelResultstrPageReqVO.java
new file mode 100644
index 0000000..c6de56d
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmModelResultstrPageReqVO.java
@@ -0,0 +1,21 @@
+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年09月04日
+ */
+@Schema(description = "模型平台 - Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MmModelResultstrPageReqVO extends PageParam {
+
+    private String resultstr;
+}
\ 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/MmModelResultstrRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmModelResultstrRespVO.java
new file mode 100644
index 0000000..50d3c33
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmModelResultstrRespVO.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月04日
+ */
+@Schema(description = "模型平台 - MmModelResultstr Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MmModelResultstrRespVO {
+
+    @Schema(description = "主键")
+    @ExcelProperty("主键")
+    private String id;
+
+    @Schema(description = "结果")
+    @ExcelProperty("结果")
+    private String resultstr;
+}
\ 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/MmPredictItemPageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictItemPageReqVO.java
new file mode 100644
index 0000000..b0405c9
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictItemPageReqVO.java
@@ -0,0 +1,19 @@
+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年09月04日
+ */
+@Schema(description = "模型平台 - Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MmPredictItemPageReqVO extends PageParam {
+}
\ 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/MmPredictItemRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictItemRespVO.java
new file mode 100644
index 0000000..ccdf7b6
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictItemRespVO.java
@@ -0,0 +1,85 @@
+package com.iailab.module.model.mcs.pre.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author PanZhibao
+ * @date 2021年04月26日 13:27
+ */
+@Schema(description = "模型平台 - MmPredictItem Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MmPredictItemRespVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(description = "主键")
+    @ExcelProperty("主键")
+    private String id;
+
+    @Schema(description = "编号")
+    @ExcelProperty("编号")
+    private String itemno;
+
+    @Schema(description = "预测项名")
+    @ExcelProperty("预测项名")
+    private String itemname;
+
+    @Schema(description = "类型ID")
+    @ExcelProperty("类型ID")
+    private String itemtypeid;
+
+    @Schema(description = "类型名称")
+    @ExcelProperty("类型名称")
+    private String itemtypename;
+
+    @Schema(description = "粒度")
+    @ExcelProperty("粒度")
+    private BigDecimal granularity;
+
+    @Schema(description = "是否融合")
+    @ExcelProperty("是否融合")
+    private BigDecimal isfuse;
+
+    @Schema(description = "是否检查")
+    @ExcelProperty("是否检查")
+    private BigDecimal workchecked;
+
+    @Schema(description = "模块ID")
+    @ExcelProperty("模块ID")
+    private String moduleid;
+
+    @Schema(description = "排序")
+    @ExcelProperty("排序")
+    private Integer itemorder;
+
+    @Schema(description = "是否启用")
+    @ExcelProperty("是否启用")
+    private BigDecimal status;
+
+    @Schema(description = "类别ID")
+    @ExcelProperty("类别ID")
+    private String categoryid;
+
+    @Schema(description = "数据点ID")
+    @ExcelProperty("数据点ID")
+    private String pointid;
+
+    @Schema(description = "数据点名称")
+    @ExcelProperty("数据点名称")
+    private String tagname;
+
+    @Schema(description = "存放表ID")
+    @ExcelProperty("存放表ID")
+    private String resulttableid;
+
+    @Schema(description = "存放表")
+    @ExcelProperty("存放表")
+    private String tablename;
+}
+
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmResultTablePageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmResultTablePageReqVO.java
new file mode 100644
index 0000000..9700877
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmResultTablePageReqVO.java
@@ -0,0 +1,21 @@
+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年09月04日
+ */
+@Schema(description = "模型平台 - Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MmResultTablePageReqVO extends PageParam {
+
+    private String tablename;
+}
\ 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/MmResultTableRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmResultTableRespVO.java
new file mode 100644
index 0000000..9dd90c2
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmResultTableRespVO.java
@@ -0,0 +1,26 @@
+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 javax.validation.constraints.NotBlank;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月04日
+ */
+@Schema(description = "模型平台 - MmResultTable Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MmResultTableRespVO {
+
+    private String id;
+
+    /**
+     * 表名
+     */
+    @NotBlank(message="表名不能为空")
+    private String tablename;
+}
\ 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/controller/StScheduleController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleController.java
new file mode 100644
index 0000000..caffdea
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleController.java
@@ -0,0 +1,78 @@
+package com.iailab.module.model.mcs.sche.controller;
+
+import com.iailab.framework.common.exception.ErrorCode;
+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.sche.entity.StScheduleEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleService;
+import com.iailab.module.model.mcs.sche.vo.StSchedulePageReqVO;
+import com.iailab.module.model.mcs.sche.vo.StScheduleRespVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 13:51
+ */
+@RestController
+@RequestMapping("/sche/schedule")
+public class StScheduleController {
+    @Autowired
+    private StScheduleService stScheduleService;
+
+    /**
+     * 调度列表
+     */
+    @GetMapping("/page")
+    public CommonResult<PageResult<StScheduleRespVO>> page(@Validated StSchedulePageReqVO reqVO) {
+        PageResult<StScheduleEntity> page = stScheduleService.page(reqVO);
+
+        return success(BeanUtils.toBean(page, StScheduleRespVO.class));
+    }
+
+    /**
+     * 调度信息
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<StScheduleEntity> info(@PathVariable("id") String id){
+        StScheduleEntity schedule = stScheduleService.selectById(id);
+        return success(schedule);
+    }
+
+    /**
+     * 保存调度
+     */
+    @PostMapping("/create")
+    public CommonResult<Boolean> save(@RequestBody StScheduleEntity schedule){
+        int count = stScheduleService.check(schedule);
+        if (count > 0) {
+            ErrorCode errorCode = new ErrorCode(999, "名称重复");
+            return error(errorCode);
+        }
+        stScheduleService.saveSchedule(schedule);
+        return success(true);
+    }
+
+    /**
+     * 修改调度
+     */
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody StScheduleEntity schedule){
+        stScheduleService.update(schedule);
+        return success(true);
+    }
+
+    /**
+     * 删除调度
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id){
+        stScheduleService.deleteBatch(new String[]{id});
+        return success(true);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleEnergyTypeController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleEnergyTypeController.java
new file mode 100644
index 0000000..9a08bda
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleEnergyTypeController.java
@@ -0,0 +1,86 @@
+package com.iailab.module.model.mcs.sche.controller;
+
+import com.iailab.framework.common.exception.ErrorCode;
+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.sche.entity.StScheduleEnergyTypeEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleEnergyTypeService;
+import com.iailab.module.model.mcs.sche.vo.StScheduleEnergyTypePageReqVO;
+import com.iailab.module.model.mcs.sche.vo.StScheduleEnergyTypeRespVO;
+import com.iailab.module.model.mcs.sche.vo.StScheduleRespVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 14:02
+ */
+@RestController
+@RequestMapping("/sche/schedule-energy-type")
+public class StScheduleEnergyTypeController {
+    @Autowired
+    private StScheduleEnergyTypeService stScheduleEnergyTypeService;
+
+    /**
+     * 调度类型列表
+     */
+    @GetMapping("/page")
+    public CommonResult<PageResult<StScheduleEnergyTypeRespVO>> page(@Validated StScheduleEnergyTypePageReqVO reqVO) {
+        PageResult<StScheduleEnergyTypeEntity> page = stScheduleEnergyTypeService.page(reqVO);
+
+        return success(BeanUtils.toBean(page, StScheduleEnergyTypeRespVO.class));
+    }
+
+    /**
+     * 调度能源类型信息
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<StScheduleEnergyTypeEntity> info(@PathVariable("id") String id){
+        StScheduleEnergyTypeEntity scheduleEnergyType = stScheduleEnergyTypeService.selectById(id);
+        return success(scheduleEnergyType);
+    }
+
+    /**
+     * 保存调度能源类型
+     */
+    @PostMapping
+    public CommonResult<Boolean> save(@RequestBody StScheduleEnergyTypeEntity scheduleEnergyType){
+        int count = stScheduleEnergyTypeService.check(scheduleEnergyType);
+        if (count > 0) {
+            ErrorCode errorCode = new ErrorCode(999, "名称重复");
+            return error(errorCode);
+        }
+        stScheduleEnergyTypeService.saveScheduleEnergyType(scheduleEnergyType);
+        return success(true);
+    }
+
+    /**
+     * 修改调度能源类型
+     */
+    @PutMapping
+    public CommonResult<Boolean> update(@RequestBody StScheduleEnergyTypeEntity scheduleEnergyType){
+        int count = stScheduleEnergyTypeService.check(scheduleEnergyType);
+        if (count > 0) {
+            ErrorCode errorCode = new ErrorCode(999, "名称重复");
+            return error(errorCode);
+        }
+        stScheduleEnergyTypeService.update(scheduleEnergyType);
+        return success(true);
+    }
+
+    /**
+     * 删除调度能源类型
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id){
+        stScheduleEnergyTypeService.deleteBatch(new String[]{id});
+        return success(true);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleModelController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleModelController.java
new file mode 100644
index 0000000..1847c04
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleModelController.java
@@ -0,0 +1,85 @@
+package com.iailab.module.model.mcs.sche.controller;
+
+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.framework.common.util.object.ConvertUtils;
+import com.iailab.module.model.mcs.sche.dto.StScheduleModelDto;
+import com.iailab.module.model.mcs.sche.entity.StScheduleModelEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleModelService;
+import com.iailab.module.model.mcs.sche.vo.StScheduleModelRespVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 14:35
+ */
+@RestController
+@RequestMapping("/sche/schedule-model")
+public class StScheduleModelController {
+
+    @Autowired
+    private StScheduleModelService stScheduleModelService;
+
+    /**
+     * 调度模型类型列表
+     */
+    @GetMapping("/page")
+    public CommonResult<PageResult<StScheduleModelRespVO>> page(@RequestParam Map<String, Object> params) {
+        PageResult<StScheduleModelRespVO> page = stScheduleModelService.getPageList(params);
+
+        return success(BeanUtils.toBean(page, StScheduleModelRespVO.class));
+    }
+
+    /**
+     * 调度模型类型信息
+     */
+    @GetMapping("/get")
+    public CommonResult<StScheduleModelDto> info(@RequestParam("id") String id){
+        StScheduleModelDto scheduleMode = stScheduleModelService.getDetailById(id);
+        return success(scheduleMode);
+    }
+
+    /**
+     * 保存调度模型类型
+     */
+    @PostMapping("/create")
+    public CommonResult<Boolean> save(@RequestBody StScheduleModelDto scheduleMode){
+        StScheduleModelEntity stScheduleModelEntity = ConvertUtils.sourceToTarget(scheduleMode, StScheduleModelEntity.class);
+        int count = stScheduleModelService.check(stScheduleModelEntity);
+        if (count > 0) {
+            return error(999, "名称或编号重复");
+        }
+        stScheduleModelService.saveStScheduleModel(scheduleMode);
+        return success(true);
+    }
+
+    /**
+     * 修改调度模型类型
+     */
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody StScheduleModelDto scheduleMode){
+        StScheduleModelEntity stScheduleModelEntity = ConvertUtils.sourceToTarget(scheduleMode, StScheduleModelEntity.class);
+        int count = stScheduleModelService.check(stScheduleModelEntity);
+        if (count > 0) {
+            return error(999, "名称或编号重复");
+        }
+        stScheduleModelService.update(scheduleMode);
+        return success(true);
+    }
+
+    /**
+     * 删除调度模型类型
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id){
+        stScheduleModelService.deleteBatch(new String[]{id});
+        return success(true);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleObjectController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleObjectController.java
new file mode 100644
index 0000000..20a7c5d
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleObjectController.java
@@ -0,0 +1,80 @@
+package com.iailab.module.model.mcs.sche.controller;
+
+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.sche.entity.StScheduleObjectEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleObjectService;
+import com.iailab.module.model.mcs.sche.vo.StScheduleObjectPageReqVO;
+import com.iailab.module.model.mcs.sche.vo.StScheduleObjectRespVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月21日 8:50
+ */
+@RestController
+@RequestMapping("/sche/schedule-object")
+public class StScheduleObjectController {
+    @Autowired
+    private StScheduleObjectService stScheduleObjectService;
+
+    /**
+     * 调度对象类型列表
+     */
+    @GetMapping("/page")
+    public CommonResult<PageResult<StScheduleObjectRespVO>> page(@Validated StScheduleObjectPageReqVO reqVO) {
+        PageResult<StScheduleObjectEntity> page = stScheduleObjectService.page(reqVO);
+
+        return success(BeanUtils.toBean(page, StScheduleObjectRespVO.class));
+    }
+
+    /**
+     * 调度对象类型信息
+     */
+    @GetMapping("/info/{id}")
+    public CommonResult<StScheduleObjectEntity> info(@PathVariable("id") String id) {
+        StScheduleObjectEntity scheduleObject = stScheduleObjectService.selectById(id);
+        return success(scheduleObject);
+    }
+
+    /**
+     * 保存调度对象类型
+     */
+    @PostMapping("/create")
+    public CommonResult<Boolean> save(@RequestBody StScheduleObjectEntity scheduleObject) {
+        int count = stScheduleObjectService.check(scheduleObject);
+        if (count > 0) {
+            return error(999, "名称或编号重复");
+        }
+        stScheduleObjectService.saveStScheduleObject(scheduleObject);
+        return success(true);
+    }
+
+    /**
+     * 修改调度对象类型
+     */
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody StScheduleObjectEntity scheduleObject) {
+        int count = stScheduleObjectService.check(scheduleObject);
+        if (count > 0) {
+            return error(999, "名称或编号重复");
+        }
+        stScheduleObjectService.update(scheduleObject);
+        return success(true);
+    }
+
+    /**
+     * 删除调度对象类型
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
+        stScheduleObjectService.deleteBatch(new String[]{id});
+        return success(true);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleUserController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleUserController.java
new file mode 100644
index 0000000..bc36dda
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/StScheduleUserController.java
@@ -0,0 +1,80 @@
+package com.iailab.module.model.mcs.sche.controller;
+
+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.sche.entity.StScheduleUserEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleUserService;
+import com.iailab.module.model.mcs.sche.vo.StScheduleUserPageReqVO;
+import com.iailab.module.model.mcs.sche.vo.StScheduleUserRespVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 15:34
+ */
+@RestController
+@RequestMapping("/sche/schedule-user")
+public class StScheduleUserController {
+    @Autowired
+    private StScheduleUserService stScheduleUserService;
+
+    /**
+     * 调度用户类型列表
+     */
+    @GetMapping("/list")
+    public  CommonResult<PageResult<StScheduleUserRespVO>> page(@Validated StScheduleUserPageReqVO reqVO) {
+        PageResult<StScheduleUserEntity> page = stScheduleUserService.page(reqVO);
+
+        return success(BeanUtils.toBean(page, StScheduleUserRespVO.class));
+    }
+
+    /**
+     * 调度用户类型信息
+     */
+    @GetMapping("/get")
+    public CommonResult<StScheduleUserEntity> info(@RequestParam("id") String id) {
+        StScheduleUserEntity scheduleUser = stScheduleUserService.selectById(id);
+        return success(scheduleUser);
+    }
+
+    /**
+     * 保存调度用户类型
+     */
+    @PostMapping("/create")
+    public CommonResult<Boolean> save(@RequestBody StScheduleUserEntity scheduleUser) {
+        int count = stScheduleUserService.check(scheduleUser);
+        if (count > 0) {
+            return error(999, "名称或编号重复");
+        }
+        stScheduleUserService.saveScheduleUser(scheduleUser);
+        return success(true);
+    }
+
+    /**
+     * 修改调度用户类型
+     */
+    @PutMapping("/update")
+    public CommonResult<Boolean> update(@RequestBody StScheduleUserEntity scheduleUser) {
+        int count = stScheduleUserService.check(scheduleUser);
+        if (count > 0) {
+            return error(999, "名称或编号重复");
+        }
+        stScheduleUserService.update(scheduleUser);
+        return success(true);
+    }
+
+    /**
+     * 删除调度用户类型
+     */
+    @DeleteMapping("/delete")
+    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
+        stScheduleUserService.deleteBatch(new String[]{id});
+        return success(true);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleDao.java
new file mode 100644
index 0000000..f2f294f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleDao.java
@@ -0,0 +1,23 @@
+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.module.model.mcs.sche.entity.StScheduleEntity;
+import com.iailab.module.model.mcs.sche.vo.StSchedulePageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 17:54
+ */
+@Mapper
+public interface StScheduleDao extends BaseMapperX<StScheduleEntity> {
+
+
+    default PageResult<StScheduleEntity> selectPage(StSchedulePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<StScheduleEntity>()
+                .likeIfPresent(StScheduleEntity::getName, reqVO.getName())
+                .orderByDesc(StScheduleEntity::getName));
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleEnergyTypeDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleEnergyTypeDao.java
new file mode 100644
index 0000000..852f954
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleEnergyTypeDao.java
@@ -0,0 +1,22 @@
+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.module.model.mcs.sche.entity.StScheduleEnergyTypeEntity;
+import com.iailab.module.model.mcs.sche.vo.StScheduleEnergyTypePageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 17:53
+ */
+@Mapper
+public interface StScheduleEnergyTypeDao extends BaseMapperX<StScheduleEnergyTypeEntity> {
+
+    default PageResult<StScheduleEnergyTypeEntity> selectPage(StScheduleEnergyTypePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<StScheduleEnergyTypeEntity>()
+                .likeIfPresent(StScheduleEnergyTypeEntity::getEnergytypename, reqVO.getEnergytypename())
+                .orderByDesc(StScheduleEnergyTypeEntity::getEnergytypename));
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleModelDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleModelDao.java
new file mode 100644
index 0000000..c6ad125
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleModelDao.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mcs.sche.dao;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.sche.entity.StScheduleModelEntity;
+import com.iailab.module.model.mcs.sche.vo.StScheduleModelRespVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 17:56
+ */
+@Mapper
+public interface StScheduleModelDao extends BaseMapperX<StScheduleModelEntity> {
+
+    /**
+     * 查询列表
+     *
+     * @param page
+     * @param params
+     * @return
+     */
+    IPage<StScheduleModelRespVO> getPageList(IPage<StScheduleModelEntity> page, @Param("params") Map<String, Object> params);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleModelUserParamDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleModelUserParamDao.java
new file mode 100644
index 0000000..b57ae19
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleModelUserParamDao.java
@@ -0,0 +1,26 @@
+package com.iailab.module.model.mcs.sche.dao;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.sche.entity.StScheduleModelUserParamEntity;
+import com.iailab.module.model.mcs.sche.vo.ScheduleModelUserParamVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 17:58
+ */
+@Mapper
+public interface StScheduleModelUserParamDao extends BaseMapperX<StScheduleModelUserParamEntity> {
+    /**
+     * queryList
+     *
+     * @param page
+     * @param params
+     * @return
+     */
+    IPage<ScheduleModelUserParamVo> queryList(IPage<ScheduleModelUserParamVo> page, @Param("params") Map<String, Object> params);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleObjectDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleObjectDao.java
new file mode 100644
index 0000000..56be35b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleObjectDao.java
@@ -0,0 +1,23 @@
+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.module.model.mcs.sche.entity.StScheduleObjectEntity;
+import com.iailab.module.model.mcs.sche.vo.StScheduleObjectPageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 8:44
+ */
+@Mapper
+public interface StScheduleObjectDao extends BaseMapperX<StScheduleObjectEntity> {
+
+    default PageResult<StScheduleObjectEntity> selectPage(StScheduleObjectPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<StScheduleObjectEntity>()
+                .likeIfPresent(StScheduleObjectEntity::getName, reqVO.getName())
+                .orderByDesc(StScheduleObjectEntity::getName));
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleParamDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleParamDao.java
new file mode 100644
index 0000000..83c9365
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleParamDao.java
@@ -0,0 +1,13 @@
+package com.iailab.module.model.mcs.sche.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.sche.entity.StScheduleParamEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 8:51
+ */
+@Mapper
+public interface StScheduleParamDao extends BaseMapperX<StScheduleParamEntity> {
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleParamSettingDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleParamSettingDao.java
new file mode 100644
index 0000000..eb61c9c
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleParamSettingDao.java
@@ -0,0 +1,13 @@
+package com.iailab.module.model.mcs.sche.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.sche.entity.StScheduleParamSettingEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 8:54
+ */
+@Mapper
+public interface StScheduleParamSettingDao extends BaseMapperX<StScheduleParamSettingEntity> {
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeDao.java
new file mode 100644
index 0000000..418f09d
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeDao.java
@@ -0,0 +1,22 @@
+package com.iailab.module.model.mcs.sche.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.sche.entity.StScheduleSchemeEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 9:08
+ */
+@Mapper
+public interface StScheduleSchemeDao extends BaseMapperX<StScheduleSchemeEntity> {
+
+    /**
+     * saveScheduleTime
+     *
+     * @param map
+     */
+    void saveScheduleTime(Map map);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeDetailesDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeDetailesDao.java
new file mode 100644
index 0000000..fb9cf4b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeDetailesDao.java
@@ -0,0 +1,25 @@
+package com.iailab.module.model.mcs.sche.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.sche.entity.StScheduleSchemeDetailesEntity;
+import com.iailab.module.model.mcs.sche.vo.ScheduleSchemeDetailesVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 9:06
+ */
+@Mapper
+public interface StScheduleSchemeDetailesDao extends BaseMapperX<StScheduleSchemeDetailesEntity> {
+    /**
+     * 查询调度方案详情
+     *
+     * @param params
+     * @return
+     */
+    List<ScheduleSchemeDetailesVo> queryScheduleSchemeDetailes(@Param("params") Map<String, Object> params);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeEvalTypeDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeEvalTypeDao.java
new file mode 100644
index 0000000..24709d5
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeEvalTypeDao.java
@@ -0,0 +1,13 @@
+package com.iailab.module.model.mcs.sche.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.sche.entity.StScheduleSchemeEvalTypeEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 9:10
+ */
+@Mapper
+public interface StScheduleSchemeEvalTypeDao extends BaseMapperX<StScheduleSchemeEvalTypeEntity> {
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeEvalValueDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeEvalValueDao.java
new file mode 100644
index 0000000..d21ac36
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleSchemeEvalValueDao.java
@@ -0,0 +1,13 @@
+package com.iailab.module.model.mcs.sche.dao;
+
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.model.mcs.sche.entity.StScheduleSchemeEvalValueEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 9:14
+ */
+@Mapper
+public interface StScheduleSchemeEvalValueDao extends BaseMapperX<StScheduleSchemeEvalValueEntity> {
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleUserDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleUserDao.java
new file mode 100644
index 0000000..54dc2c6
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StScheduleUserDao.java
@@ -0,0 +1,22 @@
+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.module.model.mcs.sche.entity.StScheduleUserEntity;
+import com.iailab.module.model.mcs.sche.vo.StScheduleUserPageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 9:16
+ */
+@Mapper
+public interface StScheduleUserDao extends BaseMapperX<StScheduleUserEntity> {
+
+    default PageResult<StScheduleUserEntity> selectPage(StScheduleUserPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<StScheduleUserEntity>()
+                .likeIfPresent(StScheduleUserEntity::getUsername, reqVO.getUsername())
+                .orderByDesc(StScheduleUserEntity::getUsername));
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dto/StScheduleModelDto.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dto/StScheduleModelDto.java
new file mode 100644
index 0000000..3c72a80
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dto/StScheduleModelDto.java
@@ -0,0 +1,80 @@
+package com.iailab.module.model.mcs.sche.dto;
+
+import com.iailab.module.model.mcs.sche.entity.StScheduleModelUserParamEntity;
+import com.iailab.module.model.mcs.sche.entity.StScheduleParamEntity;
+import com.iailab.module.model.mcs.sche.entity.StScheduleParamSettingEntity;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月21日 17:44
+ */
+@Data
+public class StScheduleModelDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private String id;
+
+
+    /**
+     * 模型名称
+     */
+    private String modelname;
+
+
+    /**
+     * 调度ID
+     */
+    private String scheduleid;
+
+    /**
+     * 对象ID
+     */
+    private String objectid;
+
+    /**
+     * 类名
+     */
+    private String classname;
+
+    /**
+     * 方法名
+     */
+    private String methodname;
+
+    /**
+     * 模型路径
+     */
+    private String modelpath;
+
+    /**
+     * 端口长度
+     */
+    private Integer portlength;
+
+    /**
+     * 模型状态
+     */
+    private Integer modelstatus;
+
+    /**
+     * stScheduleParamSettingList
+     */
+    private List<StScheduleParamSettingEntity> stScheduleParamSettingList;
+
+    /**
+     * stScheduleParamList
+     */
+    private List<StScheduleParamEntity> stScheduleParamList;
+
+    /**
+     * stScheduleModelUserParamList
+     */
+    private List<StScheduleModelUserParamEntity> stScheduleModelUserParamList;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dto/StSchedulePredictItemDto.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dto/StSchedulePredictItemDto.java
new file mode 100644
index 0000000..d25995b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dto/StSchedulePredictItemDto.java
@@ -0,0 +1,81 @@
+package com.iailab.module.model.mcs.sche.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @date 2021年11月02日 15:55
+ */
+@Data
+public class StSchedulePredictItemDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 预测项ID
+     */
+    private String predictitemid;
+
+    /**
+     * 预测项Name
+     */
+    private String itemname;
+
+    /**
+     * 调度模型ID
+     */
+    private String schedulemodelid;
+
+    /**
+     * 调度模型Name
+     */
+    private String modelname;
+
+    /**
+     * 最大值
+     */
+    private String maxvaluekey;
+
+    /**
+     * 最大值
+     */
+    private String maxValue;
+
+    /**
+     * 最小值
+     */
+    private String minvaluekey;
+
+    /**
+     * 最大值
+     */
+    private String minValue;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleEnergyTypeEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleEnergyTypeEntity.java
new file mode 100644
index 0000000..e50297e
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleEnergyTypeEntity.java
@@ -0,0 +1,34 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 14:55
+ */
+@Data
+@TableName("T_ST_SCHEDULE_ENERGY_TYPE")
+public class StScheduleEnergyTypeEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 类型名称
+     */
+    @NotBlank(message="类型名称不能为空")
+    private String energytypename;
+
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleEntity.java
new file mode 100644
index 0000000..928a672
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleEntity.java
@@ -0,0 +1,38 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 14:30
+ */
+@Data
+@TableName("T_ST_SCHEDULE")
+public class StScheduleEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 名称
+     */
+    @NotBlank(message="名称不能为空")
+    private String name;
+
+    /**
+     * 调度时间
+     */
+    private Date scheduletime;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleModelEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleModelEntity.java
new file mode 100644
index 0000000..277cf48
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleModelEntity.java
@@ -0,0 +1,69 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 15:03
+ */
+@Data
+@TableName("T_ST_SCHEDULE_MODEL")
+public class StScheduleModelEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+
+    /**
+     * 模型名称
+     */
+    @NotBlank(message="模型名称不能为空")
+    private String modelname;
+
+
+    /**
+     * 调度ID
+     */
+    private String scheduleid;
+
+    /**
+     * 对象ID
+     */
+    private String objectid;
+
+    /**
+     * 类名
+     */
+    private String classname;
+
+    /**
+     * 方法名
+     */
+    private String methodname;
+
+    /**
+     * 模型路径
+     */
+    private String modelpath;
+
+    /**
+     * 端口长度
+     */
+    private Integer portlength;
+
+    /**
+     * 模型状态
+     */
+    private Integer modelstatus;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleModelUserParamEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleModelUserParamEntity.java
new file mode 100644
index 0000000..01f1339
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleModelUserParamEntity.java
@@ -0,0 +1,81 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 15:35
+ */
+@Data
+@TableName("T_ST_SCHEDULE_MODEL_USER_PARAM")
+public class StScheduleModelUserParamEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 模型ID
+     */
+    private String modelid;
+
+    /**
+     * 用户ID
+     */
+    private String userid;
+
+    /**
+     * 能源类型ID
+     */
+    private String energytypeid;
+
+    /**
+     * 参数ID
+     */
+    private String paramid;
+
+    /**
+     * 模型状态
+     */
+    private String modelsatus;
+
+    /**
+     * 用户排序
+     */
+    private Integer userorder;
+
+    /**
+     * 能源排序
+     */
+    private Integer energyorder;
+
+    /**
+     * 是否调整
+     */
+    private Integer isadjust;
+
+    /**
+     * 调整上限
+     */
+    private BigDecimal upadjlimit;
+
+    /**
+     * 调整下限
+     */
+    private BigDecimal downadjlimit;
+
+    /**
+     * 调整排序
+     */
+    private Integer adjorder;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleObjectEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleObjectEntity.java
new file mode 100644
index 0000000..9675c78
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleObjectEntity.java
@@ -0,0 +1,37 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 16:10
+ */
+@Data
+@TableName("T_ST_SCHEDULE_OBJECT")
+public class StScheduleObjectEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 名称
+     */
+    @NotBlank(message="名称不能为空")
+    private String name;
+
+    /**
+     * 排序
+     */
+    private Integer order;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleParamEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleParamEntity.java
new file mode 100644
index 0000000..a024c7e
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleParamEntity.java
@@ -0,0 +1,60 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 16:17
+ */
+@Data
+@TableName("T_ST_SCHEDULE_PARAM")
+public class StScheduleParamEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 模型ID
+     */
+    private String modelid;
+
+    /**
+     * 模型参数名称
+     */
+    private String modelparamname;
+
+    /**
+     * 模型参数ID
+     */
+    private String modelparamid;
+
+    /**
+     * 模型参数排序
+     */
+    private Integer modelparamorder;
+
+    /**
+     * 模型参数端口排序
+     */
+    private Integer modelparamportorder;
+
+    /**
+     * 数据长度
+     */
+    private Integer datalength;
+
+    /**
+     * 数据类型
+     */
+    private String modelparamtype;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleParamSettingEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleParamSettingEntity.java
new file mode 100644
index 0000000..edcc111
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleParamSettingEntity.java
@@ -0,0 +1,50 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 16:35
+ */
+@Data
+@TableName("T_ST_SCHEDULE_PARAM_SETTING")
+public class StScheduleParamSettingEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 模型ID
+     */
+    private String modelid;
+
+    /**
+     * 键
+     */
+    private String key;
+
+    /**
+     * 值
+     */
+    private String value;
+
+    /**
+     * 值类型
+     */
+    private String valuetype;
+
+    /**
+     * 名称
+     */
+    private String name;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StSchedulePredictItemEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StSchedulePredictItemEntity.java
new file mode 100644
index 0000000..a23cf83
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StSchedulePredictItemEntity.java
@@ -0,0 +1,58 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @date 2021年11月02日 15:18
+ */
+@Data
+@TableName("T_ST_SCHEDULE_PREDICT_ITEM")
+public class StSchedulePredictItemEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+
+    /**
+     * 预测项ID
+     */
+    private String predictitemid;
+
+    /**
+     * 调度模型ID
+     */
+    private String schedulemodelid;
+
+    /**
+     * 最大值
+     */
+    private String maxvaluekey;
+
+    /**
+     * 最小值
+     */
+    private String minvaluekey;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeDetailesEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeDetailesEntity.java
new file mode 100644
index 0000000..a7c3cd0
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeDetailesEntity.java
@@ -0,0 +1,46 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 17:14
+ */
+@Data
+@TableName("T_ST_SCHEDULE_SCHEME_DETAILES")
+public class StScheduleSchemeDetailesEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 调整用户ID
+     */
+    private String adjustuserid;
+
+    /**
+     * 方案ID
+     */
+    private String schemid;
+
+    /**
+     * 值
+     */
+    private BigDecimal value;
+
+    /**
+     * 是否调整
+     */
+    private BigDecimal isadjust;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEntity.java
new file mode 100644
index 0000000..5cd1b79
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEntity.java
@@ -0,0 +1,62 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 16:43
+ */
+@Data
+@TableName("T_ST_SCHEDULE_SCHEME")
+public class StScheduleSchemeEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 模型ID
+     */
+    private String modelid;
+
+    /**
+     * 开始时间
+     */
+    private Date starttime;
+
+    /**
+     * 结束时间
+     */
+    private Date endtime;
+
+    /**
+     * 调度时间
+     */
+    private Date scheduletime;
+
+    /**
+     * 对象值
+     */
+    private BigDecimal objectvalue;
+
+    /**
+     * 方案排序
+     */
+    private Integer schemeorder;
+
+    /**
+     * 是否调整
+     */
+    private Integer isadjust;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEvalTypeEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEvalTypeEntity.java
new file mode 100644
index 0000000..adcedda
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEvalTypeEntity.java
@@ -0,0 +1,30 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 17:24
+ */
+@Data
+@TableName("T_ST_SCHEDULE_SCHEME_EVAL_TYPE")
+public class StScheduleSchemeEvalTypeEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 名称
+     */
+    private String evalname;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEvalValueEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEvalValueEntity.java
new file mode 100644
index 0000000..1c78ed9
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleSchemeEvalValueEntity.java
@@ -0,0 +1,46 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 17:33
+ */
+@Data
+@TableName("T_ST_SCHEDULE_SCHEME_EVAL_VALUE")
+public class StScheduleSchemeEvalValueEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 方案ID
+     */
+    private String schemid;
+
+    /**
+     * evalid
+     */
+    private String evalid;
+
+    /**
+     * schprevalue
+     */
+    private BigDecimal schprevalue;
+
+    /**
+     * schedvalue
+     */
+    private BigDecimal schedvalue;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleUserEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleUserEntity.java
new file mode 100644
index 0000000..73621f9
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/entity/StScheduleUserEntity.java
@@ -0,0 +1,40 @@
+package com.iailab.module.model.mcs.sche.entity;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 17:42
+ */
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月19日 17:33
+ */
+@Data
+@TableName("T_ST_SCHEDULE_USER")
+public class StScheduleUserEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    /**
+     * 用户名称
+     */
+    private String username;
+
+    /**
+     * 调整状态
+     */
+    private String adjuststatus;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleEnergyTypeService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleEnergyTypeService.java
new file mode 100644
index 0000000..91b50b6
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleEnergyTypeService.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mcs.sche.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.sche.entity.StScheduleEnergyTypeEntity;
+import com.iailab.module.model.mcs.sche.vo.StScheduleEnergyTypePageReqVO;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 11:45
+ */
+public interface StScheduleEnergyTypeService extends BaseService<StScheduleEnergyTypeEntity> {
+
+    void saveScheduleEnergyType(StScheduleEnergyTypeEntity scheduleEnergyType);
+
+    void update(StScheduleEnergyTypeEntity scheduleEnergyType);
+
+    void deleteBatch(String[] scheduleEnergyTypeIds);
+
+    int check(StScheduleEnergyTypeEntity scheduleEnergyType);
+
+    PageResult<StScheduleEnergyTypeEntity> page(StScheduleEnergyTypePageReqVO reqVO);
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelService.java
new file mode 100644
index 0000000..07d3ada
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelService.java
@@ -0,0 +1,31 @@
+package com.iailab.module.model.mcs.sche.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.sche.dto.StScheduleModelDto;
+import com.iailab.module.model.mcs.sche.entity.StScheduleModelEntity;
+import com.iailab.module.model.mcs.sche.vo.StScheduleModelRespVO;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 14:13
+ */
+public interface StScheduleModelService extends BaseService<StScheduleModelEntity> {
+
+    void saveStScheduleModel(StScheduleModelDto stScheduleModel);
+
+    StScheduleModelDto getDetailById(String id);
+
+    void update(StScheduleModelDto stScheduleModel);
+
+    void deleteBatch(String[] stScheduleModelIds);
+
+    int check(StScheduleModelEntity stScheduleModel);
+
+    PageResult<StScheduleModelRespVO> getPageList(Map<String, Object> params);
+
+    Long count();
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelUserParamService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelUserParamService.java
new file mode 100644
index 0000000..5ace5c4
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleModelUserParamService.java
@@ -0,0 +1,21 @@
+package com.iailab.module.model.mcs.sche.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.sche.entity.StScheduleModelUserParamEntity;
+import com.iailab.module.model.mcs.sche.vo.ScheduleModelUserParamVo;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月22日 10:37
+ */
+public interface StScheduleModelUserParamService extends BaseService<StScheduleModelUserParamEntity> {
+
+    List<StScheduleModelUserParamEntity> getByModelid(String modelid);
+
+    PageData<ScheduleModelUserParamVo> page(Map<String, Object> params);
+}
+
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleObjectService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleObjectService.java
new file mode 100644
index 0000000..298138f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleObjectService.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mcs.sche.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.sche.entity.StScheduleObjectEntity;
+import com.iailab.module.model.mcs.sche.vo.StScheduleObjectPageReqVO;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 17:49
+ */
+public interface StScheduleObjectService extends BaseService<StScheduleObjectEntity> {
+
+    void saveStScheduleObject(StScheduleObjectEntity scheduleObject);
+
+    void update(StScheduleObjectEntity scheduleObject);
+
+    void deleteBatch(String[] scheduleObjectIds);
+
+    int check(StScheduleObjectEntity scheduleObject);
+
+    PageResult<StScheduleObjectEntity> page(StScheduleObjectPageReqVO reqVO);
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleParamService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleParamService.java
new file mode 100644
index 0000000..a4c91af
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleParamService.java
@@ -0,0 +1,15 @@
+package com.iailab.module.model.mcs.sche.service;
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.sche.entity.StScheduleParamEntity;
+
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月22日 10:03
+ */
+public interface StScheduleParamService extends BaseService<StScheduleParamEntity> {
+
+    List<StScheduleParamEntity> getByModelid(String modelid);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleParamSettingService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleParamSettingService.java
new file mode 100644
index 0000000..98ef251
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleParamSettingService.java
@@ -0,0 +1,15 @@
+package com.iailab.module.model.mcs.sche.service;
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.sche.entity.StScheduleParamSettingEntity;
+
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月22日 9:05
+ */
+public interface StScheduleParamSettingService extends BaseService<StScheduleParamSettingEntity> {
+
+    List<StScheduleParamSettingEntity> getByModelid(String modelid);
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSchemeDetailesService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSchemeDetailesService.java
new file mode 100644
index 0000000..acc65b5
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSchemeDetailesService.java
@@ -0,0 +1,19 @@
+package com.iailab.module.model.mcs.sche.service;
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.sche.entity.StScheduleSchemeDetailesEntity;
+import com.iailab.module.model.mcs.sche.vo.ScheduleSchemeDetailesVo;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月26日 16:49
+ */
+public interface StScheduleSchemeDetailesService extends BaseService<StScheduleSchemeDetailesEntity> {
+
+    List<ScheduleSchemeDetailesVo> queryScheduleSchemeDetailes(Map<String, Object> params);
+}
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
new file mode 100644
index 0000000..6f3f6bd
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSchemeService.java
@@ -0,0 +1,11 @@
+package com.iailab.module.model.mcs.sche.service;
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.sche.entity.StScheduleSchemeEntity;
+
+/**
+ * @author PanZhibao
+ * @date 2021年08月11日 12:06
+ */
+public interface StScheduleSchemeService extends BaseService<StScheduleSchemeEntity> {
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleService.java
new file mode 100644
index 0000000..7787b3b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleService.java
@@ -0,0 +1,26 @@
+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.StScheduleEntity;
+import com.iailab.module.model.mcs.sche.vo.StSchedulePageReqVO;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 11:36
+ */
+public interface StScheduleService extends BaseService<StScheduleEntity> {
+
+    void saveSchedule(StScheduleEntity stSchedule);
+
+    void update(StScheduleEntity stSchedule);
+
+    void deleteBatch(String[] stScheduleIds);
+
+    int check(StScheduleEntity stSchedule);
+
+    PageResult<StScheduleEntity> page(StSchedulePageReqVO reqVO);
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleUserService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleUserService.java
new file mode 100644
index 0000000..d6cb61e
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleUserService.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mcs.sche.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.model.mcs.sche.entity.StScheduleUserEntity;
+import com.iailab.module.model.mcs.sche.vo.StScheduleUserPageReqVO;
+
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 15:09
+ */
+public interface StScheduleUserService extends BaseService<StScheduleUserEntity> {
+
+    void saveScheduleUser(StScheduleUserEntity scheduleUser);
+
+    void update(StScheduleUserEntity scheduleUser);
+
+    void deleteBatch(String[] scheduleUserIds);
+
+    int check(StScheduleUserEntity scheduleUser);
+
+    PageResult<StScheduleUserEntity> page(StScheduleUserPageReqVO reqVO);
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleEnergyTypeServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleEnergyTypeServiceImpl.java
new file mode 100644
index 0000000..40fa1c8
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleEnergyTypeServiceImpl.java
@@ -0,0 +1,75 @@
+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.module.model.mcs.sche.dao.StScheduleEnergyTypeDao;
+import com.iailab.module.model.mcs.sche.entity.StScheduleEnergyTypeEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleEnergyTypeService;
+import com.iailab.module.model.mcs.sche.vo.StScheduleEnergyTypePageReqVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 11:47
+ */
+@Service("stScheduleEnergyTypeService")
+public class StScheduleEnergyTypeServiceImpl extends BaseServiceImpl<StScheduleEnergyTypeDao, StScheduleEnergyTypeEntity> implements StScheduleEnergyTypeService {
+    @Override
+    public PageResult<StScheduleEnergyTypeEntity> page(StScheduleEnergyTypePageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    private QueryWrapper<StScheduleEnergyTypeEntity> getWrapper(Map<String, Object> params) {
+        String energytypename = (String) params.get("energytypename");
+
+        QueryWrapper<StScheduleEnergyTypeEntity> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotBlank(energytypename), "energytypename", energytypename);
+
+        return wrapper;
+    }
+
+    public StScheduleEnergyTypeEntity getDetailById(String id) {
+        StScheduleEnergyTypeEntity entity = baseDao.selectById(id);
+        return entity;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveScheduleEnergyType(StScheduleEnergyTypeEntity scheduleEnergyType) {
+        scheduleEnergyType.setId(UUID.randomUUID().toString());
+        baseDao.insert(scheduleEnergyType);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(StScheduleEnergyTypeEntity scheduleEnergyType) {
+        baseDao.updateById(scheduleEnergyType);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteBatch(String[] storeTypeIds) {
+        baseDao.deleteBatchIds(Arrays.asList(storeTypeIds));
+    }
+
+    @Override
+    public int check(StScheduleEnergyTypeEntity scheduleEnergyType) {
+        String id = scheduleEnergyType.getId();
+        String energytypename = scheduleEnergyType.getEnergytypename();
+        QueryWrapper<StScheduleEnergyTypeEntity> scheduleEnergyTypeWrapper = new QueryWrapper<>();
+        scheduleEnergyTypeWrapper.ne(StringUtils.isNotBlank(id), "id", id);
+        scheduleEnergyTypeWrapper.and(wrapper -> wrapper.eq("energytypename", energytypename));
+
+        List<StScheduleEnergyTypeEntity> list = baseDao.selectList(scheduleEnergyTypeWrapper);
+        return list.size();
+    }
+
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelServiceImpl.java
new file mode 100644
index 0000000..277bd7e
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelServiceImpl.java
@@ -0,0 +1,145 @@
+package com.iailab.module.model.mcs.sche.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.module.model.mcs.sche.dao.StScheduleModelDao;
+import com.iailab.module.model.mcs.sche.dto.StScheduleModelDto;
+import com.iailab.module.model.mcs.sche.entity.StScheduleModelEntity;
+import com.iailab.module.model.mcs.sche.entity.StScheduleModelUserParamEntity;
+import com.iailab.module.model.mcs.sche.entity.StScheduleParamEntity;
+import com.iailab.module.model.mcs.sche.entity.StScheduleParamSettingEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleModelService;
+import com.iailab.module.model.mcs.sche.vo.StScheduleModelRespVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 14:23
+ */
+@Service("stScheduleModelService")
+public class StScheduleModelServiceImpl extends BaseServiceImpl<StScheduleModelDao, StScheduleModelEntity> implements StScheduleModelService {
+    @Autowired
+    private StScheduleParamSettingServiceImpl stScheduleParamSettingServiceImpl;
+
+    @Autowired
+    private StScheduleParamServiceImpl stScheduleParamServiceImpl;
+
+    @Autowired
+    private StScheduleModelUserParamServiceImpl stScheduleModelUserParamServiceImpl;
+
+    @Override
+    public PageResult<StScheduleModelRespVO> getPageList(Map<String, Object> params) {
+        PageResult<StScheduleModelRespVO> result = new PageResult();
+        IPage<StScheduleModelRespVO> page = baseDao.getPageList(
+                getPage(params, null, false),
+                params
+        );
+        result.setTotal(page.getTotal());
+        result.setList(page.getRecords());
+        return result;
+    }
+
+    private QueryWrapper<StScheduleModelEntity> getWrapper(Map<String, Object> params) {
+        QueryWrapper<StScheduleModelEntity> wrapper = new QueryWrapper<>();
+        return wrapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveStScheduleModel(StScheduleModelDto scheduleModel) {
+        StScheduleModelEntity stScheduleModelEntity = new StScheduleModelEntity();
+        BeanUtils.copyProperties(scheduleModel, stScheduleModelEntity);
+        stScheduleModelEntity.setId(UUID.randomUUID().toString());
+        baseDao.insert(stScheduleModelEntity);
+
+        scheduleModel.getStScheduleParamSettingList().forEach(item -> {
+            item.setModelid(stScheduleModelEntity.getId());
+        });
+        stScheduleParamSettingServiceImpl.saveList(scheduleModel.getStScheduleParamSettingList());
+
+        scheduleModel.getStScheduleParamList().forEach(item -> {
+            item.setModelid(stScheduleModelEntity.getId());
+        });
+        stScheduleParamServiceImpl.saveList(scheduleModel.getStScheduleParamList());
+
+        scheduleModel.getStScheduleModelUserParamList().forEach(item -> {
+            item.setModelid(stScheduleModelEntity.getId());
+        });
+        stScheduleModelUserParamServiceImpl.saveList(scheduleModel.getStScheduleModelUserParamList());
+    }
+
+    @Override
+    public StScheduleModelDto getDetailById(String id) {
+        StScheduleModelDto scheduleMode = new StScheduleModelDto();
+        StScheduleModelEntity stScheduleModelEntity = baseDao.selectById(id);
+        BeanUtils.copyProperties(stScheduleModelEntity, scheduleMode);
+        List<StScheduleParamSettingEntity> stScheduleParamSettingList = stScheduleParamSettingServiceImpl.getByModelid(stScheduleModelEntity.getId());
+        scheduleMode.setStScheduleParamSettingList(stScheduleParamSettingList);
+        List<StScheduleParamEntity> stScheduleParamList = stScheduleParamServiceImpl.getByModelid(stScheduleModelEntity.getId());
+        scheduleMode.setStScheduleParamList(stScheduleParamList);
+        List<StScheduleModelUserParamEntity> stScheduleModelUserParamList = stScheduleModelUserParamServiceImpl.getByModelid(stScheduleModelEntity.getId());
+        scheduleMode.setStScheduleModelUserParamList(stScheduleModelUserParamList);
+        return scheduleMode;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(StScheduleModelDto scheduleModel) {
+        StScheduleModelEntity stScheduleModelEntity = new StScheduleModelEntity();
+        BeanUtils.copyProperties(scheduleModel, stScheduleModelEntity);
+        baseDao.updateById(stScheduleModelEntity);
+
+        scheduleModel.getStScheduleParamSettingList().forEach(item -> {
+            item.setModelid(stScheduleModelEntity.getId());
+        });
+        stScheduleParamSettingServiceImpl.saveList(scheduleModel.getStScheduleParamSettingList());
+
+        scheduleModel.getStScheduleParamList().forEach(item -> {
+            item.setModelid(stScheduleModelEntity.getId());
+        });
+        stScheduleParamServiceImpl.saveList(scheduleModel.getStScheduleParamList());
+
+        scheduleModel.getStScheduleModelUserParamList().forEach(item -> {
+            item.setModelid(stScheduleModelEntity.getId());
+        });
+        stScheduleModelUserParamServiceImpl.saveList(scheduleModel.getStScheduleModelUserParamList());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteBatch(String[] scheduleModelIds) {
+        baseDao.deleteBatchIds(Arrays.asList(scheduleModelIds));
+        stScheduleParamSettingServiceImpl.deleteBatch(scheduleModelIds);
+        stScheduleParamServiceImpl.deleteBatch(scheduleModelIds);
+        stScheduleModelUserParamServiceImpl.deleteBatch(scheduleModelIds);
+    }
+
+    @Override
+    public int check(StScheduleModelEntity scheduleModel) {
+        String id = scheduleModel.getId();
+        String modelname = scheduleModel.getModelname();
+        QueryWrapper<StScheduleModelEntity> scheduleModelWrapper = new QueryWrapper<>();
+        scheduleModelWrapper.ne(StringUtils.isNotBlank(id), "id", id);
+        scheduleModelWrapper.and(wrapper -> wrapper.eq("modelname", modelname));
+
+        List<StScheduleModelEntity> list = baseDao.selectList(scheduleModelWrapper);
+        return list.size();
+    }
+
+    @Override
+    public Long count() {
+        QueryWrapper<StScheduleModelEntity> wrapper = new QueryWrapper<>();
+        return baseDao.selectCount(wrapper);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelUserParamServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelUserParamServiceImpl.java
new file mode 100644
index 0000000..30c0370
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleModelUserParamServiceImpl.java
@@ -0,0 +1,67 @@
+package com.iailab.module.model.mcs.sche.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.sche.dao.StScheduleModelUserParamDao;
+import com.iailab.module.model.mcs.sche.entity.StScheduleModelUserParamEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleModelUserParamService;
+import com.iailab.module.model.mcs.sche.vo.ScheduleModelUserParamVo;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月22日 10:40
+ */
+@Service("stScheduleModelUserParamService")
+public class StScheduleModelUserParamServiceImpl extends BaseServiceImpl<StScheduleModelUserParamDao, StScheduleModelUserParamEntity> implements StScheduleModelUserParamService {
+    @Override
+    public PageData<ScheduleModelUserParamVo> page(Map<String, Object> params) {
+        IPage<StScheduleModelUserParamEntity> page = baseDao.selectPage(
+                getPage(params, null, false),
+                getWrapper(params)
+        );
+        return getPageData(page, ScheduleModelUserParamVo.class);
+    }
+
+    private QueryWrapper<StScheduleModelUserParamEntity> getWrapper(Map<String, Object> params) {
+        QueryWrapper<StScheduleModelUserParamEntity> wrapper = new QueryWrapper<>();
+        return wrapper;
+    }
+
+    @Override
+    public List<StScheduleModelUserParamEntity> getByModelid(String modelid) {
+        QueryWrapper<StScheduleModelUserParamEntity> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("modelid", modelid);
+        queryWrapper.orderByAsc("USERID");
+        queryWrapper.orderByAsc("ENERGYTYPEID");
+        List<StScheduleModelUserParamEntity> list = baseDao.selectList(queryWrapper);
+        if (CollectionUtils.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list;
+    }
+
+    public void saveList(List<StScheduleModelUserParamEntity> list) {
+        QueryWrapper<StScheduleModelUserParamEntity> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("modelid", list.get(0).getModelid());
+        baseDao.delete(queryWrapper);
+        list.forEach(item -> {
+            item.setId(UUID.randomUUID().toString());
+            baseDao.insert(item);
+        });
+    }
+
+    public void deleteBatch(String[] modelIds) {
+        QueryWrapper queryWrapper = new QueryWrapper<StScheduleModelUserParamEntity>();
+        queryWrapper.in("modelid", modelIds);
+        baseDao.delete(queryWrapper);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleObjectServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleObjectServiceImpl.java
new file mode 100644
index 0000000..d78c0b9
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleObjectServiceImpl.java
@@ -0,0 +1,76 @@
+package com.iailab.module.model.mcs.sche.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.sche.dao.StScheduleObjectDao;
+import com.iailab.module.model.mcs.sche.entity.StScheduleObjectEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleObjectService;
+import com.iailab.module.model.mcs.sche.vo.StScheduleObjectPageReqVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 17:53
+ */
+@Service("stScheduleObjectService")
+public class StScheduleObjectServiceImpl extends BaseServiceImpl<StScheduleObjectDao, StScheduleObjectEntity> implements StScheduleObjectService {
+
+    @Override
+    public PageResult<StScheduleObjectEntity> page(StScheduleObjectPageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    private QueryWrapper<StScheduleObjectEntity> getWrapper(Map<String, Object> params) {
+        String name = (String)params.get("name");
+
+        QueryWrapper<StScheduleObjectEntity> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotBlank(name),"name", name);
+
+        return wrapper;
+    }
+
+    public StScheduleObjectEntity getDetailById(String id) {
+        return baseDao.selectById(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveStScheduleObject(StScheduleObjectEntity scheduleObject) {
+        scheduleObject.setId(UUID.randomUUID().toString());
+        insert(scheduleObject);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(StScheduleObjectEntity scheduleObject) {
+        this.updateById(scheduleObject);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteBatch(String[] scheduleObjectIds) {
+        deleteBatchIds(Arrays.asList(scheduleObjectIds));
+    }
+
+    @Override
+    public int check(StScheduleObjectEntity scheduleObject) {
+        String id = scheduleObject.getId();
+        String name = scheduleObject.getName();
+        QueryWrapper<StScheduleObjectEntity> scheduleObjectWrapper = new QueryWrapper<>();
+        scheduleObjectWrapper.ne(StringUtils.isNotBlank(id), "id", id);
+        scheduleObjectWrapper.and(wrapper -> wrapper.eq("name", name));
+
+        List<StScheduleObjectEntity> list = baseDao.selectList(scheduleObjectWrapper);
+        return list.size();
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleParamServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleParamServiceImpl.java
new file mode 100644
index 0000000..d92942a
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleParamServiceImpl.java
@@ -0,0 +1,51 @@
+package com.iailab.module.model.mcs.sche.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.sche.dao.StScheduleParamDao;
+import com.iailab.module.model.mcs.sche.entity.StScheduleParamEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleParamService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月22日 10:05
+ */
+@Service("stScheduleParamService")
+public class StScheduleParamServiceImpl extends BaseServiceImpl<StScheduleParamDao, StScheduleParamEntity> implements StScheduleParamService {
+
+    @Override
+    public List<StScheduleParamEntity> getByModelid(String modelid) {
+        QueryWrapper<StScheduleParamEntity> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("modelid", modelid);
+        queryWrapper.orderByAsc("MODELPARAMPORTORDER");
+        queryWrapper.orderByAsc("MODELPARAMORDER");
+        List<StScheduleParamEntity> list = baseDao.selectList(queryWrapper);
+        if (CollectionUtils.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list;
+    }
+
+    public void saveList(List<StScheduleParamEntity> list) {
+        QueryWrapper<StScheduleParamEntity> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("modelid", list.get(0).getModelid());
+        baseDao.delete(queryWrapper);
+        //scheduleModelEntityFactory.removeModelInputParam(list.get(0).getModelid());
+        list.forEach(item -> {
+            item.setId(UUID.randomUUID().toString());
+            baseDao.insert(item);
+        });
+    }
+
+    public void deleteBatch(String[] modelIds) {
+        QueryWrapper queryWrapper = new QueryWrapper<StScheduleParamEntity>();
+        queryWrapper.in("modelid", modelIds);
+        baseDao.delete(queryWrapper);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleParamSettingServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleParamSettingServiceImpl.java
new file mode 100644
index 0000000..5bbb676
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleParamSettingServiceImpl.java
@@ -0,0 +1,49 @@
+package com.iailab.module.model.mcs.sche.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.sche.dao.StScheduleParamSettingDao;
+import com.iailab.module.model.mcs.sche.entity.StScheduleParamSettingEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleParamSettingService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月22日 9:07
+ */
+@Service("stScheduleParamSettingService")
+public class StScheduleParamSettingServiceImpl extends BaseServiceImpl<StScheduleParamSettingDao, StScheduleParamSettingEntity> implements StScheduleParamSettingService {
+
+    @Override
+    public List<StScheduleParamSettingEntity> getByModelid(String modelid) {
+        QueryWrapper<StScheduleParamSettingEntity> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("modelid", modelid);
+        queryWrapper.orderByAsc("key");
+        List<StScheduleParamSettingEntity> list = baseDao.selectList(queryWrapper);
+        if (CollectionUtils.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list;
+    }
+
+    public void saveList(List<StScheduleParamSettingEntity> list) {
+        QueryWrapper<StScheduleParamSettingEntity> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("modelid", list.get(0).getModelid());
+        baseDao.delete(queryWrapper);
+        list.forEach(item -> {
+            item.setId(UUID.randomUUID().toString());
+            baseDao.insert(item);
+        });
+    }
+
+    public void deleteBatch(String[] modelIds) {
+        QueryWrapper queryWrapper = new QueryWrapper<StScheduleParamSettingEntity>();
+        queryWrapper.in("modelid", modelIds);
+        baseDao.delete(queryWrapper);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSchemeDetailesServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSchemeDetailesServiceImpl.java
new file mode 100644
index 0000000..e8c46b6
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSchemeDetailesServiceImpl.java
@@ -0,0 +1,39 @@
+package com.iailab.module.model.mcs.sche.service.impl;
+
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.model.mcs.sche.dao.StScheduleSchemeDetailesDao;
+import com.iailab.module.model.mcs.sche.entity.StScheduleSchemeDetailesEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleSchemeDetailesService;
+import com.iailab.module.model.mcs.sche.vo.ScheduleSchemeDetailesVo;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月26日 16:50
+ */
+@Service("stScheduleSchemeDetailesService")
+public class StScheduleSchemeDetailesServiceImpl extends BaseServiceImpl<StScheduleSchemeDetailesDao, StScheduleSchemeDetailesEntity>
+        implements StScheduleSchemeDetailesService {
+
+    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    @Override
+    public List<ScheduleSchemeDetailesVo> queryScheduleSchemeDetailes(Map<String, Object> params) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.HOUR_OF_DAY, -1);
+        if (StringUtils.isBlank((String)params.get("startTime"))) {
+            params.put("startTime", calendar.getTime());
+        }
+        return baseDao.queryScheduleSchemeDetailes(params);
+    }
+}
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
new file mode 100644
index 0000000..2a98eb3
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSchemeServiceImpl.java
@@ -0,0 +1,16 @@
+package com.iailab.module.model.mcs.sche.service.impl;
+
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+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;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author PanZhibao
+ * @date 2021年08月11日 12:06
+ */
+@Service("stScheduleSchemeService")
+public class StScheduleSchemeServiceImpl extends BaseServiceImpl<StScheduleSchemeDao, StScheduleSchemeEntity>
+        implements StScheduleSchemeService {
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleServiceImpl.java
new file mode 100644
index 0000000..fa4f254
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleServiceImpl.java
@@ -0,0 +1,72 @@
+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.module.model.mcs.sche.dao.StScheduleDao;
+import com.iailab.module.model.mcs.sche.entity.StScheduleEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleService;
+import com.iailab.module.model.mcs.sche.vo.StSchedulePageReqVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 11:37
+ */
+@Service("stScheduleService")
+public class StScheduleServiceImpl extends BaseServiceImpl<StScheduleDao, StScheduleEntity> implements StScheduleService {
+
+    @Override
+    public PageResult<StScheduleEntity> page(StSchedulePageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    private QueryWrapper<StScheduleEntity> getWrapper(Map<String, Object> params) {
+        String name = (String) params.get("name");
+
+        QueryWrapper<StScheduleEntity> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotBlank(name), "name", name);
+
+        return wrapper;
+    }
+
+    public StScheduleEntity getDetailById(String id) {
+        return baseDao.selectById(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveSchedule(StScheduleEntity schedule) {
+        schedule.setId(UUID.randomUUID().toString());
+        schedule.setScheduletime(new Date());
+        baseDao.insert(schedule);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(StScheduleEntity schedule) {
+        baseDao.updateById(schedule);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteBatch(String[] storeTypeIds) {
+        baseDao.deleteBatchIds(Arrays.asList(storeTypeIds));
+    }
+
+    @Override
+    public int check(StScheduleEntity schedule) {
+        String id = schedule.getId();
+        String name = schedule.getName();
+        QueryWrapper<StScheduleEntity> scheduleWrapper = new QueryWrapper<>();
+        scheduleWrapper.ne(StringUtils.isNotBlank(id), "id", id);
+        scheduleWrapper.and(wrapper -> wrapper.eq("name", name));
+
+        List<StScheduleEntity> list = baseDao.selectList(scheduleWrapper);
+        return list.size();
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleUserServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleUserServiceImpl.java
new file mode 100644
index 0000000..4a7dc24
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleUserServiceImpl.java
@@ -0,0 +1,74 @@
+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.module.model.mcs.sche.dao.StScheduleUserDao;
+import com.iailab.module.model.mcs.sche.entity.StScheduleUserEntity;
+import com.iailab.module.model.mcs.sche.service.StScheduleUserService;
+import com.iailab.module.model.mcs.sche.vo.StScheduleUserPageReqVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月20日 15:15
+ */
+@Service("stScheduleUserService")
+public class StScheduleUserServiceImpl extends BaseServiceImpl<StScheduleUserDao, StScheduleUserEntity> implements StScheduleUserService {
+
+    @Override
+    public PageResult<StScheduleUserEntity> page(StScheduleUserPageReqVO reqVO) {
+        return baseDao.selectPage(reqVO);
+    }
+
+    private QueryWrapper<StScheduleUserEntity> getWrapper(Map<String, Object> params) {
+        String username = (String)params.get("username");
+
+        QueryWrapper<StScheduleUserEntity> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotBlank(username),"username", username);
+
+        return wrapper;
+    }
+
+    public StScheduleUserEntity getDetailById(String id) {
+        return baseDao.selectById(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveScheduleUser(StScheduleUserEntity scheduleUser) {
+        scheduleUser.setId(UUID.randomUUID().toString());
+        insert(scheduleUser);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(StScheduleUserEntity scheduleUser) {
+        this.updateById(scheduleUser);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteBatch(String[] storeTypeIds) {
+        deleteBatchIds(Arrays.asList(storeTypeIds));
+    }
+
+    @Override
+    public int check(StScheduleUserEntity scheduleUser) {
+        String id = scheduleUser.getId();
+        String username = scheduleUser.getUsername();
+        QueryWrapper<StScheduleUserEntity> scheduleUserWrapper = new QueryWrapper<>();
+        scheduleUserWrapper.ne(StringUtils.isNotBlank(id), "id", id);
+        scheduleUserWrapper.and(wrapper -> wrapper.eq("username", username));
+
+        List<StScheduleUserEntity> list = baseDao.selectList(scheduleUserWrapper);
+        return list.size();
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/ScheduleModelUserParamVo.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/ScheduleModelUserParamVo.java
new file mode 100644
index 0000000..96fa8fc
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/ScheduleModelUserParamVo.java
@@ -0,0 +1,90 @@
+package com.iailab.module.model.mcs.sche.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月26日 13:11
+ */
+@Data
+public class ScheduleModelUserParamVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 模型ID
+     */
+    private String modelid;
+
+    /**
+     * 模型名称
+     */
+    private String modelname;
+
+    /**
+     * 用户ID
+     */
+    private String userid;
+
+    /**
+     * 用户名称
+     */
+    private String username;
+
+    /**
+     * 能源类型ID
+     */
+    private String energytypeid;
+
+    /**
+     * 能源类型名称
+     */
+    private String energytypename;
+
+    /**
+     * 参数ID
+     */
+    private String paramid;
+
+    /**
+     * 模型状态
+     */
+    private String modelsatus;
+
+    /**
+     * 用户排序
+     */
+    private Integer userorder;
+
+    /**
+     * 能源排序
+     */
+    private Integer energyorder;
+
+    /**
+     * 是否调整
+     */
+    private Integer isadjust;
+
+    /**
+     * 调整上限
+     */
+    private BigDecimal upadjlimit;
+
+    /**
+     * 调整下限
+     */
+    private BigDecimal downadjlimit;
+
+    /**
+     * 调整排序
+     */
+    private Integer adjorder;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/ScheduleSchemeDetailesVo.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/ScheduleSchemeDetailesVo.java
new file mode 100644
index 0000000..e1f301e
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/ScheduleSchemeDetailesVo.java
@@ -0,0 +1,61 @@
+package com.iailab.module.model.mcs.sche.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月26日 11:05
+ */
+@Data
+public class ScheduleSchemeDetailesVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 调度时间
+     */
+    private Date scheduletime;
+
+    /**
+     * schemeorder
+     */
+    private Integer schemeorder;
+
+    /**
+     * value
+     */
+    private BigDecimal value;
+
+    /**
+     * modelname
+     */
+    private String modelname;
+
+    /**
+     * userid
+     */
+    private String userid;
+
+    /**
+     * username
+     */
+    private String username;
+
+    /**
+     * energytypeid
+     */
+    private String energytypeid;
+
+    /**
+     * energytypename
+     */
+    private String energytypename;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleEnergyTypePageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleEnergyTypePageReqVO.java
new file mode 100644
index 0000000..30f8d8e
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleEnergyTypePageReqVO.java
@@ -0,0 +1,21 @@
+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年09月04日
+ */
+@Schema(description = "模型平台 - 管网分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class StScheduleEnergyTypePageReqVO extends PageParam {
+
+    private String energytypename;
+}
\ 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/StScheduleEnergyTypeRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleEnergyTypeRespVO.java
new file mode 100644
index 0000000..eb26766
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleEnergyTypeRespVO.java
@@ -0,0 +1,20 @@
+package com.iailab.module.model.mcs.sche.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月04日
+ */
+@Schema(description = "模型平台 - Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class StScheduleEnergyTypeRespVO {
+
+    private String id;
+
+    private String energytypename;
+}
\ 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/StScheduleModelPageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleModelPageReqVO.java
new file mode 100644
index 0000000..e9b7829
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleModelPageReqVO.java
@@ -0,0 +1,19 @@
+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年09月04日
+ */
+@Schema(description = "模型平台 - 管网分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class StScheduleModelPageReqVO extends PageParam {
+}
\ 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/StScheduleModelRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleModelRespVO.java
new file mode 100644
index 0000000..af4aed1
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleModelRespVO.java
@@ -0,0 +1,75 @@
+package com.iailab.module.model.mcs.sche.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月21日 14:08
+ */
+@Schema(description = "模型平台 - Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class StScheduleModelRespVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private String id;
+
+
+    /**
+     * 模型名称
+     */
+    private String modelname;
+
+
+    /**
+     * 调度ID
+     */
+    private String scheduleid;
+
+    /**
+     * 调度名称
+     */
+    private String schedulename;
+
+    /**
+     * 对象ID
+     */
+    private String objectid;
+
+    /**
+     * 对象名称
+     */
+    private String objectname;
+
+    /**
+     * 类名
+     */
+    private String classname;
+
+    /**
+     * 方法名
+     */
+    private String methodname;
+
+    /**
+     * 模型路径
+     */
+    private String modelpath;
+
+    /**
+     * 端口长度
+     */
+    private Integer portlength;
+
+    /**
+     * 模型状态
+     */
+    private Integer modelstatus;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleObjectPageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleObjectPageReqVO.java
new file mode 100644
index 0000000..d643c57
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleObjectPageReqVO.java
@@ -0,0 +1,21 @@
+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年09月04日
+ */
+@Schema(description = "模型平台 - 管网分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class StScheduleObjectPageReqVO extends PageParam {
+
+    private String name;
+}
\ 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/StScheduleObjectRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleObjectRespVO.java
new file mode 100644
index 0000000..f820b50
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleObjectRespVO.java
@@ -0,0 +1,28 @@
+package com.iailab.module.model.mcs.sche.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月04日
+ */
+@Schema(description = "模型平台 - Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class StScheduleObjectRespVO {
+
+    private String id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 排序
+     */
+    private Integer order;
+}
\ 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/StSchedulePageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StSchedulePageReqVO.java
new file mode 100644
index 0000000..3a37cf9
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StSchedulePageReqVO.java
@@ -0,0 +1,21 @@
+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年09月04日
+ */
+@Schema(description = "模型平台 - 管网分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class StSchedulePageReqVO extends PageParam {
+
+    private String name;
+}
\ 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/StScheduleRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleRespVO.java
new file mode 100644
index 0000000..809dc88
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleRespVO.java
@@ -0,0 +1,30 @@
+package com.iailab.module.model.mcs.sche.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月04日
+ */
+@Schema(description = "模型平台 - Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class StScheduleRespVO {
+
+    private String id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 调度时间
+     */
+    private Date scheduletime;
+}
\ 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/StScheduleUserPageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleUserPageReqVO.java
new file mode 100644
index 0000000..0b555a5
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleUserPageReqVO.java
@@ -0,0 +1,21 @@
+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年09月04日
+ */
+@Schema(description = "模型平台 - 管网分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class StScheduleUserPageReqVO extends PageParam {
+
+    private String username;
+}
\ 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/StScheduleUserRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleUserRespVO.java
new file mode 100644
index 0000000..3b8bb67
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StScheduleUserRespVO.java
@@ -0,0 +1,28 @@
+package com.iailab.module.model.mcs.sche.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月04日
+ */
+@Schema(description = "模型平台 - Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class StScheduleUserRespVO {
+
+    private String id;
+
+    /**
+     * 用户名称
+     */
+    private String username;
+
+    /**
+     * 调整状态
+     */
+    private String adjuststatus;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/dto/MdkDataDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/dto/MdkDataDTO.java
new file mode 100644
index 0000000..2ca9412
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/dto/MdkDataDTO.java
@@ -0,0 +1,9 @@
+package com.iailab.module.model.mdk.common.dto;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月02日
+ */
+public class MdkDataDTO {
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/enums/ItemPredictStatus.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/enums/ItemPredictStatus.java
new file mode 100644
index 0000000..7fae71b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/enums/ItemPredictStatus.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mdk.common.enums;
+
+import org.jetbrains.annotations.Contract;
+
+/**
+ * 预测项的预测状态
+ */
+public enum ItemPredictStatus {
+
+    PREDICTING(1),
+
+    SUCCESS(2),
+
+    FAILED(3);
+
+    private Integer value;
+
+    @Contract(pure = true)
+    ItemPredictStatus(Integer value) {
+        this.value = value;
+    }
+
+    @Contract(pure = true)
+    public Integer getValue() {
+        return value;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/enums/TypeA.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/enums/TypeA.java
new file mode 100644
index 0000000..d547c20
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/enums/TypeA.java
@@ -0,0 +1,9 @@
+package com.iailab.module.model.mdk.common.enums;
+
+/**
+ * @author PanZhibao
+ * @date 2021年07月29日 11:15
+ */
+public enum TypeA {
+    Predict, Schedule, Train
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ArithInvokeException.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ArithInvokeException.java
new file mode 100644
index 0000000..7b1f1ae
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ArithInvokeException.java
@@ -0,0 +1,21 @@
+package com.iailab.module.model.mdk.common.exceptions;
+
+//类 职 责:算法调用异常
+public class ArithInvokeException extends Exception {
+    public final static String errorGetArithEntity = "获取ArithEntity失败";
+    public final static String errorCreateArith = "创建Arith失败";
+
+    private Throwable cause;
+
+    public ArithInvokeException() {
+    }
+
+    public ArithInvokeException(String msg) {
+        super(msg);
+    }
+
+    public ArithInvokeException(String msg, Exception cause) {
+        super(msg, cause);
+        this.cause = cause;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ArrayLengthMisMatchException.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ArrayLengthMisMatchException.java
new file mode 100644
index 0000000..fc86a8f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ArrayLengthMisMatchException.java
@@ -0,0 +1,19 @@
+package com.iailab.module.model.mdk.common.exceptions;
+
+public class ArrayLengthMisMatchException extends Exception {
+    public final String arrayLengthMisMatch = "数组维数不匹配";
+
+    private Throwable cause;
+
+    public ArrayLengthMisMatchException() {
+    }
+
+    public ArrayLengthMisMatchException(String msg) {
+        super(msg);
+    }
+
+    public ArrayLengthMisMatchException(String msg, Exception cause) {
+        super(msg);
+        this.cause = cause;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/DataAccessException.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/DataAccessException.java
new file mode 100644
index 0000000..024ec3a
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/DataAccessException.java
@@ -0,0 +1,19 @@
+package com.iailab.module.model.mdk.common.exceptions;
+
+public class DataAccessException extends Exception {
+    public final static String errorDataAccess = "数据库访问失败";
+    private Throwable cause;
+
+    public DataAccessException() {
+
+    }
+
+    public DataAccessException(String msg) {
+        super(msg);
+    }
+
+    public DataAccessException(String msg, Throwable cause) {
+        super(msg, cause);
+        this.cause = cause;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ErrorCalculateFailedException.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ErrorCalculateFailedException.java
new file mode 100644
index 0000000..10e6a5b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ErrorCalculateFailedException.java
@@ -0,0 +1,19 @@
+package com.iailab.module.model.mdk.common.exceptions;
+
+public class ErrorCalculateFailedException extends Exception {
+    public final String errorrCalculate = "误差计算失败";
+
+    private Throwable cause;
+
+    public ErrorCalculateFailedException() {
+    }
+
+    public ErrorCalculateFailedException(String msg) {
+        super(msg);
+    }
+
+    public ErrorCalculateFailedException(String msg, Exception cause) {
+        super(msg, cause);
+        this.cause = cause;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ItemInvokeException.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ItemInvokeException.java
new file mode 100644
index 0000000..d35b9b8
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ItemInvokeException.java
@@ -0,0 +1,22 @@
+package com.iailab.module.model.mdk.common.exceptions;
+
+//类 职 责:预测项调用异常
+public class ItemInvokeException extends Exception {
+    public final static String errorGetItemEntity = "获取ItemEntity失败";
+    public final static String errorGetItemOutput = "获取Item输出信息失败";
+    public final static String errorItemFailed = "预测项预测失败";
+
+    private Throwable cause;
+
+    public ItemInvokeException() {
+    }
+
+    public ItemInvokeException(String msg) {
+        super(msg);
+    }
+
+    public ItemInvokeException(String msg, Exception cause) {
+        super(msg);
+        this.cause = cause;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ModelInvokeException.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ModelInvokeException.java
new file mode 100644
index 0000000..36a1d76
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/ModelInvokeException.java
@@ -0,0 +1,25 @@
+package com.iailab.module.model.mdk.common.exceptions;
+
+//类 职 责:模型调用异常
+public class ModelInvokeException extends Exception {
+    public final static String errorGetModelEntity = "获取modelEntity失败";
+    public final static String errorGetModelInputCount = "获取Model输入信息失败";
+    public final static String errorGetModelOutputCount = "获取Model输出信息失败";
+    public final static String errorGetModelArithParam = "获取模型的算法参数失败";
+    public final static String errorGetModelFile = "获取模型文件失败";
+
+    private Throwable cause;
+
+    public ModelInvokeException() {
+
+    }
+
+    public ModelInvokeException(String msg) {
+        super(msg);
+    }
+
+    public ModelInvokeException(String msg, Throwable cause) {
+        super(msg);
+        this.cause = cause;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/RealDataLackException.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/RealDataLackException.java
new file mode 100644
index 0000000..b61069d
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/RealDataLackException.java
@@ -0,0 +1,20 @@
+package com.iailab.module.model.mdk.common.exceptions;
+
+//类 职 责:数据访问异常
+public class RealDataLackException extends Exception {
+    public final static String errorRealDataLack = "缺少实际值";
+    private Throwable cause;
+
+    public RealDataLackException() {
+
+    }
+
+    public RealDataLackException(String msg) {
+        super(msg);
+    }
+
+    public RealDataLackException(String msg, Exception cause) {
+        super(msg, cause);
+        this.cause = cause;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/SamplePrepareException.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/SamplePrepareException.java
new file mode 100644
index 0000000..d1c554b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/common/exceptions/SamplePrepareException.java
@@ -0,0 +1,19 @@
+package com.iailab.module.model.mdk.common.exceptions;
+
+//类 职 责:样本准备异常
+public class SamplePrepareException extends Exception {
+    public final String errorGetHistoryData = "获取历史数据失败";
+    private Throwable cause;
+
+    public SamplePrepareException() {
+    }
+
+    public SamplePrepareException(String msg) {
+        super(msg);
+    }
+
+    public SamplePrepareException(String msg, Exception cause) {
+        super(msg, cause);
+        this.cause = cause;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/ItemEntityFactory.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/ItemEntityFactory.java
new file mode 100644
index 0000000..7f54058
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/ItemEntityFactory.java
@@ -0,0 +1,163 @@
+package com.iailab.module.model.mdk.factory;
+
+import com.iailab.module.model.mcs.pre.entity.MmItemTypeEntity;
+import com.iailab.module.model.mcs.pre.service.MmItemOutputService;
+import com.iailab.module.model.mcs.pre.service.MmItemTypeService;
+import com.iailab.module.model.mcs.pre.service.MmPredictItemService;
+import com.iailab.module.model.mdk.vo.ItemVO;
+import com.iailab.module.model.mdk.vo.MergeItemVO;
+import com.iailab.module.model.mdk.vo.MmItemOutputVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 创建预测项对象的工厂
+ */
+@Component
+public class ItemEntityFactory {
+    private HashMap<String, ItemVO> ItemVOHashMap = new HashMap<>();
+    private Map<String, MmItemTypeEntity> itemTypeMap = new HashMap<>();
+    private Map<String, MergeItemVO> mergeItemMap = new HashMap<>();
+    private Map<String, ItemVO> itemNoEntityMap = new HashMap<>();
+    private Map<String, List<MmItemOutputVO>> itemOutPutItemMap = new HashMap<>();
+    private Map<String, MmItemOutputVO> itemOutputMap = new HashMap<>();
+
+    @Autowired
+    private MmPredictItemService mmPredictItemService;
+
+    @Autowired
+    private MmItemOutputService mmItemOutputService;
+
+    @Autowired
+    private MmItemTypeService mmItemTypeService;
+
+    /**
+     * 1.根据ITEMID,获取模型对应的MERGEITEM实体
+     *
+     * @param itemId
+     * @return
+     */
+    public MergeItemVO getMergeItem(String itemId) {
+        MergeItemVO mergeItemVO = mmPredictItemService.getMergeItemByItemId(itemId);
+        if (!mergeItemMap.containsKey(itemId)) {
+            if (mergeItemVO != null) {
+                mergeItemMap.put(itemId, mergeItemVO);
+            } else {
+                return null;
+            }
+        }
+        return mergeItemVO;
+    }
+
+    /**
+     * 2.根据ITEMNO,获取模型对应的ITEM实体
+     *
+     * @param itemNo
+     * @return
+     */
+    public ItemVO getItemByItemNo(String itemNo) {
+        ItemVO ItemVO = mmPredictItemService.getItemByItemNo(itemNo);
+        if (!itemNoEntityMap.containsKey(itemNo)) {
+            if (ItemVO != null) {
+                itemNoEntityMap.put(itemNo, ItemVO);
+            } else {
+                return null;
+            }
+        }
+        return ItemVO;
+    }
+
+    /**
+     * 3.根据ITEMID,获取模型对应的ITEM实体
+     *
+     * @param itemId
+     * @return
+     */
+    public ItemVO getItemById(String itemId) {
+        ItemVO ItemVO = mmPredictItemService.getItemById(itemId);
+        if (!ItemVOHashMap.containsKey(itemId)) {
+            if (ItemVO != null) {
+                ItemVOHashMap.put(itemId, ItemVO);
+            } else {
+                return null;
+            }
+        }
+        return ItemVO;
+    }
+
+    /**
+     * 4. 根据ITEMID,获取模型对应的ITEMOUTPUT实体
+     *
+     * @param itemId
+     * @return
+     */
+    public List<MmItemOutputVO> getOutPutByItemId(String itemId) {
+        List<MmItemOutputVO> list = mmItemOutputService.getOutPutByItemId(itemId);
+        if (!itemOutPutItemMap.containsKey(itemId)) {
+            if (list != null) {
+                itemOutPutItemMap.put(itemId, list);
+            } else {
+                return null;
+            }
+        }
+        return list;
+    }
+
+    /**
+     * 5.
+     *
+     * @param outputId
+     * @return
+     */
+    public MmItemOutputVO getItemOutPutById(String outputId) {
+        if (!itemOutputMap.containsKey(outputId)) {
+            MmItemOutputVO itemOutput = mmItemOutputService.getOutPutById(outputId);
+            if (itemOutput != null) {
+                itemOutputMap.put(outputId, itemOutput);
+            } else {
+                return null;
+            }
+        }
+        return itemOutputMap.get(outputId);
+    }
+
+    /**
+     * 6.根据预测项ID,获取预测项对应的输出参数的维数
+     *
+     * @param itemId
+     * @return
+     */
+    public Integer getItemOutputCount(String itemId) {
+        if (!itemOutPutItemMap.containsKey(itemId)) {
+            List<MmItemOutputVO> list = mmItemOutputService.getOutPutByItemId(itemId);
+            if (list != null) {
+                itemOutPutItemMap.put(itemId, list);
+            } else {
+                return 0;
+            }
+        }
+        return itemOutPutItemMap.get(itemId).size();
+    }
+
+    /**
+     * 7.根据预测项ID,获取对应的MmItemTypeEntity实体
+     *
+     * @param itemId
+     * @return
+     */
+    public MmItemTypeEntity getMmItemTypeEntity(String itemId) {
+        if (!itemTypeMap.containsKey(itemId)) {
+            MmItemTypeEntity MmItemTypeEntity = mmItemTypeService.getItemTypeByItemId(itemId);
+            if (MmItemTypeEntity != null) {
+                itemTypeMap.put(itemId, MmItemTypeEntity);
+            } else {
+                return null;
+            }
+        }
+        return itemTypeMap.get(itemId);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/ModelEntityFactory.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/ModelEntityFactory.java
new file mode 100644
index 0000000..bc663e3
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/ModelEntityFactory.java
@@ -0,0 +1,150 @@
+package com.iailab.module.model.mdk.factory;
+
+import com.iailab.module.model.mcs.pre.entity.MmModelArithSettingsEntity;
+import com.iailab.module.model.mcs.pre.entity.MmModelParamEntity;
+import com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity;
+import com.iailab.module.model.mcs.pre.service.MmModelArithSettingsService;
+import com.iailab.module.model.mcs.pre.service.MmModelParamService;
+import com.iailab.module.model.mcs.pre.service.MmPredictModelService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 创建和管理模型实体
+ */
+@Slf4j
+@Component
+public class ModelEntityFactory {
+
+    private Map<String, Object> modelFileMap = new HashMap<>();
+    private Map<String, MmPredictModelEntity> modelEntityMap = new HashMap<>();
+    private Map<String, List<MmModelParamEntity>> modelInputParamMap = new HashMap<>();
+    private Map<String, List<MmModelArithSettingsEntity>> modelArithParamMap = new HashMap<>();
+    private Map<String, List<MmPredictModelEntity>> modelListMap = new HashMap<>();
+
+    @Autowired
+    private MmPredictModelService mmPredictModelService;
+
+    @Autowired
+    private MmModelParamService mmModelParamService;
+
+    @Autowired
+    private MmModelArithSettingsService mmModelArithSettingsService;
+
+    /**
+     * 2.根据模型ID,获取模型实体
+     *
+     * @param modelId
+     * @return
+     */
+    public MmPredictModelEntity getModelEntity(String modelId) {
+        MmPredictModelEntity modelEntity = mmPredictModelService.getInfo(modelId);
+        if (!modelEntityMap.containsKey(modelId)) {
+            if (modelEntity != null) {
+                modelEntityMap.put(modelId, modelEntity);
+            }
+        }
+        return modelEntity;
+    }
+
+    /**
+     * 3.根据模型ID,获取模型对应的输入参数
+     *
+     * @param modelId
+     * @return
+     */
+    public List<MmModelParamEntity> getModelInputParam(String modelId) {
+        if (!modelInputParamMap.containsKey(modelId)) {
+            List<MmModelParamEntity> modelInputParamEntities = mmModelParamService.getByModelid(modelId);
+            if (modelInputParamEntities != null) {
+                modelInputParamMap.put(modelId, modelInputParamEntities);
+            } else {
+                return null;
+            }
+        }
+        return mmModelParamService.getByModelid(modelId);
+    }
+
+    /**
+     * 4.根据模型ID,获取模型对应的输入参数的维数
+     *
+     * @param modelId
+     * @return
+     */
+    public Integer getModelInputCount(String modelId) {
+        if (!modelInputParamMap.containsKey(modelId)) {
+            List<MmModelParamEntity> modelInputParamEntityList = mmModelParamService.getByModelid(modelId);
+            if (modelInputParamEntityList != null) {
+                modelInputParamMap.put(modelId, modelInputParamEntityList);
+            } else {
+                return 0;
+            }
+        }
+        return modelInputParamMap.get(modelId).size();
+    }
+
+    /**
+     * 5.根据模型ID,获取模型对应的算法参数
+     *
+     * @param modelId
+     * @return
+     */
+    public List<MmModelArithSettingsEntity> getModelArithParam(String modelId) {
+        if (!modelArithParamMap.containsKey(modelId)) {
+            List<MmModelArithSettingsEntity> modelArithParamEntityList = mmModelArithSettingsService.getByModelId(modelId);
+            if (modelArithParamEntityList != null) {
+                modelArithParamMap.put(modelId, modelArithParamEntityList);
+            } else {
+                return null;
+            }
+        }
+        return modelArithParamMap.get(modelId);
+    }
+
+    /**
+     * 7.根据预测项itemID,获取status=1的模型列表
+     *
+     * @param itemId
+     * @return
+     */
+    public List<MmPredictModelEntity> getActiveModelByItemId(String itemId) {
+        if (!modelListMap.containsKey(itemId)) {
+            List<MmPredictModelEntity> modelEntityList = mmPredictModelService.getActiveModelByItemId(itemId);
+            if (modelEntityList != null) {
+                modelListMap.put(itemId, modelEntityList);
+            } else {
+                return null;
+            }
+        }
+        return modelListMap.get(itemId);
+    }
+
+    /**
+     * 8.根据模型ID,删除模型对应的输入参数
+     *
+     * @param modelId
+     * @return
+     */
+    public void removeModelInputParam(String modelId) {
+        if (modelInputParamMap.containsKey(modelId)) {
+            log.info("removeModelInputParam:modelId=" + modelId);
+            modelInputParamMap.remove(modelId);
+        }
+    }
+
+    /**
+     * 清除缓存
+     */
+    public void removeModelEntity() {
+        modelFileMap.clear();
+        modelEntityMap.clear();
+        modelInputParamMap.clear();
+        modelArithParamMap.clear();
+        modelListMap.clear();
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/PredictItemFactory.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/PredictItemFactory.java
new file mode 100644
index 0000000..1290ff6
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/factory/PredictItemFactory.java
@@ -0,0 +1,40 @@
+package com.iailab.module.model.mdk.factory;
+
+import com.iailab.module.model.mcs.pre.entity.MmItemTypeEntity;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Component;
+
+/**
+ * 创建预测项对象的工厂
+ */
+@Slf4j
+@Component
+public class PredictItemFactory {
+
+    @Autowired
+    private ApplicationContext applicationContext;
+
+    @Autowired
+    private ItemEntityFactory itemEntityFactory;
+
+    /**
+     * 根据预测项实体创建对应的预测项对象
+     *
+     * @param itemId
+     * @return
+     */
+    public Object create(String itemId) {
+        MmItemTypeEntity itemTypeEntity = itemEntityFactory.getMmItemTypeEntity(itemId);
+        //获取预测项的预测程序的类
+        Object itemObject = null;
+        try {
+            Class clazz = Class.forName(itemTypeEntity.getItemclasstype());
+            itemObject = applicationContext.getBean(clazz);
+        } catch (Exception e) {
+            log.error("exception message : {}", e.getMessage());
+        }
+        return itemObject;
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictItemHandler.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictItemHandler.java
new file mode 100644
index 0000000..ec51294
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictItemHandler.java
@@ -0,0 +1,17 @@
+package com.iailab.module.model.mdk.predict;
+
+import com.iailab.module.model.mdk.common.exceptions.ItemInvokeException;
+import com.iailab.module.model.mdk.vo.ItemVO;
+import com.iailab.module.model.mdk.vo.PredictResultVO;
+
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月01日
+ */
+public interface PredictItemHandler {
+
+    PredictResultVO predict(Date predictTime, ItemVO predictItemDto) throws ItemInvokeException;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModelHandler.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModelHandler.java
new file mode 100644
index 0000000..5253a3c
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModelHandler.java
@@ -0,0 +1,17 @@
+package com.iailab.module.model.mdk.predict;
+
+import com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity;
+import com.iailab.module.model.mdk.common.exceptions.ModelInvokeException;
+import com.iailab.module.model.mdk.vo.PredictResultVO;
+
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月01日
+ */
+public interface PredictModelHandler {
+
+    PredictResultVO predictByModel(Date predictTime, MmPredictModelEntity predictModel) throws ModelInvokeException;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java
new file mode 100644
index 0000000..853bd14
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java
@@ -0,0 +1,73 @@
+package com.iailab.module.model.mdk.predict;
+
+import com.iailab.module.model.mcs.pre.enums.ItemStatus;
+import com.iailab.module.model.mdk.factory.PredictItemFactory;
+import com.iailab.module.model.mdk.vo.ItemVO;
+import com.iailab.module.model.mdk.vo.PredictResultVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.MessageFormat;
+import java.time.Duration;
+import java.time.Instant;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月30日
+ */
+@Slf4j
+@Component
+public class PredictModuleHandler {
+
+
+    @Autowired
+    private PredictItemFactory predictItemFactory;
+
+    @Autowired
+    private PredictResultHandler predictResultHandler;
+
+
+    public Map<String, PredictResultVO> predict(List<ItemVO> predictItemList, Date predictTime, int intervalTime) {
+        Map<String, PredictResultVO> result = new HashMap<>();
+
+        PredictResultVO predictResult = new PredictResultVO();
+        for (ItemVO predictItem : predictItemList) {
+            if (!predictItem.getStatus().equals(ItemStatus.STATUS1)) {
+                continue;
+            }
+            try {
+                PredictItemHandler predictItemHandler = (PredictItemHandler)predictItemFactory.create(predictItem.getId());
+                Instant start = Instant.now();
+                try {
+                    predictResult = predictItemHandler.predict(predictTime, predictItem);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    log.error(String.valueOf(e));
+                }
+                Instant end = Instant.now();
+                Long drtPre = Duration.between(start, end).getSeconds();
+                log.info(MessageFormat.format("预测项:{0},预测时间:{1}秒", predictItem.getItemName(), drtPre));
+
+                predictResult.setT(intervalTime);
+                predictResult.setSaveIndex(predictItem.getSaveIndex());
+                predictResult.setLt(1);
+                predictResultHandler.savePredictResult(predictResult);
+                Instant endSave = Instant.now();
+                Long drtSave = Duration.between(end, endSave).getSeconds();
+                log.info(MessageFormat.format("预测项:{0},保存时间:{1}秒", predictItem.getItemName(),
+                        drtSave));
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error(MessageFormat.format("预测项编号:{0},预测项名称:{1},预测失败:{2} 预测时刻:{3}",
+                        predictItem.getId(), predictItem.getItemName(), e.getMessage(), predictTime));
+            }
+        }
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java
new file mode 100644
index 0000000..e69b1e7
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java
@@ -0,0 +1,90 @@
+package com.iailab.module.model.mdk.predict;
+
+import com.iailab.module.data.api.point.DataPointApi;
+import com.iailab.module.data.api.point.dto.ApiPointDTO;
+import com.iailab.module.data.enums.DataPointFreq;
+import com.iailab.module.model.mcs.pre.service.MmItemResultService;
+import com.iailab.module.model.mdk.factory.ItemEntityFactory;
+import com.iailab.module.model.mdk.vo.MmItemOutputVO;
+import com.iailab.module.model.mdk.vo.DataValueVO;
+import com.iailab.module.model.mdk.vo.PredictResultVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+
+@Service
+public class PredictResultHandler {
+    @Autowired
+    private MmItemResultService mmItemResultService;
+
+    @Autowired
+    private ItemEntityFactory itemEntityFactory;
+
+    @Autowired
+    private DataPointApi dataPointApi;
+
+    /**
+     * convertToPredictData
+     *
+     * @param predictResult
+     * @return
+     */
+    private Map<String, List<DataValueVO>> convertToPredictData(PredictResultVO predictResult) {
+        Map<String, List<DataValueVO>> resultMap = new HashMap<>();
+        List<MmItemOutputVO> itemOutPutList = itemEntityFactory.getOutPutByItemId(predictResult.getPredictId());
+
+        if (!CollectionUtils.isEmpty(predictResult.getPredictList())) {
+            resultMap.put(itemOutPutList.get(0).getId(), predictResult.getPredictList());
+            return resultMap;
+        }
+        ApiPointDTO point = dataPointApi.getPointById(itemOutPutList.get(0).getPointId());
+        List<Date> dateTimeList = new ArrayList<>();
+        Integer rows = predictResult.getPredictMatrix().length;
+        Integer columns = predictResult.getPredictMatrix()[0].length;
+        Date tempTime = predictResult.getPredictTime();
+        for (Integer i = 0; i < rows; i++) {
+            dateTimeList.add(tempTime);
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(tempTime);
+            calendar.add(Calendar.SECOND, DataPointFreq.getEumByCode(point.getMinfreqid()).getValue());
+            tempTime = calendar.getTime();
+        }
+        for (Integer i = 0; i < columns; i++) {
+            List<DataValueVO> predictDataList = new ArrayList<>();
+            for (Integer j = 0; j < rows; j++) {
+                DataValueVO predictData = new DataValueVO();
+                predictData.setDataTime(dateTimeList.get(j));
+                predictData.setDataValue(Double.valueOf(predictResult.getPredictMatrix()[j][i]));
+                predictDataList.add(predictData);
+            }
+            resultMap.put(itemOutPutList.get(i).getId(), predictDataList);
+            predictResult.setPredictList(predictDataList);
+        }
+        return resultMap;
+    }
+
+    /**
+     * savePredictResult
+     *
+     * @param predictResult
+     */
+    @Async
+    public void savePredictResult(PredictResultVO predictResult) {
+        Map<String, List<DataValueVO>> resultMap = convertToPredictData(predictResult);
+        mmItemResultService.savePredictValue(resultMap, predictResult.getLt(), "n", predictResult.getPredictTime());
+    }
+
+    public List<DataValueVO> getPredictValueByItemNo(String itemNo, Date start, Date end) {
+        String itemId = itemEntityFactory.getItemByItemNo(itemNo).getId();
+        List<MmItemOutputVO> outputList = itemEntityFactory.getOutPutByItemId(itemId);
+        return mmItemResultService.getPredictValue(outputList.get(0).getId(), start, end);
+    }
+
+    public List<DataValueVO> getPredictValueByItemId(String itemId, Date start, Date end) {
+        List<MmItemOutputVO> outputList = itemEntityFactory.getOutPutByItemId(itemId);
+        return mmItemResultService.getPredictValue(outputList.get(0).getId(), start, end);
+    }
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java
new file mode 100644
index 0000000..b00251d
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java
@@ -0,0 +1,131 @@
+package com.iailab.module.model.mdk.predict.impl;
+
+import com.iailab.module.data.api.point.DataPointApi;
+import com.iailab.module.data.api.point.dto.ApiPointDTO;
+import com.iailab.module.data.enums.DataPointFreq;
+import com.iailab.module.model.mdk.common.enums.ItemPredictStatus;
+import com.iailab.module.model.mdk.common.exceptions.ItemInvokeException;
+import com.iailab.module.model.mdk.factory.ItemEntityFactory;
+import com.iailab.module.model.mdk.factory.PredictItemFactory;
+import com.iailab.module.model.mdk.predict.PredictItemHandler;
+import com.iailab.module.model.mdk.predict.PredictResultHandler;
+import com.iailab.module.model.mdk.vo.DataValueVO;
+import com.iailab.module.model.mdk.vo.ItemVO;
+import com.iailab.module.model.mdk.vo.MmItemOutputVO;
+import com.iailab.module.model.mdk.vo.PredictResultVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.sql.Timestamp;
+import java.util.*;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月01日
+ */
+@Slf4j
+@Component
+public class PredictItemMergeHandlerImpl implements PredictItemHandler {
+
+    @Autowired
+    private ItemEntityFactory itemEntityFactory;
+
+    @Autowired
+    private DataPointApi dataPointApi;
+
+    @Autowired
+    private PredictItemFactory predictItemFactory;
+
+    @Autowired
+    private PredictResultHandler predictResultHandler;
+
+    @Override
+    public PredictResultVO predict(Date predictTime, ItemVO predictItemDto)
+            throws ItemInvokeException {
+        PredictResultVO predictResult = new PredictResultVO();
+        ItemPredictStatus itemStatus = ItemPredictStatus.PREDICTING;
+        String itemId = predictItemDto.getId();
+        try {
+            String expression = itemEntityFactory.getMergeItem(itemId).getExpression();
+            int predictLength = itemEntityFactory.getItemById(itemId).getPredictLength();
+            double[][] predictResultMat = new double[predictLength][1];
+            Map<String, List<DataValueVO>> predictValueMap = new HashMap<>();
+            String[] mathItem = expression.split("[\\+ \\-]");
+            ArrayList<Character> operator = new ArrayList<>();
+            for (int i = 0; i < expression.length(); i++) {
+                if (expression.charAt(i)=='+' || expression.charAt(i)=='-'){
+                    operator.add(expression.charAt(i));
+                }
+            }
+            String[] compositionItem = expression.split(String.valueOf("&".toCharArray()));
+            //是否为计算预测项
+            if (mathItem.length > 1) {
+                for (String itemNo : mathItem) {
+                    if (itemNo.length() > 4) {
+                        Date endTime = predictTime;
+                        ItemVO itemEntity = itemEntityFactory.getItemByItemNo(itemNo);
+                        List<MmItemOutputVO> outPutList = itemEntityFactory.getOutPutByItemId(itemEntity.getId());
+                        ApiPointDTO pointEntity = dataPointApi.getPointById(outPutList.get(0).getPointId());
+
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(endTime);
+                        calendar.add(Calendar.SECOND, (predictLength - 1) * DataPointFreq.getEumByCode(pointEntity.getMinfreqid()).getValue());
+                        endTime = new Timestamp(calendar.getTime().getTime());
+                        List<DataValueVO> predictValueList = predictResultHandler.getPredictValueByItemNo(itemNo, predictTime, endTime);
+                        if (predictValueList.size() != predictLength) {
+                            log.debug("merge项融合失败:缺少子项预测数据,对应子项ItemNo=" + itemNo);
+                            return null;
+                        }
+                        predictValueMap.put(itemNo, predictValueList);
+                    }
+                }
+                for (Integer i = 0; i < predictLength; i++) {
+                    double sum =0.0;
+                    sum = predictValueMap.get(mathItem[0]).get(i).getDataValue();
+                    for (int j = 1; j < mathItem.length; j++) {
+                        if (operator.get(j-1)=='+')
+                        {sum += predictValueMap.get(mathItem[j]).get(i).getDataValue();}
+                        if (operator.get(j-1)=='-')
+                        {sum -= predictValueMap.get(mathItem[j]).get(i).getDataValue();}
+                    }
+                    predictResultMat[i][0] = sum;
+                }
+            }
+            //是否为组合预测项
+            if (compositionItem.length > 1) {
+                Map<String, PredictResultVO> predictResultMap = new HashMap<>();
+                Integer columnTotalNumber = 0;
+                Integer rowNumber = 0;
+                for (String itemNo : compositionItem) {
+                    PredictItemHandler predictItem = (PredictItemHandler) predictItemFactory.create(itemEntityFactory.
+                            getItemByItemNo(itemNo).getId());
+                    predictResult = predictItem.predict(predictTime, predictItemDto);
+                    columnTotalNumber += Integer.valueOf(predictResult.getPredictMatrix().length);
+                    predictResultMap.put(itemNo, predictItem.predict(predictTime, predictItemDto));
+                }
+                double[][] matrix = new double[columnTotalNumber][1];
+                for (String itemNo : compositionItem) {
+                    for (Integer i = 0; i < predictResultMap.get(itemNo).getPredictMatrix().length; i++) {
+                        matrix[rowNumber][0] = predictResultMap.get(itemNo).getPredictMatrix()[i][0];
+                        rowNumber++;
+                    }
+                }
+                predictResult.setPredictMatrix(matrix);
+            }
+            predictResult.setPredictId(itemId);
+            predictResult.setPredictMatrix(predictResultMat);
+            predictResult.setPredictTime(predictTime);
+            //预测项预测成功的状态
+            itemStatus = ItemPredictStatus.SUCCESS;
+        } catch (Exception e) {
+            //预测项预测失败的状态
+            itemStatus = ItemPredictStatus.FAILED;
+            log.debug("merge项预测失败,itemId:" + itemId);
+            throw e;
+        }
+        log.debug("预测完成,itemId:" + itemId + ",itemStatus:" + itemStatus.getValue());
+        return predictResult;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemNormalHandlerImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemNormalHandlerImpl.java
new file mode 100644
index 0000000..ef3149a
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemNormalHandlerImpl.java
@@ -0,0 +1,74 @@
+package com.iailab.module.model.mdk.predict.impl;
+
+import com.iailab.framework.common.util.collection.CollectionUtils;
+import com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity;
+import com.iailab.module.model.mcs.pre.service.MmPredictModelService;
+import com.iailab.module.model.mdk.common.enums.ItemPredictStatus;
+import com.iailab.module.model.mdk.common.exceptions.ItemInvokeException;
+import com.iailab.module.model.mdk.common.exceptions.ModelInvokeException;
+import com.iailab.module.model.mdk.predict.PredictItemHandler;
+import com.iailab.module.model.mdk.predict.PredictModelHandler;
+import com.iailab.module.model.mdk.vo.ItemVO;
+import com.iailab.module.model.mdk.vo.PredictResultVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.sql.Timestamp;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月01日
+ */
+@Component
+public class PredictItemNormalHandlerImpl implements PredictItemHandler {
+
+    @Autowired
+    private MmPredictModelService mmPredictModelService;
+
+    @Autowired
+    private PredictModelHandler predictModelHandler;
+
+    @Override
+    public PredictResultVO predict(Date predictTime, ItemVO predictItemDto)
+            throws ItemInvokeException{
+        String itemId = predictItemDto.getId();
+        ItemPredictStatus itemStatus = ItemPredictStatus.PREDICTING;
+        PredictResultVO finalResult = new PredictResultVO();
+        PredictResultVO predictResult = new PredictResultVO();
+        List<PredictResultVO> predictResultList = new ArrayList<>();
+        try {
+            // 获取预测项模型
+            List<MmPredictModelEntity> predictModelList = mmPredictModelService.getActiveModelByItemId(itemId);
+            if (CollectionUtils.isAnyEmpty(predictModelList)) {
+                throw new ModelInvokeException(MessageFormat.format("{0},itemId={1}",
+                        ModelInvokeException.errorGetModelEntity, itemId));
+            }
+            for (MmPredictModelEntity predictModel : predictModelList) {
+                predictResult = predictModelHandler.predictByModel(predictTime, predictModel);
+                predictResult.setPredictId(itemId);
+                predictResultList.add(predictResult);
+            }
+            itemStatus = ItemPredictStatus.SUCCESS;
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(predictTime);
+            calendar.add(Calendar.MINUTE, predictResult.getPredictMatrix().length - 1);
+            Timestamp endTime = new Timestamp(calendar.getTime().getTime());
+            finalResult = predictResultList.get(0);
+
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            //预测项预测失败的状态
+            itemStatus = ItemPredictStatus.FAILED;
+            throw new ItemInvokeException(MessageFormat.format("{0},itemId={1}",
+                    ItemInvokeException.errorItemFailed, itemId));
+        }
+
+        return finalResult;
+    }
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..7b47923
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java
@@ -0,0 +1,167 @@
+package com.iailab.module.model.mdk.predict.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.iail.IAILMDK;
+import com.iail.model.IAILModel;
+import com.iailab.module.model.mcs.pre.entity.MmModelArithSettingsEntity;
+import com.iailab.module.model.mcs.pre.entity.MmModelResultstrEntity;
+import com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity;
+import com.iailab.module.model.mcs.pre.service.MmModelArithSettingsService;
+import com.iailab.module.model.mcs.pre.service.MmModelResultstrService;
+import com.iailab.module.model.mdk.common.enums.TypeA;
+import com.iailab.module.model.mdk.common.exceptions.ModelInvokeException;
+import com.iailab.module.model.mdk.predict.PredictModelHandler;
+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 lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月01日
+ */
+@Slf4j
+@Component
+public class PredictModelHandlerImpl implements PredictModelHandler {
+
+    @Autowired
+    private MmModelArithSettingsService mmModelArithSettingsService;
+
+    @Autowired
+    private MmModelResultstrService mmModelResultstrService;
+
+    @Autowired
+    private SampleConstructor sampleConstructor;
+
+    @Override
+    public PredictResultVO predictByModel(Date predictTime, MmPredictModelEntity predictModel) throws ModelInvokeException {
+        PredictResultVO result = new PredictResultVO();
+        if (predictModel == null) {
+            throw new ModelInvokeException("modelEntity is null");
+        }
+        String modelId = predictModel.getId();
+
+        try {
+            List<SampleData> sampleDataList = sampleConstructor.constructSample(TypeA.Predict.name(), modelId, predictTime);
+            String modelPath = predictModel.getModelpath();
+            if (modelPath == null) {
+                System.out.println("模型路径不存在,modelId=" + modelId);
+                return null;
+            }
+            IAILModel newModelBean = composeNewModelBean(predictModel);
+            HashMap<String, Object> settings = getPredictSettingsByModelId(modelId);
+            if (settings == null) {
+                log.error("模型setting不存在,modelId=" + modelId);
+                return null;
+            }
+            int portLength = sampleDataList.size();
+            Object[] param2Values = new Object[portLength + 2];
+            for (int i = 0; i < portLength; i++) {
+                param2Values[i]=sampleDataList.get(i).getMatrix();
+            }
+            param2Values[portLength] = newModelBean.getDataMap().get("models");
+            param2Values[portLength+1] = settings;
+
+            log.info("#######################预测模型 " + predictModel.getItemid() + " ##########################");
+            JSONObject jsonObjNewModelBean = new JSONObject();
+            jsonObjNewModelBean.put("newModelBean", newModelBean);
+            log.info(String.valueOf(jsonObjNewModelBean));
+            JSONObject jsonObjParam2Values = new JSONObject();
+            jsonObjParam2Values.put("param2Values", param2Values);
+            log.info(String.valueOf(jsonObjParam2Values));
+
+            //IAILMDK.run
+            HashMap<String, Object> modelResult = IAILMDK.run(newModelBean, param2Values);
+            //打印结果
+            JSONObject jsonObjResult = new JSONObject();
+            jsonObjResult.put("result", result);
+            log.info(String.valueOf(jsonObjResult));
+
+            MmModelResultstrEntity modelResultstr = mmModelResultstrService.getInfo(predictModel.getResultstrid());
+            log.info("模型计算完成:modelId=" + modelId + result);
+            double[][] temp = (double[][]) modelResult.get(modelResultstr.getResultstr());
+            result.setPredictMatrix(temp);
+            result.setPredictTime(predictTime);
+        } catch (Exception ex) {
+            log.error("IAILModel对象构造失败,modelId=" + modelId);
+            log.error(ex.getMessage());
+            log.error("调用发生异常,异常信息为:{}" , ex);
+            ex.printStackTrace();
+
+        }
+        return result;
+    }
+
+    /**
+     * 构造IAILMDK.run()方法的newModelBean参数
+     *
+     * @param predictModel
+     * @return
+     */
+    private IAILModel composeNewModelBean(MmPredictModelEntity predictModel) {
+        IAILModel newModelBean = new IAILModel();
+        newModelBean.setClassName(predictModel.getClassname().trim());
+        newModelBean.setMethodName(predictModel.getMethodname().trim());
+        //构造参数类型
+        String[] paArStr = predictModel.getModelparamstructure().trim().split(",");
+        Class<?>[] paramsArray = new Class[paArStr.length];
+        for (int i = 0; i < paArStr.length; i++) {
+            if ("[[D".equals(paArStr[i])) {
+                paramsArray[i] = double[][].class;
+            } else if ("Map".equals(paArStr[i]) || "java.util.HashMap".equals(paArStr[i])) {
+                paramsArray[i] = HashMap.class;
+            }
+        }
+        newModelBean.setParamsArray(paramsArray);
+        HashMap<String, Object> dataMap = new HashMap<>();
+        HashMap<String, String> models = new HashMap<>(1);
+        models.put("paramFile", predictModel.getModelpath());
+        dataMap.put("models", models);
+        newModelBean.setDataMap(dataMap);
+        return newModelBean;
+    }
+
+    /**
+     * 根据模型id获取参数map
+     *
+     * @param modelId
+     * @return
+     */
+    private HashMap<String, Object> getPredictSettingsByModelId(String modelId) {
+        List<MmModelArithSettingsEntity> list = mmModelArithSettingsService.getByModelId(modelId);
+        HashMap<String, Object> result = new HashMap<>();
+        for (MmModelArithSettingsEntity entry : list) {
+            String valueType = entry.getValuetype().trim(); //去除两端空格
+            if ("int".equals(valueType)) {
+                int value = Integer.parseInt(entry.getValue());
+                result.put(entry.getKey(), value);
+            } else if ("double".equals(valueType)) {
+                double value = Double.parseDouble(entry.getValue());
+                result.put(entry.getKey(), value);
+            } else if ("string".equals(valueType)) {
+                String value = entry.getValue();
+                result.put(entry.getKey(), value);
+            } else if ("decimalArray".equals(valueType)) {
+                JSONArray valueArray = JSONArray.parseArray(entry.getValue());
+                double[] value = new double[valueArray.size()];
+                for (int i = 0; i < valueArray.size(); i++) {
+                    value[i] = Double.parseDouble(valueArray.get(i).toString());
+                }
+                result.put(entry.getKey(), value);
+            } else if ("decimal".equals(valueType)) {
+                double value = Double.parseDouble(entry.getValue());
+                result.put(entry.getKey(), value);
+            }
+        }
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java
new file mode 100644
index 0000000..f6573a1
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java
@@ -0,0 +1,148 @@
+package com.iailab.module.model.mdk.sample;
+
+import com.iailab.framework.common.util.object.ConvertUtils;
+import com.iailab.module.data.api.point.DataPointApi;
+import com.iailab.module.data.api.point.dto.ApiPointDTO;
+import com.iailab.module.data.api.point.dto.ApiPointValueDTO;
+import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO;
+import com.iailab.module.model.mcs.pre.service.MmItemResultService;
+import com.iailab.module.model.mdk.factory.ItemEntityFactory;
+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.SampleData;
+import com.iailab.module.model.mdk.sample.dto.SampleInfo;
+import com.iailab.module.model.mdk.vo.DataValueVO;
+import com.iailab.module.model.mdk.vo.MmItemOutputVO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+/**
+ * 预测样本数据构造
+ */
+@Component
+public class PredictSampleDataConstructor extends SampleDataConstructor {
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private DataPointApi dataPointApi;
+
+    @Autowired
+    private MmItemResultService mmItemResultService;
+
+    @Autowired
+    private ItemEntityFactory itemEntityFactory;
+
+    /**
+     * alter by zfc 2020.11.24 修改数据样本构造方案:sampleInfo中数据已按爪子进行分类,但爪内数据为无序的,
+     * 对爪内数据样本拼接:先基于modelParamOrder对项进行排序(重写comparator匿名函数),再逐项拼接
+     *
+     * @param sampleInfo
+     * @return
+     */
+    @Override
+    public List<SampleData> prepareSampleData(SampleInfo sampleInfo) {
+        List<SampleData> sampleDataList = new ArrayList<>();
+        //对每个爪分别进行计算
+        int deviationIndex = 0;
+        for (ColumnItemPort entry : sampleInfo.getColumnInfo()) {
+            //先依据爪内数据项的modelParamOrder进行排序——重写comparator匿名函数
+            Collections.sort(entry.getColumnItemList(), new Comparator<ColumnItem>() {
+                @Override
+                public int compare(ColumnItem o1, ColumnItem o2) {
+                    return o1.getModelParamOrder() - o2.getModelParamOrder();
+                }
+            });
+
+            //默认都是double类型的数据,且按列向量进行拼接,默认初始值为0.0
+            double[][] matrix = new double[entry.getDataLength()][entry.getColumnItemList().size()];
+            for (int i = 0; i < entry.getColumnItemList().size(); i++) {
+                for (int j = 0; j < entry.getDataLength(); j++) {
+                    matrix[j][i] = -2.0;
+                }
+            }
+
+            //找出对应的调整值
+            BigDecimal[] deviationItem = null;
+            if (sampleInfo.getDeviation() != null && sampleInfo.getDeviation().length > 0) {
+                deviationItem = sampleInfo.getDeviation()[deviationIndex];
+            }
+            deviationIndex++;
+
+            //对每一项依次进行数据查询,然后将查询出的值赋给matrix对应的位置
+            for (int i = 0; i < entry.getColumnItemList().size(); i++) {
+                try {
+                    List<DataValueVO> dataEntityList = getData(entry.getColumnItemList().get(i));
+                    //设置调整值
+                    if (deviationItem != null && deviationItem.length > 0) {
+                        logger.info("设置调整值, i = " + i);
+                        if (deviationItem[i] != null && deviationItem[i].compareTo(BigDecimal.ZERO) != 0) {
+                            for (int dataKey = 1; dataKey < dataEntityList.size(); dataKey++) {
+                                DataValueVO item = dataEntityList.get(dataKey);
+                                item.setDataValue(item.getDataValue() + deviationItem[i].doubleValue());
+                            }
+                        }
+                    }
+                    //补全数据
+                    ColumnItem columnItem = entry.getColumnItemList().get(i);
+                    dataEntityList = super.completionData(matrix.length, dataEntityList, columnItem.startTime, columnItem.getEndTime(), columnItem.granularity);
+
+                    /** 如果数据取不满,把缺失的数据点放在后面 */
+                    if (dataEntityList != null && dataEntityList.size() != 0) {
+                        logger.info("设置matrix, i = " + i + ", size = " + dataEntityList.size());
+                        for (int k = 0; k < dataEntityList.size(); k++) {
+                            matrix[k][i] = dataEntityList.get(k).getDataValue();
+                        }
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            SampleData sampleData = new SampleData();
+            sampleData.setMatrix(matrix);
+            sampleDataList.add(sampleData);
+        }
+        return sampleDataList;
+    }
+
+    /**
+     * getData
+     *
+     * @param columnItem
+     * @return
+     * @throws Exception
+     */
+    private List<DataValueVO> getData(ColumnItem columnItem) throws Exception {
+        List<DataValueVO> dataList = new ArrayList<>();
+        String paramType = columnItem.getParamType();
+        switch (paramType) {
+            case "DATAPOINT":
+                ApiPointDTO point = dataPointApi.getPointById(columnItem.getId());
+                ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO();
+                queryDto.setPointNo(point.getPointNo());
+                queryDto.setStart(columnItem.getStartTime());
+                queryDto.setEnd(columnItem.getEndTime());
+                List<ApiPointValueDTO> pointValueList = dataPointApi.getValue(queryDto);
+                dataList = ConvertUtils.sourceToTarget(pointValueList, DataValueVO.class);
+                break;
+            case "PREDICTITEM":
+                MmItemOutputVO outPut = itemEntityFactory.getItemOutPutById(columnItem.getId());
+                dataList = mmItemResultService.getPredictValue(outPut.getId(),
+                        columnItem.getStartTime(), columnItem.getEndTime());
+                if (dataList == null) {
+                    throw new Exception("没有预测值");
+                }
+                break;
+
+
+            default:
+                break;
+        }
+        return dataList;
+    }
+}
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
new file mode 100644
index 0000000..17002f6
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleInfoConstructor.java
@@ -0,0 +1,142 @@
+package com.iailab.module.model.mdk.sample;
+
+import com.iailab.module.model.mcs.pre.entity.MmModelParamEntity;
+import com.iailab.module.model.mcs.pre.service.MmPredictModelService;
+import com.iailab.module.model.mdk.factory.ItemEntityFactory;
+import com.iailab.module.model.mdk.factory.ModelEntityFactory;
+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;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月03日
+ */
+@Component
+public class PredictSampleInfoConstructor extends SampleInfoConstructor {
+
+    @Autowired
+    private MmPredictModelService mmPredictModelService;
+
+    @Autowired
+    private ModelEntityFactory modelEntityFactory;
+
+    @Autowired
+    private ItemEntityFactory itemEntityFactory;
+
+    @Override
+    public SampleInfo prepareSampleInfo(String modelId, Date predictTime) {
+        return super.prepareSampleInfo(modelId, predictTime);
+    }
+
+    /**
+     * 返回样本矩阵的列数
+     *
+     * @param modelId
+     * @return
+     */
+    @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);
+    }
+
+    /**
+     * 样本的列信息
+     *
+     * @param modelId
+     * @param predictTime
+     * @return
+     */
+    @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<MmModelParamEntity> modelInputParamEntityList = modelEntityFactory.getModelInputParam(modelId);
+        if (CollectionUtils.isEmpty(modelInputParamEntityList)) {
+            return null;
+        }
+        //设置当前端口号,初始值为最小端口(查询结果按端口号从小到达排列)
+        int curPortOrder = modelInputParamEntityList.get(0).getModelparamportorder();
+        //设置当前查询数据长度,初始值为最小端口数据长度
+        int curDataLength = modelInputParamEntityList.get(0).getDatalength();
+        for (MmModelParamEntity entry : modelInputParamEntityList) {
+            columnInfo.setParamType(entry.getModelparamtype());
+            columnInfo.setId(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;
+    }
+
+    /**
+     * 样本的采样周期
+     *
+     * @param modelId
+     * @return
+     */
+    @Override
+    protected Integer getSampleCycle(String modelId) {
+        return itemEntityFactory.getItemById(modelEntityFactory.getModelEntity(modelId).getItemid()).getGranularity();
+    }
+
+
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java
new file mode 100644
index 0000000..ce7dd8b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java
@@ -0,0 +1,43 @@
+package com.iailab.module.model.mdk.sample;
+
+import com.iailab.module.model.mdk.common.exceptions.DataAccessException;
+import com.iailab.module.model.mdk.sample.dto.SampleData;
+import com.iailab.module.model.mdk.sample.dto.SampleInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.sql.Timestamp;
+import java.text.MessageFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 样本构造
+ *
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月03日
+ */
+@Component
+public class SampleConstructor {
+
+    @Autowired
+    private SampleFactory sampleFactory;
+
+    public List<SampleData> constructSample(String typeA, String modelId, Date runTime) {
+        try {
+            SampleInfoConstructor sampleInfoConstructor = sampleFactory.createSampleInfo(typeA, modelId);
+            SampleInfo sampleInfo = sampleInfoConstructor.prepareSampleInfo(modelId, runTime);
+            SampleDataConstructor sampleDataConstructor = sampleFactory.createSampelData(typeA);
+            return sampleDataConstructor.prepareSampleData(sampleInfo);
+        } catch (Exception e) {
+            DataAccessException exception = new DataAccessException(MessageFormat.format("{0},类名为{1}",
+                    DataAccessException.errorDataAccess, Thread.currentThread().getStackTrace()[1].getClassName()));
+            System.out.println(exception);
+            e.printStackTrace();
+            return null;
+        }
+
+
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleDataConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleDataConstructor.java
new file mode 100644
index 0000000..bee81d5
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleDataConstructor.java
@@ -0,0 +1,95 @@
+package com.iailab.module.model.mdk.sample;
+
+import com.iailab.module.model.mdk.sample.dto.SampleData;
+import com.iailab.module.model.mdk.sample.dto.SampleInfo;
+import com.iailab.module.model.mdk.vo.DataValueVO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+
+abstract class SampleDataConstructor {
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    /**
+     * prepareSampleData
+     *
+     * @param sampleInfo
+     * @return
+     */
+    public abstract List<SampleData> prepareSampleData(SampleInfo sampleInfo);
+
+    /**
+     * 补全数据
+     *
+     * @param length
+     * @param dataEntityList
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    public List<DataValueVO> completionData(int length, List<DataValueVO> dataEntityList, Date startTime, Date endTime, int granularity) {
+        if (CollectionUtils.isEmpty(dataEntityList) || length <= dataEntityList.size()) {
+            return dataEntityList;
+        }
+        logger.info("补全数据, length =" + length + "; size = " + dataEntityList.size() + "; startTime = " + startTime.getTime() + "; endTime = " + endTime.getTime());
+        logger.info("补全前:" + dataEntityList);
+
+        Map<Long, Double> sourceDataMap = new HashMap<>(dataEntityList.size());
+        for (DataValueVO dataEntity : dataEntityList) {
+            sourceDataMap.put(dataEntity.getDataTime().getTime(), dataEntity.getDataValue());
+        }
+
+        //找出缺少项
+        long oneMin = 1000 * granularity;
+        long start = startTime.getTime();
+        long end = endTime.getTime();
+        long mins = ((end - start) / oneMin) + 1;
+        Map<Long, Double> dataMap = new LinkedHashMap<>();
+        for (int i = 0; i < mins; i++) {
+            Long key = start + oneMin * i;
+            Double value = sourceDataMap.get(key);
+            dataMap.put(key, value);
+        }
+
+        //补充缺少项
+        int k = 0;
+        Map.Entry<Long, Double> lastItem = null;
+        List<DataValueVO> completionDataEntityList = new ArrayList<>();
+        for (Map.Entry<Long, Double> item : dataMap.entrySet()) {
+            if (k == 0 && item.getValue() == null) {
+                item.setValue(getFirstValue(dataMap));
+            } else if (item.getValue() == null) {
+                item.setValue(lastItem.getValue());
+            }
+            k++;
+            lastItem = item;
+
+            DataValueVO dataEntity = new DataValueVO();
+            dataEntity.setDataTime(new Date(item.getKey()));
+            dataEntity.setDataValue(item.getValue());
+            completionDataEntityList.add(dataEntity);
+        }
+
+        logger.info("补全后:" + completionDataEntityList);
+        return completionDataEntityList;
+    }
+
+    /**
+     * getFirstValue
+     *
+     * @param dataMap
+     * @return
+     */
+    private Double getFirstValue(Map<Long, Double> dataMap) {
+        for (Map.Entry<Long, Double> item : dataMap.entrySet()) {
+            if (item.getValue() != null) {
+                return item.getValue();
+            }
+        }
+        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
new file mode 100644
index 0000000..587c0ca
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleFactory.java
@@ -0,0 +1,41 @@
+package com.iailab.module.model.mdk.sample;
+
+import com.iailab.module.model.mdk.common.enums.TypeA;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 样本工厂
+ */
+@Component
+public class SampleFactory {
+
+    @Autowired
+    private PredictSampleInfoConstructor predictSampleInfoConstructor;
+
+    @Autowired
+    private PredictSampleDataConstructor predictSampleDataConstructor;
+
+    /**
+     * add by zfc 2020.12.15 重写createSampleInfo方法:不区分算法类型直接返回预测时间序列类型
+     *
+     * @param typeA
+     * @param modelId
+     * @return
+     */
+    public SampleInfoConstructor createSampleInfo(String typeA, String modelId){
+        PredictSampleInfoConstructor sampleInfoConstructor = null;
+        if (typeA.compareTo(TypeA.Predict.name()) == 0) {
+            sampleInfoConstructor = predictSampleInfoConstructor;
+        }
+        return sampleInfoConstructor;
+    }
+
+    public SampleDataConstructor createSampelData(String typeA) {
+        SampleDataConstructor sampleDataConstructor = null;
+        if (typeA.compareTo(TypeA.Predict.name()) == 0) {
+            sampleDataConstructor = predictSampleDataConstructor;
+        }
+        return sampleDataConstructor;
+    }
+}
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
new file mode 100644
index 0000000..c86dc27
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java
@@ -0,0 +1,197 @@
+package com.iailab.module.model.mdk.sample;
+
+import com.iailab.module.data.api.point.DataPointApi;
+import com.iailab.module.data.api.point.dto.ApiPointDTO;
+import com.iailab.module.data.enums.DataPointFreq;
+import com.iailab.module.model.mdk.factory.ItemEntityFactory;
+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 java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月03日
+ */
+abstract class SampleInfoConstructor {
+
+    @Autowired
+    private DataPointApi dataPointApi;
+
+    @Autowired
+    private ItemEntityFactory itemEntityFactory;
+
+    /**
+     * prepareSampleInfo
+     *
+     * @param modelId
+     * @param predictTime
+     * @return
+     */
+    public SampleInfo prepareSampleInfo(String modelId, Date predictTime) {
+        SampleInfo sampleInfo = new SampleInfo();
+        //调用样本列数的方法
+        sampleInfo.setSampleColumn(getSampleColumn(modelId));
+        //样本的列信息
+        sampleInfo.setColumnInfo(getColumnInfo(modelId, predictTime));
+        //样本的采样周期
+        sampleInfo.setSampleCycle(getSampleCycle(modelId));
+        return sampleInfo;
+    }
+
+    /**
+     * 返回样本矩阵的列数
+     *
+     * @param modelId
+     * @return
+     */
+    protected abstract Integer getSampleColumn(String modelId);
+
+    /**
+     * 获取开始时间
+     *
+     * @param columnItem
+     * @param originalTime
+     * @return
+     * @throws Exception
+     */
+    protected Date getStartTime(ColumnItem columnItem, Date originalTime) {
+        Date dateTime = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(originalTime);
+        switch (columnItem.getParamType()) {
+            case "DATAPOINT":
+                ApiPointDTO dataPoint = dataPointApi.getPointById(columnItem.getParamId());
+                if (dataPoint == null) {
+                    return null;
+                }
+                dateTime = calculateTime(originalTime, true, columnItem.getDataLength(), DataPointFreq.getEumByCode(dataPoint.getMinfreqid()).getValue());
+                break;
+            case "PREDICTITEM":
+                dateTime = calendar.getTime();
+                break;
+            case "IND-HIS":
+                dateTime = calculateTime(originalTime, true, columnItem.getDataLength(), 60);
+                break;
+            case "IND-PLAN":
+                dateTime = calendar.getTime();
+                break;
+            default:
+                break;
+        }
+        return dateTime;
+    }
+
+    /**
+     * 获取结束时间
+     *
+     * @param columnItem
+     * @param originalTime
+     * @return
+     * @throws Exception
+     */
+    protected Date getEndTime(ColumnItem columnItem, Date originalTime) {
+        Date dateTime = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(originalTime);
+        switch (columnItem.getParamType()) {
+            case "DATAPOINT":
+                ApiPointDTO dataPoint = dataPointApi.getPointById(columnItem.getParamId());
+                if (dataPoint == null) {
+                    return null;
+                }
+                calendar.add(Calendar.SECOND, DataPointFreq.getEumByCode(dataPoint.getMinfreqid()).getValue() * -1);
+                break;
+            case "PREDICTITEM":
+                dateTime = calculateTime(originalTime, false, columnItem.getDataLength(), 60);
+                break;
+            case "IND-HIS":
+                dateTime = calendar.getTime();
+                break;
+            case "IND-PLAN":
+                dateTime = calculateTime(originalTime, false, columnItem.getDataLength(), 60);
+                break;
+            default:
+                break;
+        }
+        return dateTime;
+    }
+
+    /**
+     * 获取粒度,s
+     *
+     * @param columnItem
+     * @return
+     * @throws Exception
+     */
+    protected Integer getGranularity(ColumnItem columnItem) {
+        Integer granularity = 60;
+        switch (columnItem.getParamType()) {
+            case "DATAPOINT":
+                ApiPointDTO dataPoint = dataPointApi.getPointById(columnItem.getParamId());
+                granularity = DataPointFreq.getEumByCode(dataPoint.getMinfreqid()).getValue();
+                break;
+            case "PREDICTITEM":
+                granularity = itemEntityFactory.getItemById(columnItem.getParamId()).getGranularity();
+                break;
+            case "IND-HIS":
+                granularity = 60;
+                break;
+            case "IND-PLAN":
+                granularity = 60;
+                break;
+            default:
+                break;
+        }
+        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);
+
+    /**
+     * 计算取值的时间
+     *
+     * @param originalTime
+     * @param backward
+     * @param dataLength
+     * @param granularity
+     * @return
+     */
+    public Date calculateTime(Date originalTime, Boolean backward, int dataLength, int granularity) {
+        int timeLength;
+        if (backward) {
+            timeLength = (-1) * dataLength;
+        } else {
+            timeLength = dataLength - 1;
+        }
+        Date desTime = originalTime;
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(desTime);
+        calendar.set(Calendar.MILLISECOND, 0);
+        // 数据长度 * 粒度
+        calendar.add(Calendar.SECOND, timeLength * granularity);
+        return calendar.getTime();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/ColumnItem.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/ColumnItem.java
new file mode 100644
index 0000000..561f4bc
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/ColumnItem.java
@@ -0,0 +1,61 @@
+package com.iailab.module.model.mdk.sample.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.sql.Timestamp;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class ColumnItem {
+
+    /**
+     * id
+     */
+    public String id;
+
+    /**
+     * 参数类型
+     */
+    public String paramType;
+
+    /**
+     * 参数ID
+     */
+    public String paramId;
+
+    /**
+     * 数据长度
+     */
+    public int dataLength;
+
+    /**
+     * 模型参数排序
+     */
+    public int modelParamOrder;
+
+    /**
+     * 模型参数端口排序
+     */
+    public int modelParamPortOrder;
+
+    /**
+     * 采样的开始时间
+     */
+    public Date startTime;
+
+    /**
+     * 采样的结束时间
+     */
+    public Date endTime;
+
+    /**
+     * 采样粒度,s
+     */
+    public int granularity;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/ColumnItemPort.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/ColumnItemPort.java
new file mode 100644
index 0000000..05706f9
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/ColumnItemPort.java
@@ -0,0 +1,32 @@
+package com.iailab.module.model.mdk.sample.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * add by zfc 2020.11.25 用于对每个爪的Column进行归类
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class ColumnItemPort {
+    /**
+     * 爪内数据项的列表
+     */
+    private List<ColumnItem> columnItemList;
+
+    /**
+     * 爪的端口号
+     */
+    private int portOrder;
+
+    /**
+     * 预测数据长度
+     */
+    private int dataLength;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleData.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleData.java
new file mode 100644
index 0000000..4f058cc
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleData.java
@@ -0,0 +1,14 @@
+package com.iailab.module.model.mdk.sample.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class SampleData {
+    private double[][] matrix;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java
new file mode 100644
index 0000000..14fab98
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java
@@ -0,0 +1,33 @@
+package com.iailab.module.model.mdk.sample.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class SampleInfo {
+    /**
+     * 用于记录端口的个数(爪的个数)
+     */
+    private Integer portLength;
+
+    private Integer sampleColumn;
+
+    private Timestamp startTime;
+
+    private Timestamp endTime;
+
+    private List<ColumnItemPort> columnInfo;
+
+    private Integer sampleCycle;
+
+    private BigDecimal[][] deviation;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/DataValueVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/DataValueVO.java
new file mode 100644
index 0000000..9b360d8
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/DataValueVO.java
@@ -0,0 +1,23 @@
+package com.iailab.module.model.mdk.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月02日
+ */
+@Data
+public class DataValueVO {
+    /**
+     * 时间戳
+     */
+    private Date dataTime;
+
+    /**
+     * 数值
+     */
+    private Double dataValue;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ItemVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ItemVO.java
new file mode 100644
index 0000000..2068a7a
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ItemVO.java
@@ -0,0 +1,29 @@
+package com.iailab.module.model.mdk.vo;
+
+import lombok.Data;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月01日
+ */
+@Data
+public class ItemVO {
+    private String id;
+    private String itemNo;
+    private String itemName;
+    private String itemType;
+    private Integer predictLength;
+    private Integer granularity;
+    private Integer status;
+    private Integer isFuse;
+    private Integer predictPhase;
+    private Integer workChecked;
+    private Integer isDisplay;
+    private Integer unitTransFactor;
+
+    /**
+     * 保留的预测点位 (T+2 则n=2, T+30则n=30, T+n则表示从最后点位开始,n=预测长度;n由系统配置得出)
+     */
+    private String saveIndex;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/MergeItemVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/MergeItemVO.java
new file mode 100644
index 0000000..e7a0522
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/MergeItemVO.java
@@ -0,0 +1,18 @@
+package com.iailab.module.model.mdk.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class MergeItemVO {
+    private String id;
+    private String itemId;
+    private String expression;
+    private String itemNo;
+    private  Integer num;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/MmItemOutputVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/MmItemOutputVO.java
new file mode 100644
index 0000000..ae25275
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/MmItemOutputVO.java
@@ -0,0 +1,17 @@
+package com.iailab.module.model.mdk.vo;
+
+import lombok.Data;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年09月02日
+ */
+@Data
+public class MmItemOutputVO {
+    private String id;
+    private String itemId;
+    private String pointId;
+    private String resultTableName;
+    private Integer order;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelArithParamVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelArithParamVO.java
new file mode 100644
index 0000000..7b5ab3a
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelArithParamVO.java
@@ -0,0 +1,30 @@
+package com.iailab.module.model.mdk.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 模型算法参数实体
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class ModelArithParamVO {
+    /**
+     * 算法参数名称
+     */
+    private String arithParamName;
+
+    /**
+     * 算法参数类型
+     */
+    private String arithParamType;
+
+    /**
+     * 算法参数值
+     */
+    private String arithParamValue;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelInputParamVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelInputParamVO.java
new file mode 100644
index 0000000..2cc6e8f
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelInputParamVO.java
@@ -0,0 +1,46 @@
+package com.iailab.module.model.mdk.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 模型输入参数实体
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class ModelInputParamVO {
+    /**
+     * 模型输入参数名称
+     */
+    private String modelParamName;
+
+    /**
+     * 模型输入参数类型
+     */
+    private String modelParamType;
+
+    /**
+     * 模型输入参数的ID(PREDICTITEM类型的为ITEMID,DATAPOINT类型的为POINTDID)
+     */
+    private String modelParamId;
+
+    /**
+     * 模型输入参数的顺序
+     */
+    private Integer modelParamOrder;
+
+    /**
+     * 模型参数对应的爪的顺序
+     * add by zfc 2020.11.24 添加模型参数对应的爪的order
+     */
+    private int modelParamPortOrder;
+
+    /**
+     * 预测数据长度
+     */
+    private int dataLength;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelVO.java
new file mode 100644
index 0000000..199c7d6
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ModelVO.java
@@ -0,0 +1,122 @@
+package com.iailab.module.model.mdk.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * 模型实体
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class ModelVO {
+    /**
+     * 模型ID
+     */
+    private String id;
+
+    /**
+     * 模型编号
+     */
+    private String modelNo;
+
+    /**
+     * 模型名称
+     */
+    private String modelName;
+
+    /**
+     * 预测项ID
+     */
+    private String itemId;
+
+    /**
+     * 算法ID
+     */
+    private String arithId;
+
+    /**
+     * 训练样本长度
+     */
+    private Integer trainSampleLength;
+
+    /**
+     * 预测样本长度
+     */
+    private Integer predictSampleLength;
+
+    /**
+     * 是否在线训练
+     */
+    private Integer isOnlineTrain;
+
+    /**
+     * 模型路径
+     */
+    private String modelPath;
+
+    /**
+     * 是否归一化
+     */
+    private Integer isNormal;
+
+    /**
+     * 归一化后的最大值
+     */
+    private Double normalMax;
+
+    /**
+     * 归一化后的最小值
+     */
+    private Double normalMin;
+
+    /**
+     * 是否参与预测
+     */
+    private Integer status;
+
+    /**
+     * 类名称
+     */
+    private String className;
+
+    /**
+     * 方法名称
+     */
+    private String methodName;
+
+    /**
+     * 模型构造器
+     */
+    private String modelParamStructure;
+
+    /**
+     * 结果ID
+     */
+    private String resultstrid;
+
+    /**
+     * settingMap
+     */
+    private String settingMap;
+
+    /**
+     * 训练模型路径
+     */
+    private String trainModelPath;
+
+    /**
+     * 模型路径状态(1:需要更换,0:不需要更换)
+     */
+    private BigDecimal pathStatus;
+
+    /**
+     * 预测阶段需要输入的数据长度
+     */
+    private Integer pdim;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/PredictResultVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/PredictResultVO.java
new file mode 100644
index 0000000..3c36180
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/PredictResultVO.java
@@ -0,0 +1,51 @@
+package com.iailab.module.model.mdk.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class PredictResultVO {
+
+    /**
+     * 如果是单独预测项,则predictID=itemID;如果是模块,则predictID=moduleID
+     */
+    private String predictId;
+
+    /**
+     * 预测的时间
+     */
+    private Date predictTime;
+
+    /**
+     * 统一预测入口的预测类型(循环调用、手动调用)
+     */
+    private double[][] predictMatrix;
+
+    /**
+     * 时间间隔 (当前预测时间 与 上一次预测时间 相差的分钟数;系统计算得出)
+     */
+    private int t;
+
+    /**
+     * 时间间隔 (当前预测时间 与 上一次预测时间 相差的分钟数;系统计算得出)
+     */
+    private int lt;
+
+    /**
+     * 保留的预测点位 (T+2 则n=2, T+30则n=30, T+n则表示从最后点位开始,n=预测长度;n由系统配置得出)
+     */
+    private String saveIndex;
+
+    /**
+     * 预测集合
+     */
+    private List<DataValueVO> predictList;
+}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/constructor/SampleConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/constructor/SampleConstructor.java
deleted file mode 100644
index 32f2e68..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/constructor/SampleConstructor.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.iailab.module.model.sample.constructor;
-
-
-import com.iailab.module.model.sample.dto.SampleData;
-import com.iailab.module.model.sample.dto.SampleInfo;
-import lombok.extern.slf4j.Slf4j;
-import javax.annotation.Resource;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 样本构造
- *
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月16日 15:17:00
- */
-@Slf4j
-@Component
-public class SampleConstructor {
-
-    @Resource
-    private SampleInfoConstructor sampleInfoConstructor;
-
-    @Resource
-    private SampleDataConstructor sampleDataConstructor;
-
-    public List<SampleData> constructSample(String modelId, Date runTime) {
-        List<SampleData> list = new ArrayList<>();
-        try {
-            SampleInfo sampleInfo = sampleInfoConstructor.prepareSampleInfo(modelId, runTime);
-            list = sampleDataConstructor.prepareSampleData(sampleInfo);
-        } catch (Exception ex) {
-            ex.printStackTrace();
-            log.error("constructSample:" + ex.getMessage());
-        }
-        return list;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/constructor/SampleDataConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/constructor/SampleDataConstructor.java
deleted file mode 100644
index dc89335..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/constructor/SampleDataConstructor.java
+++ /dev/null
@@ -1,208 +0,0 @@
-package com.iailab.module.model.sample.constructor;
-import com.iailab.module.data.api.point.DataPointApi;
-import com.iailab.module.data.api.point.dto.ApiPointValueDTO;
-import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO;
-import com.iailab.module.data.api.point.dto.ApiPointDTO;
-import com.iailab.module.mcs.service.StModelResultService;
-import com.iailab.module.model.sample.dto.ColumnItem;
-import com.iailab.module.model.sample.dto.ColumnItemPort;
-import com.iailab.module.model.sample.dto.SampleData;
-import com.iailab.module.model.sample.dto.SampleInfo;
-import com.iailab.module.model.sample.entity.DataEntity;
-import lombok.extern.slf4j.Slf4j;
-import javax.annotation.Resource;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.sql.Timestamp;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月16日 16:24:00
- */
-@Slf4j
-@Component
-public class SampleDataConstructor {
-
-    @Resource
-    private DataPointApi dataPointApi;
-
-    @Resource
-    private StModelResultService modelResultService;
-
-    public List<SampleData> prepareSampleData(SampleInfo sampleInfo) {
-        List<SampleData> sampleDataList = new ArrayList<>();
-        for (ColumnItemPort entry : sampleInfo.getColumnInfo()) {
-            double[][] matrix = new double[entry.getDataLength()][entry.getColumnItemList().size()];
-            for (int i = 0; i < entry.getColumnItemList().size(); i++) {
-                ColumnItem columnItem = entry.getColumnItemList().get(i);
-                List<DataEntity> dataEntityList = getColumnData(columnItem);
-                
-                //补全数据
-               dataEntityList = completionData(matrix.length, dataEntityList, columnItem.startTime, columnItem.endTime, columnItem.paramId);
-                
-                if (CollectionUtils.isEmpty(dataEntityList)) {
-                    continue;
-                }
-                for (int k = 0; k < entry.getDataLength(); k++) {
-                    matrix[k][i] = dataEntityList.get(k).getDataValue();
-                }
-            }
-            SampleData sampleData = new SampleData();
-            sampleData.setMatrix(matrix);
-            sampleDataList.add(sampleData);
-        }
-        return sampleDataList;
-    }
-
-    public List<DataEntity> getColumnData(ColumnItem columnItem) {
-        List<DataEntity> dataEntityList = new ArrayList<>();
-        switch (columnItem.getParamType()) {
-            case "predict":
-                // 预测值
-                dataEntityList = modelResultService.getValueList(columnItem.getParamId(), columnItem.startTime, columnItem.endTime)
-                        .stream().collect(Collectors.toList());
-                break;
-            case "point":
-                // 测点值
-                ApiPointValueQueryDTO dto = new ApiPointValueQueryDTO();
-                dto.setEnd(columnItem.endTime);
-                dto.setStart(columnItem.startTime);
-                dto.setPointNo(columnItem.getParamId());
-                List<ApiPointValueDTO> pointValues = dataPointApi.getValue(dto);
-
-                List<DataEntity> tempList = new ArrayList<>();
-                pointValues.forEach(item -> {
-                    DataEntity dataEntity = new DataEntity();
-                    dataEntity.setDataValue(item.getDataValue());
-                    dataEntity.setTimeStamp(item.getDataTime());
-                    tempList.add(dataEntity);
-                });
-                dataEntityList = tempList;
-                break;
-            default:
-                break;
-        }
-        return dataEntityList;
-    }
-    
-    /**
-     * 补全数据
-     *
-     * @param length
-     * @param dataEntityList
-     * @param startTime
-     * @param endTime
-     * @return
-     */
-    public List<DataEntity> completionData(int length, List<DataEntity> dataEntityList, Date startTime, Date endTime, String paramId) {
-        if (CollectionUtils.isEmpty(dataEntityList) || length <= dataEntityList.size()) {
-            return dataEntityList;
-        }
-        /*log.info("补全数据, length =" + length + "; size = " + dataEntityList.size() + "; startTime = " + startTime + "; endTime = " + endTime);
-        log.info("补全前:" + dataEntityList);*/
-
-        ApiPointDTO dataPoint = dataPointApi.getPoint(paramId);
-
-        Map<Long, Double> sourceDataMap = new HashMap<>(dataEntityList.size());
-        for (DataEntity dataEntity : dataEntityList) {
-            sourceDataMap.put(dataEntity.getTimeStamp().getTime(), dataEntity.getDataValue());
-        }
-
-        //找出缺少项
-        long oneMin = 1000 * SampleInfoConstructor.minFreqMap.get(dataPoint.getMinfreqid());
-        long start = startTime.getTime();
-        long end = endTime.getTime();
-        long mins = ((end - start) / oneMin) + 1;
-        Map<Long, Double> dataMap = new LinkedHashMap<>();
-        for (int i = 0; i < mins; i ++) {
-            Long key = start + oneMin * i;
-            Double value = sourceDataMap.get(key);
-            dataMap.put(key, value);
-        }
-
-        //补充缺少项
-        int k = 0;
-        Map.Entry<Long, Double> lastItem = null;
-        List<DataEntity> completionDataEntityList = new ArrayList<>();
-        for (Map.Entry<Long, Double> item : dataMap.entrySet()) {
-            if (k == 0 && item.getValue() == null) {
-                item.setValue(getFirstValue(dataMap));
-            } else if (item.getValue() == null) {
-                item.setValue(lastItem.getValue());
-            }
-            k ++;
-            lastItem = item;
-
-            DataEntity dataEntity = new DataEntity();
-            dataEntity.setTimeStamp(new Timestamp(item.getKey()));
-            dataEntity.setDataValue(item.getValue());
-            completionDataEntityList.add(dataEntity);
-        }
-
-        // log.info("补全后:" + completionDataEntityList);
-        return completionDataEntityList;
-    }
-
-    public List<DataEntity> completionData(int length, List<DataEntity> dataEntityList, Date startTime, Date endTime, int s) {
-        if (CollectionUtils.isEmpty(dataEntityList) || length <= dataEntityList.size()) {
-            return dataEntityList;
-        }
-        Map<Long, Double> sourceDataMap = new HashMap<>(dataEntityList.size());
-        for (DataEntity dataEntity : dataEntityList) {
-            sourceDataMap.put(dataEntity.getTimeStamp().getTime(), dataEntity.getDataValue());
-        }
-
-        //找出缺少项
-        long oneMin = 1000 * s;
-        long start = startTime.getTime();
-        long end = endTime.getTime();
-        long mins = ((end - start) / oneMin) + 1;
-        Map<Long, Double> dataMap = new LinkedHashMap<>();
-        for (int i = 0; i < mins; i ++) {
-            Long key = start + oneMin * i;
-            Double value = sourceDataMap.get(key);
-            dataMap.put(key, value);
-        }
-
-        //补充缺少项
-        int k = 0;
-        Map.Entry<Long, Double> lastItem = null;
-        List<DataEntity> completionDataEntityList = new ArrayList<>();
-        for (Map.Entry<Long, Double> item : dataMap.entrySet()) {
-            if (k == 0 && item.getValue() == null) {
-                item.setValue(getFirstValue(dataMap));
-            } else if (item.getValue() == null) {
-                item.setValue(lastItem.getValue());
-            }
-            k ++;
-            lastItem = item;
-
-            DataEntity dataEntity = new DataEntity();
-            dataEntity.setTimeStamp(new Timestamp(item.getKey()));
-            dataEntity.setDataValue(item.getValue());
-            completionDataEntityList.add(dataEntity);
-        }
-
-        // log.info("补全后:" + completionDataEntityList);
-        return completionDataEntityList;
-    }
-    
-    /**
-     * getFirstValue
-     *
-     * @param dataMap
-     * @return
-     */
-    private Double getFirstValue(Map<Long, Double> dataMap) {
-        for (Map.Entry<Long, Double> item : dataMap.entrySet()) {
-            if (item.getValue() != null) {
-                return item.getValue();
-            }
-        }
-        return null;
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/constructor/SampleInfoConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/constructor/SampleInfoConstructor.java
deleted file mode 100644
index 196fff9..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/constructor/SampleInfoConstructor.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package com.iailab.module.model.sample.constructor;
-
-
-import com.iailab.module.data.api.point.DataPointApi;
-import com.iailab.module.data.api.point.dto.ApiPointDTO;
-import com.iailab.module.mcs.dto.StModelParamDTO;
-import com.iailab.module.mcs.service.StModelParamService;
-import com.iailab.module.model.sample.dto.ColumnItem;
-import com.iailab.module.model.sample.dto.ColumnItemPort;
-import com.iailab.module.model.sample.dto.SampleInfo;
-import javax.annotation.Resource;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.util.*;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月16日 16:25:00
- */
-@Component
-public class SampleInfoConstructor {
-
-    @Resource
-    private StModelParamService stModelParamService;
-
-    @Resource
-    private DataPointApi dataPointApi;
-
-    public static final Map<String, Integer> minFreqMap = new HashMap<>();
-
-    private int DAY_SECOND = 1000 * 60 * 60 * 24;
-
-    SampleInfoConstructor() {
-        minFreqMap.put("NET10", 10);
-        minFreqMap.put("NET30", 30);
-        minFreqMap.put("NET60", 60);
-        minFreqMap.put("NET_KIO10", 10);
-        minFreqMap.put("NET_KIO60", 60);
-    }
-
-    public SampleInfo prepareSampleInfo(String modelId, Date predictTime) throws Exception {
-        SampleInfo sampleInfo = new SampleInfo();
-        sampleInfo.setSampleColumn(getSampleColumn(modelId));
-        sampleInfo.setColumnInfo(getColumnInfo(modelId, predictTime));
-        return sampleInfo;
-    }
-
-    private Integer getSampleColumn(String modelId) {
-        return stModelParamService.getByModelId(modelId).size();
-    }
-
-    private List<ColumnItemPort> getColumnInfo(String modelId, Date dateTime) throws Exception {
-        List<ColumnItemPort> resultList = new ArrayList<>();
-        List<ColumnItem> columnItemList = new ArrayList<>();
-        ColumnItem columnInfo = new ColumnItem();
-        ColumnItemPort curPort = new ColumnItemPort();  //当前端口
-        List<StModelParamDTO> modelParamList = stModelParamService.getByModelId(modelId);
-        if (CollectionUtils.isEmpty(modelParamList)) {
-            return null;
-        }
-        int curPortOrder = modelParamList.get(0).getParamPortOrder();
-        int curDataLength = modelParamList.get(0).getDataLength();
-        for (StModelParamDTO entry : modelParamList) {
-            columnInfo.setParamType(entry.getParamType());
-            columnInfo.setParamId(entry.getParamId());
-            columnInfo.setDataLength(entry.getDataLength());
-            columnInfo.setModelParamOrder(entry.getParamOrder());
-            columnInfo.setModelParamPortOrder(entry.getParamPortOrder());
-            columnInfo.setStartTime(this.getStartTime(columnInfo, dateTime));
-            columnInfo.setEndTime(this.getEndTime(columnInfo, dateTime));
-            if (curPortOrder != entry.getParamPortOrder()) {
-                //当数据项端口号不为当前端口号时,封装上一个端口类,操作下一个端口类
-                curPort.setColumnItemList(columnItemList);
-                curPort.setDataLength(curDataLength);
-                curPort.setPortOrder(curPortOrder);
-                resultList.add(curPort);
-                curPort = new ColumnItemPort();
-                //封装上一个端口类后更新当前的各个参数
-                columnItemList = new ArrayList<>();
-                curDataLength = entry.getDataLength();
-                curPortOrder = entry.getParamPortOrder();
-            }
-            columnItemList.add(columnInfo);
-            columnInfo = new ColumnItem();
-        }
-        //当迭代到最后一个项的时候,封装最后一个端口的信息
-        curPort.setColumnItemList(columnItemList);
-        curPort.setDataLength(curDataLength);
-        curPort.setPortOrder(curPortOrder);
-        resultList.add(curPort);
-        return resultList;
-    }
-
-    protected Date getStartTime(ColumnItem columnItem, Date originalTime) throws Exception {
-        Date dateTime = new Date();
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(originalTime);
-        switch (columnItem.getParamType()) {
-            case "point":
-                ApiPointDTO dataPoint = dataPointApi.getPoint(columnItem.paramId);
-                if (dataPoint == null) {
-                    throw new Exception("apiDataPointDTO is null");
-                }
-                dateTime = calculateTime(calendar.getTime(), true, columnItem.getDataLength(), minFreqMap.get(dataPoint.getMinfreqid()));
-                break;
-            case "predict":
-                dateTime = calendar.getTime();
-                break;
-            case "ind":
-                dateTime = calculateTime(calendar.getTime(), true, columnItem.getDataLength(), DAY_SECOND);
-                break;
-            case "device-main":
-                dateTime = calculateTime(calendar.getTime(), true, columnItem.getDataLength(), DAY_SECOND);
-                break;
-            case "event":
-                dateTime = calculateTime(calendar.getTime(), true, columnItem.getDataLength(), DAY_SECOND);
-                break;
-            default:
-                break;
-        }
-        return dateTime;
-    }
-
-    protected Date getEndTime(ColumnItem columnItem, Date originalTime) throws Exception {
-        Date dateTime = new Date();
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(originalTime);
-        switch (columnItem.getParamType()) {
-            case "point":
-                ApiPointDTO dataPoint = dataPointApi.getPoint(columnItem.paramId);
-                if (dataPoint == null) {
-                    throw new Exception("apiDataPointDTO is null");
-                }
-                calendar.add(Calendar.SECOND, minFreqMap.get(dataPoint.getMinfreqid()) * -1);
-                break;
-            case "predict":
-                dateTime = calculateTime(dateTime, false, columnItem.getDataLength(), 60);
-                break;
-            case "ind":
-                dateTime = calendar.getTime();
-                break;
-            case "device-main":
-                dateTime = calendar.getTime();
-                break;
-            case "event":
-                dateTime = calendar.getTime();
-                break;
-            default:
-                break;
-        }
-        return dateTime;
-    }
-
-    public Date calculateTime(Date originalTime, Boolean backward, int dataLength, int granularity) {
-        int timeLength;
-        if (backward) {
-            timeLength = (-1) * dataLength;
-        } else {
-            timeLength = dataLength - 1;
-        }
-        Date desTime = originalTime;
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(desTime);
-        calendar.set(Calendar.MILLISECOND, 0);
-        // 数据长度 * 粒度
-        calendar.add(Calendar.SECOND, timeLength * granularity);
-        return calendar.getTime();
-    }
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/ColumnItem.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/ColumnItem.java
deleted file mode 100644
index 1a45e32..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/ColumnItem.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.iailab.module.model.sample.dto;
-
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月16日 15:15:00
- */
-@Data
-public class ColumnItem {
-    /**
-     * 参数类型
-     */
-    public String paramType;
-
-    /**
-     * 参数ID
-     */
-    public String paramId;
-
-    /**
-     * 数据长度
-     */
-    public int dataLength;
-
-    /**
-     * 模型参数排序
-     */
-    public int modelParamOrder;
-
-    /**
-     * 模型参数端口排序
-     */
-    public int modelParamPortOrder;
-
-    /**
-     * 采样的开始时间
-     */
-    public Date startTime;
-
-    /**
-     * 采样的结束时间
-     */
-    public Date endTime;
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/ColumnItemPort.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/ColumnItemPort.java
deleted file mode 100644
index de62bbf..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/ColumnItemPort.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.iailab.module.model.sample.dto;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月16日 15:16:00
- */
-@Data
-public class ColumnItemPort {
-
-    private List<ColumnItem> columnItemList;
-
-    private int portOrder;
-
-    private int dataLength;
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/DataValue.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/DataValue.java
deleted file mode 100644
index a07e653..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/DataValue.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.iailab.module.model.sample.dto;
-
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月16日 16:21:00
- */
-@Data
-public class DataValue {
-
-    private Date timeStamp;
-
-    private Double dataValue;
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/SampleData.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/SampleData.java
deleted file mode 100644
index 971fe16..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/SampleData.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.iailab.module.model.sample.dto;
-
-import lombok.Data;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月16日 15:14:00
- */
-@Data
-public class SampleData {
-    private double[][] matrix;
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/SampleInfo.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/SampleInfo.java
deleted file mode 100644
index b3e7453..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/dto/SampleInfo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.iailab.module.model.sample.dto;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author PanZhibao
- * @Description
- * @createTime 2023年05月16日 15:13:00
- */
-@Data
-public class SampleInfo {
-    private Integer portLength;
-
-    private Integer sampleColumn;
-
-    private List<ColumnItemPort> columnInfo;
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/entity/DataEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/entity/DataEntity.java
deleted file mode 100644
index 0ed6952..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/sample/entity/DataEntity.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.iailab.module.model.sample.entity;
-
-import lombok.Data;
-
-import java.util.Date;
-@Data
-public class DataEntity {
-	
-	private Date timeStamp;
-    private double dataValue;
-
-}
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/iailmdk.properties b/iailab-module-model/iailab-module-model-biz/src/main/resources/iailmdk.properties
new file mode 100644
index 0000000..55818ca
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/iailmdk.properties
@@ -0,0 +1,4 @@
+#dev
+#mdk-init-path = D:\\DLUT\\MDK\\libs\\
+#prod
+mdk-init-path = D:\\SmartEnergyStudio\\IAILMDK\\libs\\
\ No newline at end of file
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
new file mode 100644
index 0000000..d925891
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemOutputDao.xml
@@ -0,0 +1,49 @@
+<?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.MmItemOutputDao">
+
+    <resultMap id="MmItemOutputVO" type="com.iailab.module.model.mdk.vo.MmItemOutputVO">
+        <result property="id" column="ID"/>
+        <result property="itemId" column="ITEMID"/>
+        <result property="pointId" column="POINTID"/>
+        <result property="resultTableName" column="TABLENAME"/>
+        <result property="order" column="OUTPUTORDER"/>
+    </resultMap>
+
+    <select id="getOutPutById" resultMap="MmItemOutputVO">
+        SELECT t1.id,
+               t1.itemid,
+               t1.pointid,
+               t2.tablename,
+               t1.outputorder
+        FROM t_mm_item_output t1,
+             t_mm_result_table t2
+        WHERE t1.id = #{value}
+          AND t1.resulttableid = t2.id
+    </select>
+    <select id="getOutPutByItemId" resultMap="MmItemOutputVO">
+        SELECT t1.id,
+               t1.itemid,
+               t1.pointid,
+               t2.tablename,
+               t1.outputorder
+        FROM t_mm_item_output t1,
+             t_mm_result_table t2
+        WHERE t1.itemid = #{value}
+          AND t1.resulttableid = t2.id
+        ORDER BY t1.outputorder
+    </select>
+    <select id="getOutPutByPointId" resultMap="MmItemOutputVO">
+        SELECT t1.id,
+               t1.itemid,
+               t1.pointid,
+               t2.tablename,
+               t1.outputorder
+        FROM t_mm_item_output t1,
+             t_mm_result_table t2
+        WHERE t1.pointid = #{value}
+          AND t1.resulttableid = t2.id
+        ORDER BY t1.outputorder
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemResultDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemResultDao.xml
new file mode 100644
index 0000000..910200c
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemResultDao.xml
@@ -0,0 +1,32 @@
+<?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.MmItemResultDao">
+
+    <delete id="deletePredictValue" parameterType="map">
+        DELETE
+        FROM ${TABLENAME}
+        WHERE outputid = #{OUTPUTID}
+          AND datatime
+            BETWEEN #{STARTTIME}
+            AND #{ENDTIME}
+    </delete>
+
+    <insert id="savePredictValue" parameterType="map">
+        INSERT INTO ${TABLENAME}
+        (id,outputid,datatime,datavalue)
+        VALUES
+        <foreach item="item" collection="list" separator=",">
+            (#{item.id},#{item.outputId},#{item.dataTime},#{item.dataValue})
+        </foreach>
+    </insert>
+
+    <insert id="savePredictJsonValue" parameterType="map">
+        INSERT INTO ${TABLENAME}
+            (id,outputid,predicttime,jsonvalue,cumulant)
+        VALUES (#{entity.id},#{entity.outputid},#{entity.predicttime},#{entity.jsonvalue},#{entity.cumulant})
+    </insert>
+
+
+</mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemTypeDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemTypeDao.xml
new file mode 100644
index 0000000..4097139
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemTypeDao.xml
@@ -0,0 +1,24 @@
+<?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.MmItemTypeDao">
+
+    <resultMap id="MmItemTypeEntity" type="com.iailab.module.model.mcs.pre.entity.MmItemTypeEntity">
+        <result property="itemtypename" column="ITEMTYPENAME"/>
+        <result property="itemclasstype" column="ITEMCLASSTYPE"/>
+        <result property="assemblyname" column="ASSEMBLYNAME"/>
+    </resultMap>
+
+    <select id="getItemTypeByItemId" resultMap="MmItemTypeEntity">
+        SELECT
+            t2.itemtypename,
+            t2.itemclasstype,
+            t2.assemblyname
+        FROM
+            t_mm_predict_item t1,
+            t_mm_item_type t2
+        WHERE t1.itemtypeid=t2.id
+          AND t1.id=#{value}
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictItemDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictItemDao.xml
new file mode 100644
index 0000000..ecf1ecb
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictItemDao.xml
@@ -0,0 +1,121 @@
+<?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.MmPredictItemDao">
+
+    <resultMap id="ItemVO" type="com.iailab.module.model.mdk.vo.ItemVO">
+        <result property="id" column="ID"/>
+        <result property="itemNo" column="ITEMNO"/>
+        <result property="itemName" column="ITEMNAME"/>
+        <result property="itemType" column="ITEMTYPENAME"/>
+        <result property="predictLength" column="PREDICTLENGTH"/>
+        <result property="granularity" column="GRANULARITY"/>
+        <result property="status" column="STATUS"/>
+        <result property="isFuse" column="ISFUSE"/>
+        <result property="predictPhase" column="PREDICTPHASE"/>
+        <result property="workChecked" column="WORKCHECKED"/>
+    </resultMap>
+
+    <resultMap id="MergeItemVO" type="com.iailab.module.model.mdk.vo.MergeItemVO">
+        <result property="id" column="ID"/>
+        <result property="itemId" column="ITEMID"/>
+        <result property="expression" column="EXPRESSION"/>
+    </resultMap>
+
+    <select id="queryList" resultType="com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO" parameterType="map">
+        SELECT
+        TMPI.ID,
+        TMPI.ITEMNO,
+        TMPI.ITEMNAME,
+        TMPI.ITEMTYPEID,
+        TMIT.ITEMTYPENAME,
+        TMPI.GRANULARITY,
+        TMPI.ISFUSE,
+        TMPI.WORKCHECKED,
+        TDMI.MODULEID,
+        TDMI.ITEMORDER,
+        TDMI.STATUS,
+        TDMI.CATEGORYID,
+        TMIO.POINTID,
+        TMIO.TAGNAME,
+        TMIO.RESULTTABLEID,
+        TMRT.TABLENAME
+        FROM T_MM_PREDICT_ITEM TMPI
+        LEFT JOIN T_MM_ITEM_TYPE TMIT ON TMIT.ID = TMPI.ITEMTYPEID
+        LEFT JOIN T_DM_MODULE_ITEM TDMI ON TDMI.ITEMID = TMPI.ID
+        LEFT JOIN T_MM_ITEM_OUTPUT TMIO ON TMIO.ITEMID = TMPI.ID
+        LEFT JOIN T_MM_RESULT_TABLE TMRT ON TMRT.ID = TMIO.RESULTTABLEID
+        WHERE 1 = 1
+        <if test="params.itemno != null and params.itemno != ''">
+            AND TMPI.ITEMNO LIKE CONCAT('%', #{params.itemno},'%')
+        </if>
+        <if test="params.itemname != null and params.itemname != ''">
+            AND TMPI.ITEMNAME LIKE CONCAT('%', #{params.itemname},'%')
+        </if>
+        <if test="params.itemtypeid != null and params.itemtypeid != ''">
+            AND TMPI.ITEMTYPEID = #{params.itemtypeid}
+        </if>
+        <if test="params.itemtypename != null and params.itemtypename != ''">
+            AND TMIT.ITEMTYPENAME = #{params.itemtypename}
+        </if>
+        <if test="params.status != null and params.status != ''">
+            AND TDMI.STATUS = #{params.status}
+        </if>
+        ORDER BY TMPI.CREATE_TIME DESC
+    </select>
+
+    <select id="getByModuleId" parameterType="map" resultMap="ItemVO">
+        SELECT t1.id,
+               t1.itemno,
+               t1.itemname,
+               t3.itemtypename,
+               t1.predictlength,
+               t1.granularity,
+               t1.status,
+               t1.isfuse,
+               t1.workchecked,
+               t1.unittransfactor
+        FROM t_mm_predict_item t1,
+             t_dm_module_item t2,
+             t_mm_item_type t3
+        WHERE t1.id = t2.itemid
+          AND t1.itemtypeid = t3.id
+          AND t2.moduleid = #{MODULEID}
+          AND t2.status = 1
+          AND t1.status = 1
+        ORDER BY t2.itemorder
+    </select>
+
+    <select id="getItem" parameterType="map" resultMap="ItemVO">
+        SELECT
+        t1.id,
+        t1.itemno ,
+        t1.itemname ,
+        t1.predictlength ,
+        t2.itemtypename,
+        t1.granularity,
+        t1.status,
+        t1.isfuse,
+        t1.predictphase,
+        t1.workchecked
+        FROM
+        ${TABLESCHEMA}.t_mm_predict_item t1,
+        ${TABLESCHEMA}.t_mm_item_type t2
+        WHERE t1.itemtypeid=t2.id
+        <if test="ITEMID != null and ITEMID != ''">
+            AND t1.id=#{ITEMID}
+        </if>
+        <if test="ITEMNO != null and ITEMNO != ''">
+            t1.itemno=#{ITEMNO}
+        </if>
+    </select>
+    <select id="getMergeItemByItemId" parameterType="map" resultMap="MergeItemVO">
+        SELECT t1.id,
+               t1.itemid,
+               t1.expression
+        FROM t_mm_predict_merge_item t1
+        WHERE t1.itemid = #{ITEMID}
+    </select>
+
+
+</mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictModelDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictModelDao.xml
new file mode 100644
index 0000000..dca5639
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictModelDao.xml
@@ -0,0 +1,27 @@
+<?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.MmPredictModelDao">
+
+    <select id="getActiveModelByItemId" resultMap="com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity">
+        SELECT
+            t.*
+        FROM
+          t_mm_predict_model t
+        WHERE status=1
+          AND itemid=#{value}
+    </select>
+
+
+    <select id="getSampleLength" resultMap="com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity">
+        SELECT
+            t.predictsamplength
+        FROM
+            t_mm_predict_model t
+        WHERE status=1
+          AND id=#{value}
+    </select>
+
+
+
+</mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelOutDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelOutDao.xml
deleted file mode 100644
index 6d6c33a..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelOutDao.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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.mcs.dao.StModelOutDao">
-	<select id="getAll" resultType="com.iailab.module.mcs.dto.StModelOutDTO">
-        select * from t_st_model_out where model_id = #{modelId}
-        order by sort
-    </select>
-	<delete id="deleteByModelId">
-        delete from t_st_model_out where model_id = #{modelId}
-    </delete>
-    <select id="getOutPoint" parameterType="map" resultType="com.iailab.module.mcs.dto.StModelOutDTO">
-        select t1.result_key,t1.is_write,t1.point_no,t1.disturbance_point_no
-        from t_st_model_out t1
-        left join t_st_model t2 on t2.id = t1.model_id
-        where t2.model_code = #{modelCode} and t1.is_write = '1'
-        order by t1.sort
-    </select>
-
-</mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelParamDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelParamDao.xml
deleted file mode 100644
index d35774d..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelParamDao.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?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.mcs.dao.StModelParamDao">
-	<select id="getAll" resultType="com.iailab.module.mcs.dto.StModelParamDTO">
-        select * from t_st_model_param where model_id = #{modelId} order by param_order,param_port_order
-    </select>
-
-	<delete id="deleteByModelId">
-        delete from t_st_model_param where model_id = #{modelId}
-    </delete>
-
-
-</mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelResultDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelResultDao.xml
deleted file mode 100644
index b093fcc..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelResultDao.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?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.mcs.dao.StModelResultDao">
-
-    <resultMap id="StModelResultEntity" type="com.iailab.module.mcs.entity.StModelResultEntity">
-        <result property="modelId" column="model_id"/>
-        <result property="resultKey" column="result_key"/>
-        <result property="resultValue" column="result_value"/>
-        <result property="resultTime" column="result_time"/>
-    </resultMap>
-
-    <resultMap id="StoreDependableAnalysisDTO" type="com.iailab.module.any.dto.AnyStoreReliabilityDTO">
-        <result property="dateTime" column="dateTime"/>
-        <result property="grade" column="grade"/>
-        <result property="state" column="state"/>
-        <result property="analysis" column="analysis"/>
-    </resultMap>
-
-
-    <select id="getLastResultByCode" parameterType="map" resultType="com.iailab.module.mcs.dto.StModelResultDTO">
-        select t2.result_key resultKey, t2.result_value resultValue, t2.result_time resultTime
-        from t_st_model t1
-                 inner join t_st_model_result t2 on t2.model_id = t1.id and t2.result_time = t1.run_time
-        where t1.model_code = #{modelCode}
-    </select>
-    <select id="getResultByCodeDate" parameterType="map" resultType="com.iailab.module.mcs.dto.StModelResultDTO">
-        select t2.result_key resultKey, t2.result_value resultValue, t2.result_time resultTime
-        from t_st_model t1
-                 inner join t_st_model_result t2 on t2.model_id = t1.id
-        where t1.model_code = #{modelCode}
-          and DATE_FORMAT(t2.result_time, '%Y-%m-%d') = #{resultTime}
-    </select>
-
-    <select id="getResultList" parameterType="map" resultMap="StModelResultEntity">
-        SELECT
-        b.model_id,
-        b.result_key,
-        b.result_value,
-        b.result_time
-        FROM
-        t_st_model_result b
-        left JOIN t_st_model a ON a.id = b.model_id
-        WHERE
-        b.result_key not in ('status', 'tips')
-        <if test="modelId != null and modelId != ''">
-            AND b.model_id = #{modelId}
-        </if>
-        <if test="modelCode != null and modelCode != ''">
-            AND a.model_code = #{modelCode}
-        </if>
-        AND result_time BETWEEN #{startDate} AND #{endDate}
-        ORDER BY
-        b.result_time ${sortType}
-    </select>
-
-    <delete id="cleanModelResult" parameterType="map">
-        delete
-        from t_st_model_result
-        where result_time between #{startdate} and #{enddate}
-    </delete>
-
-    <insert id="insertList" parameterType="list">
-        INSERT INTO `t_st_model_result` (id, `model_id`, `line_index`, `result_key`, `result_value`, `result_time`)
-        VALUES
-        <foreach item="item" collection="list" separator=",">
-            (#{item.id},#{item.modelId},#{item.lineIndex},#{item.resultKey},#{item.resultValue},#{item.resultTime})
-        </foreach>
-    </insert>
-</mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelRunlogDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelRunlogDao.xml
deleted file mode 100644
index 3e88ad7..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelRunlogDao.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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.mcs.dao.StModelRunlogDao">
-    <select id="getLastLog" parameterType="map" resultType="com.iailab.module.mcs.dto.StModelRunlogDTO">
-        select *
-        from t_st_model_runlog
-        where run_type = #{runType}
-        order by run_time desc
-        limit #{limit}
-    </select>
-    <delete id="cleanRunlogTask" parameterType="map">
-        delete
-        from t_st_model_runlog
-        where run_time between #{startdate} and #{enddate}
-    </delete>
-    <select id="queryList" resultType="com.iailab.module.mcs.dto.StModelRunlogDTO" parameterType="map">
-        SELECT a.model_code,a.model_name,b.* FROM t_st_model a,t_st_model_runlog b
-        where a.id = b.modelid
-        <if test="params.modelCode != null and params.modelCode != ''">
-            and a.model_code LIKE concat(concat("%",#{params.modelCode}),"%")
-        </if>
-        <if test="params.modelName != null and params.modelName != ''">
-            and a.model_name LIKE concat(concat("%",#{params.modelName}),"%")
-        </if>
-        <if test="params.startTime != null and params.startTime != ''">
-            and b.run_time &gt;= #{params.startTime}
-        </if>
-        <if test="params.endTime != null and params.endTime != ''">
-            and b.run_time &lt;= #{params.endTime}
-        </if>
-        order by b.run_time desc
-    </select>
-    <select id="listAll" resultType="com.iailab.module.mcs.dto.StModelRunlogDTO" parameterType="map">
-        SELECT a.model_code,a.model_name,b.* FROM t_st_model a,t_st_model_runlog b
-        where a.id = b.modelid
-        <if test="modelCode != null and modelCode != ''">
-            and a.model_code LIKE concat(concat("%",#{modelCode}),"%")
-        </if>
-        <if test="modelName != null and modelName != ''">
-            and a.model_name LIKE concat(concat("%",#{modelName}),"%")
-        </if>
-        order by b.run_time desc
-    </select>
-
-
-</mapper>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelSettingDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelSettingDao.xml
deleted file mode 100644
index a3c2a55..0000000
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StModelSettingDao.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?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.mcs.dao.StModelSettingDao">
-	<select id="getAll" resultType="com.iailab.module.mcs.dto.StModelSettingDTO">
-        select * from t_st_model_setting where model_id = #{modelId}
-        order by setting_key
-    </select>
-	<delete id="deleteByModelId">
-        delete from t_st_model_setting where model_id = #{modelId}
-    </delete>
-
-
-</mapper>
\ No newline at end of file

--
Gitblit v1.9.3