From c03d3aadb42d8c960022129cab6b9e07f6ae5ace Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期三, 16 四月 2025 09:52:50 +0800
Subject: [PATCH] 根据预测时间获取最后预测值

---
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictLastValueReqVO.java |    3 +++
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java                    |    4 ++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java                    |   25 +++++++++++++++++++++++++
 3 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
index 2f3292c..87c6276 100644
--- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
@@ -165,4 +165,8 @@
     @Operation(summary = "自动调整")
     Boolean autoAdjustByCode(@RequestBody MmPredictAutoAdjustReqVO reqVO);
 
+    @PostMapping(PREFIX + "/predict-data/time-value")
+    @Operation(summary = "根据预测时间获取最后预测值")
+    Map<String, BigDecimal> getPredictValueByTime(PredictLastValueReqVO reqVO);
+
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictLastValueReqVO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictLastValueReqVO.java
index fccd0d9..cd96bee 100644
--- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictLastValueReqVO.java
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/PredictLastValueReqVO.java
@@ -3,6 +3,7 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -15,4 +16,6 @@
 public class PredictLastValueReqVO {
 
     private List<String[]> itemNos;
+
+    private Date predictTime;
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
index f4d7516..89431c1 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
@@ -786,6 +786,7 @@
         return result;
     }
 
+    @Override
     public Map<String, BigDecimal> getPredictLastValue(PredictLastValueReqVO reqVO) {
         Map<String, BigDecimal> result = new HashMap<>(reqVO.getItemNos().size());
         if (CollectionUtils.isEmpty(reqVO.getItemNos())) {
@@ -818,6 +819,30 @@
     }
 
     @Override
+    public Map<String, BigDecimal> getPredictValueByTime(PredictLastValueReqVO reqVO) {
+        Map<String, BigDecimal> result = new HashMap<>(reqVO.getItemNos().size());
+        if (CollectionUtils.isEmpty(reqVO.getItemNos())) {
+            return result;
+        }
+        List<String[]> itemNos = reqVO.getItemNos();
+        for (String[] itemNo : itemNos) {
+            String key = itemNo[0] + "_" + itemNo[1] + "_" + itemNo[2];
+            ItemVO predictItem = mmPredictItemService.getItemByItemNo(itemNo[0]);
+            if (predictItem == null || predictItem.getLastTime() == null) {
+                result.put(key, BigDecimal.ZERO);
+            }
+            MmItemOutputEntity outPut = mmItemOutputService.getByItemid(predictItem.getId(), itemNo[1], itemNo[2]);
+            List<Object[]> curData = mmItemResultJsonService.getData(outPut.getId(), reqVO.getPredictTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
+            if (CollectionUtils.isEmpty(curData)) {
+                result.put(key, BigDecimal.ZERO);
+            } else {
+                result.put(key, new BigDecimal(curData.get(curData.size() - 1)[1].toString()));
+            }
+        }
+        return result;
+    }
+
+    @Override
     public List<StScheduleRecordVO> getLastScheduleData(String scheduleCode, Integer limit) {
         if (StringUtils.isBlank(scheduleCode)) {
             return null;

--
Gitblit v1.9.3