From 3d9106399d9a2b9c8ba7d2dea621f54fd71d2ca7 Mon Sep 17 00:00:00 2001 From: Jay <csj123456> Date: 星期二, 12 十一月 2024 10:56:23 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java | 86 +++++++++++++++++++++++++++++++++++-------- 1 files changed, 70 insertions(+), 16 deletions(-) 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 6a7df4f..1fd8c7f 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 @@ -1,26 +1,30 @@ package com.iailab.module.model.api; import com.alibaba.fastjson.JSON; +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; +import com.iailab.module.model.mdk.factory.ItemEntityFactory; +import com.iailab.module.model.mdk.factory.PredictItemFactory; +import com.iailab.module.model.mdk.predict.PredictItemHandler; import com.iailab.module.model.mdk.predict.PredictModuleHandler; +import com.iailab.module.model.mdk.predict.PredictResultHandler; +import com.iailab.module.model.mdk.schedule.ScheduleModelHandler; +import com.iailab.module.model.mdk.vo.DataValueVO; import com.iailab.module.model.mdk.vo.ItemVO; import com.iailab.module.model.mdk.vo.PredictResultVO; +import com.iailab.module.model.mdk.vo.ScheduleResultVO; 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.RequestBody; import org.springframework.web.bind.annotation.RestController; -import javax.validation.Valid; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import static com.iailab.framework.common.pojo.CommonResult.error; @@ -45,6 +49,18 @@ @Autowired private PredictModuleHandler predictModuleHandler; + @Autowired + private ItemEntityFactory itemEntityFactory; + + @Autowired + private PredictItemFactory predictItemFactory; + + @Autowired + private PredictResultHandler predictResultHandler; + + @Autowired + private ScheduleModelHandler scheduleModelHandler; + /** * 按模块预测 * @@ -52,7 +68,7 @@ * @return */ @Override - public CommonResult<MdkPredictModuleRespDTO> predictModule(MdkPredictReqDTO reqDTO) { + public MdkPredictModuleRespDTO predictModule(MdkPredictReqDTO reqDTO) { MdkPredictModuleRespDTO resp = new MdkPredictModuleRespDTO(); Map<String, MdkPredictItemRespDTO> predictItemRespMap = new HashMap<>(); try { @@ -62,6 +78,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()); @@ -90,10 +111,11 @@ } log.info("预测计算结束: " + System.currentTimeMillis()); } catch (Exception ex) { - return error(999, ex.getMessage()); + ex.printStackTrace(); + return resp; } resp.setPredictItemRespMap(predictItemRespMap); - return success(resp); + return resp; } /** @@ -103,10 +125,31 @@ * @return */ @Override - public CommonResult<MdkPredictItemRespDTO> predictItem(@Valid @RequestBody MdkPredictReqDTO reqDTO) { + public MdkPredictItemRespDTO predictItem(MdkPredictReqDTO reqDTO) { MdkPredictItemRespDTO resp = new MdkPredictItemRespDTO(); - return success(resp); + try { + log.info("预测计算开始: " + System.currentTimeMillis()); + List<MdkPredictDataDTO> predictData = new ArrayList<>(); + ItemVO predictItem = itemEntityFactory.getItemByItemNo(reqDTO.getItemNo()); + PredictItemHandler 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); + } + } + resp.setPredictData(predictData); + resp.setItemId(predictItem.getId()); + resp.setPredictTime(reqDTO.getPredictTime()); + log.info("预测计算结束: " + System.currentTimeMillis()); + } catch (Exception ex) { + log.info("预测计算异常: " + System.currentTimeMillis(),ex); + return resp; + } + + return resp; } /** @@ -116,10 +159,10 @@ * @return */ @Override - public CommonResult<Boolean> predictAutoAdjust(@Valid @RequestBody MdkPredictReqDTO reqDTO) { + public Boolean predictAutoAdjust(MdkPredictReqDTO reqDTO) { - return success(true); + return true; } /** @@ -129,9 +172,20 @@ * @return */ @Override - public CommonResult<MdkScheduleRespDTO> doSchedule(@Valid @RequestBody MdkScheduleReqDTO reqDTO) { + public MdkScheduleRespDTO doSchedule(MdkScheduleReqDTO reqDTO) { MdkScheduleRespDTO resp = new MdkScheduleRespDTO(); - - return success(resp); + resp.setScheduleCode(reqDTO.getScheduleCode()); + resp.setScheduleTime(reqDTO.getScheduleTime()); + try { + log.info("调度计算开始: " + System.currentTimeMillis()); + ScheduleResultVO scheduleResult = scheduleModelHandler.doSchedule(reqDTO.getModelCode(), reqDTO.getScheduleTime()); + resp.setResult(scheduleResult.getResult()); + log.info("预测计算结束: " + System.currentTimeMillis()); + } catch (Exception ex) { + log.info("调度计算异常: " + System.currentTimeMillis()); + ex.printStackTrace(); + return resp; + } + return resp; } } \ No newline at end of file -- Gitblit v1.9.3