From a2b4314c590248f3826764ac0ea63dcecc6fb20b Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期五, 21 三月 2025 09:16:51 +0800
Subject: [PATCH] 预测值模拟调整

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java |   26 +++++++++++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java          |    2 +
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java                    |    1 
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java         |   27 +++++++------
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java                       |    5 ++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java                |    8 +--
 6 files changed, 51 insertions(+), 18 deletions(-)

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 659f4da..194133c 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
@@ -24,6 +24,8 @@
 
     double[] getSimpleData(String outputId, Date predictTime, int predictLength);
 
+    List<DataValueVO> getPredictValue(String outputId, Date predictTime);
+
     List<Object[]> getData(String outputId, Date predictTime, String timeFormat);
 
     StAdjustResultRespVO getInfo(String id);
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 5e690a2..7d90b48 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
@@ -75,6 +75,32 @@
     }
 
     @Override
+    public List<DataValueVO> getPredictValue(String outputId, Date predictTime) {
+        List<DataValueVO> 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);
+        for (int i = 1; i < valueList.size() + 1; i++) {
+            calendar.add(Calendar.MINUTE, i);
+            DataValueVO vo = new DataValueVO();
+            vo.setDataValue(valueList.get(i - 1));
+            vo.setDataTime(calendar.getTime());
+            result.add(vo);
+        }
+        return result;
+    }
+
+    @Override
     public List<Object[]> getData(String outputId, Date predictTime, String timeFormat) {
         List<Object[]> result = new ArrayList<>();
         QueryWrapper<StAdjustResultEntity> wrapper = new QueryWrapper<>();
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 f5d23e7..c306fc4 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
@@ -14,10 +14,8 @@
 import com.iailab.module.data.common.ApiDataQueryDTO;
 import com.iailab.module.data.common.ApiDataValueDTO;
 import com.iailab.module.model.common.utils.ASCIIUtil;
-import com.iailab.module.model.mcs.pre.service.MmItemOutputService;
-import com.iailab.module.model.mcs.pre.service.MmItemResultJsonService;
 import com.iailab.module.model.mcs.pre.service.MmItemResultService;
-import com.iailab.module.model.mcs.pre.service.MmItemTypeService;
+import com.iailab.module.model.mcs.sche.service.StAdjustResultService;
 import com.iailab.module.model.mdk.common.enums.ModelParamType;
 import com.iailab.module.model.mdk.sample.dto.ColumnItem;
 import com.iailab.module.model.mdk.sample.dto.ColumnItemPort;
@@ -57,13 +55,7 @@
     private MmItemResultService mmItemResultService;
 
     @Autowired
-    private MmItemResultJsonService mmItemResultJsonService;
-
-    @Autowired
-    private MmItemTypeService mmItemTypeService;
-
-    @Autowired
-    private MmItemOutputService mmItemOutputService;
+    private StAdjustResultService stAdjustResultService;
 
     /**
      * alter by zfc 2020.11.24 修改数据样本构造方案:sampleInfo中数据已按爪子进行分类,但爪内数据为无序的,
@@ -134,7 +126,7 @@
                 //对每一项依次进行数据查询,然后将查询出的值赋给matrix对应的位置
                 for (int i = 0; i < entry.getColumnItemList().size(); i++) {
                     try {
-                        List<DataValueVO> dataEntityList = getData(entry.getColumnItemList().get(i), pointMap, planMap, indMap);
+                        List<DataValueVO> dataEntityList = getData(sampleInfo, entry.getColumnItemList().get(i), pointMap, planMap, indMap);
 
                         //补全数据
                         ColumnItem columnItem = entry.getColumnItemList().get(i);
@@ -173,6 +165,7 @@
     /**
      * getData
      *
+     * @param sampleInfo
      * @param columnItem
      * @param pointMap
      * @param planMap
@@ -180,7 +173,8 @@
      * @return
      * @throws Exception
      */
-    private List<DataValueVO> getData(ColumnItem columnItem, Map<String, ApiPointDTO> pointMap, Map<String, ApiPlanItemDTO> planMap, Map<String, ApiIndItemDTO> indMap) throws Exception {
+    private List<DataValueVO> getData(SampleInfo sampleInfo, ColumnItem columnItem, Map<String, ApiPointDTO> pointMap, Map<String, ApiPlanItemDTO> planMap,
+                                      Map<String, ApiIndItemDTO> indMap) throws Exception {
         List<DataValueVO> dataList = new ArrayList<>();
         String paramType = columnItem.getParamType();
         switch (ModelParamType.getEumByCode(paramType)) {
@@ -202,11 +196,18 @@
                 break;
             case NORMALITEM:
             case MERGEITEM:
-                List<DataValueVO> predictValue = mmItemResultService.getPredictValue(columnItem.getParamId(), columnItem.getStartTime(), columnItem.getEndTime());
+                List<DataValueVO> predictValue = new ArrayList<>();
+                if (sampleInfo.getIsAdjust()) {
+                    // 模拟调整数据查询
+                    predictValue = stAdjustResultService.getPredictValue(columnItem.getParamId(), sampleInfo.getPredictTime());
+                } else {
+                    predictValue = mmItemResultService.getPredictValue(columnItem.getParamId(), columnItem.getStartTime(), columnItem.getEndTime());
+                }
                 if (CollectionUtils.isEmpty(predictValue)) {
                     break;
                 }
                 dataList = predictValue;
+
                 break;
             case PLAN:
                 ApiDataQueryDTO queryPlanItemDto = new ApiDataQueryDTO();
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java
index d2c8240..95a8c7b 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java
@@ -50,6 +50,7 @@
             SampleInfoConstructor sampleInfoConstructor = sampleFactory.createSampleInfo(typeA, modelId);
             SampleInfo sampleInfo = sampleInfoConstructor.prepareSampleInfo(modelId, runTime, dynamicDataLength);
             sampleInfo.setDeviation(deviationList);
+            sampleInfo.setIsAdjust(true);
             SampleDataConstructor sampleDataConstructor = sampleFactory.createSampleData(typeA);
             return sampleDataConstructor.prepareSampleData(sampleInfo);
         } catch (Exception e) {
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java
index 75f2d1a..af4ae5b 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java
@@ -1,6 +1,5 @@
 package com.iailab.module.model.mdk.sample;
 
-import com.iailab.module.data.api.ind.IndItemApi;
 import com.iailab.module.data.api.ind.dto.ApiIndItemDTO;
 import com.iailab.module.data.api.plan.dto.ApiPlanItemDTO;
 import com.iailab.module.data.api.point.dto.ApiPointDTO;
@@ -25,9 +24,6 @@
 abstract class SampleInfoConstructor {
 
     @Autowired
-    private IndItemApi indItemApi;
-
-    @Autowired
     private MmPredictItemService mmPredictItemService;
 
     /**
@@ -39,7 +35,9 @@
      */
     protected SampleInfo prepareSampleInfo(String modelId, Date predictTime, Map<Integer, Integer> dynamicDataLength) {
         //样本的列信息
-        return getColumnInfo(modelId, predictTime, dynamicDataLength);
+        SampleInfo sampleInfo = getColumnInfo(modelId, predictTime, dynamicDataLength);
+        sampleInfo.setPredictTime(predictTime);
+        return sampleInfo;
     }
 
     /**
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java
index 7d4b804..6b9f3c9 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java
@@ -12,6 +12,7 @@
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -27,6 +28,8 @@
 
     private Integer sampleColumn;
 
+    private Date predictTime;
+
     private Timestamp startTime;
 
     private Timestamp endTime;
@@ -35,6 +38,8 @@
 
     private Integer sampleCycle;
 
+    private Boolean isAdjust = false;
+
     // 调整值
     private List<StAdjustDeviationDTO> deviation;
     // 所有测点信息,避免重复查询

--
Gitblit v1.9.3