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