From b3674cefbeb8ffaf49f96d0c8fe7a6694ed86eec Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期二, 25 二月 2025 15:05:32 +0800
Subject: [PATCH] 模拟调整 远程调用

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java |  140 ++++++++++++++++++++++++----------------------
 1 files changed, 74 insertions(+), 66 deletions(-)

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 31d481e..cbcaf87 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
@@ -1,17 +1,16 @@
 package com.iailab.module.model.mdk.predict.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.iailab.module.data.api.point.DataPointApi;
 import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
 import com.iailab.module.model.mcs.pre.service.MmItemOutputService;
-import com.iailab.module.model.mcs.pre.service.MmItemResultService;
+import com.iailab.module.model.mcs.pre.service.MmItemResultJsonService;
+import com.iailab.module.model.mcs.sche.service.StAdjustResultService;
 import com.iailab.module.model.mdk.common.exceptions.ItemInvokeException;
 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.PredictResultHandler;
 import com.iailab.module.model.mdk.vo.ItemVO;
 import com.iailab.module.model.mdk.vo.PredictResultVO;
+import com.iailab.module.model.mdk.vo.StAdjustDeviationDTO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -32,19 +31,13 @@
     private ItemEntityFactory itemEntityFactory;
 
     @Autowired
-    private DataPointApi dataPointApi;
-
-    @Autowired
-    private PredictItemFactory predictItemFactory;
-
-    @Autowired
-    private PredictResultHandler predictResultHandler;
-
-    @Autowired
-    private MmItemResultService mmItemResultService;
+    private MmItemResultJsonService mmItemResultJsonService;
 
     @Autowired
     private MmItemOutputService mmItemOutputService;
