From 3058865fa4dfa634a92b4ebd826d8b1264dc90a3 Mon Sep 17 00:00:00 2001 From: houzhongjian <houzhongyi@126.com> Date: 星期三, 05 三月 2025 15:04:41 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/admin/StAdjustConfigController.java | 80 +++++++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictModelHandlerImpl.java | 4 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java | 17 - iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java | 2 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigRespVO.java | 31 ++ iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataSampleViewRespDTO.java | 3 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewRespDTO.java | 2 iailab-module-model/iailab-module-model-biz/db/mysql.sql | 2 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StAdjustConfigDao.java | 10 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAdjustConfigDTO.java | 46 ++++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/admin/StAdjustConfigResultController.java | 53 ++++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigDetRespVO.java | 23 ++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java | 7 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustConfigServiceImpl.java | 68 ++++++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustResultPageReqVO.java | 4 iailab-plat-sdk/doc/demo/Demo.java | 0 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java | 72 +++++- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/common/utils/DllUtils.java | 2 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java | 13 + iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustConfigService.java | 18 + iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java | 22 + iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java | 2 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustConfigDetServiceImpl.java | 19 + iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustResultRespVO.java | 23 ++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustConfigDetService.java | 4 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigPageReqVO.java | 3 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StAdjustConfigDao.xml | 25 ++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StAdjustResultDao.java | 15 + iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StAdjustResultDao.xml | 21 + iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigSaveReqVO.java | 40 +++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java | 5 31 files changed, 596 insertions(+), 40 deletions(-) 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 dded6ad..9a57522 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 @@ -36,7 +36,7 @@ PreDataBarLineRespVO getPreDataCharts(@RequestBody PreDataBarLineReqVO reqVO); @PostMapping(PREFIX + "/predict-data/item-chart") - @Operation(summary = "预测数据图表") + @Operation(summary = "预测数据图表-预测项首页图表") PreDataItemChartRespVO getPreDataItemChart(@RequestBody PreDataItemChartReqVO reqVO); @PostMapping(PREFIX + "/predict-data/single-chart") diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataSampleViewRespDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataSampleViewRespDTO.java index b6d4d93..1611b7a 100644 --- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataSampleViewRespDTO.java +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataSampleViewRespDTO.java @@ -27,4 +27,7 @@ @Schema(description = "累计预测值") private List<Object[]> cumulantPreData; + + @Schema(description = "调整预测值") + private List<Object[]> adjData; } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewRespDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PreDataViewRespDTO.java index 3372d74..48602c3 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 @@ -114,7 +114,7 @@ @Schema(description = "当时预测值") private List<Object[]> curData; - @Schema(description = "调整值") + @Schema(description = "调整预测值") private List<Object[]> adjData; @Schema(description = "预警信息") diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAdjustConfigDTO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAdjustConfigDTO.java new file mode 100644 index 0000000..73e0d60 --- /dev/null +++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAdjustConfigDTO.java @@ -0,0 +1,46 @@ +package com.iailab.module.model.api.mcs.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author lirm + * @date 2025年02月25日 + */ +@Data +public class StAdjustConfigDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 模型代码 + */ + private String modelCode; + + /** + * 模型名称 + */ + private String modelName; + + /** + * 状态(0正常 1停用) + */ + private Integer status; + + /** + * 备注 + */ + private String remark; + + /** + * 创建时间 + */ + private Date createTime; +} 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 9d82825..282b553 100644 --- a/iailab-module-model/iailab-module-model-biz/db/mysql.sql +++ b/iailab-module-model/iailab-module-model-biz/db/mysql.sql @@ -931,7 +931,7 @@ CREATE TABLE `t_st_adjust_result` ( `id` varchar(36) NOT NULL COMMENT 'ID', `config_id` varchar(36) DEFAULT NULL COMMENT '配置ID', - `output_id` varchar(36) DEFAULT NULL COMMENT '预测项输出ID', + `output_id` varchar(50) DEFAULT NULL COMMENT '预测项输出ID', `schedule_model_id` varchar(36) DEFAULT NULL COMMENT '调度模型ID', `adjust_time` datetime NULL DEFAULT NULL COMMENT '模拟调整时间', `adjust_value` varchar(500) DEFAULT NULL COMMENT '模拟调整值', diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java index efc61f1..3856993 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java @@ -79,6 +79,9 @@ private MmItemResultJsonService mmItemResultJsonService; @Autowired + private StAdjustResultService stAdjustResultService; + + @Autowired private ChartService chartService; @Autowired @@ -215,7 +218,10 @@ viewDto.setRealData(getHisData(output.getPointid(), startTime, endTime)); viewDto.setPreDataN(mmItemResultService.getData(output.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); viewDto.setPreDataL(mmItemResultLastPointService.getData(output.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); - viewDto.setCurData(mmItemResultJsonService.getData(output.getId(), predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, 3)); + viewDto.setCurData(mmItemResultJsonService.getData(output.getId(), predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); + // 模拟调整曲线 + viewDto.setAdjData(stAdjustResultService.getData(output.getId(), predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); + List<Double> values = new ArrayList<>(); if (!CollectionUtils.isEmpty(viewDto.getRealData())) { List<Double> hisValues = new ArrayList<>(); @@ -334,6 +340,8 @@ } viewDto.setCumulantPreData(mmItemResultService.getData(out.getId() + CommonDict.CUMULANT_SUFFIX, startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); } + // 调整预测值 + viewDto.setAdjData(stAdjustResultService.getData(out.getId(),predictItem.getLastTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); viewMap.put(out.getResultName(), viewDto); } @@ -398,6 +406,8 @@ dataView.setRealData(new ArrayList<>()); } dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat, 3)); + // 调整预测值 + dataView.setAdjData(stAdjustResultService.getData(outPut.getId(),predictTime,timeFormat)); dataView.setLineType(lineType.getCode()); switch (lineType) { case TN: @@ -584,7 +594,7 @@ valueDTOS.forEach(item -> { Object[] values = new Object[2]; values[0] = DateUtils.format(item.getT(), timeFormat); - values[1] = new BigDecimal(item.getV()).setScale(2, BigDecimal.ROUND_HALF_UP); + values[1] = new BigDecimal(item.getV()).setScale(3, BigDecimal.ROUND_HALF_UP); result.add(values); }); return result; @@ -711,9 +721,13 @@ result.put(key, BigDecimal.ZERO); } MmItemOutputEntity outPut = mmItemOutputService.getByItemid(predictItem.getId(), itemNo[1], itemNo[2]); - + String outputId = outPut.getId(); + // 如果第5个参数为1,则取累计值 + if ("1".equals(itemNo[4])){ + outputId = outPut.getId() + CommonDict.CUMULANT_SUFFIX; + } Date predictTime = predictItem.getLastTime(); - List<Object[]> curData = mmItemResultJsonService.getData(outPut.getId(), predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); + List<Object[]> curData = mmItemResultJsonService.getData(outputId, predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); if(CollectionUtils.isEmpty(curData)) { result.put(key, BigDecimal.ZERO); } else { 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 399c022..411dec7 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 @@ -219,7 +219,7 @@ break; } // 开始预测 - predictModuleHandler.predictAdjust(predictItem, reqDTO.getPredictTime(), deviationList, scheduleScheme.getModelId()); + predictModuleHandler.predictAdjust(predictItem, reqDTO.getPredictTime(), deviationList, scheduleScheme.getModelId(), det.getConfigId()); } return Boolean.TRUE; } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/admin/StAdjustConfigController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/admin/StAdjustConfigController.java new file mode 100644 index 0000000..c6f22ed --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/admin/StAdjustConfigController.java @@ -0,0 +1,80 @@ +package com.iailab.module.model.mcs.sche.controller.admin; + +import com.iailab.framework.common.pojo.CommonResult; +import com.iailab.framework.common.pojo.PageResult; +import com.iailab.framework.common.util.object.BeanUtils; +import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigRespVO; +import com.iailab.module.model.mcs.sche.entity.StAdjustConfigDetEntity; +import com.iailab.module.model.mcs.sche.entity.StAdjustConfigEntity; +import com.iailab.module.model.mcs.sche.entity.StScheduleModelParamEntity; +import com.iailab.module.model.mcs.sche.service.StAdjustConfigDetService; +import com.iailab.module.model.mcs.sche.service.StAdjustConfigService; +import com.iailab.module.model.mcs.sche.vo.*; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +import java.util.List; + +import static com.iailab.framework.common.pojo.CommonResult.success; + +/** + * @author lirm + * @Description + * @createTime 2025年02月25日 + */ +@Tag(name = "模型服务 - 模拟调整") +@RestController +@RequestMapping("/model/sche/adjust") +public class StAdjustConfigController { + + @Autowired + private StAdjustConfigService stAdjustConfigService; + + @Autowired + private StAdjustConfigDetService stAdjustConfigDetService; + + @GetMapping("/page") + @PreAuthorize("@ss.hasPermission('sche:adjust:query')") + public CommonResult<PageResult<StAdjustConfigRespVO>> getPage(@Valid StAdjustConfigPageReqVO pageVO) { + PageResult<StAdjustConfigRespVO> pageResult = stAdjustConfigService.page(pageVO); + return success(pageResult); + } + + @GetMapping("/get") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sche:adjust:query')") + public CommonResult<StAdjustConfigRespVO> getInfo(@RequestParam("id") String id) { + StAdjustConfigEntity entity = stAdjustConfigService.getInfo(id); + StAdjustConfigRespVO result = BeanUtils.toBean(entity, StAdjustConfigRespVO.class); + List<StAdjustConfigDetEntity> paramList = stAdjustConfigDetService.getListByConfigId(entity.getId()); + result.setAdjustConfigDetList(paramList); + return success(result); + } + + @PostMapping("/create") + @PreAuthorize("@ss.hasPermission('sche:adjust:create')") + public CommonResult<Boolean> create(@Valid @RequestBody StAdjustConfigSaveReqVO createReqVO) { + stAdjustConfigService.create(createReqVO); + return success(true); + } + + @PutMapping("/update") + @PreAuthorize("@ss.hasPermission('sche:adjust:update')") + public CommonResult<Boolean> update(@Valid @RequestBody StAdjustConfigSaveReqVO updateReqVO) { + stAdjustConfigService.update(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sche:adjust:delete')") + public CommonResult<Boolean> deleteTenant(@RequestParam("id") String id) { + stAdjustConfigService.delete(id); + return success(true); + } +} \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/admin/StAdjustConfigResultController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/admin/StAdjustConfigResultController.java new file mode 100644 index 0000000..d1b6306 --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/admin/StAdjustConfigResultController.java @@ -0,0 +1,53 @@ +package com.iailab.module.model.mcs.sche.controller.admin; + +import com.iailab.framework.common.pojo.CommonResult; +import com.iailab.framework.common.pojo.PageResult; +import com.iailab.framework.common.util.object.BeanUtils; +import com.iailab.module.model.mcs.sche.entity.StAdjustConfigDetEntity; +import com.iailab.module.model.mcs.sche.entity.StAdjustConfigEntity; +import com.iailab.module.model.mcs.sche.entity.StAdjustResultEntity; +import com.iailab.module.model.mcs.sche.service.StAdjustConfigDetService; +import com.iailab.module.model.mcs.sche.service.StAdjustConfigService; +import com.iailab.module.model.mcs.sche.service.StAdjustResultService; +import com.iailab.module.model.mcs.sche.service.StScheduleRecordService; +import com.iailab.module.model.mcs.sche.vo.*; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +import static com.iailab.framework.common.pojo.CommonResult.success; + +/** + * @author lirm + * @Description + * @createTime 2025年02月25日 + */ +@Tag(name = "模型服务 - 模拟调整记录") +@RestController +@RequestMapping("/model/sche/adjust-result") +public class StAdjustConfigResultController { + + @Autowired + private StAdjustResultService stAdjustResultService; + + @GetMapping("/get") + @Operation(summary = "获得调整记录") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult<StAdjustResultRespVO> getInfo(@RequestParam("id") String id) { + StAdjustResultRespVO respVO = stAdjustResultService.getInfo(id); + return success(respVO); + } + + @GetMapping("/page") + @Operation(summary = "获得调整记录分页") + public CommonResult<PageResult<StAdjustResultRespVO>> getPage(@Valid StAdjustResultPageReqVO pageVO) { + PageResult<StAdjustResultRespVO> pageResult = stAdjustResultService.page(pageVO); + return success(pageResult); + } +} \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StAdjustConfigDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StAdjustConfigDao.java index 25bd66c..1aad151 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StAdjustConfigDao.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StAdjustConfigDao.java @@ -1,9 +1,13 @@ package com.iailab.module.model.mcs.sche.dao; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.iailab.framework.mybatis.core.mapper.BaseMapperX; import com.iailab.framework.tenant.core.db.dynamic.TenantDS; import com.iailab.module.model.mcs.sche.entity.StAdjustConfigEntity; +import com.iailab.module.model.mcs.sche.vo.StAdjustConfigPageReqVO; +import com.iailab.module.model.mcs.sche.vo.StAdjustConfigRespVO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * @author PanZhibao @@ -13,4 +17,10 @@ @TenantDS @Mapper public interface StAdjustConfigDao extends BaseMapperX<StAdjustConfigEntity> { + + IPage<StAdjustConfigRespVO> getPage(IPage<StAdjustConfigEntity> page, @Param("params") StAdjustConfigPageReqVO reqVO); + + default IPage<StAdjustConfigRespVO> selectPage(StAdjustConfigPageReqVO reqVO) { + return getPage(getPage(reqVO), reqVO); + } } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StAdjustResultDao.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StAdjustResultDao.java index e41ea3d..f161cd2 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StAdjustResultDao.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/dao/StAdjustResultDao.java @@ -1,9 +1,18 @@ package com.iailab.module.model.mcs.sche.dao; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.mybatis.core.mapper.BaseMapperX; +import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX; import com.iailab.framework.tenant.core.db.dynamic.TenantDS; +import com.iailab.module.model.mcs.sche.entity.StAdjustConfigEntity; import com.iailab.module.model.mcs.sche.entity.StAdjustResultEntity; +import com.iailab.module.model.mcs.sche.entity.StAdjustResultEntity; +import com.iailab.module.model.mcs.sche.vo.StAdjustResultPageReqVO; +import com.iailab.module.model.mcs.sche.vo.StAdjustResultRespVO; +import com.iailab.module.model.mcs.sche.vo.StAdjustResultPageReqVO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * @author PanZhibao @@ -13,4 +22,10 @@ @TenantDS @Mapper public interface StAdjustResultDao extends BaseMapperX<StAdjustResultEntity> { + + IPage<StAdjustResultRespVO> getPage(IPage<StAdjustResultEntity> page, @Param("params") StAdjustResultPageReqVO reqVO); + + default IPage<StAdjustResultRespVO> selectPage(StAdjustResultPageReqVO reqVO) { + return getPage(getPage(reqVO), reqVO); + } } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustConfigDetService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustConfigDetService.java index d88a010..6705a36 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustConfigDetService.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustConfigDetService.java @@ -13,4 +13,8 @@ public interface StAdjustConfigDetService extends BaseService<StAdjustConfigDetEntity> { List<StAdjustConfigDetEntity> getListByConfigId(String configId); + + void deleteByConfigId(String configId); + + void insertList(List<StAdjustConfigDetEntity> detList, String configId); } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustConfigService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustConfigService.java index 87de9cd..f52d19c 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustConfigService.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustConfigService.java @@ -1,10 +1,16 @@ package com.iailab.module.model.mcs.sche.service; +import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.service.BaseService; +import com.iailab.module.model.api.mcs.dto.StAdjustConfigDTO; import com.iailab.module.model.mcs.sche.entity.StAdjustConfigDetEntity; import com.iailab.module.model.mcs.sche.entity.StAdjustConfigEntity; +import com.iailab.module.model.mcs.sche.vo.StAdjustConfigPageReqVO; +import com.iailab.module.model.mcs.sche.vo.StAdjustConfigRespVO; +import com.iailab.module.model.mcs.sche.vo.StAdjustConfigSaveReqVO; import java.util.List; +import java.util.Map; /** * @author PanZhibao @@ -17,4 +23,16 @@ List<StAdjustConfigDetEntity> getDetByModelId(String modelId); + PageResult<StAdjustConfigRespVO> page(StAdjustConfigPageReqVO reqVO); + + void create(StAdjustConfigSaveReqVO createReqVO); + + void update(StAdjustConfigSaveReqVO createReqVO); + + void delete(String id); + + StAdjustConfigEntity getInfo(String id); + + List<StAdjustConfigDTO> list(Map<String, Object> params); + } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java index 8611414..659f4da 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java @@ -1,9 +1,14 @@ package com.iailab.module.model.mcs.sche.service; +import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.service.BaseService; import com.iailab.module.model.mcs.sche.entity.StAdjustResultEntity; +import com.iailab.module.model.mcs.sche.vo.StAdjustConfigRespVO; +import com.iailab.module.model.mcs.sche.vo.StAdjustResultPageReqVO; +import com.iailab.module.model.mcs.sche.vo.StAdjustResultRespVO; import com.iailab.module.model.mdk.vo.DataValueVO; +import javax.validation.Valid; import java.util.Date; import java.util.List; import java.util.Map; @@ -15,7 +20,13 @@ */ public interface StAdjustResultService extends BaseService<StAdjustResultEntity> { - void saveResult(Map<String, List<DataValueVO>> resultMap, Date predictTime, String adjustValue, String scheduleModelId); + void saveResult(Map<String, List<DataValueVO>> resultMap, Date predictTime, String adjustValue, String scheduleModelId, String configId); double[] getSimpleData(String outputId, Date predictTime, int predictLength); + + List<Object[]> getData(String outputId, Date predictTime, String timeFormat); + + StAdjustResultRespVO getInfo(String id); + + PageResult<StAdjustResultRespVO> page(@Valid StAdjustResultPageReqVO pageVO); } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustConfigDetServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustConfigDetServiceImpl.java index f9d62f4..b984b9f 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustConfigDetServiceImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustConfigDetServiceImpl.java @@ -2,13 +2,17 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.framework.common.service.impl.BaseServiceImpl; +import com.iailab.framework.common.util.object.ConvertUtils; import com.iailab.module.model.mcs.sche.dao.StAdjustConfigDetDao; import com.iailab.module.model.mcs.sche.entity.StAdjustConfigDetEntity; +import com.iailab.module.model.mcs.sche.entity.StScheduleModelOutEntity; import com.iailab.module.model.mcs.sche.service.StAdjustConfigDetService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; +import java.util.UUID; /** * @author PanZhibao @@ -25,4 +29,19 @@ queryWrapper.orderByAsc("sort"); return baseDao.selectList(queryWrapper); } + + @Override + public void deleteByConfigId(String configId) { + baseDao.delete(new QueryWrapper<StAdjustConfigDetEntity>().eq("config_id", configId)); + } + + @Override + public void insertList(List<StAdjustConfigDetEntity> detList, String configId) { + for (int i = 0; i < detList.size(); i++) { + StAdjustConfigDetEntity entity = ConvertUtils.sourceToTarget(detList.get(i), StAdjustConfigDetEntity.class); + entity.setId(UUID.randomUUID().toString()); + entity.setConfigId(configId); + baseDao.insert(entity); + } + } } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustConfigServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustConfigServiceImpl.java index dd5b57e..60a5a8a 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustConfigServiceImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustConfigServiceImpl.java @@ -1,16 +1,30 @@ package com.iailab.module.model.mcs.sche.service.impl; +import com.baomidou.dynamic.datasource.annotation.DSTransactional; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.fhs.core.trans.anno.Trans; +import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.service.impl.BaseServiceImpl; +import com.iailab.framework.common.util.object.BeanUtils; +import com.iailab.framework.common.util.object.ConvertUtils; +import com.iailab.module.model.api.mcs.dto.StAdjustConfigDTO; +import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity; import com.iailab.module.model.mcs.sche.dao.StAdjustConfigDao; import com.iailab.module.model.mcs.sche.entity.StAdjustConfigDetEntity; import com.iailab.module.model.mcs.sche.entity.StAdjustConfigEntity; import com.iailab.module.model.mcs.sche.service.StAdjustConfigDetService; import com.iailab.module.model.mcs.sche.service.StAdjustConfigService; +import com.iailab.module.model.mcs.sche.vo.StAdjustConfigPageReqVO; +import com.iailab.module.model.mcs.sche.vo.StAdjustConfigRespVO; +import com.iailab.module.model.mcs.sche.vo.StAdjustConfigSaveReqVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; +import java.util.UUID; /** * @author PanZhibao @@ -24,13 +38,65 @@ @Autowired private StAdjustConfigDetService stAdjustConfigDetService; + @Override + public PageResult<StAdjustConfigRespVO> page(StAdjustConfigPageReqVO reqVO) { + IPage<StAdjustConfigRespVO> page = baseDao.selectPage(reqVO); + return new PageResult<>(page.getRecords(), page.getTotal()); + } + + @Override + @DSTransactional(rollbackFor = Exception.class) + public void create(StAdjustConfigSaveReqVO createReqVO) { + StAdjustConfigEntity entity = BeanUtils.toBean(createReqVO, StAdjustConfigEntity.class); + entity.setId(UUID.randomUUID().toString()); + baseDao.insert(entity); + + List<StAdjustConfigDetEntity> detList = createReqVO.getAdjustConfigDetList(); + stAdjustConfigDetService.insertList(detList, entity.getId()); + } + + @Override + @DSTransactional(rollbackFor = Exception.class) + public void update(StAdjustConfigSaveReqVO updateReqVO) { + StAdjustConfigEntity entity = BeanUtils.toBean(updateReqVO, StAdjustConfigEntity.class); + baseDao.updateById(entity); + + stAdjustConfigDetService.deleteByConfigId(entity.getId()); + List<StAdjustConfigDetEntity> detList = updateReqVO.getAdjustConfigDetList(); + stAdjustConfigDetService.insertList(detList, entity.getId()); + } + + @Override + @DSTransactional(rollbackFor = Exception.class) + public void delete(String id) { + baseDao.deleteById(id); + stAdjustConfigDetService.deleteByConfigId(id); + } + + @Override + public StAdjustConfigEntity getInfo(String id) { + return baseDao.selectById(id); + } + + @Override + public List<StAdjustConfigDTO> list(Map<String, Object> params) { + QueryWrapper<StAdjustConfigEntity> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("trigger_method", params.get("triggerMethod")); + queryWrapper.eq("trigger_condition", params.get("triggerCondition")); + List<StAdjustConfigEntity> list = baseDao.selectList(queryWrapper); + return ConvertUtils.sourceToTarget(list, StAdjustConfigDTO.class); + } + public StAdjustConfigEntity getByModelId(String modelId) { - return baseDao.selectOne("schedule_model_id", modelId); + return baseDao.selectOne("schedule_model_id", modelId,"status",1); } public List<StAdjustConfigDetEntity> getDetByModelId(String modelId) { StAdjustConfigEntity configEntity = getByModelId(modelId); + if (null == configEntity) { + return null; + } return stAdjustConfigDetService.getListByConfigId(configEntity.getId()); } } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java index 68c8485..5e690a2 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java @@ -2,21 +2,26 @@ import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.service.impl.BaseServiceImpl; import com.iailab.framework.common.util.date.DateUtils; +import com.iailab.framework.common.util.object.ConvertUtils; +import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity; +import com.iailab.module.model.mcs.pre.service.MmItemOutputService; import com.iailab.module.model.mcs.sche.dao.StAdjustResultDao; import com.iailab.module.model.mcs.sche.entity.StAdjustResultEntity; import com.iailab.module.model.mcs.sche.service.StAdjustResultService; +import com.iailab.module.model.mcs.sche.vo.StAdjustResultPageReqVO; +import com.iailab.module.model.mcs.sche.vo.StAdjustResultRespVO; import com.iailab.module.model.mdk.vo.DataValueVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; /** @@ -28,19 +33,25 @@ @Service public class StAdjustResultServiceImpl extends BaseServiceImpl<StAdjustResultDao, StAdjustResultEntity> implements StAdjustResultService { + @Autowired + private MmItemOutputService mmItemOutputService; + @Override - public void saveResult(Map<String, List<DataValueVO>> resultMap, Date predictTime, String adjustValue, String scheduleModelId) { + public void saveResult(Map<String, List<DataValueVO>> resultMap, Date predictTime, String adjustValue, String scheduleModelId, String configId) { + List<StAdjustResultEntity> list = new ArrayList<>(resultMap.size()); for (Map.Entry<String, List<DataValueVO>> entry : resultMap.entrySet()) { StAdjustResultEntity entity = new StAdjustResultEntity(); entity.setId(UUID.randomUUID().toString()); + entity.setConfigId(configId); + entity.setOutputId(entry.getKey()); entity.setScheduleModelId(scheduleModelId); entity.setAdjustTime(predictTime); entity.setAdjustValue(adjustValue); - entity.setOutputId(entry.getKey()); - List<Double> jsonValueList = entry.getValue().stream().map(valueVO -> valueVO.getDataValue()).collect(Collectors.toList()); - entity.setAdjustValue(JSONArray.toJSONString(jsonValueList)); - baseDao.insert(entity); + List<Double> jsonValueList = entry.getValue().stream().map(DataValueVO::getDataValue).collect(Collectors.toList()); + entity.setJsonValue(JSONArray.toJSONString(jsonValueList)); + list.add(entity); } + baseDao.insert(list); } @Override @@ -50,10 +61,10 @@ wrapper.eq("output_id", outputId) .eq("adjust_time", DateUtils.format(predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); StAdjustResultEntity data = baseDao.selectOne(wrapper); - if (data == null || StringUtils.isBlank(data.getAdjustValue())) { + if (data == null || StringUtils.isBlank(data.getJsonValue())) { return null; } - List<Double> valueList = JSONArray.parseArray(data.getAdjustValue(), Double.class); + List<Double> valueList = JSONArray.parseArray(data.getJsonValue(), Double.class); if (CollectionUtils.isEmpty(valueList)) { return result; } @@ -62,4 +73,43 @@ } return result; } + + @Override + public List<Object[]> getData(String outputId, Date predictTime, String timeFormat) { + List<Object[]> result = new ArrayList<>(); + QueryWrapper<StAdjustResultEntity> wrapper = new QueryWrapper<>(); + wrapper.eq("output_id", outputId) + .eq("adjust_time", DateUtils.format(predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); + StAdjustResultEntity data = baseDao.selectOne(wrapper); + if (data == null || StringUtils.isBlank(data.getJsonValue())) { + return result; + } + List<Double> valueList = JSONArray.parseArray(data.getJsonValue(), Double.class); + if (CollectionUtils.isEmpty(valueList)) { + return result; + } + Calendar calendar = Calendar.getInstance(); + calendar.setTime(predictTime); + valueList.forEach(value -> { + Object[] dv = {DateUtils.format(calendar.getTime(), timeFormat), value}; + calendar.add(Calendar.MINUTE, 1); + result.add(dv); + }); + return result; + } + + @Override + public StAdjustResultRespVO getInfo(String id) { + StAdjustResultEntity entity = baseDao.selectById(id); + StAdjustResultRespVO result = ConvertUtils.sourceToTarget(entity, StAdjustResultRespVO.class); + MmItemOutputEntity mmItemOutputEntity = mmItemOutputService.getOutPutById(entity.getOutputId()); + result.setOutputName(mmItemOutputEntity.getResultName()); + return result; + } + + @Override + public PageResult<StAdjustResultRespVO> page(StAdjustResultPageReqVO pageVO) { + IPage<StAdjustResultRespVO> page = baseDao.selectPage(pageVO); + return new PageResult<>(page.getRecords(), page.getTotal()); + } } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigDetRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigDetRespVO.java index e572cc3..0ba21e5 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigDetRespVO.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigDetRespVO.java @@ -1,9 +1,32 @@ package com.iailab.module.model.mcs.sche.vo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + /** * @author PanZhibao * @Description * @createTime 2025年02月23日 */ +@Schema(description = "模型服务 - 模拟调整配置 Response VO") +@Data public class StAdjustConfigDetRespVO { + @Schema(description = "ID", example = "ID") + private String id; + + private String configId; + + private String item_type_id; + + private String predict_item_id; + + private String out_key; + + private String out_name; + + private Integer model_param_order; + + private Integer model_param_port_order; + + private Integer sort; } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigPageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigPageReqVO.java index 317cf0d..7513b03 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigPageReqVO.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigPageReqVO.java @@ -19,4 +19,7 @@ @Schema(description = "模型编号,模糊匹配", example = "") private String modelCode; + + @Schema(description = "模型名称,模糊匹配", example = "") + private String modelName; } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigRespVO.java index 7894c5e..6a69f77 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigRespVO.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigRespVO.java @@ -1,9 +1,40 @@ package com.iailab.module.model.mcs.sche.vo; +import com.iailab.module.model.mcs.sche.entity.StAdjustConfigDetEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; +import java.util.List; + /** * @author PanZhibao * @Description * @createTime 2025年02月23日 */ +@Schema(description = "模型服务 - 模拟调整 Response VO") +@Data public class StAdjustConfigRespVO { + @Schema(description = "ID", example = "ID") + private String id; + + @Schema(description = "模型ID", example = "模型ID") + private String scheduleModelId; + + @Schema(description = "模型代码", example = "模型代码") + private String modelCode; + + @Schema(description = "模型名称", example = "模型名称") + private String modelName; + + @Schema(description = "备注", example = "备注") + private String remark; + + @Schema(description = "状态(0正常 1停用)", example = "0") + private Integer status; + + @Schema(description = "创建时间", example = "创建时间") + private Date createTime; + + private List<StAdjustConfigDetEntity> adjustConfigDetList; } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigSaveReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigSaveReqVO.java new file mode 100644 index 0000000..6f324c5 --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustConfigSaveReqVO.java @@ -0,0 +1,40 @@ +package com.iailab.module.model.mcs.sche.vo; + +import com.iailab.module.model.mcs.sche.entity.StAdjustConfigDetEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.List; + +/** + * @author lirm + * @Description + * @createTime 2025年02月25日 + */ +@Schema(description = "模型服务 - 调度方案创建/修改 Request VO") +@Data +public class StAdjustConfigSaveReqVO { + + @Schema(description = "ID") + private String id; + + @Schema(description = "模型ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "模型ID不能为空") + private String scheduleModelId; + + @Schema(description = " 状态(0正常 1停用)") + private Integer status; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "修改时间") + private Date updateTime; + + private List<StAdjustConfigDetEntity> adjustConfigDetList; +} \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustResultPageReqVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustResultPageReqVO.java index 8b9a735..3082a33 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustResultPageReqVO.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustResultPageReqVO.java @@ -11,7 +11,7 @@ * @Description * @createTime 2025年02月20日 */ -@Schema(description = "模型服务 - 调度模型分页 Request VO") +@Schema(description = "模型服务 - 模拟调整记录分页 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @@ -23,4 +23,6 @@ @Schema(description = "结束时间", example = "") private String endTime; + private String configId; + } \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustResultRespVO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustResultRespVO.java index 5a96bf3..c97d10b 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustResultRespVO.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/vo/StAdjustResultRespVO.java @@ -1,9 +1,32 @@ package com.iailab.module.model.mcs.sche.vo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + /** * @author PanZhibao * @Description * @createTime 2025年02月23日 */ +@Schema(description = "模型服务 - 模拟调整记录 Response VO") +@Data public class StAdjustResultRespVO { + @Schema(description = "ID", example = "ID") + private String id; + + private String configId; + + private String outputId; + + private String outputName; + + private String scheduleModelId; + + private Date adjustTime; + + private String adjustValue; + + private String jsonValue; } \ 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/PredictModuleHandler.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java index d0cfb77..702ecd1 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 @@ -104,6 +104,7 @@ try { predictResultHandler.savePredictResult(predictResult); } catch (Exception e) { + e.printStackTrace(); itemRunStatusEnum = ItemRunStatusEnum.MODELRESULTSAVEERROR; throw new RuntimeException("模型结果保存异常,result:" + predictResult); } @@ -118,7 +119,7 @@ } } - public void predictAdjust(ItemVO predictItem, Date predictTime, List<StAdjustDeviationDTO> deviationList, String scheduleModelId) { + public void predictAdjust(ItemVO predictItem, Date predictTime, List<StAdjustDeviationDTO> deviationList, String scheduleModelId, String configId) { Calendar calendar = Calendar.getInstance(); calendar.setTime(predictTime); calendar.set(Calendar.MILLISECOND, 0); @@ -133,9 +134,11 @@ try { PredictItemHandler predictItemHandler = predictItemFactory.create(predictItem.getId()); PredictResultVO predictResult = predictItemHandler.predictAdjust(calendar.getTime(), predictItem, deviationList); + predictResult.setGranularity(predictItem.getGranularity()); + predictResult.setSaveIndex(predictItem.getSaveIndex()); // 保存预测结果 - predictResultHandler.savePredictAdjustResult(predictResult, JSONArray.toJSONString(deviationList), scheduleModelId); + predictResultHandler.savePredictAdjustResult(predictResult, JSONArray.toJSONString(deviationList), scheduleModelId,configId); } catch (Exception e) { e.printStackTrace(); log.error(MessageFormat.format("预测项编号:{0},预测项名称:{1},预测失败:{2} 预测时刻:{3}", 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 ebaee0f..a6cac8e 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 @@ -112,11 +112,12 @@ * savePredictAdjustResult * * @param predictResult + * @param configId */ @DSTransactional - public void savePredictAdjustResult(PredictResultVO predictResult, String adjustValue, String scheduleModelId) { + public void savePredictAdjustResult(PredictResultVO predictResult, String adjustValue, String scheduleModelId, String configId) { Map<String, List<DataValueVO>> resultMap = convertToPredictData(predictResult); - stAdjustResultService.saveResult(resultMap, predictResult.getPredictTime(), adjustValue, scheduleModelId); + stAdjustResultService.saveResult(resultMap, predictResult.getPredictTime(), adjustValue, scheduleModelId,configId); } public List<DataValueVO> getPredictValueByItemNo(String itemNo, Date start, Date end) { 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 7e0ac4b..9c7bd75 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 @@ -94,7 +94,7 @@ //IAILMDK.run HashMap<String, Object> modelResult = DllUtils.run(newModelBean, param2Values, predictModel.getMpkprojectid()); //打印结果 - log.info("预测模型计算完成:modelId=" + modelId + ",modelName=" + predictModel.getMethodname() + ",modelResult=" + JSON.toJSONString(modelResult)); + log.info("预测模型计算完成:modelId=" + modelId + ",modelName=" + predictModel.getModelname() + ",modelResult=" + JSON.toJSONString(modelResult)); //判断模型结果 if (!modelResult.containsKey(CommonConstant.MDK_STATUS_CODE) || !modelResult.containsKey(CommonConstant.MDK_RESULT) || !modelResult.get(CommonConstant.MDK_STATUS_CODE).toString().equals(CommonConstant.MDK_STATUS_100)) { @@ -196,7 +196,7 @@ //IAILMDK.run HashMap<String, Object> modelResult = DllUtils.run(newModelBean, param2Values, predictModel.getMpkprojectid()); //打印结果 - log.info("预测模型计算完成:modelId=" + modelId + ",modelName=" + predictModel.getMethodname() + ",modelResult=" + JSON.toJSONString(modelResult)); + log.info("预测模型计算完成:modelId=" + modelId + ",modelName=" + predictModel.getModelname() + ",modelResult=" + JSON.toJSONString(modelResult)); //判断模型结果 if (!modelResult.containsKey(CommonConstant.MDK_STATUS_CODE) || !modelResult.containsKey(CommonConstant.MDK_RESULT) || !modelResult.get(CommonConstant.MDK_STATUS_CODE).toString().equals(CommonConstant.MDK_STATUS_100)) { 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 9968c29..6bd9314 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 @@ -89,7 +89,7 @@ } } - int portIdx = 0; + int portIdx = 1; //对每个爪分别进行计算 for (ColumnItemPort entry : sampleInfo.getColumnInfo()) { double[][] matrix = new double[0][0]; @@ -136,26 +136,21 @@ try { List<DataValueVO> dataEntityList = getData(entry.getColumnItemList().get(i), pointMap, planMap, indMap); - double adjustVal = SampleInfo.getAdjustValueFromDeviation(portIdx, i, sampleInfo.getDeviation()); - if (adjustVal != 0) { - logger.info("设置调整值adjustVal:" + adjustVal); - for (int dataKey = 1; dataKey < dataEntityList.size(); dataKey++) { - DataValueVO item = dataEntityList.get(dataKey); - item.setDataValue(item.getDataValue() + adjustVal); - } - } - //补全数据 ColumnItem columnItem = entry.getColumnItemList().get(i); dataEntityList = super.completionData(matrix.length, dataEntityList, columnItem.startTime, columnItem.endTime, columnItem.getParamType(), columnItem.getGranularity()); + /** 如果数据取不满,把缺失的数据点放在后面 */ if (dataEntityList != null && dataEntityList.size() != 0) { logger.info("设置matrix, i = " + i + ", size = " + dataEntityList.size()); + // 调整值 + double adjustVal = SampleInfo.getAdjustValueFromDeviation(portIdx, i + 1, sampleInfo.getDeviation()); for (int k = 0; k < dataEntityList.size(); k++) { Double dataValue = dataEntityList.get(k).getDataValue(); if (null != dataValue) { - matrix[k][i] = dataValue; + // 用BigDecimal计算,解决double精度问题 + matrix[k][i] = BigDecimal.valueOf(dataValue).add(BigDecimal.valueOf(adjustVal)).doubleValue(); } } } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/common/utils/DllUtils.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/common/utils/DllUtils.java index 8151cc7..5d10738 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/common/utils/DllUtils.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/common/utils/DllUtils.java @@ -232,7 +232,7 @@ } - public static HashMap<String, Object> run(IAILModel model, Object[] paramsValueArray, String projectId) throws Exception { + public static synchronized HashMap<String, Object> run(IAILModel model, Object[] paramsValueArray, String projectId) throws Exception { if (RSAUtils.checkLisenceBean().getCode() != 1) { throw new SecurityException("Lisence 不可用!"); } else if (model == null) { diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StAdjustConfigDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StAdjustConfigDao.xml new file mode 100644 index 0000000..05f8b71 --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StAdjustConfigDao.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > +<mapper namespace="com.iailab.module.model.mcs.sche.dao.StAdjustConfigDao"> + <select id="getPage" resultType="com.iailab.module.model.mcs.sche.vo.StAdjustConfigRespVO"> + select + t1.id modelId, + t1.model_code modelCode, + t1.model_name modelName, + t2.id, + t2.remark, + t2.status, + t2.create_time + from t_st_schedule_model t1, t_st_adjust_config t2 + <where> + and t1.id = t2.schedule_model_id + <if test="params.modelCode != null and params.modelCode != ''"> + and t1.model_code like CONCAT('%', #{params.modelCode},'%') + </if> + <if test="params.modelName != null and params.modelName != ''"> + and t1.model_name like CONCAT('%', #{params.modelName},'%') + </if> + </where> + order by t2.create_time desc + </select> +</mapper> \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StAdjustResultDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StAdjustResultDao.xml new file mode 100644 index 0000000..e7063af --- /dev/null +++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StAdjustResultDao.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > +<mapper namespace="com.iailab.module.model.mcs.sche.dao.StAdjustResultDao"> + <select id="getPage" resultType="com.iailab.module.model.mcs.sche.vo.StAdjustResultRespVO"> + SELECT t1.*,t2.result_name outputName + FROM t_st_adjust_result t1,t_mm_item_output t2 + <where> + and t1.output_id = t2.id + <if test="params.configId != null and params.configId != ''"> + and t1.config_id = #{params.configId} + </if> + <if test="params.startTime != null"> + and t1.adjust_time >= #{params.startTime} + </if> + <if test="params.endTime != null"> + and t1.adjust_time <= #{params.endTime} + </if> + </where> + ORDER BY t1.adjust_time desc + </select> +</mapper> \ No newline at end of file diff --git a/iailab-plat-sdk/doc/demo/Demo.java b/iailab-plat-sdk/doc/demo/Demo.java new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/iailab-plat-sdk/doc/demo/Demo.java -- Gitblit v1.9.3