From 5bf42aa9950058f391805e6fb8d7376f4378924b Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期一, 23 十二月 2024 16:16:55 +0800
Subject: [PATCH] cumulateHandle.getCurrent

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java |   53 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 33 insertions(+), 20 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 9fe6967..0d95528 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
@@ -97,7 +97,16 @@
                     intervalTime = (int) (reqDTO.getPredictTime().getTime() - module.getPredicttime().getTime()) / (1000 * 60);
                 }
                 List<ItemVO> predictItemList = mmPredictItemService.getByModuleId(module.getId());
-                Map<String, PredictResultVO> predictResultMap = predictModuleHandler.predict(predictItemList, reqDTO.getPredictTime(), intervalTime);
+                Map<String, PredictResultVO> predictResultMap = new HashMap<>(predictItemList.size());
+                // 分组,先运行normal预测项,再将结果传递给merge预测项
+                List<ItemVO> normalItems = predictItemList.stream().filter(e -> e.getItemType().equals("NormalItem")).collect(Collectors.toList());
+                if (!CollectionUtils.isEmpty(normalItems)) {
+                    predictModuleHandler.predict(normalItems, reqDTO.getPredictTime(), intervalTime,predictResultMap);
+                    List<ItemVO> mergeItems = predictItemList.stream().filter(e -> e.getItemType().equals("MergeItem")).collect(Collectors.toList());
+                    if (!CollectionUtils.isEmpty(mergeItems)) {
+                        predictModuleHandler.predict(mergeItems, reqDTO.getPredictTime(), intervalTime,predictResultMap);
+                    }
+                }
                 // 更新Module时间
                 dmModuleService.updatePredictTime(module.getId(), reqDTO.getPredictTime());
                 if (reqDTO.getIsResult() == null || !reqDTO.getIsResult()) {
@@ -141,27 +150,31 @@
     @Override
     public MdkPredictItemRespDTO predictItem(MdkPredictReqDTO reqDTO) {
         MdkPredictItemRespDTO resp = new MdkPredictItemRespDTO();
-
         try {
-            log.info("预测计算开始: " + System.currentTimeMillis());
-            Map<String, List<MdkPredictDataDTO>> predictData = new HashMap<>();
-            ItemVO predictItem = itemEntityFactory.getItemByItemNo(reqDTO.getItemNo());
-            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()) {
-                    List<MdkPredictDataDTO>  data = ConvertUtils.sourceToTarget(entry.getValue(), MdkPredictDataDTO.class);
-                    predictData.put(entry.getKey(), data);
-                }
+
+            ItemVO itemByItemNo = mmPredictItemService.getItemByItemNo(reqDTO.getItemNo());
+            List<ItemVO> predictItemList = new ArrayList<>();
+            predictItemList.add(itemByItemNo);
+            Map<String, PredictResultVO> predictResultMap = new HashMap<>(predictItemList.size());
+            predictModuleHandler.predict(predictItemList, reqDTO.getPredictTime(), 0,predictResultMap);
+
+            Map<String, List<MdkPredictDataDTO>> itemPredictData = new HashMap<>();
+
+            Map<String, List<DataValueVO>> predictLists = predictResultHandler.convertToPredictData2(predictResultMap.get(reqDTO.getItemNo()));
+            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);
             }
-            resp.setPredictData(predictData);
-            resp.setItemId(predictItem.getId());
+            resp.setItemId(reqDTO.getItemNo());
             resp.setPredictTime(reqDTO.getPredictTime());
-            log.info("预测计算结束: " + System.currentTimeMillis());
-        } catch (Exception ex) {
-            log.info("预测计算异常: " + System.currentTimeMillis(), ex);
-            return resp;
+            resp.setPredictData(itemPredictData);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
 
         return resp;
@@ -198,7 +211,7 @@
             log.info("预测计算结束: " + System.currentTimeMillis());
         } catch (Exception ex) {
             log.info("调度计算异常: " + System.currentTimeMillis());
-            ex.printStackTrace();
+//            ex.printStackTrace();
             return resp;
         }
         return resp;

--
Gitblit v1.9.3