+
+    @Autowired
+    private StAdjustResultService stAdjustResultService;
 
     /**
      * MergeItem预测
@@ -66,74 +59,89 @@
             String[] mathOutPutId = expression.split("[\\+ \\-]");
             ArrayList<Character> operator = new ArrayList<>();
             for (int i = 0; i < expression.length(); i++) {
-                if (expression.charAt(i)=='+' || expression.charAt(i)=='-'){
+                if (expression.charAt(i) == '+' || expression.charAt(i) == '-') {
                     operator.add(expression.charAt(i));
                 }
             }
-//            String[] compositionItem = expression.split(String.valueOf("&".toCharArray()));
             //是否为计算预测项
             if (mathOutPutId.length > 1) {
-//                Map<String, List<DataValueVO>> predictValueMap = new HashMap<>();
-//                for (String outPutId : mathOutPutId) {
-//                    if (outPutId.length() > 4) {
-//                        Date endTime = predictTime;
-////                        ItemVO itemEntity = itemEntityFactory.getItemByItemNo(itemNo);
-////                        List<MmItemOutputEntity> outPutList = itemEntityFactory.getOutPutByItemId(itemEntity.getId());
-//                        MmItemOutputEntity outPut = mmItemOutputService.getOutPutById(outPutId);
-//                        ApiPointDTO pointEntity = dataPointApi.getInfoById(outPut.getPointid());
-//
-//                        Calendar calendar = Calendar.getInstance();
-//                        calendar.setTime(endTime);
-//                        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);
-//                        List<DataValueVO> predictValueList = mmItemResultService.getPredictValue(outPutId, predictTime, endTime);
-//                        if (predictValueList.size() != predictLength) {
-//                            log.debug("merge项融合失败:缺少子项预测数据,对应子项outPutId=" + outPutId);
-//                            return null;
-//                        }
-//                        predictValueMap.put(outPutId, predictValueList);
-//                    }
-//                }
-
                 for (Integer i = 0; i < predictLength; i++) {
-                    double sum =0.0;
+                    double sum = 0.0;
                     sum = predictValueMap.get(mathOutPutId[0])[i];
                     for (int j = 1; j < mathOutPutId.length; j++) {
-                        if (operator.get(j-1)=='+')
-                        {sum += predictValueMap.get(mathOutPutId[j])[i];}
-                        if (operator.get(j-1)=='-')
-                        {sum -= predictValueMap.get(mathOutPutId[j])[i];}
+                        if (operator.get(j - 1) == '+') {
+                            sum += predictValueMap.get(mathOutPutId[j])[i];
+                        }
+                        if (operator.get(j - 1) == '-') {
+                            sum -= predictValueMap.get(mathOutPutId[j])[i];
+                        }
                     }
                     predictResultMat[i] = sum;
                 }
             }
-            //是否为组合预测项
-//            if (compositionItem.length > 1) {
-//                Map<String, PredictResultVO> predictResultMap = new HashMap<>();
-//                Integer columnTotalNumber = 0;
-//                Integer rowNumber = 0;
-//                for (String itemNo : compositionItem) {
-//                    PredictItemHandler predictItem = (PredictItemHandler) predictItemFactory.create(itemEntityFactory.
-//                            getItemByItemNo(itemNo).getId());
-//                    predictResult = predictItem.predict(predictTime, predictItemDto);
-//                    columnTotalNumber += Integer.valueOf(predictResult.getPredictMatrix().length);
-//                    predictResultMap.put(itemNo, predictItem.predict(predictTime, predictItemDto));
-//                }
-//                double[][] matrix = new double[columnTotalNumber][1];
-//                for (String itemNo : compositionItem) {
-//                    for (Integer i = 0; i < predictResultMap.get(itemNo).getPredictMatrix().length; i++) {
-//                        matrix[rowNumber][0] = predictResultMap.get(itemNo).getPredictMatrix()[i][0];
-//                        rowNumber++;
-//                    }
-//                }
-//                predictResult.setPredictMatrix(matrix);
-//            }
             predictResult.setPredictId(itemId);
             List<MmItemOutputEntity> outputServiceByItemid = mmItemOutputService.getByItemid(itemId);
             if (!CollectionUtils.isEmpty(outputServiceByItemid)) {
                 Map<MmItemOutputEntity, double[]> predictMatrixs = new HashMap<>();
-                predictMatrixs.put(outputServiceByItemid.get(0),predictResultMat);
+                predictMatrixs.put(outputServiceByItemid.get(0), predictResultMat);
+                predictResult.setPredictMatrixs(predictMatrixs);
+            }
+            predictResult.setPredictTime(predictTime);
+        } catch (Exception e) {
+            log.error("merge项预测失败,itemId:" + itemId);
+            e.printStackTrace();
+            throw e;
+        }
+        log.info("merge项预测完成,itemId:" + itemId + ",结果:" + JSON.toJSONString(predictResult));
+        return predictResult;
+    }
+
+    @Override
+    public PredictResultVO predictAdjust(Date predictTime, ItemVO predictItemDto, List<StAdjustDeviationDTO> deviationList)
+            throws ItemInvokeException {
+        PredictResultVO predictResult = new PredictResultVO();
+        String itemId = predictItemDto.getId();
+        try {
+            String expression = itemEntityFactory.getMergeItem(itemId).getExpression();
+            int predictLength = itemEntityFactory.getItemById(itemId).getPredictLength();
+            double[] predictResultMat = new double[predictLength];
+            String[] mathOutPutId = expression.split("[\\+ \\-]");
+            ArrayList<Character> operator = new ArrayList<>();
+            for (int i = 0; i < expression.length(); i++) {
+                if (expression.charAt(i) == '+' || expression.charAt(i) == '-') {
+                    operator.add(expression.charAt(i));
+                }
+            }
+            Map<String, double[]> predictValueMap = new HashMap<>();
+            for (int k = 0; k < mathOutPutId.length; k++) {
+                String outPutId = mathOutPutId[k];
+                double[] outPutValue = stAdjustResultService.getSimpleData(outPutId, predictTime, predictLength);
+                if (outPutValue == null) {
+                    outPutValue = mmItemResultJsonService.getSimpleData(outPutId, predictTime, predictLength);
+                }
+                predictValueMap.put(outPutId, outPutValue);
+            }
+
+            //是否为计算预测项
+            if (mathOutPutId.length > 1) {
+                for (int i = 0; i < predictLength; i++) {
+                    double sum = predictValueMap.get(mathOutPutId[0])[i];
+                    for (int j = 1; j < mathOutPutId.length; j++) {
+                        if (operator.get(j - 1) == '+') {
+                            sum += predictValueMap.get(mathOutPutId[j])[i];
+                        }
+                        if (operator.get(j - 1) == '-') {
+                            sum -= predictValueMap.get(mathOutPutId[j])[i];
+                        }
+                    }
+                    predictResultMat[i] = sum;
+                }
+            }
+            predictResult.setPredictId(itemId);
+            List<MmItemOutputEntity> outputServiceByItemid = mmItemOutputService.getByItemid(itemId);
+            if (!CollectionUtils.isEmpty(outputServiceByItemid)) {
+                Map<MmItemOutputEntity, double[]> predictMatrixs = new HashMap<>();
+                predictMatrixs.put(outputServiceByItemid.get(0), predictResultMat);
                 predictResult.setPredictMatrixs(predictMatrixs);
             }
             predictResult.setPredictTime(predictTime);

--
Gitblit v1.9.3