From 08923c6d95dc8f0f415de94e1d4e3230cdcf7a8e Mon Sep 17 00:00:00 2001 From: houzhongjian <houzhongyi@126.com> Date: 星期四, 14 十一月 2024 15:42:58 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictReqDTO.java | 5 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemOutputEntity.java | 21 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestRespDTO.java | 3 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java | 5 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataBarLineRespVO.java | 40 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/MmPredictItemRespVO.java | 15 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictDataDTO.java | 4 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageRespDTO.java | 4 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java | 64 + iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictItemRespDTO.java | 10 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java | 12 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewRespDTO.java | 6 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewReqDTO.java | 8 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultService.java | 3 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestReqDTO.java | 3 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultLastPointDao.java | 16 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/framework/rpc/config/RpcConfiguration.java | 3 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dto/MmPredictItemDTO.java | 2 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmPredictItemDao.xml | 42 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultJsonDao.java | 16 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkPredictModuleRespDTO.java | 3 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemOutputService.java | 8 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemOutputServiceImpl.java | 28 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemNormalHandlerImpl.java | 31 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java | 245 +++++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java | 53 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictModelSettingReqDTO.java | 10 iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/plan/PlanItemApi.java | 7 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModelHandler.java | 8 iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml | 1 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java | 67 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/PredictResultVO.java | 16 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictItemInfoDTO.java | 10 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultLastPointServiceImpl.java | 44 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageReqDTO.java | 4 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultJsonServiceImpl.java | 41 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java | 74 + iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleRespDTO.java | 2 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataBarLineReqVO.java | 34 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultLastPointEntity.java | 42 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java | 24 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/DmModuleService.java | 3 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultLastPointService.java | 17 iailab-module-model/iailab-module-model-biz/db/mysql.sql | 1148 ++++++++++++++---------- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictModelEntity.java | 6 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictItemHandler.java | 8 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictItemEntity.java | 4 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictItemService.java | 2 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleModelSettingReqDTO.java | 11 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java | 24 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultJsonEntity.java | 2 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/MmItemResultDao.xml | 2 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/common/enums/CommonConstant.java | 6 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ItemVO.java | 7 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultJsonService.java | 17 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MpkFileController.java | 4 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleDataConstructor.java | 94 + /dev/null | 22 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java | 64 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultEntity.java | 2 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmPredictItemController.java | 168 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/DmModuleServiceImpl.java | 9 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictItemServiceImpl.java | 36 63 files changed, 1,766 insertions(+), 924 deletions(-) diff --git a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/plan/PlanItemApi.java b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/plan/PlanItemApi.java index a5f8c9b..46c4473 100644 --- a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/plan/PlanItemApi.java +++ b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/api/plan/PlanItemApi.java @@ -1,12 +1,15 @@ package com.iailab.module.data.api.plan; import com.iailab.module.data.api.plan.dto.ApiPlanDataDTO; +import com.iailab.module.data.api.plan.dto.ApiPlanItemDTO; import com.iailab.module.data.common.ApiDataQueryDTO; import com.iailab.module.data.common.ApiDataValueDTO; import com.iailab.module.data.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.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -31,4 +34,8 @@ @PostMapping(PREFIX + "/query-plans/record-value") @Operation(summary = "查询计划记录") LinkedHashMap<String, List<ApiPlanDataDTO>> queryPlanItemRecordValue(@RequestBody ApiDataQueryDTO dto); + + @GetMapping(PREFIX + "/info/no/{itemNo}") + @Operation(summary = "根据测点编号查询测点信息") + ApiPlanItemDTO getInfoByNo(@PathVariable("itemNo") String itemNo); } \ No newline at end of file diff --git a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreq.java b/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreq.java deleted file mode 100644 index 9615258..0000000 --- a/iailab-module-data/iailab-module-data-api/src/main/java/com/iailab/module/data/enums/DataPointFreq.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.iailab.module.data.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 测点频率类型 - */ -@Getter -@AllArgsConstructor -public enum DataPointFreq { - NET10("NET10", 10), - NET30("NET30", 30), - NET60("NET60",60); - - private String code; - - private Integer value; - - public static DataPointFreq getEumByCode(String code) { - if (code == null) { - return null; - } - - for (DataPointFreq statusEnum : DataPointFreq.values()) { - if (statusEnum.getCode().equals(code)) { - return statusEnum; - } - } - return null; - } -} diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java index 99d264b..42bc079 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java @@ -1,6 +1,5 @@ package com.iailab.module.model.api.mcs; -import com.iailab.framework.common.pojo.CommonResult; import com.iailab.module.model.api.mcs.dto.*; import com.iailab.module.model.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; @@ -20,40 +19,39 @@ * @createTime 2024年08月26日 */ @FeignClient(name = ApiConstants.NAME) -@Tag(name = "RPC 服务 - 模型配置接口") +@Tag(name = "RPC 服务 - 模型配置信息接口") public interface McsApi { String PREFIX = ApiConstants.PREFIX + "/mcs"; - @GetMapping(PREFIX + "/predict-item-tree") + @GetMapping(PREFIX + "/predict-item/tree") @Operation(summary = "预测项树") - CommonResult<List<PredictItemTreeDTO>> getPredictItemTree(); + List<PredictItemTreeDTO> getPredictItemTree(); - @GetMapping(PREFIX + "/predict-item-info") - @Operation(summary = "预测项详情") - CommonResult<PredictItemInfoDTO> getPredictItemInfo(@RequestParam Map<String, Object> params); + @PostMapping(PREFIX + "/predict-data/charts") + PreDataBarLineRespVO getPreDataCharts(@RequestBody PreDataBarLineReqVO reqVO); @PostMapping(PREFIX + "/alarm-message/create") @Operation(summary = "添加预警信息") - CommonResult<Boolean> createAlarmMessage(@RequestBody AlarmMessageRespDTO dto); + Boolean createAlarmMessage(@RequestBody AlarmMessageRespDTO dto); @GetMapping(PREFIX + "/alarm-message/list") @Operation(summary = "获取预警信息列表") - CommonResult<AlarmMessageRespDTO> listAlarmMessage(@RequestParam Map<String, Object> params); + List<AlarmMessageRespDTO> listAlarmMessage(@RequestParam Map<String, Object> params); @PostMapping(PREFIX + "/schedule-suggest/create") @Operation(summary = "添加调度建议") - CommonResult<Boolean> createScheduleSuggest(@RequestBody ScheduleSuggestRespDTO dto); + Boolean createScheduleSuggest(@RequestBody ScheduleSuggestRespDTO dto); @GetMapping(PREFIX + "/alarm-message/list") @Operation(summary = "获取调度建议列表") - CommonResult<ScheduleSuggestRespDTO> listScheduleSuggest(@RequestParam ScheduleSuggestReqDTO params); + List<ScheduleSuggestRespDTO> listScheduleSuggest(@RequestParam ScheduleSuggestReqDTO params); @PostMapping(PREFIX + "/predict-model-setting/modify") @Operation(summary = "修改预测模型设置参数") - CommonResult<Boolean> modifyPredictModelSetting(@RequestBody List<PredictModelSettingReqDTO> dtos); + Boolean modifyPredictModelSetting(@RequestBody List<PredictModelSettingReqDTO> dtos); @PostMapping(PREFIX + "/schedule-model-setting/modify") @Operation(summary = "修改调度模型设置参数") - CommonResult<Boolean> modifyScheduleModelSetting(@RequestBody List<ScheduleModelSettingReqDTO> dtos); + Boolean modifyScheduleModelSetting(@RequestBody List<ScheduleModelSettingReqDTO> dtos); } \ 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/AlarmMessageReqDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageReqDTO.java index a55af61..4389fc2 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageReqDTO.java +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageReqDTO.java @@ -1,5 +1,6 @@ package com.iailab.module.model.api.mcs.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -26,11 +27,14 @@ private String itemId; @Schema(description = "预警时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date alarmTime; @Schema(description = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date startTime; @Schema(description = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date endTime; } \ 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/AlarmMessageRespDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageRespDTO.java index c9d164d..a6dc52b 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageRespDTO.java +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/AlarmMessageRespDTO.java @@ -6,6 +6,7 @@ * @createTime 2024年08月29日 */ +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -46,15 +47,18 @@ private BigDecimal currentValue; @Schema(description = "超出时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date outTime; @Schema(description = "超出值") private BigDecimal outValue; @Schema(description = "预警类型") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private String alarmType; @Schema(description = "预警时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 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/PreDataBarLineReqVO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataBarLineReqVO.java new file mode 100644 index 0000000..da490a2 --- /dev/null +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataBarLineReqVO.java @@ -0,0 +1,34 @@ +package com.iailab.module.model.api.mcs.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @author PanZhibao + * @Description + * @createTime 2024年11月13日 + */ +@Data +public class PreDataBarLineReqVO implements Serializable { + private static final long serialVersionUID = 1L; + + @Schema(description = "查询ID列表") + private List<String[]> queryIds; + + @Schema(description = "预测时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date predictTime; + + @Schema(description = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date startTime; + + @Schema(description = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date endTime; +} \ 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/PreDataBarLineRespVO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataBarLineRespVO.java new file mode 100644 index 0000000..c59975f --- /dev/null +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataBarLineRespVO.java @@ -0,0 +1,40 @@ +package com.iailab.module.model.api.mcs.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @author PanZhibao + * @Description + * @createTime 2024年11月13日 + */ +@Data +public class PreDataBarLineRespVO implements Serializable { + private static final long serialVersionUID = 1L; + + @Schema(description = "预测时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date predictTime; + + @Schema(description = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date startTime; + + @Schema(description = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date endTime; + + @Schema(description = "图例") + private List<String> legend; + + @Schema(description = "X轴数据") + private List<String> categories; + + @Schema(description = "图表数据") + private List<PreDataViewRespDTO> dataViewList; +} \ 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 index 3ae56b2..37e8537 100644 --- 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 @@ -1,8 +1,10 @@ package com.iailab.module.model.api.mcs.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serializable; import java.util.Date; /** @@ -12,14 +14,18 @@ */ @Schema(description = "RPC 模型 - 预测数据 DTO") @Data -public class PreDataViewReqDTO { +public class PreDataViewReqDTO implements Serializable { + private static final long serialVersionUID = 1L; @Schema(description = "预测项ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private String itemId; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private String startTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private String endTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 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 index add373f..f01b123 100644 --- 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 @@ -1,8 +1,10 @@ package com.iailab.module.model.api.mcs.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -15,7 +17,8 @@ */ @Schema(description = "RPC 模型 - 预测数据 DTO") @Data -public class PreDataViewRespDTO { +public class PreDataViewRespDTO implements Serializable { + private static final long serialVersionUID = 1L; @Schema(description = "预测项ID") private String itemId; @@ -24,6 +27,7 @@ private String itemName; @Schema(description = "预测时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date predictTime; @Schema(description = "量程上限") 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 index 3e5f060..6d50225 100644 --- 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 @@ -1,14 +1,14 @@ 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; -import java.util.List; -import java.util.Map; /** + * 预测项信息 + * * @author PanZhibao * @Description * @createTime 2024年07月31日 @@ -17,11 +17,15 @@ public class PredictItemInfoDTO implements Serializable { private static final long serialVersionUID = 1L; + @Schema(description = "预测项ID") private String itemId; + @Schema(description = "预测项编号") private String itemNo; + @Schema(description = "预测项名称") private String itemName; + @Schema(description = "预测项长度") 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/PredictModelSettingReqDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictModelSettingReqDTO.java index 5d1f29b..4408e34 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictModelSettingReqDTO.java +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictModelSettingReqDTO.java @@ -3,7 +3,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -16,15 +15,12 @@ public class PredictModelSettingReqDTO implements Serializable { private static final long serialVersionUID = 1L; + @Schema(description = "模型ID") private String modelid; - /** - * 键 - */ + @Schema(description = "键") private String key; - /** - * 值 - */ + @Schema(description = "值") private String value; } \ 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/ScheduleModelSettingReqDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleModelSettingReqDTO.java index bd40728..ff5de3b 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleModelSettingReqDTO.java +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleModelSettingReqDTO.java @@ -1,5 +1,7 @@ package com.iailab.module.model.api.mcs.dto; +import io.swagger.v3.oas.annotations.media.Schema; + import java.io.Serializable; /** @@ -10,15 +12,12 @@ public class ScheduleModelSettingReqDTO implements Serializable { private static final long serialVersionUID = 1L; + @Schema(description = "模型ID") private String modelid; - /** - * 键 - */ + @Schema(description = "键") private String key; - /** - * 值 - */ + @Schema(description = "值") private String value; } \ 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/ScheduleSuggestReqDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestReqDTO.java index ba217bd..7efea0b 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestReqDTO.java +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestReqDTO.java @@ -1,5 +1,6 @@ package com.iailab.module.model.api.mcs.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -26,9 +27,11 @@ private String adjustObj; @Schema(description = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; @Schema(description = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; } \ 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/ScheduleSuggestRespDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestRespDTO.java index a0418c1..bb11c48 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestRespDTO.java +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/ScheduleSuggestRespDTO.java @@ -1,5 +1,6 @@ package com.iailab.module.model.api.mcs.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -61,9 +62,11 @@ private BigDecimal adjustTimes; @Schema(description = "调整开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date adjustStart; @Schema(description = "调整结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date adjustEnd; @Schema(description = "建议时间") 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 index 2391f63..6c03b78 100644 --- 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 @@ -1,5 +1,6 @@ package com.iailab.module.model.api.mdk.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -14,7 +15,10 @@ @Data public class MdkPredictDataDTO { + @Schema(description = "数据时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date dataTime; + @Schema(description = "数据值") 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 index d67c117..9c3202d 100644 --- 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 @@ -1,12 +1,16 @@ package com.iailab.module.model.api.mdk.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.Date; import java.util.List; +import java.util.Map; /** + * 单个预测项预测结果 + * * @author PanZhibao * @Description * @createTime 2024年08月26日 @@ -15,9 +19,13 @@ @Data public class MdkPredictItemRespDTO { + @Schema(description = "预测时间") private String itemId; + @Schema(description = "预测时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date predictTime; - private List<MdkPredictDataDTO> predictData; + @Schema(description = "单个预测项预测结果,KEY为预测项目编码") + private Map<String, 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 index 987fb79..185709f 100644 --- 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 @@ -1,5 +1,6 @@ package com.iailab.module.model.api.mdk.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -15,9 +16,11 @@ @Data public class MdkPredictModuleRespDTO { + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date predictTime; private String moduleType; + @Schema(description = "模块预测结果,KEY为预测项目编码") 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 index 6b44ced..f039812 100644 --- 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 @@ -1,5 +1,6 @@ package com.iailab.module.model.api.mdk.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -17,6 +18,7 @@ @Schema(description = "预测时间") @NotNull(message="预测时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date predictTime; @Schema(description = "预测模块(管网类型)") @@ -24,4 +26,7 @@ @Schema(description = "预测项编号") private String itemNo; + + @Schema(description = "是否返回预测结果") + private Boolean isResult; } \ 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 index 1b88f23..ab3862a 100644 --- 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 @@ -1,5 +1,6 @@ package com.iailab.module.model.api.mdk.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -17,6 +18,7 @@ private String scheduleCode; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date scheduleTime; private Map<String, Object> result; 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 9304163..4dab812 100644 --- a/iailab-module-model/iailab-module-model-biz/db/mysql.sql +++ b/iailab-module-model/iailab-module-model-biz/db/mysql.sql @@ -1,254 +1,254 @@ create table t_dm_module ( - id varchar(36) not null, - modulename varchar(50), - moduletype varchar(30), - cycle decimal(5, 0), - modulenavconfig varchar(3072), - predicttime datetime, - collecttime datetime, - create_time datetime default current_timestamp, - update_time datetime default current_timestamp, - traintime datetime, - primary key (id), - UNIQUE INDEX uk_modulename (modulename), - INDEX idx_moduletype (moduletype) + id varchar(36) not null, + modulename varchar(50), + moduletype varchar(30), + cycle decimal(5, 0), + modulenavconfig varchar(3072), + predicttime datetime, + collecttime datetime, + create_time datetime default current_timestamp, + update_time datetime default current_timestamp, + traintime datetime, + primary key (id), + UNIQUE INDEX uk_modulename (modulename), + INDEX idx_moduletype (moduletype) ) engine = innodb default character set utf8mb4 COMMENT = '管网表'; create table t_dm_module_item ( - id varchar(36) not null, - moduleid varchar(36), - itemid varchar(36), - itemorder bigint, - status bigint, - categoryid varchar(64), - primary key (id), - key idx_moduleid (moduleid) + id varchar(36) not null, + moduleid varchar(36), + itemid varchar(36), + itemorder bigint, + status bigint, + categoryid varchar(64), + primary key (id), + key idx_moduleid (moduleid) ) engine = innodb default character set utf8mb4 COMMENT = '管网预测项关系表'; create table t_mm_item_output ( - id varchar(36) not null, - itemid varchar(36), - pointid varchar(36), - resulttableid varchar(36), - tagname varchar(50), - outputorder decimal(5, 0), - primary key (id), - INDEX idx_itemid (itemid) + id varchar(36) not null, + itemid varchar(36), + pointid varchar(36), + resulttableid varchar(36), + tagname varchar(50), + outputorder decimal(5, 0), + primary key (id), + INDEX idx_itemid (itemid) ) engine = innodb default character set utf8mb4 COMMENT = '预测项输出表'; create table t_mm_item_result ( - id varchar(36) not null, - outputid varchar(36), - datatime datetime, - datavalue decimal(19, 3), - primary key (id), - INDEX idx_outputid (outputid), - INDEX idx_datatime (datatime) + id varchar(36) not null, + outputid varchar(36), + datatime datetime, + datavalue decimal(19, 3), + primary key (id), + INDEX idx_outputid (outputid), + INDEX idx_datatime (datatime) ) engine = innodb default character set utf8mb4 COMMENT = '预测结果表'; create table t_mm_item_type ( - id varchar(36) not null, - itemtypename varchar(50), - itemclasstype varchar(100), - assemblyname varchar(64), - primary key (id) + id varchar(36) not null, + itemtypename varchar(50), + itemclasstype varchar(100), + assemblyname varchar(64), + primary key (id) ) engine = innodb default character set utf8mb4 COMMENT = '预测项类型表'; create table t_mm_model_arith_settings ( - id varchar(36) not null, - modelid varchar(36), - `key` varchar(36), - value varchar(256), - name varchar(36), - valuetype varchar(36), - primary key (id), - INDEX idx_modelid (modelid) + id varchar(36) not null, + modelid varchar(36), + `key` varchar(36), + value varchar(256), + name varchar(36), + valuetype varchar(36), + primary key (id), + INDEX idx_modelid (modelid) ) engine = innodb default character set utf8mb4 COMMENT = '预测模型设置参数表'; create table t_mm_model_param ( - id varchar(36) not null, - modelid varchar(36), - modelparamname varchar(36), - modelparamid varchar(36), - modelparamorder integer, - modelparamportorder integer, - datalength integer, - modelparamtype varchar(36), - primary key (id), - INDEX idx_modelid (modelid) + id varchar(36) not null, + modelid varchar(36), + modelparamname varchar(36), + modelparamid varchar(36), + modelparamorder integer, + modelparamportorder integer, + datalength integer, + modelparamtype varchar(36), + primary key (id), + INDEX idx_modelid (modelid) ) engine = innodb default character set utf8mb4 COMMENT = '预测模型输入参数表'; create table t_mm_model_resultstr ( - id varchar(64) not null, - resultstr varchar(64), - primary key (id) + id varchar(64) not null, + resultstr varchar(64), + primary key (id) ) engine = innodb default character set utf8mb4 COMMENT = '预测模型结果字符串表'; create table - t_mm_predict_item + t_mm_predict_item ( - id varchar(36) not null, - itemno varchar(16), - itemname varchar(50), - caltypeid varchar(36), - itemtypeid varchar(36), - predictlength int, - granularity int, - status tinyint, - isfuse tinyint, - predictphase tinyint, - workchecked tinyint, - unittransfactor decimal(16, 6), - create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - saveindex varchar(16), - primary key (id), - UNIQUE INDEX uk_itemno (itemno), - INDEX uk_itemtypeid (itemtypeid) + id varchar(36) not null, + itemno varchar(16), + itemname varchar(50), + caltypeid varchar(36), + itemtypeid varchar(36), + predictlength int, + granularity int, + status tinyint, + isfuse tinyint, + predictphase tinyint, + workchecked tinyint, + unittransfactor decimal(16, 6), + create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + saveindex varchar(16), + primary key (id), + UNIQUE INDEX uk_itemno (itemno), + INDEX uk_itemtypeid (itemtypeid) ) engine = innodb default character set utf8mb4 COMMENT = '预测项表'; create table - t_mm_predict_merge_item + t_mm_predict_merge_item ( - id varchar(36) not null, - itemid varchar(36), - expression varchar(255), - num integer, - primary key (id), - UNIQUE INDEX uk_itemid (itemid) + id varchar(36) not null, + itemid varchar(36), + expression varchar(255), + num integer, + primary key (id), + UNIQUE INDEX uk_itemid (itemid) ) engine = innodb default character set utf8mb4 COMMENT = '合并预测项表'; create table - t_mm_predict_model + t_mm_predict_model ( - id varchar(36) not null, - modelno varchar(32), - modelname varchar(50), - itemid varchar(36), - arithid varchar(36), - trainsamplength decimal(5, 0), - predictsamplength decimal(5, 0), - isonlinetrain decimal(5, 0), - modelpath varchar(256), - isnormal decimal(5, 0), - normalmax decimal(19, 3), - normalmin decimal(19, 3), - status decimal(5, 0), - classname varchar(256), - methodname varchar(64), - modelparamstructure varchar(128), - resultstrid varchar(64), - settingmap varchar(256), - trainmodelpath varchar(256), - pathstatus decimal(5, 0), - pdim smallint, - traninip varchar(16), - comparisonclassname varchar(256), - primary key (id), - INDEX idx_modelno (modelno), - UNIQUE INDEX idx_itemid (itemid) + id varchar(36) not null, + modelno varchar(32), + modelname varchar(50), + itemid varchar(36), + arithid varchar(36), + trainsamplength decimal(5, 0), + predictsamplength decimal(5, 0), + isonlinetrain decimal(5, 0), + modelpath varchar(256), + isnormal decimal(5, 0), + normalmax decimal(19, 3), + normalmin decimal(19, 3), + status decimal(5, 0), + classname varchar(256), + methodname varchar(64), + modelparamstructure varchar(128), + resultstrid varchar(64), + settingmap varchar(256), + trainmodelpath varchar(256), + pathstatus decimal(5, 0), + pdim smallint, + traninip varchar(16), + comparisonclassname varchar(256), + primary key (id), + INDEX idx_modelno (modelno), + UNIQUE INDEX idx_itemid (itemid) ) engine = innodb default character set utf8mb4 COMMENT = '预测项模型表'; create table t_mm_result_table ( - id varchar(36) not null, - tablename varchar(30), - primary key (id) + id varchar(36) not null, + tablename varchar(30), + primary key (id) ) engine = innodb default character set utf8mb4 COMMENT = '预测结果存放表'; create table t_mm_item_result_json ( - id varchar(36) not null, - outputid varchar(36), - predicttime datetime, - jsonvalue varchar(6400), - cumulant varchar(36), - primary key (id), - INDEX idx_outputid (outputid), - INDEX idx_predicttime (predicttime) + id varchar(36) not null, + outputid varchar(36), + predicttime datetime, + jsonvalue varchar(6400), + cumulant varchar(36), + primary key (id), + INDEX idx_outputid (outputid), + INDEX idx_predicttime (predicttime) ) engine = innodb default character set utf8mb4 COMMENT = '预测JSON数据表'; create table - t_mm_item_result_last_point + t_mm_item_result_last_point ( - id varchar(36) not null, - outputid varchar(36), - datatime datetime, - datavalue decimal(19, 3), - primary key (id), - INDEX idx_outputid (outputid), - INDEX idx_datatime (datatime) + id varchar(36) not null, + outputid varchar(36), + datatime datetime, + datavalue decimal(19, 3), + primary key (id), + INDEX idx_outputid (outputid), + INDEX idx_datatime (datatime) ) engine = innodb default character set utf8mb4 COMMENT = '预测T+L数据表'; create table t_mm_item_accuracy_rate ( - id varchar(36) not null, - item_id varchar(36) not null COMMENT '预测项ID', - sample_length integer COMMENT '样本长度', - value_type integer COMMENT '值类型', - in_deviation decimal(8, 3) COMMENT '精准误差', - in_accuracy_rate decimal(6, 4) COMMENT '精准度', - out_deviation decimal(8, 3) COMMENT '不可信误差', - out_accuracy_rate decimal(6, 4) COMMENT '不可信率', - is_enable tinyint, - update_time datetime, - begin_time datetime, - primary key (id), - INDEX idx_item_id (item_id) + id varchar(36) not null, + item_id varchar(36) not null COMMENT '预测项ID', + sample_length integer COMMENT '样本长度', + value_type integer COMMENT '值类型', + in_deviation decimal(8, 3) COMMENT '精准误差', + in_accuracy_rate decimal(6, 4) COMMENT '精准度', + out_deviation decimal(8, 3) COMMENT '不可信误差', + out_accuracy_rate decimal(6, 4) COMMENT '不可信率', + is_enable tinyint, + update_time datetime, + begin_time datetime, + primary key (id), + INDEX idx_item_id (item_id) ) engine = innodb default character set utf8mb4 COMMENT = '预测精准度表'; create table t_mm_predict_alarm_config ( - id varchar(36) not null, - title varchar(20) 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) + id varchar(36) not null, + title varchar(20) 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), - INDEX idx_item_id (item_id), - INDEX idx_alarm_obj (alarm_obj), - INDEX idx_alarm_time (alarm_time) + 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), + INDEX idx_item_id (item_id), + INDEX idx_alarm_obj (alarm_obj), + INDEX idx_alarm_time (alarm_time) ) engine = innodb default character set utf8mb4 COMMENT = '预警消息表'; @@ -257,270 +257,392 @@ create table t_st_schedule_scheme ( - `id` varchar(36) not null COMMENT 'ID', - `code` varchar(20) not null COMMENT '编号', - `name` varchar(20) not null COMMENT '名称', - `trigger_method` varchar(20) COMMENT '触发方式', - `trigger_condition` varchar(20) COMMENT '触发条件', - `schedule_obj` varchar(20) COMMENT '调整对象', - `schedule_type` varchar(20) COMMENT '调整类型', - `schedule_strategy` varchar(20) COMMENT '调整策略', - `model_id` varchar(36) COMMENT '调度模型', - `schedule_time` datetime COMMENT '调度时间', - `status` tinyint NOT NULL DEFAULT 0 COMMENT '方案状态(0正常 1停用)', - `remark` varchar(100) COMMENT '备注', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - primary key (id), - UNIQUE INDEX `uk_code` (`code` ASC) USING BTREE + `id` varchar(36) not null COMMENT 'ID', + `code` varchar(20) not null COMMENT '编号', + `name` varchar(20) not null COMMENT '名称', + `trigger_method` varchar(20) COMMENT '触发方式', + `trigger_condition` varchar(20) COMMENT '触发条件', + `schedule_obj` varchar(20) COMMENT '调整对象', + `schedule_type` varchar(20) COMMENT '调整类型', + `schedule_strategy` varchar(20) COMMENT '调整策略', + `model_id` varchar(36) COMMENT '调度模型', + `schedule_time` datetime COMMENT '调度时间', + `status` tinyint NOT NULL DEFAULT 0 COMMENT '方案状态(0正常 1停用)', + `remark` varchar(100) COMMENT '备注', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + primary key (id), + UNIQUE INDEX `uk_code` (`code` ASC) USING BTREE ) engine = innodb default character set utf8mb4 COMMENT = '调度方案表'; create table t_st_schedule_model ( - `id` varchar(36) not null COMMENT 'ID', - `model_code` varchar(64) not null COMMENT '模型编号', - `model_name` varchar(64) not null COMMENT '模型名称', - `model_type` varchar(64) COMMENT '模型类型', - `class_name` varchar(128) COMMENT '类名', - `method_name` varchar(64) COMMENT '方法名', - `port_length` integer COMMENT '输入数量', - `param_structure` varchar(256) COMMENT '参数构造', - `model_path` varchar(256) COMMENT '路径', - `result_str_id` varchar(64) COMMENT '结果ID', - `invocation` varchar(64) COMMENT '调用方式', - `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0正常 1停用)', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - primary key (id), - UNIQUE INDEX `uk_model_code` (`model_code` ASC) USING BTREE + `id` varchar(36) not null COMMENT 'ID', + `model_code` varchar(64) not null COMMENT '模型编号', + `model_name` varchar(64) not null COMMENT '模型名称', + `model_type` varchar(64) COMMENT '模型类型', + `class_name` varchar(128) COMMENT '类名', + `method_name` varchar(64) COMMENT '方法名', + `port_length` integer COMMENT '输入数量', + `param_structure` varchar(256) COMMENT '参数构造', + `model_path` varchar(256) COMMENT '路径', + `result_str_id` varchar(64) COMMENT '结果ID', + `invocation` varchar(64) COMMENT '调用方式', + `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0正常 1停用)', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + primary key (id), + UNIQUE INDEX `uk_model_code` (`model_code` ASC) USING BTREE ) engine = innodb default character set utf8mb4 COMMENT = '调度模型表'; create table - t_st_schedule_model_param + t_st_schedule_model_param ( - id varchar(36) not null, - modelid varchar(64) not null, - modelparamname varchar(64), - modelparamid varchar(64), - modelparamorder integer, - modelparamportorder integer, - datalength integer, - modelparamtype varchar(64), - primary key (id) + id varchar(36) not null, + modelid varchar(64) not null, + modelparamname varchar(64), + modelparamid varchar(64), + modelparamorder integer, + modelparamportorder integer, + datalength integer, + modelparamtype varchar(64), + primary key (id) ) engine = innodb default character set utf8mb4 COMMENT = '调度模型输入参数表'; create table - t_st_schedule_model_setting + t_st_schedule_model_setting ( - `id` varchar(36) not null, - `modelid` varchar(64) not null, - `key` varchar(64), - `value` varchar(64), - `valuetype` varchar(64), - `name` varchar(64), - `sort` integer, - primary key (id), - key idx_modelid (modelid) + `id` varchar(36) not null, + `modelid` varchar(64) not null, + `key` varchar(64), + `value` varchar(64), + `valuetype` varchar(64), + `name` varchar(64), + `sort` integer, + primary key (id), + key idx_modelid (modelid) ) engine = innodb default character set utf8mb4 COMMENT = '调度模型设置参数表'; create table - t_st_schedule_suggest + t_st_schedule_suggest ( - id varchar(36) not null, - title varchar(50) COMMENT '标题', - content varchar(256) COMMENT '内容', - sort integer COMMENT '排序', - scheme_id varchar(36) COMMENT '方案ID', - alarm_id varchar(36) COMMENT '预警ID', - item_id varchar(36) COMMENT '预测项ID', - model_id varchar(36) COMMENT '模型ID', - schedule_obj varchar(20) COMMENT '调整对象', - schedule_type varchar(20) COMMENT '调整类型', - schedule_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 '调整结束时间', - schedule_time datetime COMMENT '调度时间', - status tinyint NOT NULL COMMENT '状态(0未处理 1已采纳 2已忽略)', - handler varchar(36) COMMENT '处理人', - handle_time datetime COMMENT '处理时间', - create_time datetime default current_timestamp COMMENT '创建时间', - primary key (id), - INDEX idx_scheme_id (scheme_id), - INDEX idx_alarm_id (alarm_id), - INDEX idx_item_id (item_id), - INDEX idx_model_id (model_id), - INDEX idx_schedule_obj (schedule_obj), - INDEX idx_schedule_type (schedule_type) + id varchar(36) not null, + title varchar(50) COMMENT '标题', + content varchar(256) COMMENT '内容', + sort integer COMMENT '排序', + scheme_id varchar(36) COMMENT '方案ID', + alarm_id varchar(36) COMMENT '预警ID', + item_id varchar(36) COMMENT '预测项ID', + model_id varchar(36) COMMENT '模型ID', + schedule_obj varchar(20) COMMENT '调整对象', + schedule_type varchar(20) COMMENT '调整类型', + schedule_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 '调整结束时间', + schedule_time datetime COMMENT '调度时间', + status tinyint NOT NULL COMMENT '状态(0未处理 1已采纳 2已忽略)', + handler varchar(36) COMMENT '处理人', + handle_time datetime COMMENT '处理时间', + create_time datetime default current_timestamp COMMENT '创建时间', + primary key (id), + INDEX idx_scheme_id (scheme_id), + INDEX idx_alarm_id (alarm_id), + INDEX idx_item_id (item_id), + INDEX idx_model_id (model_id), + INDEX idx_schedule_obj (schedule_obj), + INDEX idx_schedule_type (schedule_type) ) engine = innodb default character set utf8mb4 COMMENT = '调度建议表'; create table - t_st_schedule_record + t_st_schedule_record ( - `id` varchar(36) not null, - `scheme_id` varchar(36) COMMENT '方案ID', - `model_id` varchar(36) COMMENT '模型ID', - `model_name` varchar(64) COMMENT '模型名称', - `schedule_time` datetime COMMENT '调度时间', - `create_time` datetime default current_timestamp COMMENT '创建时间', - primary key (id), - INDEX idx_scheme_id (scheme_id), - INDEX idx_model_id (model_id), - INDEX idx_schedule_time (schedule_time) + `id` varchar(36) not null, + `scheme_id` varchar(36) COMMENT '方案ID', + `model_id` varchar(36) COMMENT '模型ID', + `model_name` varchar(64) COMMENT '模型名称', + `schedule_time` datetime COMMENT '调度时间', + `create_time` datetime default current_timestamp COMMENT '创建时间', + primary key (id), + INDEX idx_scheme_id (scheme_id), + INDEX idx_model_id (model_id), + INDEX idx_schedule_time (schedule_time) ) engine = innodb default character set utf8mb4 COMMENT = '调度记录表'; create table - t_st_schedule_record_detail + t_st_schedule_record_detail ( - `id` varchar(36) not null, - `record_id` varchar(36), - `scheme_id` varchar(64), - `model_id` varchar(36) COMMENT '模型ID', - `result_key` varchar(64), - `result_value` text, - `schedule_time` datetime COMMENT '调度时间', - primary key (id), - key idx_record_id (record_id), - key idx_scheme_id (scheme_id), - key idx_model_id (model_id) + `id` varchar(36) not null, + `record_id` varchar(36), + `scheme_id` varchar(64), + `model_id` varchar(36) COMMENT '模型ID', + `result_key` varchar(64), + `result_value` text, + `schedule_time` datetime COMMENT '调度时间', + primary key (id), + key idx_record_id (record_id), + key idx_scheme_id (scheme_id), + key idx_model_id (model_id) ) engine = innodb default character set utf8mb4 COMMENT = '调度记录详情表'; -- mpk -- menu -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1803317368415416369, '模型库', '', 2, 20, 1803317368415416363, 'mpk', 'ep:folder', 'mpk/mpk', 'Mpk', 0, b'1', b'1', b'1', '1', '2024-08-31 16:50:38', '1', '2024-09-10 14:53:17', b'0'); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1803317368415416370, 'MPK查询', 'mpk:query', 3, 0, 1803317368415416369, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-09-02 10:14:00', '1', '2024-09-06 11:50:19', b'0'); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1803317368415416371, 'MPK新增', 'mpk:create', 3, 1, 1803317368415416369, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-09-02 10:14:25', '1', '2024-09-06 11:50:28', b'0'); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1803317368415416372, 'MPK修改', 'mpk:update', 3, 2, 1803317368415416369, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-09-02 10:14:44', '1', '2024-09-06 11:50:38', b'0'); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1803317368415416373, 'MPK删除', 'mpk:delete', 3, 3, 1803317368415416369, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-09-02 10:15:04', '1', '2024-09-06 11:50:46', b'0'); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1803317368415416374, '项目管理', '', 2, 30, 1803317368415416363, 'project', 'ep:document-copy', 'mpk/project', 'Project', 0, b'1', b'1', b'1', '1', '2024-09-10 14:44:54', '1', '2024-09-10 14:53:26', b'0'); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1803317368415416375, '项目查询', 'project:query', 3, 0, 1803317368415416374, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-09-10 14:45:53', '1', '2024-09-10 14:45:53', b'0'); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1803317368415416376, '项目新增', 'project:create', 3, 1, 1803317368415416374, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-09-10 14:46:16', '1', '2024-09-10 14:46:16', b'0'); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1803317368415416377, '项目修改', 'project:update', 3, 2, 1803317368415416374, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-09-10 14:46:33', '1', '2024-09-10 14:46:33', b'0'); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1803317368415416378, '项目删除', 'project:delete', 3, 3, 1803317368415416374, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-09-10 14:46:47', '1', '2024-09-10 14:46:47', b'0'); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES (1803317368415416369, '模型库', '', 2, 20, 1803317368415416363, 'mpk', 'ep:folder', 'mpk/mpk', 'Mpk', 0, b'1', + b'1', b'1', '1', '2024-08-31 16:50:38', '1', '2024-09-10 14:53:17', b'0'); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES (1803317368415416370, 'MPK查询', 'mpk:query', 3, 0, 1803317368415416369, '', '', '', '', 0, b'1', b'1', b'1', + '1', '2024-09-02 10:14:00', '1', '2024-09-06 11:50:19', b'0'); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES (1803317368415416371, 'MPK新增', 'mpk:create', 3, 1, 1803317368415416369, '', '', '', '', 0, b'1', b'1', b'1', + '1', '2024-09-02 10:14:25', '1', '2024-09-06 11:50:28', b'0'); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES (1803317368415416372, 'MPK修改', 'mpk:update', 3, 2, 1803317368415416369, '', '', '', '', 0, b'1', b'1', b'1', + '1', '2024-09-02 10:14:44', '1', '2024-09-06 11:50:38', b'0'); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES (1803317368415416373, 'MPK删除', 'mpk:delete', 3, 3, 1803317368415416369, '', '', '', '', 0, b'1', b'1', b'1', + '1', '2024-09-02 10:15:04', '1', '2024-09-06 11:50:46', b'0'); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES (1803317368415416374, '项目管理', '', 2, 30, 1803317368415416363, 'project', 'ep:document-copy', 'mpk/project', + 'Project', 0, b'1', b'1', b'1', '1', '2024-09-10 14:44:54', '1', '2024-09-10 14:53:26', b'0'); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES (1803317368415416375, '项目查询', 'project:query', 3, 0, 1803317368415416374, '', '', '', '', 0, b'1', b'1', + b'1', '1', '2024-09-10 14:45:53', '1', '2024-09-10 14:45:53', b'0'); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES (1803317368415416376, '项目新增', 'project:create', 3, 1, 1803317368415416374, '', '', '', '', 0, b'1', b'1', + b'1', '1', '2024-09-10 14:46:16', '1', '2024-09-10 14:46:16', b'0'); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES (1803317368415416377, '项目修改', 'project:update', 3, 2, 1803317368415416374, '', '', '', '', 0, b'1', b'1', + b'1', '1', '2024-09-10 14:46:33', '1', '2024-09-10 14:46:33', b'0'); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES (1803317368415416378, '项目删除', 'project:delete', 3, 3, 1803317368415416374, '', '', '', '', 0, b'1', b'1', + b'1', '1', '2024-09-10 14:46:47', '1', '2024-09-10 14:46:47', b'0'); -- config --INSERT INTO `iailab_plat_system`.`infra_config` (`id`, `category`, `type`, `name`, `config_key`, `value`, `visible`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (13, 'model', 2, 'model文件备份路径', 'mpkBakFilePath', 'C:\\DLUT\\mpkBakFile', b'1', 'model文件备份路径', '1', '2024-09-12 11:10:25', '1', '2024-09-12 11:10:25', b'0'); -- dist -INSERT INTO `iailab_plat_system`.`system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (618, '模型方法', 'model_method', 0, '', '1', '2024-09-09 16:11:55', '1', '2024-09-09 16:11:55', b'0', '1970-01-01 00:00:00'); -INSERT INTO `iailab_plat_system`.`system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (619, '模型类型', 'model_type', 0, '', '1', '2024-09-13 14:14:26', '1', '2024-09-13 14:14:26', b'0', '1970-01-01 00:00:00'); -INSERT INTO `iailab_plat_system`.`system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (620, '模型方法输入类型', 'model_method_setting_type', 0, '', '1', '2024-09-13 15:41:38', '1', '2024-09-13 15:41:38', b'0', '1970-01-01 00:00:00'); -INSERT INTO `iailab_plat_system`.`system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (621, '模型方法参数类型', 'model_method_setting_value_type', 0, '', '1', '2024-09-13 15:42:27', '1', '2024-09-13 15:42:27', b'0', '1970-01-01 00:00:00'); +INSERT INTO `iailab_plat_system`.`system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`, `deleted_time`) +VALUES (618, '模型方法', 'model_method', 0, '', '1', '2024-09-09 16:11:55', '1', '2024-09-09 16:11:55', b'0', + '1970-01-01 00:00:00'); +INSERT INTO `iailab_plat_system`.`system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`, `deleted_time`) +VALUES (619, '模型类型', 'model_type', 0, '', '1', '2024-09-13 14:14:26', '1', '2024-09-13 14:14:26', b'0', + '1970-01-01 00:00:00'); +INSERT INTO `iailab_plat_system`.`system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`, `deleted_time`) +VALUES (620, '模型方法输入类型', 'model_method_setting_type', 0, '', '1', '2024-09-13 15:41:38', '1', + '2024-09-13 15:41:38', b'0', '1970-01-01 00:00:00'); +INSERT INTO `iailab_plat_system`.`system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`, `deleted_time`) +VALUES (621, '模型方法参数类型', 'model_method_setting_value_type', 0, '', '1', '2024-09-13 15:42:27', '1', + '2024-09-13 15:42:27', b'0', '1970-01-01 00:00:00'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1536, 1, 'train', 'train', 'model_method', 0, '', '', '', '1', '2024-09-09 16:12:42', '1', '2024-09-09 16:12:42', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1537, 3, 'control', 'control', 'model_method', 0, '', '', '', '1', '2024-09-09 16:12:54', '1', '2024-09-09 16:13:10', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1538, 2, 'predict', 'predict', 'model_method', 0, '', '', '', '1', '2024-09-09 16:13:05', '1', '2024-09-09 16:13:05', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1539, 1, '预测模型', 'predict', 'model_type', 0, '', '', '', '1', '2024-09-13 14:14:58', '1', '2024-09-13 14:14:58', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1540, 2, '调度模型', 'schedul', 'model_type', 0, '', '', '', '1', '2024-09-13 14:17:53', '1', '2024-09-13 14:17:53', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1541, 1, 'input', 'input', 'model_method_setting_type', 0, '', '', '', '1', '2024-09-13 15:44:08', '1', '2024-09-13 15:44:08', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1542, 2, 'select', 'select', 'model_method_setting_type', 0, '', '', '', '1', '2024-09-13 15:44:17', '1', '2024-09-13 15:44:17', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1543, 3, 'file', 'file', 'model_method_setting_type', 0, '', '', '', '1', '2024-09-13 15:44:24', '1', '2024-09-13 15:44:24', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1544, 1, 'int', 'int', 'model_method_setting_value_type', 0, '', '', '', '1', '2024-09-13 15:44:42', '1', '2024-09-13 15:44:42', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1545, 5, 'file', 'file', 'model_method_setting_value_type', 0, '', '', '', '1', '2024-09-13 15:44:57', '1', '2024-09-14 14:16:24', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1546, 3, 'decimal', 'decimal', 'model_method_setting_value_type', 0, '', '', '', '1', '2024-09-13 15:45:21', '1', '2024-09-13 15:45:21', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1547, 4, 'decimalArray', 'decimalArray', 'model_method_setting_value_type', 0, '', '', '', '1', '2024-09-13 15:45:26', '1', '2024-09-13 15:45:26', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1548, 2, 'string', 'string', 'model_method_setting_value_type', 0, '', '', '', '1', '2024-09-13 15:45:36', '1', '2024-09-14 14:16:30', b'0'); -INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1549, 4, 'schedul', 'schedul', 'model_method', 0, '', '', '', '1', '2024-09-14 14:56:44', '1', '2024-09-14 14:56:44', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1536, 1, 'train', 'train', 'model_method', 0, '', '', '', '1', '2024-09-09 16:12:42', '1', + '2024-09-09 16:12:42', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1537, 3, 'control', 'control', 'model_method', 0, '', '', '', '1', '2024-09-09 16:12:54', '1', + '2024-09-09 16:13:10', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1538, 2, 'predict', 'predict', 'model_method', 0, '', '', '', '1', '2024-09-09 16:13:05', '1', + '2024-09-09 16:13:05', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1539, 1, '预测模型', 'predict', 'model_type', 0, '', '', '', '1', '2024-09-13 14:14:58', '1', + '2024-09-13 14:14:58', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1540, 2, '调度模型', 'schedul', 'model_type', 0, '', '', '', '1', '2024-09-13 14:17:53', '1', + '2024-09-13 14:17:53', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1541, 1, 'input', 'input', 'model_method_setting_type', 0, '', '', '', '1', '2024-09-13 15:44:08', '1', + '2024-09-13 15:44:08', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1542, 2, 'select', 'select', 'model_method_setting_type', 0, '', '', '', '1', '2024-09-13 15:44:17', '1', + '2024-09-13 15:44:17', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1543, 3, 'file', 'file', 'model_method_setting_type', 0, '', '', '', '1', '2024-09-13 15:44:24', '1', + '2024-09-13 15:44:24', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1544, 1, 'int', 'int', 'model_method_setting_value_type', 0, '', '', '', '1', '2024-09-13 15:44:42', '1', + '2024-09-13 15:44:42', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1545, 5, 'file', 'file', 'model_method_setting_value_type', 0, '', '', '', '1', '2024-09-13 15:44:57', '1', + '2024-09-14 14:16:24', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1546, 3, 'decimal', 'decimal', 'model_method_setting_value_type', 0, '', '', '', '1', '2024-09-13 15:45:21', + '1', '2024-09-13 15:45:21', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1547, 4, 'decimalArray', 'decimalArray', 'model_method_setting_value_type', 0, '', '', '', '1', + '2024-09-13 15:45:26', '1', '2024-09-13 15:45:26', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1548, 2, 'string', 'string', 'model_method_setting_value_type', 0, '', '', '', '1', '2024-09-13 15:45:36', '1', + '2024-09-14 14:16:30', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, + `color_type`, `css_class`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1549, 4, 'schedul', 'schedul', 'model_method', 0, '', '', '', '1', '2024-09-14 14:56:44', '1', + '2024-09-14 14:56:44', b'0'); -- 业务表 DROP TABLE IF EXISTS `t_mpk_file`; -CREATE TABLE `t_mpk_file` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `py_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型名称', - `py_chinese_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型中文名称', - `file_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '源文件保存路径', - `py_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型类型', - `pkg_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '包名', - `class_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类名', - `py_module` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型路径', - `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'icon图片名', - `menu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所属菜单', - `group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所属组', - `remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - `creator` bigint NULL DEFAULT NULL COMMENT '创建者', - `create_date` datetime NULL DEFAULT NULL COMMENT '创建时间', - `updater` bigint NULL DEFAULT NULL COMMENT '更新者', - `update_date` datetime NULL DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `uk_py_name`(`py_name` ASC) USING BTREE, - INDEX `idx_create_date`(`create_date` ASC) USING BTREE +CREATE TABLE `t_mpk_file` +( + `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', + `py_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型名称', + `py_chinese_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型中文名称', + `file_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '源文件保存路径', + `py_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型类型', + `pkg_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '包名', + `class_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类名', + `py_module` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型路径', + `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'icon图片名', + `menu_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所属菜单', + `group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所属组', + `remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint NULL DEFAULT NULL COMMENT '创建者', + `create_date` datetime NULL DEFAULT NULL COMMENT '创建时间', + `updater` bigint NULL DEFAULT NULL COMMENT '更新者', + `update_date` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_py_name`(`py_name` ASC) USING BTREE, + INDEX `idx_create_date`(`create_date` ASC) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'MDK模型文件' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Table structure for t_mpk_generator_code_history -- ---------------------------- DROP TABLE IF EXISTS `t_mpk_generator_code_history`; -CREATE TABLE `t_mpk_generator_code_history` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `mdk_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'mdk_id', - `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件名', - `file_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件保存路径', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - `create_time` timestamp NULL DEFAULT NULL COMMENT '生成时间', - PRIMARY KEY (`id`, `mdk_id`) USING BTREE, - INDEX `del_code_history`(`mdk_id` ASC) USING BTREE, - CONSTRAINT `del_code_history` FOREIGN KEY (`mdk_id`) REFERENCES `t_mpk_file` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT +CREATE TABLE `t_mpk_generator_code_history` +( + `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', + `mdk_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'mdk_id', + `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件名', + `file_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件保存路径', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` timestamp NULL DEFAULT NULL COMMENT '生成时间', + PRIMARY KEY (`id`, `mdk_id`) USING BTREE, + INDEX `del_code_history`(`mdk_id` ASC) USING BTREE, + CONSTRAINT `del_code_history` FOREIGN KEY (`mdk_id`) REFERENCES `t_mpk_file` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '生成代码记录表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Table structure for t_mpk_model_method -- ---------------------------- DROP TABLE IF EXISTS `t_mpk_model_method`; -CREATE TABLE `t_mpk_model_method` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `mpk_file_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '模型文件id', - `method_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型方法名', - `data_length` int NULL DEFAULT 1 COMMENT '输入个数', - `model` int NULL DEFAULT 0 COMMENT '是否有model(0:否,1:是)', - `result_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '结果key', - `sort` integer, - PRIMARY KEY (`id`, `mpk_file_id`) USING BTREE, - INDEX `id`(`id` ASC) USING BTREE, - INDEX `idx_method`(`mpk_file_id` ASC) USING BTREE, - CONSTRAINT `del_method` FOREIGN KEY (`mpk_file_id`) REFERENCES `t_mpk_file` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT +CREATE TABLE `t_mpk_model_method` +( + `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', + `mpk_file_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '模型文件id', + `method_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型方法名', + `data_length` int NULL DEFAULT 1 COMMENT '输入个数', + `model` int NULL DEFAULT 0 COMMENT '是否有model(0:否,1:是)', + `result_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '结果key', + `sort` integer, + PRIMARY KEY (`id`, `mpk_file_id`) USING BTREE, + INDEX `id`(`id` ASC) USING BTREE, + INDEX `idx_method`(`mpk_file_id` ASC) USING BTREE, + CONSTRAINT `del_method` FOREIGN KEY (`mpk_file_id`) REFERENCES `t_mpk_file` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for t_mpk_method_setting -- ---------------------------- DROP TABLE IF EXISTS `t_mpk_method_setting`; -CREATE TABLE `t_mpk_method_setting` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `method_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '方法id', - `setting_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'key', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数名称', - `value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数默认值', - `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '输入类型', - `value_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数类型', - `max` int NULL DEFAULT NULL COMMENT '最大值', - `min` int NULL DEFAULT NULL COMMENT '最小值', - `sort` integer, - PRIMARY KEY (`id`, `method_id`) USING BTREE, - INDEX `del_setting`(`method_id` ASC) USING BTREE, - INDEX `id`(`id` ASC) USING BTREE, - CONSTRAINT `del_setting` FOREIGN KEY (`method_id`) REFERENCES `t_mpk_model_method` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT +CREATE TABLE `t_mpk_method_setting` +( + `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', + `method_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '方法id', + `setting_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'key', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数名称', + `value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数默认值', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '输入类型', + `value_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '参数类型', + `max` int NULL DEFAULT NULL COMMENT '最大值', + `min` int NULL DEFAULT NULL COMMENT '最小值', + `sort` integer, + PRIMARY KEY (`id`, `method_id`) USING BTREE, + INDEX `del_setting`(`method_id` ASC) USING BTREE, + INDEX `id`(`id` ASC) USING BTREE, + CONSTRAINT `del_setting` FOREIGN KEY (`method_id`) REFERENCES `t_mpk_model_method` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '方法参数关联表' ROW_FORMAT = Dynamic; @@ -528,154 +650,224 @@ -- Table structure for t_mpk_setting_select -- ---------------------------- DROP TABLE IF EXISTS `t_mpk_setting_select`; -CREATE TABLE `t_mpk_setting_select` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `setting_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '参数id', - `select_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'key', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '名称', - `sort` integer, - PRIMARY KEY (`id`, `setting_id`) USING BTREE, - INDEX `del_select`(`setting_id` ASC) USING BTREE, - CONSTRAINT `del_select` FOREIGN KEY (`setting_id`) REFERENCES `t_mpk_method_setting` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT +CREATE TABLE `t_mpk_setting_select` +( + `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', + `setting_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '参数id', + `select_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'key', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '名称', + `sort` integer, + PRIMARY KEY (`id`, `setting_id`) USING BTREE, + INDEX `del_select`(`setting_id` ASC) USING BTREE, + CONSTRAINT `del_select` FOREIGN KEY (`setting_id`) REFERENCES `t_mpk_method_setting` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '参数选项关联表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for t_mpk_project -- ---------------------------- DROP TABLE IF EXISTS `t_mpk_project`; -CREATE TABLE `t_mpk_project` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `project_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '项目名称', - `project_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '项目编码', - `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', - `update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间', - PRIMARY KEY (`id`) USING BTREE +CREATE TABLE `t_mpk_project` +( + `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', + `project_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '项目名称', + `project_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '项目编码', + `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', + `update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间', + PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '项目表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Table structure for t_mpk_project_model -- ---------------------------- DROP TABLE IF EXISTS `t_mpk_project_model`; -CREATE TABLE `t_mpk_project_model` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `project_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '项目id', - `model_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '模型id', - PRIMARY KEY (`id`, `project_id`, `model_id`) USING BTREE, - INDEX `del_p`(`project_id` ASC) USING BTREE, - INDEX `del_m`(`model_id` ASC) USING BTREE, - CONSTRAINT `del_m` FOREIGN KEY (`model_id`) REFERENCES `t_mpk_file` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT, - CONSTRAINT `del_p` FOREIGN KEY (`project_id`) REFERENCES `t_mpk_project` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT +CREATE TABLE `t_mpk_project_model` +( + `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', + `project_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '项目id', + `model_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '模型id', + PRIMARY KEY (`id`, `project_id`, `model_id`) USING BTREE, + INDEX `del_p`(`project_id` ASC) USING BTREE, + INDEX `del_m`(`model_id` ASC) USING BTREE, + CONSTRAINT `del_m` FOREIGN KEY (`model_id`) REFERENCES `t_mpk_file` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT, + CONSTRAINT `del_p` FOREIGN KEY (`project_id`) REFERENCES `t_mpk_project` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '项目模型关联表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Table structure for t_mpk_project_package_history -- ---------------------------- DROP TABLE IF EXISTS `t_mpk_project_package_history`; -CREATE TABLE `t_mpk_project_package_history` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `project_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '项目id', - `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件名', - `file_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件路径', - `version` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '版本号', - `log` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新日志', - `model_names` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '打包模型名称(“,”分割)', - `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`id`, `project_id`) USING BTREE, - INDEX `del_package_history`(`project_id` ASC) USING BTREE, - CONSTRAINT `del_package_history` FOREIGN KEY (`project_id`) REFERENCES `t_mpk_project` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT +CREATE TABLE `t_mpk_project_package_history` +( + `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', + `project_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '项目id', + `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件名', + `file_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件路径', + `version` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '版本号', + `log` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新日志', + `model_names` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '打包模型名称(“,”分割)', + `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`, `project_id`) USING BTREE, + INDEX `del_package_history`(`project_id` ASC) USING BTREE, + CONSTRAINT `del_package_history` FOREIGN KEY (`project_id`) REFERENCES `t_mpk_project` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '项目打包历史记录表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Table structure for t_mpk_project_package_history_model -- ---------------------------- DROP TABLE IF EXISTS `t_mpk_project_package_history_model`; -CREATE TABLE `t_mpk_project_package_history_model` ( - `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', - `project_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '项目id', - `package_history_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '打包历史id', - `py_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型名称', - `pkg_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '包名', - `py_module` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型路径', - `remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型备注', - `method_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '模型方法信息', - PRIMARY KEY (`id`, `project_id`) USING BTREE, - INDEX `del_package_model`(`project_id` ASC) USING BTREE, - CONSTRAINT `del_package_model` FOREIGN KEY (`project_id`) REFERENCES `t_mpk_project` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT +CREATE TABLE `t_mpk_project_package_history_model` +( + `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id', + `project_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '项目id', + `package_history_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '打包历史id', + `py_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型名称', + `pkg_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '包名', + `py_module` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型路径', + `remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '模型备注', + `method_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '模型方法信息', + PRIMARY KEY (`id`, `project_id`) USING BTREE, + INDEX `del_package_model`(`project_id` ASC) USING BTREE, + CONSTRAINT `del_package_model` FOREIGN KEY (`project_id`) REFERENCES `t_mpk_project` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '打包历史模型关联表' ROW_FORMAT = Dynamic; DROP TABLE IF EXISTS `t_mpk_icon`; -CREATE TABLE `t_mpk_icon` ( - `id` varchar(36) NOT NULL COMMENT 'id', - `icon_name` varchar(36) NOT NULL COMMENT '图标名称', - `icon_desc` varchar(36) DEFAULT NULL COMMENT '图标描述', - `sort` integer DEFAULT NULL COMMENT '排序', - PRIMARY KEY (`id`) USING BTREE +CREATE TABLE `t_mpk_icon` +( + `id` varchar(36) NOT NULL COMMENT 'id', + `icon_name` varchar(36) NOT NULL COMMENT '图标名称', + `icon_desc` varchar(36) DEFAULT NULL COMMENT '图标描述', + `sort` integer DEFAULT NULL COMMENT '排序', + PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'MDK平台图标' ROW_FORMAT = Dynamic; DROP TABLE IF EXISTS `t_mpk_file_menu`; -CREATE TABLE `t_mpk_file_menu` ( - `id` varchar(36) NOT NULL COMMENT 'id', - `name` varchar(36) NOT NULL COMMENT '名称', - `sort` integer DEFAULT NULL COMMENT '排序', - PRIMARY KEY (`id`) USING BTREE +CREATE TABLE `t_mpk_file_menu` +( + `id` varchar(36) NOT NULL COMMENT 'id', + `name` varchar(36) NOT NULL COMMENT '名称', + `sort` integer DEFAULT NULL COMMENT '排序', + PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '模型文件菜单' ROW_FORMAT = Dynamic; DROP TABLE IF EXISTS `t_mpk_file_group`; -CREATE TABLE `t_mpk_file_group` ( - `id` varchar(36) NOT NULL COMMENT 'id', - `menu_id` varchar(36) NOT NULL COMMENT '菜单', - `name` varchar(36) NOT NULL COMMENT '名称', - `sort` integer DEFAULT NULL COMMENT '排序', - PRIMARY KEY (`id`) USING BTREE +CREATE TABLE `t_mpk_file_group` +( + `id` varchar(36) NOT NULL COMMENT 'id', + `menu_id` varchar(36) NOT NULL COMMENT '菜单', + `name` varchar(36) NOT NULL COMMENT '名称', + `sort` integer DEFAULT NULL COMMENT '排序', + PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '模型文件分组' ROW_FORMAT = Dynamic; -alter table t_mm_predict_model add column `mpkprojectid` varchar(36) DEFAULT NULL; +alter table t_mm_predict_model + add column `mpkprojectid` varchar(36) DEFAULT NULL; -- chart 图表配置 -- menu -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `app_id`, `tenant_id`) VALUES (1803317368435416399, '图表管理', '', 1, 40, 1803317368415416363, 'chart', 'fa:align-left', '', '', 0, b'1', b'1', b'1', '1', '2024-11-05 11:57:25', '1', '2024-11-05 11:57:49', b'0', 0, 1); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `app_id`, `tenant_id`) VALUES (1803317368435416400, '图表配置', '', 2, 1, 1803317368435416399, 'chartParam', 'fa-solid:cogs', 'model/chart/index', 'ChartParam', 0, b'1', b'1', b'1', '1', '2024-11-05 12:01:59', '1', '2024-11-06 08:45:17', b'0', 0, 1); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `app_id`, `tenant_id`) VALUES (1803317368435416401, '查询', 'model:chart:query', 3, 1, 1803317368435416400, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-11-05 15:36:48', '1', '2024-11-05 15:36:48', b'0', NULL, 1); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `app_id`, `tenant_id`) VALUES (1803317368435416402, '新增', 'model:chart:create', 3, 2, 1803317368435416400, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-11-05 15:37:03', '1', '2024-11-05 15:37:03', b'0', NULL, 1); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `app_id`, `tenant_id`) VALUES (1803317368435416403, '修改', 'model:chart:update', 3, 3, 1803317368435416400, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-11-05 15:37:20', '1', '2024-11-05 15:37:20', b'0', NULL, 1); -INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `app_id`, `tenant_id`) VALUES (1803317368435416404, '删除', 'model:chart:delete', 3, 4, 1803317368435416400, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-11-05 15:37:38', '1', '2024-11-05 15:37:38', b'0', NULL, 1); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`, `app_id`, `tenant_id`) +VALUES (1803317368435416399, '图表管理', '', 1, 40, 1803317368415416363, 'chart', 'fa:align-left', '', '', 0, b'1', + b'1', b'1', '1', '2024-11-05 11:57:25', '1', '2024-11-05 11:57:49', b'0', 0, 1); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`, `app_id`, `tenant_id`) +VALUES (1803317368435416400, '图表配置', '', 2, 1, 1803317368435416399, 'chartParam', 'fa-solid:cogs', + 'model/chart/index', 'ChartParam', 0, b'1', b'1', b'1', '1', '2024-11-05 12:01:59', '1', '2024-11-06 08:45:17', + b'0', 0, 1); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`, `app_id`, `tenant_id`) +VALUES (1803317368435416401, '查询', 'model:chart:query', 3, 1, 1803317368435416400, '', '', '', '', 0, b'1', b'1', + b'1', '1', '2024-11-05 15:36:48', '1', '2024-11-05 15:36:48', b'0', NULL, 1); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`, `app_id`, `tenant_id`) +VALUES (1803317368435416402, '新增', 'model:chart:create', 3, 2, 1803317368435416400, '', '', '', '', 0, b'1', b'1', + b'1', '1', '2024-11-05 15:37:03', '1', '2024-11-05 15:37:03', b'0', NULL, 1); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`, `app_id`, `tenant_id`) +VALUES (1803317368435416403, '修改', 'model:chart:update', 3, 3, 1803317368435416400, '', '', '', '', 0, b'1', b'1', + b'1', '1', '2024-11-05 15:37:20', '1', '2024-11-05 15:37:20', b'0', NULL, 1); +INSERT INTO `iailab_plat_system`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, + `component`, `component_name`, `status`, `visible`, `keep_alive`, + `always_show`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`, `app_id`, `tenant_id`) +VALUES (1803317368435416404, '删除', 'model:chart:delete', 3, 4, 1803317368435416400, '', '', '', '', 0, b'1', b'1', + b'1', '1', '2024-11-05 15:37:38', '1', '2024-11-05 15:37:38', b'0', NULL, 1); -- table -CREATE TABLE `t_chart` ( - `id` varchar(36) NOT NULL, - `chart_name` varchar(100) DEFAULT NULL COMMENT '图表名称', - `chart_code` varchar(100) DEFAULT NULL COMMENT '图表编码', - `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', - `update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_chart_code` (`chart_code`), - KEY `index_id` (`id`) +CREATE TABLE `t_chart` +( + `id` varchar(36) NOT NULL, + `chart_name` varchar(100) DEFAULT NULL COMMENT '图表名称', + `chart_code` varchar(100) DEFAULT NULL COMMENT '图表编码', + `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', + `update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_chart_code` (`chart_code`), + KEY `index_id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='图表配置'; -CREATE TABLE `t_chart_param` ( - `id` varchar(36) NOT NULL, - `chart_id` varchar(36) NOT NULL COMMENT '图表id', - `param_name` varchar(255) DEFAULT NULL COMMENT '参数名称', - `param_code` varchar(100) DEFAULT NULL COMMENT '参数编码', - `param_value` varchar(1000) DEFAULT NULL COMMENT '参数值', - `remark` varchar(255) DEFAULT NULL COMMENT '备注', - `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', - `update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间', - PRIMARY KEY (`id`,`chart_id`) USING BTREE, - KEY `index_chart_id` (`chart_id`), - CONSTRAINT `chart_id` FOREIGN KEY (`chart_id`) REFERENCES `t_chart` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT +CREATE TABLE `t_chart_param` +( + `id` varchar(36) NOT NULL, + `chart_id` varchar(36) NOT NULL COMMENT '图表id', + `param_name` varchar(255) DEFAULT NULL COMMENT '参数名称', + `param_code` varchar(100) DEFAULT NULL COMMENT '参数编码', + `param_value` varchar(1000) DEFAULT NULL COMMENT '参数值', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', + `update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间', + PRIMARY KEY (`id`, `chart_id`) USING BTREE, + KEY `index_chart_id` (`chart_id`), + CONSTRAINT `chart_id` FOREIGN KEY (`chart_id`) REFERENCES `t_chart` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='图表参数配置'; DROP TABLE IF EXISTS `t_mpk_pack`; -CREATE TABLE `t_mpk_pack` ( - `id` varchar(36) NOT NULL COMMENT 'id', - `pack_name` varchar(50) NOT NULL COMMENT '包名称', - `pack_desc` varchar(50) DEFAULT NULL COMMENT '包描述', - `model_path` varchar(50) DEFAULT NULL COMMENT '模型路径', - `sort` integer DEFAULT NULL COMMENT '排序', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX uk_pack_name (pack_name) -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'MDK包名管理' ROW_FORMAT = Dynamic; \ No newline at end of file +CREATE TABLE `t_mpk_pack` +( + `id` varchar(36) NOT NULL COMMENT 'id', + `pack_name` varchar(50) NOT NULL COMMENT '包名称', + `pack_desc` varchar(50) DEFAULT NULL COMMENT '包描述', + `model_path` varchar(50) DEFAULT NULL COMMENT '模型路径', + `sort` integer DEFAULT NULL COMMENT '排序', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX uk_pack_name (pack_name) +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'MDK包名管理' ROW_FORMAT = Dynamic; + + +create table + t_mm_item_status +( + id varchar(36) not null COMMENT 'id', + item_id varchar(36) COMMENT '预测项ID', + last_time datetime DEFAULT NULL COMMENT '最新运行时间', + status smallint DEFAULT NULL COMMENT '运行状态', + duration bigint(20) DEFAULT NULL COMMENT '耗时(s)', + primary key (id), + UNIQUE INDEX uk_item_id (item_id) +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '测项状态表' ROW_FORMAT = Dynamic; + +-- 模型输出 +ALTER TABLE t_mm_predict_model DROP COLUMN `resultstrid`; +alter table t_mm_item_output add column `resultstr` varchar(50) DEFAULT NULL; +alter table t_mm_item_output add column `result_type` smallint DEFAULT NULL COMMENT '参数类型{1:一维数组;2:二维数组}'; +alter table t_mm_item_output add column `result_index` int DEFAULT NULL; + +-- 字典 +INSERT INTO `iailab_plat_system`.`system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (644, '模型结果数据类型', 'model_result_type', 0, '', '141', '2024-11-11 15:16:58', '141', '2024-11-11 15:16:58', b'0', '1970-01-01 00:00:00'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1628, 1, 'double[]', '1', 'model_result_type', 0, '', '', '', '141', '2024-11-11 15:21:05', '141', '2024-11-11 15:21:05', b'0'); +INSERT INTO `iailab_plat_system`.`system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1629, 2, 'double[][]', '2', 'model_result_type', 0, '', '', '', '141', '2024-11-11 15:21:17', '141', '2024-11-11 15:21:17', b'0'); + + +alter table t_mm_item_output add column `result_name` varchar(50) DEFAULT NULL; \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java new file mode 100644 index 0000000..5351dcd --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java @@ -0,0 +1,245 @@ +package com.iailab.module.model.api; + +import com.iailab.framework.common.util.date.DateUtils; +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.api.mcs.McsApi; +import com.iailab.module.model.api.mcs.dto.*; +import com.iailab.module.model.mcs.pre.entity.DmModuleEntity; +import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity; +import com.iailab.module.model.mcs.pre.service.*; +import com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.util.*; + +/** + * @author PanZhibao + * @Description + * @createTime 2024年11月13日 + */ +@Slf4j +@RestController +@Validated +public class McsApiImpl implements McsApi { + + @Autowired + private DmModuleService dmModuleService; + + @Autowired + private MmPredictItemService mmPredictItemService; + + @Autowired + private MmItemOutputService mmItemOutputService; + + @Autowired + private MmItemResultService mmItemResultService; + + @Autowired + private MmItemResultLastPointService mmItemResultLastPointService; + + @Autowired + private DataPointApi dataPointApi; + + private int HOUR_MINS = 60; + + @Override + public List<PredictItemTreeDTO> getPredictItemTree() { + List<PredictItemTreeDTO> result = new ArrayList<>(); + + List<DmModuleEntity> moduleList = dmModuleService.list(new HashMap<>()); + if (CollectionUtils.isEmpty(moduleList)) { + return result; + } + moduleList.forEach(item -> { + PredictItemTreeDTO moduleOpt = new PredictItemTreeDTO(); + moduleOpt.setId(item.getId()); + moduleOpt.setLabel(item.getModulename()); + List<PredictItemTreeDTO> children = new ArrayList<>(); + Map<String, Object> params = new HashMap<>(2); + params.put("status", 1); + params.put("moduleid", item.getId()); + List<MmPredictItemRespVO> itemList = mmPredictItemService.list(params); + itemList.forEach(item1 -> { + PredictItemTreeDTO chd = new PredictItemTreeDTO(); + chd.setLabel(item1.getItemname()); + chd.setId(item1.getId()); + children.add(chd); + }); + moduleOpt.setChildren(children); + result.add(moduleOpt); + }); + return result; + } + + @Override + public PreDataBarLineRespVO getPreDataCharts(PreDataBarLineReqVO reqVO) { + PreDataBarLineRespVO result = new PreDataBarLineRespVO(); + List<String[]> queryIds = reqVO.getQueryIds(); + List<String> legends = new ArrayList<>(); + List<PreDataViewRespDTO> dataViewList = new ArrayList<>(); + if (CollectionUtils.isEmpty(reqVO.getQueryIds())) { + return result; + } + Date predictTime = reqVO.getPredictTime(); + if (predictTime == null) { + DmModuleEntity dmModule = dmModuleService.getModuleByItemId(queryIds.get(0)[0]); + if (dmModule != null) { + predictTime = dmModule.getPredicttime(); + } else { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.SECOND, 0); + predictTime = calendar.getTime(); + } + } + Date startTime = reqVO.getStartTime(); + if (startTime == null) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(predictTime); + calendar.add(Calendar.HOUR_OF_DAY, -1); + startTime = calendar.getTime(); + } + Date endTime = reqVO.getEndTime(); + if (endTime == null) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(predictTime); + calendar.add(Calendar.HOUR_OF_DAY, 1); + endTime = calendar.getTime(); + } + + for (int i = 0; i < queryIds.size(); i++) { + PreDataViewRespDTO viewDto = new PreDataViewRespDTO(); + String itemId = queryIds.get(i)[0]; + String outKey = queryIds.get(i)[1]; + MmItemOutputEntity output = mmItemOutputService.getByItemid(itemId, outKey); + if (output == null) { + continue; + } + legends.add(output.getResultstr()); + viewDto.setRealData(getHisData(output.getPointid(), startTime, endTime)); + viewDto.setPreDataN(mmItemResultService.getData(output.getId(), startTime, endTime)); + viewDto.setPreDataL(mmItemResultLastPointService.getData(output.getId(), startTime, endTime)); + + List<Double> values = new ArrayList<>(); + if (!CollectionUtils.isEmpty(viewDto.getRealData())) { + List<Double> hisValues = new ArrayList<>(); + viewDto.getRealData().forEach(item -> { + values.add(Double.parseDouble(item[1].toString())); + hisValues.add(Double.parseDouble(item[1].toString())); + }); + viewDto.setHisMax(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); + viewDto.setHisMin(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); + viewDto.setHisAvg(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).average().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); + viewDto.setHisCumulant(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).sum()) + .divide(new BigDecimal(HOUR_MINS), 2, BigDecimal.ROUND_HALF_UP)); + } + if (!CollectionUtils.isEmpty(viewDto.getPreDataN())) { + viewDto.getPreDataN().forEach(item -> { + values.add(Double.parseDouble(item[1].toString())); + }); + } + if (!CollectionUtils.isEmpty(viewDto.getPreDataL())) { + List<Double> preValues = new ArrayList<>(); + viewDto.getPreDataL().forEach(item -> { + values.add(Double.parseDouble(item[1].toString())); + preValues.add(Double.parseDouble(item[1].toString())); + }); + viewDto.setPreMax(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); + viewDto.setPreMin(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); + viewDto.setPreAvg(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).average().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); + } + if (!CollectionUtils.isEmpty(viewDto.getCurData())) { + List<Double> preValues = new ArrayList<>(); + viewDto.getCurData().forEach(item -> { + values.add(Double.parseDouble(item[1].toString())); + preValues.add(Double.parseDouble(item[1].toString())); + }); + viewDto.setPreCumulant(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).sum()) + .divide(new BigDecimal(HOUR_MINS), 2, BigDecimal.ROUND_HALF_UP)); + } + if (!CollectionUtils.isEmpty(viewDto.getAdjData())) { + viewDto.getAdjData().forEach(item -> { + values.add(Double.parseDouble(item[1].toString())); + }); + } + if (!CollectionUtils.isEmpty(values)) { + viewDto.setMaxValue(new BigDecimal(values.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); + viewDto.setMinValue(new BigDecimal(values.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); + } + dataViewList.add(viewDto); + } + result.setStartTime(startTime); + result.setEndTime(endTime); + result.setPredictTime(predictTime); + result.setCategories(DateUtils.getTimeScale(startTime, endTime, 60)); + result.setLegend(legends); + result.setDataViewList(dataViewList); + return result; + } + + /** + * 获取真实值 + * + * @param pointId + * @param startTime + * @param endTime + * @return + */ + private List<Object[]> getHisData(String pointId, Date startTime, Date endTime) { + List<Object[]> result = new ArrayList<>(); + ApiPointDTO pointDTO = dataPointApi.getInfoById(pointId); + ApiPointValueQueryDTO queryPointDto = new ApiPointValueQueryDTO(); + queryPointDto.setPointNo(pointDTO.getPointNo()); + queryPointDto.setStart(startTime); + queryPointDto.setEnd(endTime); + List<ApiPointValueDTO> valueDTOS = dataPointApi.queryPointHistoryValue(queryPointDto); + if (CollectionUtils.isEmpty(valueDTOS)) { + return result; + } + valueDTOS.forEach(item -> { + Object[] values = new Object[2]; + values[0] = DateUtils.format(item.getDataTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); + values[1] = item.getDataValue(); + result.add(values); + }); + return result; + } + + @Override + public Boolean createAlarmMessage(AlarmMessageRespDTO dto) { + return true; + } + + @Override + public List<AlarmMessageRespDTO> listAlarmMessage(Map<String, Object> params) { + return null; + } + + @Override + public Boolean createScheduleSuggest(ScheduleSuggestRespDTO dto) { + return true; + } + + @Override + public List<ScheduleSuggestRespDTO> listScheduleSuggest(ScheduleSuggestReqDTO params) { + return null; + } + + @Override + public Boolean modifyPredictModelSetting(List<PredictModelSettingReqDTO> dtos) { + return true; + } + + @Override + public Boolean modifyScheduleModelSetting(List<ScheduleModelSettingReqDTO> dtos) { + return true; + } +} \ No newline at end of file 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 index a5d05a8..eb9ea4f 100644 --- 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 @@ -4,7 +4,6 @@ import com.iailab.framework.common.util.object.ConvertUtils; 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; @@ -24,10 +23,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import static com.iailab.framework.common.pojo.CommonResult.error; @@ -73,6 +69,9 @@ @Override public MdkPredictModuleRespDTO predictModule(MdkPredictReqDTO reqDTO) { MdkPredictModuleRespDTO resp = new MdkPredictModuleRespDTO(); + resp.setPredictTime(reqDTO.getPredictTime()); + resp.setModuleType(reqDTO.getModuleType()); + Map<String, MdkPredictItemRespDTO> predictItemRespMap = new HashMap<>(); try { if (reqDTO.getPredictTime() == null) { @@ -81,6 +80,11 @@ if (reqDTO.getModuleType() == null) { throw new Exception("ModuleType不能为空"); } + Calendar calendar = Calendar.getInstance(); + calendar.setTime(reqDTO.getPredictTime()); + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.SECOND, 0); + reqDTO.setPredictTime(calendar.getTime()); log.info("预测参数:" + JSON.toJSONString(reqDTO)); MdkPredictModuleRespDTO result = new MdkPredictModuleRespDTO(); result.setPredictTime(reqDTO.getPredictTime()); @@ -94,16 +98,30 @@ } List<ItemVO> predictItemList = mmPredictItemService.getByModuleId(module.getId()); Map<String, PredictResultVO> predictResultMap = predictModuleHandler.predict(predictItemList, reqDTO.getPredictTime(), intervalTime); + // 更新Module时间 + dmModuleService.updatePredictTime(module.getId(), reqDTO.getPredictTime()); + + if (reqDTO.getIsResult() == null || !reqDTO.getIsResult()) { + return resp; + } + 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); + itemResp.setItemId(entry.getKey()); + itemResp.setPredictTime(reqDTO.getPredictTime()); + Map<String, List<MdkPredictDataDTO>> itemPredictData = new HashMap<>(); + + Map<String, List<DataValueVO>> predictLists = predictResultHandler.convertToPredictData2(entry.getValue()); + for (Map.Entry<String, List<DataValueVO>> dataListEntry : predictLists.entrySet()) { + List<MdkPredictDataDTO> predictData = dataListEntry.getValue().stream().map(t -> { + MdkPredictDataDTO dto1 = new MdkPredictDataDTO(); + dto1.setDataTime(t.getDataTime()); + dto1.setDataValue(t.getDataValue()); + return dto1; + }).collect(Collectors.toList()); + itemPredictData.put(dataListEntry.getKey(), predictData); + } + itemResp.setPredictData(itemPredictData); predictItemRespMap.put(entry.getKey(), itemResp); } } @@ -128,14 +146,15 @@ try { log.info("预测计算开始: " + System.currentTimeMillis()); - List<MdkPredictDataDTO> predictData = new ArrayList<>(); + Map<String, List<MdkPredictDataDTO>> predictData = new HashMap<>(); ItemVO predictItem = itemEntityFactory.getItemByItemNo(reqDTO.getItemNo()); - PredictItemHandler predictItemHandler = (PredictItemHandler)predictItemFactory.create(predictItem.getId()); + PredictItemHandler predictItemHandler = predictItemFactory.create(predictItem.getId()); PredictResultVO predictResult = predictItemHandler.predict(reqDTO.getPredictTime(), predictItem); Map<String, List<DataValueVO>> resultMap = predictResultHandler.convertToPredictData(predictResult); if (!CollectionUtils.isEmpty(resultMap)) { for (Map.Entry<String, List<DataValueVO>> entry : resultMap.entrySet()) { - predictData = ConvertUtils.sourceToTarget(entry.getValue(), MdkPredictDataDTO.class); + List<MdkPredictDataDTO> data = ConvertUtils.sourceToTarget(entry.getValue(), MdkPredictDataDTO.class); + predictData.put(entry.getKey(), data); } } resp.setPredictData(predictData); @@ -143,7 +162,7 @@ resp.setPredictTime(reqDTO.getPredictTime()); log.info("预测计算结束: " + System.currentTimeMillis()); } catch (Exception ex) { - log.info("预测计算异常: " + System.currentTimeMillis(),ex); + log.info("预测计算异常: " + System.currentTimeMillis(), ex); return resp; } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/common/enums/CommonConstant.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/common/enums/CommonConstant.java index 8c80215..0594498 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/common/enums/CommonConstant.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/common/enums/CommonConstant.java @@ -15,4 +15,10 @@ BigDecimal ZERO_VALUE = new BigDecimal("0"); String MDK_SUFFIX = ".miail"; + + String MDK_RESULT = "result"; + + String MDK_STATUS_CODE = "status_code"; + + String MDK_STATUS_100 = "100"; } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/framework/rpc/config/RpcConfiguration.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/framework/rpc/config/RpcConfiguration.java index 6616b2c..8e9dfde 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/framework/rpc/config/RpcConfiguration.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/framework/rpc/config/RpcConfiguration.java @@ -1,5 +1,6 @@ package com.iailab.module.model.framework.rpc.config; +import com.iailab.module.data.api.plan.PlanItemApi; import com.iailab.module.data.api.point.DataPointApi; import com.iailab.module.infra.api.config.ConfigApi; import com.iailab.module.system.api.tenant.TenantApi; @@ -7,6 +8,6 @@ import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) -@EnableFeignClients(clients = {DataPointApi.class, ConfigApi.class, TenantApi.class}) +@EnableFeignClients(clients = {DataPointApi.class, PlanItemApi.class, ConfigApi.class, TenantApi.class}) public class RpcConfiguration { } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmPredictItemController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmPredictItemController.java index a3cd858..94fed54 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmPredictItemController.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmPredictItemController.java @@ -4,31 +4,21 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.framework.common.pojo.PageResult; -import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.model.common.enums.CommonConstant; import com.iailab.module.model.mcs.pre.dto.MmPredictItemDTO; -import com.iailab.module.model.mcs.pre.entity.DmModuleEntity; -import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity; -import com.iailab.module.model.mcs.pre.entity.MmPredictItemEntity; -import com.iailab.module.model.mcs.pre.service.DmModuleService; -import com.iailab.module.model.mcs.pre.service.MmItemOutputService; import com.iailab.module.model.mcs.pre.service.MmPredictItemService; import com.iailab.module.model.mcs.pre.vo.*; import com.iailab.module.model.mpk.common.utils.IAILModelUtil; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.security.PermitAll; import java.io.File; -import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.*; import static com.iailab.framework.common.pojo.CommonResult.success; @@ -51,13 +41,6 @@ @Autowired private MmPredictItemService mmPredictItemService; - @Autowired - private DmModuleService dmModuleService; - - @Autowired - private MmItemOutputService mmItemOutputService; - - private int HOUR_MINS = 60; /** * 预测项列表 */ @@ -137,157 +120,6 @@ file.transferTo(new File(uploadDir)); Map<String, Object> result = iAILModelUtil.parseModel(uploadDir); result.put("originalFilename", file.getOriginalFilename().replace(CommonConstant.MDK_SUFFIX, "")); - return success(result); - } - - @GetMapping("/tree") - public CommonResult<List<PreItemOptionVO>> itemTree() { - List<PreItemOptionVO> result = new ArrayList<>(); - - List<DmModuleEntity> moduleList = dmModuleService.list(new HashMap<>()); - if (CollectionUtils.isEmpty(moduleList)) { - return success(result); - } - moduleList.forEach(item -> { - PreItemOptionVO moduleOpt = new PreItemOptionVO(); - moduleOpt.setId(item.getId()); - moduleOpt.setLabel(item.getModulename()); - List<PreItemOptionVO> children = new ArrayList<>(); - Map<String, Object> params = new HashMap<>(2); - params.put("status", 1); - params.put("moduleid", item.getId()); - List<MmPredictItemRespVO> itemList = mmPredictItemService.list(params); - itemList.forEach(item1 -> { - PreItemOptionVO chd = new PreItemOptionVO(); - chd.setLabel(item1.getItemname()); - chd.setId(item1.getId()); - children.add(chd); - }); - moduleOpt.setChildren(children); - result.add(moduleOpt); - }); - return success(result); - } - - @GetMapping("/view-charts") - public CommonResult<PreDataBarLineVO> viewCharts(@RequestParam Map<String, Object> params) { - PreDataBarLineVO result = new PreDataBarLineVO(); - List<String> legends = new ArrayList<>(); - List<PreDataViewVO> dataViewList = new ArrayList<>(); - if (params.get("itemIds") == null) { - return success(result); - } - List<String> itemIdList = Arrays.asList(params.get("itemIds").toString().split(",")); - - Date predictTime; - if (StringUtils.isBlank((String) params.get("predictTime"))) { - DmModuleEntity dmModule = dmModuleService.getModuleByItemId(itemIdList.get(0)); - if (dmModule != null) { - predictTime = dmModule.getPredicttime(); - } else { - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.MILLISECOND, 0); - calendar.set(Calendar.SECOND, 0); - predictTime = calendar.getTime(); - } - } else { - predictTime = DateUtils.parse(params.get("predictTime").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); - } - Date startTime; - if (StringUtils.isBlank((String) params.get("startTime"))) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(predictTime); - calendar.add(Calendar.HOUR_OF_DAY, -1); - startTime = calendar.getTime(); - } else { - startTime = DateUtils.parse(params.get("startTime").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); - } - Date endTime = null; - if (StringUtils.isBlank((String) params.get("endTime"))) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(predictTime); - calendar.add(Calendar.HOUR_OF_DAY, 1); - endTime = calendar.getTime(); - } else { - endTime = DateUtils.parse(params.get("endTime").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); - } - - for (int i = 0; i < itemIdList.size(); i++) { - PreDataViewVO viewDto = new PreDataViewVO(); - String itemId = itemIdList.get(i); - MmItemOutputEntity mmItemOutput = mmItemOutputService.getByItemid(itemId); - MmPredictItemEntity predictItem = mmPredictItemService.getById(itemId); - if (predictItem == null) { - log.info("itemId=" + itemId + "; is null"); - continue; - } - try { - viewDto.setItemId(itemId); - viewDto.setItemName(predictItem.getItemname()); - viewDto.setRealData(mmPredictItemService.getHisData(itemId, startTime, endTime)); -// viewDto.setPreDataN(mmItemResultService.getData(mmItemOutput.getId(), startTime, endTime)); -// viewDto.setPreDataL(mmItemResultLastPointService.getData(mmItemOutput.getId(), startTime, endTime)); -// viewDto.setCurData(mmItemResultJsonService.getData(mmItemOutput.getId(), predictTime)); -// viewDto.setAdjData(scheduleAdjustResultService.getData(itemId, predictTime)); - legends.add(predictItem.getItemname()); - List<Double> values = new ArrayList<>(); - if (!CollectionUtils.isEmpty(viewDto.getRealData())) { - List<Double> hisValues = new ArrayList<>(); - viewDto.getRealData().forEach(item -> { - values.add(Double.parseDouble(item[1].toString())); - hisValues.add(Double.parseDouble(item[1].toString())); - }); - viewDto.setHisMax(BigDecimal.valueOf(hisValues.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, RoundingMode.HALF_UP)); - viewDto.setHisMin(BigDecimal.valueOf(hisValues.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, RoundingMode.HALF_UP)); - viewDto.setHisAvg(BigDecimal.valueOf(hisValues.stream().mapToDouble(Double::doubleValue).average().getAsDouble()).setScale(2, RoundingMode.HALF_UP)); - viewDto.setHisCumulant(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).sum()) - .divide(new BigDecimal(HOUR_MINS), 2, BigDecimal.ROUND_HALF_UP)); - } - if (!CollectionUtils.isEmpty(viewDto.getPreDataN())) { - viewDto.getPreDataN().forEach(item -> { - values.add(Double.parseDouble(item[1].toString())); - }); - } - if (!CollectionUtils.isEmpty(viewDto.getPreDataL())) { - List<Double> preValues = new ArrayList<>(); - viewDto.getPreDataL().forEach(item -> { - values.add(Double.parseDouble(item[1].toString())); - preValues.add(Double.parseDouble(item[1].toString())); - }); - viewDto.setPreMax(BigDecimal.valueOf(preValues.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, RoundingMode.HALF_UP)); - viewDto.setPreMin(BigDecimal.valueOf(preValues.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, RoundingMode.HALF_UP)); - viewDto.setPreAvg(BigDecimal.valueOf(preValues.stream().mapToDouble(Double::doubleValue).average().getAsDouble()).setScale(2, RoundingMode.HALF_UP)); - } - if (!CollectionUtils.isEmpty(viewDto.getCurData())) { - List<Double> preValues = new ArrayList<>(); - viewDto.getCurData().forEach(item -> { - values.add(Double.parseDouble(item[1].toString())); - preValues.add(Double.parseDouble(item[1].toString())); - }); - viewDto.setPreCumulant(BigDecimal.valueOf(preValues.stream().mapToDouble(Double::doubleValue).sum()) - .divide(new BigDecimal(HOUR_MINS), 2, RoundingMode.HALF_UP)); - } - if (!CollectionUtils.isEmpty(viewDto.getAdjData())) { - viewDto.getAdjData().forEach(item -> { - values.add(Double.parseDouble(item[1].toString())); - }); - } - if (!CollectionUtils.isEmpty(values)) { - viewDto.setMaxValue(BigDecimal.valueOf(values.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, RoundingMode.HALF_UP)); - viewDto.setMinValue(BigDecimal.valueOf(values.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, RoundingMode.HALF_UP)); - } - - dataViewList.add(viewDto); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - result.setStartTime(startTime); - result.setEndTime(endTime); - result.setPredictTime(predictTime); - result.setCategories(DateUtils.getTimeScale(startTime, endTime, 60)); - result.setLegend(legends); - result.setDataViewList(dataViewList); return success(result); } } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmResultTableController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmResultTableController.java deleted file mode 100644 index 55f0017..0000000 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/controller/admin/MmResultTableController.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.iailab.module.model.mcs.pre.controller.admin; - -import com.baomidou.dynamic.datasource.annotation.DSTransactional; -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.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 com.iailab.module.model.mcs.pre.vo.MmResultTableRespVO; -import io.swagger.v3.oas.annotations.Operation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.validation.Valid; -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月22日 9:57 - */ -@RestController -@RequestMapping("/model/pre/result-table") -public class MmResultTableController { - - @Autowired - private MmResultTableService mmResultTableService; - - /** - * 结果存放列表 - */ - @GetMapping("/page") - public CommonResult<PageResult<MmResultTableRespVO>> page(@Validated MmResultTablePageReqVO reqVO) { - PageResult<MmResultTableEntity> page = mmResultTableService.page(reqVO); - - return success(BeanUtils.toBean(page, MmResultTableRespVO.class)); - } - - - @GetMapping("/list") - public CommonResult<List<MmResultTableEntity>> list(@Valid @RequestParam Map<String, Object> params) { - List<MmResultTableEntity> list = mmResultTableService.list(params); - return success(list); - } - - @GetMapping("/get/{id}") - @PreAuthorize("@ss.hasPermission('model:pre-result:query')") - public CommonResult<MmResultTableEntity> info(@PathVariable("id") String id){ - MmResultTableEntity resultTable = mmResultTableService.info(id); - - return success(resultTable); - } - - /** - * 保存结果存放 - */ - @PostMapping("/create") - @PreAuthorize("@ss.hasPermission('model:pre-result:create')") - @DSTransactional(rollbackFor= Exception.class) - 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("/update") - @PreAuthorize("@ss.hasPermission('model:pre-result:update')") - @DSTransactional(rollbackFor= Exception.class) - 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("/delete") - @PreAuthorize("@ss.hasPermission('model:pre-result:delete')") - @DSTransactional(rollbackFor= Exception.class) - public CommonResult<Boolean> delete(@RequestParam("id") String id) { - mmResultTableService.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/dao/MmItemResultJsonDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultJsonDao.java new file mode 100644 index 0000000..a7386b9 --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultJsonDao.java @@ -0,0 +1,16 @@ +package com.iailab.module.model.mcs.pre.dao; + +import com.iailab.framework.mybatis.core.mapper.BaseMapperX; +import com.iailab.framework.tenant.core.db.dynamic.TenantDS; +import com.iailab.module.model.mcs.pre.entity.MmItemResultJsonEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author PanZhibao + * @Description + * @createTime 2024年11月14日 + */ +@TenantDS +@Mapper +public interface MmItemResultJsonDao extends BaseMapperX<MmItemResultJsonEntity> { +} \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultLastPointDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultLastPointDao.java new file mode 100644 index 0000000..181ad0c --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/dao/MmItemResultLastPointDao.java @@ -0,0 +1,16 @@ +package com.iailab.module.model.mcs.pre.dao; + +import com.iailab.framework.mybatis.core.mapper.BaseMapperX; +import com.iailab.framework.tenant.core.db.dynamic.TenantDS; +import com.iailab.module.model.mcs.pre.entity.MmItemResultLastPointEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author PanZhibao + * @Description + * @createTime 2024年11月14日 + */ +@TenantDS +@Mapper +public interface MmItemResultLastPointDao extends BaseMapperX<MmItemResultLastPointEntity> { +} 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 index b46875e..871679f 100644 --- 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 @@ -21,7 +21,7 @@ private DmModuleItemEntity dmModuleItem; - private MmItemOutputEntity mmItemOutput; + private List<MmItemOutputEntity> mmItemOutputList; private MmPredictModelEntity mmPredictModel; 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 index e8d2bbd..bc4251e 100644 --- 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 @@ -40,6 +40,22 @@ private String resulttableid; /** + * 结果 + */ + @NotBlank(message="结果不能为空") + private String resultstr; + + /** + * 结果类型 + */ + private Integer resultType; + + /** + * 结果索引 + */ + private Integer resultIndex; + + /** * 数据点名称 */ @NotBlank(message="数据点名称不能为空") @@ -49,4 +65,9 @@ * 排序(默认值1) */ private BigDecimal outputorder; + + /** + * 结果名称 + */ + private String resultName; } 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 index 2953562..c5153d4 100644 --- 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 @@ -16,6 +16,8 @@ @Data @TableName("T_MM_ITEM_RESULT") public class MmItemResultEntity implements Serializable { + private static final long serialVersionUID = 1L; + /** * 主键 */ 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 index 2509a5c..be01bd1 100644 --- 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 @@ -14,7 +14,7 @@ * @createTime 2024年09月02日 */ @Data -@TableName("T_MM_ITEM_RESULT") +@TableName("t_mm_item_result_json") public class MmItemResultJsonEntity implements Serializable { @TableId(value = "id",type = IdType.INPUT) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultLastPointEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultLastPointEntity.java new file mode 100644 index 0000000..022d6da --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmItemResultLastPointEntity.java @@ -0,0 +1,42 @@ +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 + * @Description + * @createTime 2024年11月14日 + */ +@Data +@TableName("t_mm_item_result_last_point") +public class MmItemResultLastPointEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id",type = IdType.INPUT) + private String id; + + /** + * 输出ID + */ + private String outputid; + + /** + * 预测时间 + */ + private Date datatime; + + /** + * 预测值 + */ + private BigDecimal datavalue; +} \ 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/MmPredictItemEntity.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/entity/MmPredictItemEntity.java index 6d79d02..6f54674 100644 --- 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 @@ -63,7 +63,7 @@ private Integer status; /** - * isfuse + * 是否融合 */ private Integer isfuse; @@ -78,7 +78,7 @@ private Integer workchecked; /** - * unittransfactor + * 单位转换 */ private Integer unittransfactor; 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 index 2833cb2..c9fdec7 100644 --- 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 @@ -103,12 +103,6 @@ private String modelparamstructure; /** - * 结果 - */ - @NotBlank(message="结果不能为空") - private String resultstrid; - - /** * 模型设置 */ private String settingmap; 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 index ea7d041..fe83757 100644 --- 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 @@ -4,6 +4,7 @@ import com.iailab.module.model.mcs.pre.entity.DmModuleEntity; import com.iailab.module.model.mcs.pre.vo.DmModulePageReqVO; +import java.util.Date; import java.util.List; import java.util.Map; @@ -30,4 +31,6 @@ DmModuleEntity info(String id); DmModuleEntity getModuleByItemId(String itemId); + + void updatePredictTime(String id, Date predictTime); } 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 index 9904df2..fe760d7 100644 --- 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 @@ -13,7 +13,7 @@ */ public interface MmItemOutputService{ - void saveMmItemOutput(MmItemOutputEntity mmItemOutput); + void saveMmItemOutput(List<MmItemOutputEntity> mmItemOutput); void update(MmItemOutputEntity mmItemOutput); @@ -25,5 +25,9 @@ List<MmItemOutputVO> getOutPutByPointId(String pointid); - MmItemOutputEntity getByItemid(String itemid); + List<MmItemOutputEntity> getByItemid(String itemid); + + MmItemOutputEntity getByItemid(String itemid, String resultstr); + + void deleteByItemId(String itemId); } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultJsonService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultJsonService.java new file mode 100644 index 0000000..971e867 --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultJsonService.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.MmItemResultJsonEntity; + +import java.util.Date; +import java.util.List; + +/** + * @author PanZhibao + * @Description + * @createTime 2024年11月14日 + */ +public interface MmItemResultJsonService extends BaseService<MmItemResultJsonEntity> { + + List<Object[]> getData(String outputId, Date predictTime); +} \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultLastPointService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultLastPointService.java new file mode 100644 index 0000000..bc70faf --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultLastPointService.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.MmItemResultLastPointEntity; + +import java.util.Date; +import java.util.List; + +/** + * @author PanZhibao + * @Description + * @createTime 2024年11月14日 + */ +public interface MmItemResultLastPointService extends BaseService<MmItemResultLastPointEntity> { + + List<Object[]> getData(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/MmItemResultService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmItemResultService.java index a5d28b6..88e09f6 100644 --- 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 @@ -1,6 +1,5 @@ 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; @@ -19,4 +18,6 @@ void savePredictValue(Map<String, List<DataValueVO>> predictValueMap, int t, String nIndex, Date predictTime); List<DataValueVO> getPredictValue(String outputid, Date startTime, Date endTime); + + List<Object[]> getData(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/MmPredictItemService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/MmPredictItemService.java index ef80336..457cdaa 100644 --- 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 @@ -41,6 +41,4 @@ List<MmPredictItemRespVO> list(Map<String, Object> params); MmPredictItemEntity getById(String id); - - List<Object[]> getHisData(String itemId, Date startTime, Date endTime); } 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 index 962f7e8..2ed8c90 100644 --- 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 @@ -86,7 +86,16 @@ params.put("moduletype", moduletype); QueryWrapper<DmModuleEntity> wrapper = getWrapper(params); return dmModuleDao.selectList(wrapper); + } + @Override + public void updatePredictTime(String id, Date predictTime) { + DmModuleEntity entity = dmModuleDao.selectById(id); + if (entity == null) { + return; + } + entity.setPredicttime(predictTime); + dmModuleDao.updateById(entity); } @Override 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 index 059ae27..6e22fc7 100644 --- 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 @@ -26,8 +26,7 @@ private MmItemOutputDao mmItemOutputDao; @Override - public void saveMmItemOutput(MmItemOutputEntity mmItemOutput) { - mmItemOutput.setId(UUID.randomUUID().toString()); + public void saveMmItemOutput(List<MmItemOutputEntity> mmItemOutput) { mmItemOutputDao.insert(mmItemOutput); } @@ -43,14 +42,25 @@ } @Override - public MmItemOutputEntity getByItemid(String itemid) { - QueryWrapper<MmItemOutputEntity> queryWrapper = new QueryWrapper(); - queryWrapper.eq("itemid", itemid); + public List<MmItemOutputEntity> getByItemid(String itemid) { + QueryWrapper<MmItemOutputEntity> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("itemid", itemid).orderByAsc("outputorder"); List<MmItemOutputEntity> list = mmItemOutputDao.selectList(queryWrapper); - if (CollectionUtils.isEmpty(list)) { - return new MmItemOutputEntity(); - } - return list.get(0); + return list; + } + + @Override + public MmItemOutputEntity getByItemid(String itemid, String resultstr) { + QueryWrapper<MmItemOutputEntity> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("itemid", itemid).eq("resultstr", resultstr); + return mmItemOutputDao.selectOne(queryWrapper); + } + + @Override + public void deleteByItemId(String itemId) { + QueryWrapper<MmItemOutputEntity> queryWrapper = new QueryWrapper(); + queryWrapper.eq("itemid", itemId); + mmItemOutputDao.delete(queryWrapper); } @Override diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultJsonServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultJsonServiceImpl.java new file mode 100644 index 0000000..409434a --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultJsonServiceImpl.java @@ -0,0 +1,41 @@ +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.model.mcs.pre.dao.MmItemResultJsonDao; +import com.iailab.module.model.mcs.pre.entity.MmItemResultJsonEntity; +import com.iailab.module.model.mcs.pre.service.MmItemResultJsonService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author PanZhibao + * @Description + * @createTime 2024年11月14日 + */ +@Service +public class MmItemResultJsonServiceImpl extends BaseServiceImpl<MmItemResultJsonDao, MmItemResultJsonEntity> + implements MmItemResultJsonService { + + @Override + public List<Object[]> getData(String outputId, Date predictTime) { + List<Object[]> result = new ArrayList<>(); + QueryWrapper<MmItemResultJsonEntity> wrapper = new QueryWrapper<>(); + wrapper.eq("outputid", outputId) + .eq("predicttime", predictTime); + MmItemResultJsonEntity data = baseDao.selectOne(wrapper); + if (data == null || StringUtils.isBlank(data.getJsonvalue())) { + return result; + } + result = JSONArray.parseArray(data.getJsonvalue(), Object[].class); + result.forEach(item -> { + item[0] = new Date(Long.parseLong(item[0].toString())); + }); + 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/mcs/pre/service/impl/MmItemResultLastPointServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultLastPointServiceImpl.java new file mode 100644 index 0000000..fca0cd5 --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultLastPointServiceImpl.java @@ -0,0 +1,44 @@ +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.framework.common.util.date.DateUtils; +import com.iailab.module.model.mcs.pre.dao.MmItemResultLastPointDao; +import com.iailab.module.model.mcs.pre.entity.MmItemResultLastPointEntity; +import com.iailab.module.model.mcs.pre.service.MmItemResultLastPointService; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author PanZhibao + * @Description + * @createTime 2024年11月14日 + */ +@Service +public class MmItemResultLastPointServiceImpl extends BaseServiceImpl<MmItemResultLastPointDao, MmItemResultLastPointEntity> + implements MmItemResultLastPointService { + + @Override + public List<Object[]> getData(String outputid, Date startTime, Date endTime) { + List<Object[]> result = new ArrayList<>(); + QueryWrapper<MmItemResultLastPointEntity> queryWrapper = new QueryWrapper<MmItemResultLastPointEntity>() + .eq("outputid", outputid) + .between("datatime", startTime, endTime) + .orderByAsc("datatime"); + List<MmItemResultLastPointEntity> list = baseDao.selectList(queryWrapper); + if (CollectionUtils.isEmpty(list)) { + return result; + } + list.forEach(item -> { + Object[] dataItem = new Object[2]; + dataItem[0] = DateUtils.format(item.getDatatime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); + dataItem[1] = item.getDatavalue(); + result.add(dataItem); + }); + 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/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 index 51c9c47..a953fe5 100644 --- 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 @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iailab.framework.common.util.date.DateUtils; import com.iailab.module.model.mcs.pre.dao.MmItemResultDao; import com.iailab.module.model.mcs.pre.entity.MmItemResultEntity; import com.iailab.module.model.mcs.pre.entity.MmItemResultJsonEntity; @@ -62,6 +63,7 @@ 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(); @@ -74,9 +76,9 @@ List<DataValueVO> lastVoList = new ArrayList<>(); int size = entry.getValue().size(); - t = t > 0 ? t : 0; + t = Math.max(t, 0); int n = "n".equals(nIndex) ? size : Integer.parseInt(nIndex); - int length = (n - t) > 0 ? (n - t) : 0; //预测完不变的数据长度 + int length = Math.max((n - t), 0); //预测完不变的数据长度 if (size >= n) { for (int i = 0; i < (size - length); i ++) { int index = length + i; @@ -104,39 +106,15 @@ map4.put("TABLENAME", "T_MM_ITEM_RESULT_JSON"); map4.put("entity", resultJson); mmItemResultDao.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()); - mmItemResultDao.deletePredictValue(params); - - int num1 = importList.size() / max_group_count; - int num2 = importList.size() % max_group_count; - if (num2 != 0) { - num1++; + Map<String, Object> params = new HashMap(4); + params.put("TABLENAME", T_MM_ITEM_RESULT); + params.put("OUTPUTID", entry.getKey()); + params.put("STARTTIME", importList.get(0).getDatatime()); + params.put("ENDTIME", importList.get(importList.size() - 1).getDatatime()); + mmItemResultDao.deletePredictValue(params); } - - 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); - mmItemResultDao.savePredictValue(map2); - } + mmItemResultDao.insertBatch(importList,max_group_count); Map<String, Object> map3 = new HashMap<>(2); map3.put("TABLENAME", "T_MM_ITEM_RESULT_LAST_POINT"); @@ -163,4 +141,24 @@ }).collect(Collectors.toList()); return result; } + + @Override + public List<Object[]> getData(String outputid, Date startTime, Date endTime) { + List<Object[]> result = new ArrayList<>(); + QueryWrapper<MmItemResultEntity> queryWrapper = new QueryWrapper<MmItemResultEntity>() + .eq("outputid", outputid) + .between("datatime", startTime, endTime) + .orderByAsc("datatime"); + List<MmItemResultEntity> list = mmItemResultDao.selectList(queryWrapper); + if (CollectionUtils.isEmpty(list)) { + return result; + } + list.forEach(item -> { + Object[] dataItem = new Object[2]; + dataItem[0] = DateUtils.format(item.getDatatime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); + dataItem[1] = item.getDatavalue(); + result.add(dataItem); + }); + return result; + } } 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 index 7c2a365..5b1b9e5 100644 --- 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 @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.util.object.BeanUtils; -import com.iailab.module.data.api.point.DataPointApi; 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.*; @@ -59,14 +58,11 @@ @Autowired private MmPredictItemDao mmPredictItemDao; - @Autowired - private DataPointApi dataPointApi; - @Override public PageResult<MmPredictItemRespVO> queryPage(MmPredictItemPageReqVO reqVO) { IPage<MmPredictItemRespVO> page = mmPredictItemDao.selectPage(reqVO); - return new PageResult<MmPredictItemRespVO>(page.getRecords(), page.getTotal()); + return new PageResult<>(page.getRecords(), page.getTotal()); } @Override @@ -77,12 +73,6 @@ @Override public MmPredictItemEntity getById(String id) { return mmPredictItemDao.selectById(id); - } - - @Override - public List<Object[]> getHisData(String itemId, Date startTime, Date endTime) { - List<Object[]> result = new ArrayList<>(); - return result; } @DSTransactional(rollbackFor = Exception.class) @@ -131,8 +121,11 @@ dmModuleItem.setItemid(predictItem.getId()); dmModuleItemService.saveModuleItem(dmModuleItem); - MmItemOutputEntity mmItemOutput = mmPredictItemDto.getMmItemOutput(); - mmItemOutput.setItemid(predictItem.getId()); + List<MmItemOutputEntity> mmItemOutput = mmPredictItemDto.getMmItemOutputList(); + mmItemOutput.forEach(e -> { + e.setId(UUID.randomUUID().toString()); + e.setItemid(predictItem.getId()); + }); mmItemOutputService.saveMmItemOutput(mmItemOutput); } @@ -166,10 +159,13 @@ if (!"".equals(dmModuleItem.getId()) && dmModuleItem.getId() != null) { dmModuleItemService.update(dmModuleItem); } - MmItemOutputEntity mmItemOutput = mmPredictItemDto.getMmItemOutput(); - if (!"".equals(mmItemOutput.getId()) && dmModuleItem.getId() != null) { - mmItemOutputService.update(mmItemOutput); - } + mmItemOutputService.deleteByItemId(predictItem.getId()); + List<MmItemOutputEntity> mmItemOutput = mmPredictItemDto.getMmItemOutputList(); + mmItemOutput.forEach(e -> { + e.setId(UUID.randomUUID().toString()); + e.setItemid(predictItem.getId()); + }); + mmItemOutputService.saveMmItemOutput(mmItemOutput); } @DSTransactional(rollbackFor = Exception.class) @@ -187,7 +183,7 @@ MmPredictItemDTO mmPredictItemDto = BeanUtils.toBean(predictItem, MmPredictItemDTO.class); mmPredictItemDto.setMmPredictItem(predictItem); mmPredictItemDto.setDmModuleItem(dmModuleItemService.getByItemid(id)); - mmPredictItemDto.setMmItemOutput(mmItemOutputService.getByItemid(id)); + mmPredictItemDto.setMmItemOutputList(mmItemOutputService.getByItemid(id)); MmItemTypeEntity itemType = mmItemTypeImpl.getById(predictItem.getItemtypeid()); if (itemType != null && ItemTypeEnum.NORMAL_ITEM.getName().equals(itemType.getItemtypename())) { MmPredictModelEntity mmPredictModel = mmPredictModelService.getByItemid(id); @@ -196,6 +192,10 @@ mmPredictItemDto.setMmModelParamList(mmModelParamService.getByModelid(mmPredictModel.getId())); mmPredictItemDto.setMmPredictMergeItem(new MmPredictMergeItemEntity()); } else if (itemType != null && ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) { + mmPredictItemDto.setMmPredictModel(new MmPredictModelEntity()); + mmPredictItemDto.setMmModelArithSettingsList(new ArrayList<>()); + mmPredictItemDto.setMmModelParamList(new ArrayList<>()); + mmPredictItemDto.setMmPredictMergeItem(new MmPredictMergeItemEntity()); mmPredictItemDto.setMmPredictMergeItem(mmPredictMergeItemService.getByItemid(id)); } return mmPredictItemDto; 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 index dd6577a..109e477 100644 --- 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 @@ -2,12 +2,14 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; import com.iailab.module.model.mcs.pre.entity.*; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; +import java.util.Date; import java.util.List; /** @@ -88,5 +90,18 @@ @ExcelProperty("存放表") private String tablename; + @Schema(description = "运行时间") + @ExcelProperty("运行时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date lastTime; + + @Schema(description = "运行状态") + @ExcelProperty("运行状态") + private Integer runStatus; + + @Schema(description = "运行耗时") + @ExcelProperty("运行耗时") + private Long duration; + } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/PreDataBarLineVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/PreDataBarLineVO.java deleted file mode 100644 index e3f4458..0000000 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/PreDataBarLineVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.iailab.module.model.mcs.pre.vo; - -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** - * @author PanZhibao - * @Description - * @createTime 2024年08月01日 - */ -@Data -public class PreDataBarLineVO implements Serializable { - private static final long serialVersionUID = 1L; - - private Date predictTime; - - private Date startTime; - - private Date endTime; - - private List<String> legend; - - private List<String> categories; - - private List<PreDataViewVO> dataViewList; - -} \ 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/PreDataViewVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/PreDataViewVO.java deleted file mode 100644 index 6b1f955..0000000 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/PreDataViewVO.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.iailab.module.model.mcs.pre.vo; - -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 PreDataViewVO implements Serializable { - private static final long serialVersionUID = 1L; - - private String itemId; - - private String itemName; - - private Date predictTime; - - private BigDecimal rangeH; - - private BigDecimal rangeL; - - private BigDecimal deadLineH; - - private BigDecimal deadLineL; - - private BigDecimal limtH; - - private BigDecimal limtL; - - private BigDecimal maxValue; - - private BigDecimal minValue; - - private BigDecimal hisMax; - - private BigDecimal hisMin; - - private BigDecimal hisAvg; - - private BigDecimal hisCumulant; - - private BigDecimal preMax; - - private BigDecimal preMin; - - private BigDecimal preAvg; - - private BigDecimal preCumulant; - - private Map<String, Object> prop; - - /** - * 真实值 - */ - private List<Object[]> realData; - - /** - * T+N预测值,N表示预测频率 - */ - private List<Object[]> preDataN; - - /** - * T+L预测值,L表示预测长度 - */ - private List<Object[]> preDataL; - - /** - * 当时预测值 - */ - private List<Object[]> curData; - - /** - * 调整值 - */ - private List<Object[]> adjData; -} \ 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/PreItemOptionVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/PreItemOptionVO.java deleted file mode 100644 index 5a67166..0000000 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/vo/PreItemOptionVO.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.iailab.module.model.mcs.pre.vo; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author PanZhibao - * @Description - * @createTime 2024年07月31日 - */ -@Data -public class PreItemOptionVO implements Serializable { - private static final long serialVersionUID = 1L; - - private String id; - - private String label; - - private List<PreItemOptionVO> children; -} \ 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/PredictItemHandler.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictItemHandler.java index ec51294..c0d15dc 100644 --- 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 @@ -13,5 +13,13 @@ */ public interface PredictItemHandler { + /** + * 单个预测项预测 + * + * @param predictTime + * @param predictItemDto + * @return + * @throws ItemInvokeException + */ 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 index 5253a3c..9379a02 100644 --- 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 @@ -13,5 +13,13 @@ */ public interface PredictModelHandler { + /** + * 根据模型预测 + * + * @param predictTime + * @param predictModel + * @return + * @throws ModelInvokeException + */ 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 index d5f4515..ecf8a08 100644 --- 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 @@ -1,6 +1,8 @@ package com.iailab.module.model.mdk.predict; +import com.iailab.module.model.mcs.pre.enums.ItemRunStatusEnum; import com.iailab.module.model.mcs.pre.enums.ItemStatus; +import com.iailab.module.model.mcs.pre.service.MmItemStatusService; import com.iailab.module.model.mdk.factory.PredictItemFactory; import com.iailab.module.model.mdk.vo.ItemVO; import com.iailab.module.model.mdk.vo.PredictResultVO; @@ -32,7 +34,18 @@ @Autowired private PredictResultHandler predictResultHandler; + @Autowired + private MmItemStatusService mmItemStatusService; + + /** + * 预测处理 + * + * @param predictItemList + * @param predictTime + * @param intervalTime + * @return + */ public Map<String, PredictResultVO> predict(List<ItemVO> predictItemList, Date predictTime, int intervalTime) { Map<String, PredictResultVO> result = new HashMap<>(); @@ -41,10 +54,13 @@ if (!predictItem.getStatus().equals(ItemStatus.STATUS1.getCode())) { continue; } + Long totalDur = 0L; try { + mmItemStatusService.recordStatus(predictItem.getId(), ItemRunStatusEnum.PROCESSING, totalDur); PredictItemHandler predictItemHandler = predictItemFactory.create(predictItem.getId()); Instant start = Instant.now(); try { + // 预测项开始预测 predictResult = predictItemHandler.predict(predictTime, predictItem); } catch (Exception e) { e.printStackTrace(); @@ -53,21 +69,27 @@ Instant end = Instant.now(); Long drtPre = Duration.between(start, end).getSeconds(); log.info(MessageFormat.format("预测项:{0},预测时间:{1}秒", predictItem.getItemName(), drtPre)); + totalDur = totalDur + drtPre; + predictResult.setGranularity(predictItem.getGranularity()); 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)); - + totalDur = totalDur + drtSave; + mmItemStatusService.recordStatus(predictItem.getId(), ItemRunStatusEnum.SUCCESS, totalDur); result.put(predictItem.getItemNo(), predictResult); } catch (Exception e) { e.printStackTrace(); log.error(MessageFormat.format("预测项编号:{0},预测项名称:{1},预测失败:{2} 预测时刻:{3}", predictItem.getId(), predictItem.getItemName(), e.getMessage(), predictTime)); + mmItemStatusService.recordStatus(predictItem.getId(), ItemRunStatusEnum.FAIL, totalDur); } } return result; 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 index b0ab71d..86b5052 100644 --- 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 @@ -1,12 +1,11 @@ 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.baomidou.dynamic.datasource.annotation.DSTransactional; +import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity; 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.MmItemOutputVO; import com.iailab.module.model.mdk.vo.PredictResultVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; @@ -23,9 +22,6 @@ @Autowired private ItemEntityFactory itemEntityFactory; - @Autowired - private DataPointApi dataPointApi; - /** * convertToPredictData * @@ -40,30 +36,50 @@ resultMap.put(itemOutPutList.get(0).getId(), predictResult.getPredictList()); return resultMap; } - ApiPointDTO point = dataPointApi.getInfoById(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++) { + Map<MmItemOutputEntity, double[]> predictMatrixs = predictResult.getPredictMatrixs(); + HashMap<String,List<DataValueVO>> predictLists = new HashMap<>(); + for (Map.Entry<MmItemOutputEntity, double[]> entry : predictMatrixs.entrySet()) { + Integer rows = entry.getValue().length; List<DataValueVO> predictDataList = new ArrayList<>(); - for (Integer j = 0; j < rows; j++) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(predictResult.getPredictTime()); + for (Integer i = 0; i < rows; i++) { DataValueVO predictData = new DataValueVO(); - predictData.setDataTime(dateTimeList.get(j)); - predictData.setDataValue(Double.valueOf(predictResult.getPredictMatrix()[j][i])); + predictData.setDataTime(calendar.getTime()); + predictData.setDataValue(Double.valueOf(entry.getValue()[i])); predictDataList.add(predictData); + + calendar.add(Calendar.SECOND, predictResult.getGranularity()); } - resultMap.put(itemOutPutList.get(i).getId(), predictDataList); - predictResult.setPredictList(predictDataList); + resultMap.put(entry.getKey().getId(), predictDataList); + predictLists.put(entry.getKey().getResultstr(), predictDataList); } + predictResult.setPredictLists(predictLists); return resultMap; + } + + public Map<String, List<DataValueVO>> convertToPredictData2(PredictResultVO predictResult) { + Map<String, List<DataValueVO>> predictLists = new HashMap<>(); + if (!CollectionUtils.isEmpty(predictResult.getPredictList())) { + return predictLists; + } + Map<MmItemOutputEntity, double[]> predictMatrixs = predictResult.getPredictMatrixs(); + for (Map.Entry<MmItemOutputEntity, double[]> entry : predictMatrixs.entrySet()) { + Integer rows = entry.getValue().length; + List<DataValueVO> predictDataList = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(predictResult.getPredictTime()); + for (Integer i = 0; i < rows; i++) { + DataValueVO predictData = new DataValueVO(); + predictData.setDataTime(calendar.getTime()); + predictData.setDataValue(Double.valueOf(entry.getValue()[i])); + predictDataList.add(predictData); + + calendar.add(Calendar.SECOND, predictResult.getGranularity()); + } + predictLists.put(entry.getKey().getResultstr(), predictDataList); + } + return predictLists; } /** @@ -72,6 +88,7 @@ * @param predictResult */ @Async + @DSTransactional public void savePredictResult(PredictResultVO predictResult) { Map<String, List<DataValueVO>> resultMap = convertToPredictData(predictResult); mmItemResultService.savePredictValue(resultMap, predictResult.getLt(), "n", predictResult.getPredictTime()); 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 index d996277..2445bef 100644 --- 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 @@ -2,7 +2,7 @@ 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.data.enums.DataPointFreqEnum; 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; @@ -41,6 +41,14 @@ @Autowired private PredictResultHandler predictResultHandler; + /** + * MergeItem预测 + * + * @param predictTime + * @param predictItemDto + * @return + * @throws ItemInvokeException + */ @Override public PredictResultVO predict(Date predictTime, ItemVO predictItemDto) throws ItemInvokeException { @@ -71,7 +79,7 @@ Calendar calendar = Calendar.getInstance(); calendar.setTime(endTime); - calendar.add(Calendar.SECOND, (predictLength - 1) * DataPointFreq.getEumByCode(pointEntity.getMinfreqid()).getValue()); + calendar.add(Calendar.SECOND, (predictLength - 1) * DataPointFreqEnum.getEumByCode(pointEntity.getMinfreqid()).getValue()); endTime = new Timestamp(calendar.getTime().getTime()); List<DataValueVO> predictValueList = predictResultHandler.getPredictValueByItemNo(itemNo, predictTime, endTime); if (predictValueList.size() != predictLength) { 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 index ef3149a..d32884b 100644 --- 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 @@ -34,14 +34,20 @@ @Autowired private PredictModelHandler predictModelHandler; + /** + * NormalItem预测 + * + * @param predictTime + * @param predictItemDto + * @return + * @throws ItemInvokeException + */ @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<>(); + String itemId = predictItemDto.getId(); + predictResult.setPredictId(itemId); try { // 获取预测项模型 List<MmPredictModelEntity> predictModelList = mmPredictModelService.getActiveModelByItemId(itemId); @@ -49,26 +55,15 @@ 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); - + MmPredictModelEntity predictModel = predictModelList.get(0); + predictResult = predictModelHandler.predictByModel(predictTime, predictModel); } catch (Exception ex) { ex.printStackTrace(); //预测项预测失败的状态 - itemStatus = ItemPredictStatus.FAILED; throw new ItemInvokeException(MessageFormat.format("{0},itemId={1}", ItemInvokeException.errorItemFailed, itemId)); } - return finalResult; + 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/PredictModelHandlerImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java index 41246be..5a107da 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java @@ -2,13 +2,13 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.iail.IAILMDK; import com.iail.model.IAILModel; +import com.iailab.module.model.common.enums.CommonConstant; +import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity; 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.MmItemOutputService; 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; @@ -20,10 +20,7 @@ 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; +import java.util.*; /** * @author PanZhibao @@ -38,13 +35,21 @@ private MmModelArithSettingsService mmModelArithSettingsService; @Autowired - private MmModelResultstrService mmModelResultstrService; + private MmItemOutputService mmItemOutputService; @Autowired private SampleConstructor sampleConstructor; + /** + * 根据模型预测,返回预测结果 + * + * @param predictTime + * @param predictModel + * @return + * @throws ModelInvokeException + */ @Override - public PredictResultVO predictByModel(Date predictTime, MmPredictModelEntity predictModel) throws ModelInvokeException { + public synchronized PredictResultVO predictByModel(Date predictTime, MmPredictModelEntity predictModel) throws ModelInvokeException { PredictResultVO result = new PredictResultVO(); if (predictModel == null) { throw new ModelInvokeException("modelEntity is null"); @@ -67,10 +72,10 @@ int portLength = sampleDataList.size(); Object[] param2Values = new Object[portLength + 2]; for (int i = 0; i < portLength; i++) { - param2Values[i]=sampleDataList.get(i).getMatrix(); + param2Values[i] = sampleDataList.get(i).getMatrix(); } param2Values[portLength] = newModelBean.getDataMap().get("models"); - param2Values[portLength+1] = settings; + param2Values[portLength + 1] = settings; log.info("#######################预测模型 " + predictModel.getItemid() + " ##########################"); JSONObject jsonObjNewModelBean = new JSONObject(); @@ -81,33 +86,52 @@ log.info(String.valueOf(jsonObjParam2Values)); //IAILMDK.run -// HashMap<String, Object> modelResult = IAILMDK.run(newModelBean, param2Values); HashMap<String, Object> modelResult = DllUtils.run(newModelBean, param2Values, predictModel.getMpkprojectid()); + if (!modelResult.containsKey(CommonConstant.MDK_STATUS_CODE) || !modelResult.containsKey(CommonConstant.MDK_RESULT) || + !modelResult.get(CommonConstant.MDK_STATUS_CODE).toString().equals(CommonConstant.MDK_STATUS_100)) { + throw new RuntimeException("模型结果异常:" + modelResult); + } + modelResult = (HashMap<String, Object>) modelResult.get(CommonConstant.MDK_RESULT); //打印结果 JSONObject jsonObjResult = new JSONObject(); jsonObjResult.put("result", modelResult); log.info(String.valueOf(jsonObjResult)); - MmModelResultstrEntity modelResultstr = mmModelResultstrService.getInfo(predictModel.getResultstrid()); - log.info("模型计算完成:modelId=" + modelId + result); - if (modelResult.containsKey(modelResultstr.getResultstr())) { - Double[][] temp = (Double[][]) modelResult.get(modelResultstr.getResultstr()); - double[][] temp1 = new double[temp.length][temp[0].length]; - for (int i = 0; i < temp.length; i++) { - for (int j = 0; j < temp[i].length; j++) { - temp1[i][j] = temp[i][j].doubleValue(); + List<MmItemOutputEntity> ItemOutputList = mmItemOutputService.getByItemid(predictModel.getItemid()); + log.info("模型计算完成:modelId=" + modelId + modelResult); + + Map<MmItemOutputEntity, double[]> predictMatrixs = new HashMap<>(ItemOutputList.size()); + + for (MmItemOutputEntity outputEntity : ItemOutputList) { + String resultStr = outputEntity.getResultstr(); + if (modelResult.containsKey(resultStr)) { + if (outputEntity.getResultType() == 1) { + // 一维数组 + Double[] temp = (Double[]) modelResult.get(resultStr); + double[] temp1 = new double[temp.length]; + for (int i = 0; i < temp.length; i++) { + temp1[i] = temp[i].doubleValue(); + } + predictMatrixs.put(outputEntity, temp1); + } else if (outputEntity.getResultType() == 2) { + // 二维数组 + Double[][] temp = (Double[][]) modelResult.get(resultStr); + Double[] temp2 = temp[outputEntity.getResultIndex()]; + double[] temp1 = new double[temp2.length]; + for (int i = 0; i < temp2.length; i++) { + temp1[i] = temp2[i].doubleValue(); + } + predictMatrixs.put(outputEntity, temp1); } } - result.setPredictMatrix(temp1); } + result.setPredictMatrixs(predictMatrixs); result.setModelResult(modelResult); result.setPredictTime(predictTime); } catch (Exception ex) { - log.error("IAILModel对象构造失败,modelId=" + modelId); + log.error("调用发生异常,异常信息为:{}", ex); log.error(ex.getMessage()); - log.error("调用发生异常,异常信息为:{}" , ex); ex.printStackTrace(); - } return result; } @@ -135,7 +159,7 @@ newModelBean.setParamsArray(paramsArray); HashMap<String, Object> dataMap = new HashMap<>(); HashMap<String, String> models = new HashMap<>(1); - models.put("paramFile", predictModel.getModelpath()); + models.put("model_path", predictModel.getModelpath()); dataMap.put("models", models); newModelBean.setDataMap(dataMap); return newModelBean; 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 index 0828ae3..c9a6afa 100644 --- 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 @@ -90,7 +90,8 @@ } //补全数据 ColumnItem columnItem = entry.getColumnItemList().get(i); - dataEntityList = super.completionData(matrix.length, dataEntityList, columnItem.startTime, columnItem.getEndTime(), columnItem.granularity); +// dataEntityList = super.completionData(matrix.length, dataEntityList, columnItem.startTime, columnItem.getEndTime(), columnItem.granularity); + dataEntityList = super.completionData(matrix.length, dataEntityList, columnItem.startTime, columnItem.endTime, columnItem.paramId,columnItem.getParamType()); /** 如果数据取不满,把缺失的数据点放在后面 */ if (dataEntityList != null && dataEntityList.size() != 0) { @@ -122,7 +123,7 @@ String paramType = columnItem.getParamType(); switch (paramType) { case "DATAPOINT": - ApiPointDTO point = dataPointApi.getInfoById(columnItem.getId()); + ApiPointDTO point = dataPointApi.getInfoById(columnItem.getParamId()); ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO(); queryDto.setPointNo(point.getPointNo()); queryDto.setStart(columnItem.getStartTime()); 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 index bee81d5..34a5900 100644 --- 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 @@ -1,17 +1,26 @@ 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.DataPointFreqEnum; +import com.iailab.module.model.mdk.common.enums.ModelParamType; 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.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; +import java.sql.Timestamp; import java.util.*; abstract class SampleDataConstructor { private Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private DataPointApi dataPointApi; /** * prepareSampleData @@ -30,25 +39,85 @@ * @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()) { + public List<DataValueVO> completionData(int length, List<DataValueVO> dataEntityList, Date startTime, Date endTime, String paramId,String paramType) { + if (CollectionUtils.isEmpty(dataEntityList) || length == dataEntityList.size()) { return dataEntityList; + }else if (length < dataEntityList.size()){ + return dataEntityList.subList(dataEntityList.size()-length,dataEntityList.size()); } - logger.info("补全数据, length =" + length + "; size = " + dataEntityList.size() + "; startTime = " + startTime.getTime() + "; endTime = " + endTime.getTime()); - logger.info("补全前:" + dataEntityList); + List<DataValueVO> completionDataEntityList = new ArrayList<>(); + long oneMin = 0L; + + long start = startTime.getTime(); + long end = endTime.getTime(); + long mins = 0L; + + switch (ModelParamType.getEumByCode(paramType)) { + case PREDICTITEM: + // 预测值 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startTime); + calendar.set(Calendar.HOUR_OF_DAY,0); + calendar.set(Calendar.MINUTE,0); + calendar.set(Calendar.SECOND,0); + calendar.add(Calendar.DAY_OF_YEAR,1); + startTime = calendar.getTime(); + start = startTime.getTime(); + + calendar.setTime(endTime); + calendar.set(Calendar.HOUR_OF_DAY,0); + calendar.set(Calendar.MINUTE,0); + calendar.set(Calendar.SECOND,0); + endTime = calendar.getTime(); + end = endTime.getTime(); + + + oneMin = 24 * 60 * 60 * 1000; + mins = ((end - start) / oneMin); + break; + case DATAPOINT: + // 测点值 + ApiPointDTO dataPoint = dataPointApi.getInfoById(paramId); + oneMin = 1000L * DataPointFreqEnum.getEumByCode(dataPoint.getMinfreqid()).getValue(); + + // 设置时间偏移量 + start = start - (start % oneMin) + oneMin; + end = end - (end % oneMin) + oneMin; + + + mins = ((end - start) / oneMin); + break; + case IND: + // 指标数据 + oneMin = 24 * 60 * 60 * 1000; + Calendar calendar2 = Calendar.getInstance(); + calendar2.setTime(startTime); + calendar2.set(Calendar.HOUR_OF_DAY,0); + calendar2.set(Calendar.MINUTE,0); + calendar2.set(Calendar.SECOND,0); + start = calendar2.getTime().getTime(); + + calendar2.setTime(endTime); + calendar2.set(Calendar.HOUR_OF_DAY,0); + calendar2.set(Calendar.MINUTE,0); + calendar2.set(Calendar.SECOND,0); + end = calendar2.getTime().getTime(); + + + mins = ((end - start) / oneMin); + break; + default: + break; + } 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++) { + for (int i = 0; i < mins; i ++) { Long key = start + oneMin * i; Double value = sourceDataMap.get(key); dataMap.put(key, value); @@ -57,23 +126,20 @@ //补充缺少项 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++; + k ++; lastItem = item; DataValueVO dataEntity = new DataValueVO(); - dataEntity.setDataTime(new Date(item.getKey())); + dataEntity.setDataTime(new Timestamp(item.getKey())); dataEntity.setDataValue(item.getValue()); completionDataEntityList.add(dataEntity); } - - logger.info("补全后:" + completionDataEntityList); return completionDataEntityList; } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java index a67ac2d..f32b9be 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java @@ -1,8 +1,12 @@ package com.iailab.module.model.mdk.sample; +import com.iailab.module.data.api.plan.PlanItemApi; +import com.iailab.module.data.api.plan.dto.ApiPlanItemDTO; 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.data.enums.DataPointFreqEnum; +import com.iailab.module.data.enums.TimeGranularityEnum; +import com.iailab.module.model.mdk.common.enums.ModelParamType; 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; @@ -25,6 +29,9 @@ @Autowired private ItemEntityFactory itemEntityFactory; + + @Autowired + private PlanItemApi planItemApi; /** * prepareSampleInfo @@ -64,21 +71,21 @@ Date dateTime = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(originalTime); - switch (columnItem.getParamType()) { - case "DATAPOINT": + switch (ModelParamType.getEumByCode(columnItem.getParamType())) { + case DATAPOINT: ApiPointDTO dataPoint = dataPointApi.getInfoById(columnItem.getParamId()); if (dataPoint == null) { return null; } - dateTime = calculateTime(originalTime, true, columnItem.getDataLength(), DataPointFreq.getEumByCode(dataPoint.getMinfreqid()).getValue()); + dateTime = calculateTime(originalTime, true, columnItem.getDataLength(), DataPointFreqEnum.getEumByCode(dataPoint.getMinfreqid()).getValue()); break; - case "PREDICTITEM": + case PREDICTITEM: dateTime = calendar.getTime(); break; - case "IND-HIS": + case IND: dateTime = calculateTime(originalTime, true, columnItem.getDataLength(), 60); break; - case "IND-PLAN": + case PLAN: dateTime = calendar.getTime(); break; default: @@ -99,22 +106,27 @@ Date dateTime = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(originalTime); - switch (columnItem.getParamType()) { - case "DATAPOINT": + switch (ModelParamType.getEumByCode(columnItem.getParamType())) { + case DATAPOINT: ApiPointDTO dataPoint = dataPointApi.getInfoById(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); + case PREDICTITEM: + dateTime = calendar.getTime(); + break; + case IND: + dateTime = calendar.getTime(); + break; + case PLAN: + ApiPlanItemDTO planItem = planItemApi.getInfoByNo(columnItem.getParamId()); + if (planItem == null) { + return null; + } + dateTime = calculateDate(originalTime, false, columnItem.getDataLength(), + TimeGranularityEnum.getEumByCode(planItem.getTimeGranularity()).getValue()); break; default: break; @@ -134,7 +146,7 @@ switch (columnItem.getParamType()) { case "DATAPOINT": ApiPointDTO dataPoint = dataPointApi.getInfoById(columnItem.getParamId()); - granularity = DataPointFreq.getEumByCode(dataPoint.getMinfreqid()).getValue(); + granularity = DataPointFreqEnum.getEumByCode(dataPoint.getMinfreqid()).getValue(); break; case "PREDICTITEM": granularity = itemEntityFactory.getItemById(columnItem.getParamId()).getGranularity(); @@ -192,4 +204,20 @@ calendar.add(Calendar.SECOND, timeLength * granularity); return calendar.getTime(); } + + public Date calculateDate(Date originalTime, Boolean backward, int dataLength, int field) { + 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); + 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/vo/ItemVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/ItemVO.java index a6efdcf..ce35e63 100644 --- 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 @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + /** * @author PanZhibao * @Description @@ -31,4 +33,9 @@ * 项目id */ private String mpkProjectId; + + /** + * 最后运行时间 + */ + private Date lastTime; } \ 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/PredictResultVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/vo/PredictResultVO.java index 5606d9e..be560fe 100644 --- 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 @@ -1,5 +1,6 @@ package com.iailab.module.model.mdk.vo; +import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -8,6 +9,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; +import java.util.Map; @Data @AllArgsConstructor @@ -31,6 +33,11 @@ private double[][] predictMatrix; /** + * 统一预测入口的预测类型(循环调用、手动调用) Map<MmItemOutputEntity,double[]> + */ + private Map<MmItemOutputEntity, double[]> predictMatrixs; + + /** * 时间间隔 (当前预测时间 与 上一次预测时间 相差的分钟数;系统计算得出) */ private int t; @@ -46,9 +53,18 @@ private String saveIndex; /** + * 粒度 + */ + private Integer granularity; + + /** * 预测集合 */ private List<DataValueVO> predictList; + /** + * 预测集合 + */ + private HashMap<String, List<DataValueVO>> predictLists; /** * 模型结果 diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MpkFileController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MpkFileController.java index 74f7a1b..9853437 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MpkFileController.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MpkFileController.java @@ -70,7 +70,7 @@ dto.setGroupName(dto.getMenuAndGroup().get(1)); } } - dto.setPyModule(packService.getModelPath(dto.getClassName())); + dto.setPyModule(packService.getModelPath(dto.getPkgName())); mpkFileService.save(dto); return CommonResult.success(true); } @@ -91,7 +91,7 @@ dto.setGroupName(dto.getMenuAndGroup().get(1)); } } - dto.setPyModule(packService.getModelPath(dto.getClassName())); + dto.setPyModule(packService.getModelPath(dto.getPkgName())); mpkFileService.update(dto); return CommonResult.success(true); } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml b/iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml index b5c27ae..61cdbda 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml +++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/application.yml @@ -218,6 +218,7 @@ - t_chart_param - t_chart - t_mpk_pack + - t_mm_item_status app: app-key: model app-secret: 85b0df7edc3df3611913df34ed695011 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 index 910200c..ec7a065 100644 --- 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 @@ -18,7 +18,7 @@ (id,outputid,datatime,datavalue) VALUES <foreach item="item" collection="list" separator=","> - (#{item.id},#{item.outputId},#{item.dataTime},#{item.dataValue}) + (#{item.id},#{item.outputid},#{item.datatime},#{item.datavalue}) </foreach> </insert> 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 index 735b599..5bda3f9 100644 --- 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 @@ -14,6 +14,7 @@ <result property="isFuse" column="ISFUSE"/> <result property="predictPhase" column="PREDICTPHASE"/> <result property="workChecked" column="WORKCHECKED"/> + <result property="lastTime" column="last_time"/> </resultMap> <resultMap id="MergeItemVO" type="com.iailab.module.model.mdk.vo.MergeItemVO"> @@ -38,15 +39,13 @@ TDMI.ITEMORDER, TMPI.STATUS, TDMI.CATEGORYID, - TMIO.POINTID, - TMIO.TAGNAME, - TMIO.RESULTTABLEID, - TMRT.TABLENAME + TMIS.last_time, + TMIS.status run_status, + TMIS.duration 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 + LEFT JOIN t_mm_item_status TMIS ON TMIS.item_id = TMPI.ID <where> <if test="params.itemno != null and params.itemno != ''"> AND TMPI.ITEMNO LIKE CONCAT('%', #{params.itemno},'%') @@ -80,16 +79,10 @@ TDMI.MODULEID, TDMI.ITEMORDER, TMPI.STATUS, - TDMI.CATEGORYID, - TMIO.POINTID, - TMIO.TAGNAME, - TMIO.RESULTTABLEID, - TMRT.TABLENAME + TDMI.CATEGORYID 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="itemno != null and itemno != ''"> AND TMPI.ITEMNO LIKE CONCAT('%', #{itemno},'%') @@ -142,17 +135,20 @@ t1.status, t1.isfuse, t1.predictphase, - t1.workchecked + t1.workchecked, + t3.last_time FROM - t_mm_predict_item t1, - 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> + t_mm_predict_item t1 + LEFT JOIN t_mm_item_type t2 on t2.id = t1.itemtypeid + LEFT JOIN t_mm_item_status t3 on t3.item_id = t1.id + <where> + <if test="ITEMID != null and ITEMID != ''"> + AND t1.id=#{ITEMID} + </if> + <if test="ITEMNO != null and ITEMNO != ''"> + t1.itemno=#{ITEMNO} + </if> + </where> </select> <select id="getMergeItemByItemId" parameterType="map" resultMap="MergeItemVO"> SELECT t1.id, -- Gitblit v1.9.3