From 68fc1180536b594e085972205116d3c8319edf0f Mon Sep 17 00:00:00 2001
From: dengzedong <dengzedong@email>
Date: 星期五, 11 四月 2025 09:14:20 +0800
Subject: [PATCH] config_code 唯一索引 selectOne("config_code",code,"is_enable",1);

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 51 insertions(+), 4 deletions(-)

diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java
index 30f3cfb..b55cfcf 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmItemResultServiceImpl.java
@@ -3,18 +3,19 @@
 import com.alibaba.fastjson.JSONArray;
 import com.iailab.framework.common.util.date.DateUtils;
 import com.iailab.module.model.common.enums.DataTypeEnum;
+import com.iailab.module.model.influxdb.pojo.InfluxModelResultLastBakSimPOJO;
 import com.iailab.module.model.influxdb.pojo.InfluxModelResultLastSimPOJO;
 import com.iailab.module.model.influxdb.pojo.InfluxModelResultPOJO;
 import com.iailab.module.model.influxdb.pojo.InfluxModelResultSimPOJO;
 import com.iailab.module.model.influxdb.service.InfluxDBService;
 import com.iailab.module.model.influxdb.vo.InfluxModelResultVO;
-import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
 import com.iailab.module.model.mcs.pre.entity.MmItemResultJsonEntity;
 import com.iailab.module.model.mcs.pre.service.MmItemResultJsonService;
 import com.iailab.module.model.mcs.pre.service.MmItemResultService;
 import com.iailab.module.model.mdk.vo.DataValueVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -36,6 +37,7 @@
     public void savePredictValue(Map<String, List<DataValueVO>> predictValueMap, int t, String nIndex, Date predictTime) {
         List<InfluxModelResultPOJO> importList = new ArrayList<>();
         List<InfluxModelResultPOJO> lastList = new ArrayList<>();
+        List<InfluxModelResultPOJO> lastBakList = new ArrayList<>();
         List<MmItemResultJsonEntity> resultJsonList = new ArrayList<>();
 
         for (Map.Entry<String, List<DataValueVO>> entry : predictValueMap.entrySet()) {
@@ -44,7 +46,6 @@
                 pojo.setValue(dataVo.getDataValue());
                 pojo.setTimestamp(dataVo.getDataTime().toInstant());
                 pojo.setOutPutId(entry.getKey());
-                pojo.setType(DataTypeEnum.FLOAT.getCode());
                 importList.add(pojo);
             }
 
@@ -67,8 +68,13 @@
                 pojo.setValue(dataVo.getDataValue());
                 pojo.setTimestamp(dataVo.getDataTime().toInstant());
                 pojo.setOutPutId(entry.getKey());
-                pojo.setType(DataTypeEnum.FLOAT.getCode());
                 lastList.add(pojo);
+
+                InfluxModelResultLastBakSimPOJO bakSimPojo = new InfluxModelResultLastBakSimPOJO();
+                bakSimPojo.setValue(dataVo.getDataValue());
+                bakSimPojo.setTimestamp(dataVo.getDataTime().toInstant());
+                bakSimPojo.setOutPutId(entry.getKey());
+                lastBakList.add(bakSimPojo);
             }
 
             MmItemResultJsonEntity resultJson = new MmItemResultJsonEntity();
@@ -77,6 +83,7 @@
             resultJson.setPredicttime(predictTime);
             List<Double> jsonValueList = entry.getValue().stream().map(valueVO -> valueVO.getDataValue()).collect(Collectors.toList());
             resultJson.setJsonvalue(JSONArray.toJSONString(jsonValueList));
+            resultJson.setCumulant("");
             resultJsonList.add(resultJson);
         }
         // json结果存入mysql
@@ -84,6 +91,8 @@
         // double结果存入influxdb
         influxDBService.asyncWriteModelResults(importList);
         influxDBService.asyncWriteModelResults(lastList);
+        // t+l备份
+        influxDBService.asyncWriteModelResults(lastBakList);
     }
 
     @Override
@@ -102,6 +111,28 @@
     }
 
     @Override
+    public List<DataValueVO> getPredictValueLast(String outputid, Date startTime, int mins) {
+        List<DataValueVO> result = new ArrayList<>();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(startTime);
+        calendar.add(Calendar.MINUTE, mins * -1);
+        Date startTimeNew = calendar.getTime();
+        Date endTimeNew = new Date();
+        InfluxModelResultPOJO pojo = new InfluxModelResultPOJO();
+        pojo.setType(DataTypeEnum.FLOAT.getCode());
+        pojo.setOutPutId(outputid);
+        List<InfluxModelResultVO> influxModelResultVOS = influxDBService.queryModelResults(pojo, startTimeNew, endTimeNew);
+        if (!CollectionUtils.isEmpty(influxModelResultVOS)) {
+            InfluxModelResultVO t = influxModelResultVOS.get(influxModelResultVOS.size() - 1);
+            DataValueVO dv = new DataValueVO();
+            dv.setDataTime(Date.from(t.getTimestamp()));
+            dv.setDataValue(Double.valueOf(t.getValue().toString()));
+            result.add(dv);
+        }
+        return result;
+    }
+
+    @Override
     public List<Object[]> getData(String outputid, Date startTime, Date endTime, String timeFormat) {
         List<Object[]> result = new ArrayList<>();
         InfluxModelResultPOJO pojo = new InfluxModelResultPOJO();
@@ -111,7 +142,23 @@
         influxModelResultVOS.forEach(item -> {
             Object[] dataItem = new Object[2];
             dataItem[0] = DateUtils.format(Date.from(item.getTimestamp()), timeFormat);
-            dataItem[1] = BigDecimal.valueOf(Double.valueOf(item.getValue().toString())).setScale(2, BigDecimal.ROUND_HALF_UP);
+            dataItem[1] = BigDecimal.valueOf(Double.valueOf(item.getValue().toString())).setScale(3, BigDecimal.ROUND_HALF_UP);
+            result.add(dataItem);
+        });
+        return result;
+    }
+
+    @Override
+    public List<Object[]> getData(String outputid, Date startTime, Date endTime, String timeFormat, int decimalPlaces) {
+        List<Object[]> result = new ArrayList<>();
+        InfluxModelResultPOJO pojo = new InfluxModelResultPOJO();
+        pojo.setType(DataTypeEnum.FLOAT.getCode());
+        pojo.setOutPutId(outputid);
+        List<InfluxModelResultVO> influxModelResultVOS = influxDBService.queryModelResults(pojo, startTime, endTime);
+        influxModelResultVOS.forEach(item -> {
+            Object[] dataItem = new Object[2];
+            dataItem[0] = DateUtils.format(Date.from(item.getTimestamp()), timeFormat);
+            dataItem[1] = BigDecimal.valueOf(Double.valueOf(item.getValue().toString())).setScale(decimalPlaces, BigDecimal.ROUND_HALF_UP);
             result.add(dataItem);
         });
         return result;

--
Gitblit v1.9.3