From 73b3a394952353c318a8712d2cc1efec03dc009d Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期四, 10 四月 2025 16:40:14 +0800
Subject: [PATCH] Merge branch 'master' of http://dlindusit.com:53929/r/iailab-plat

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java |   45 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 40 insertions(+), 5 deletions(-)

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 d54714e..7018392 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
@@ -23,6 +23,7 @@
 import com.iailab.module.model.mcs.pre.entity.DmModuleEntity;
 import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
 import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmMessageEntity;
+import com.iailab.module.model.mcs.pre.enums.PredGranularityEnum;
 import com.iailab.module.model.mcs.pre.service.*;
 import com.iailab.module.model.mcs.pre.vo.MmItemOutputRespVO;
 import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmConfigSaveReqVO;
@@ -118,7 +119,7 @@
     private StScheduleModelSettingService stScheduleModelSettingService;
 
     @Autowired
-    private StAdjustConfigService stAdjustConfigService;
+    private MmPredictAutoAdjustConfigService autoAdjustService;
     private int HOUR_MINS = 60;
 
     @Override
@@ -218,6 +219,7 @@
             viewDto.setRealData(getHisData(output.getPointid(), startTime, endTime, reqVO.getPrec()));
             viewDto.setPreDataN(mmItemResultService.getData(output.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
             viewDto.setPreDataL(mmItemResultLastPointService.getData(output.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
+            viewDto.setPreDataLOriginal(mmItemResultLastPointService.getData(output.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND,DataTypeEnum.FLOAT_LAST_BAK));
             viewDto.setCurData(mmItemResultJsonService.getData(output.getId(), predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
             // 模拟调整曲线
             viewDto.setAdjData(stAdjustResultService.getData(output.getId(), predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
@@ -384,6 +386,7 @@
         BigDecimal limitL = chartParams.get(CommonConstant.LIMIT_L) == null ? null : new BigDecimal(chartParams.get(CommonConstant.LIMIT_L));
         int lengthLeft = chartParams.get(CommonConstant.LENGTH_LEFT) == null ? predictItem.getPredictLength() : new BigDecimal(chartParams.get(CommonConstant.LENGTH_LEFT)).intValue();
         int lengthRight = chartParams.get(CommonConstant.LENGTH_RIGHT) == null ? predictItem.getPredictLength() : new BigDecimal(chartParams.get(CommonConstant.LENGTH_RIGHT)).intValue();
+        int decimalPlaces = chartParams.get(CommonConstant.DECIMAL_PLACES) == null ? 3 : new BigDecimal(chartParams.get(CommonConstant.DECIMAL_PLACES)).intValue();
 
         Date[] timeArray = calResultTime(predictItem, reqVO.getStartTime(), reqVO.getEndTime(), lengthLeft, lengthRight);
         Date predictTime = timeArray[0];
@@ -401,12 +404,25 @@
         dataView.setRangeL(rangeL);
         dataView.setLimitH(limitH);
         dataView.setLimitL(limitL);
+
+        Map<String, Object> realDataMap = new HashMap<>();
         if (StringUtils.isNotBlank(outPut.getPointid())) {
             dataView.setRealData(getHisData(outPut.getPointid(), startTime, endTime, timeFormat));
+            dataView.getRealData().forEach(item -> {
+                realDataMap.put(item[0].toString(), item[1]);
+            });
         } else {
             dataView.setRealData(new ArrayList<>());
         }
-        dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat, 3));
+        if (!CollectionUtils.isEmpty(realDataMap)) {
+            Object curReal = realDataMap.get(DateUtils.format(predictTime, timeFormat)) == null ?
+                    dataView.getRealData().get(dataView.getRealData().size() - 1) : realDataMap.get(DateUtils.format(predictTime, timeFormat));
+            // 当前值T0 + 当前预测值 20250409
+            dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat, 3, true, curReal));
+        } else {
+            dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat, 3));
+        }
+
         // 调整预测值
         dataView.setAdjData(stAdjustResultService.getData(outPut.getId(),predictTime,timeFormat));
         dataView.setLineType(lineType.getCode());
@@ -415,8 +431,8 @@
                 dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), startTime, endTime, timeFormat));
                 break;
             case TL:
-                dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), predictTime, endTime, timeFormat));
-                dataView.setPreDataL(mmItemResultLastPointService.getData(outPut.getId(), startTime, endTime, timeFormat));
+                dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), predictTime, endTime, timeFormat, decimalPlaces));
+                dataView.setPreDataL(mmItemResultLastPointService.getData(outPut.getId(), startTime, endTime, timeFormat, decimalPlaces));
                 break;
             default:
                 break;
@@ -715,7 +731,16 @@
             InfluxModelResultByOutPutIdsPOJO pojo = new InfluxModelResultByOutPutIdsPOJO();
             pojo.setOutPutIds(outPutIds);
             pojo.setType(DataTypeEnum.FLOAT.getCode());
-            Map<String, List<InfluxModelResultVO>> outPutIdDoubles = influxDBService.queryModelResultsByOutPutIds(pojo, mmPredictItemRespVO.getLastTime(), mmPredictItemRespVO.getLastTime());
+
+            // 查询时间加1粒度
+            Calendar lastTime = Calendar.getInstance();
+            lastTime.setTime(mmPredictItemRespVO.getLastTime());
+            if (mmPredictItemRespVO.getGranularity() < PredGranularityEnum.D1.getCode()) {
+                // 如果小于天粒度,则从下个时间粒度开始
+                lastTime.add(Calendar.SECOND,mmPredictItemRespVO.getGranularity());
+            }
+
+            Map<String, List<InfluxModelResultVO>> outPutIdDoubles = influxDBService.queryModelResultsByOutPutIds(pojo, lastTime.getTime(), lastTime.getTime());
             Map<String, Double> outPutIdDouble = new HashMap<>(outPutIds.size());
             for (MmItemOutputRespVO outPut : mmPredictItemRespVO.getOutPuts()) {
                 String outPutId = outPut.getId();
@@ -890,6 +915,16 @@
         return stScheduleSuggestService.useSuggest(reqVO);
     }
 
+    @Override
+    public List<ScheduleSuggestRespDTO> getLastSuggest(Map<String, Object> params) {
+        return stScheduleSuggestService.getLastSuggest(params);
+    }
+
+    @Override
+    public Boolean autoAdjustByCode(MmPredictAutoAdjustReqVO reqVO) {
+        return autoAdjustService.autoAdjustByCode(reqVO.getConfigCode(),reqVO.getAdjustStartTime());
+    }
+
     private Date[] calResultTime(ItemVO predictItem, Date startTimeReq, Date endTimeReq, int lengthLeft, int lengthRight) {
         Date[] result = new Date[3];
         Date predictTime = predictItem.getLastTime();

--
Gitblit v1.9.3