From 91343d9a8d97b823f1b662f980790bb901bca46b Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期一, 18 十一月 2024 17:53:15 +0800
Subject: [PATCH] 图表数据查询

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java |  122 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 110 insertions(+), 12 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 5a3ddbd..ea0e09e 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
@@ -7,12 +7,14 @@
 import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO;
 import com.iailab.module.model.api.mcs.McsApi;
 import com.iailab.module.model.api.mcs.dto.*;
+import com.iailab.module.model.common.enums.CommonConstant;
+import com.iailab.module.model.common.enums.PreLineTypeEnum;
 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.enums.ItemStatus;
 import com.iailab.module.model.mcs.pre.service.*;
-import com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO;
 import com.iailab.module.model.mdk.vo.ItemVO;
+import com.iailab.module.model.mpk.service.ChartParamService;
+import com.iailab.module.model.mpk.service.ChartService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
@@ -49,6 +51,12 @@
 
     @Autowired
     private DataPointApi dataPointApi;
+
+    @Autowired
+    private MmItemResultJsonService mmItemResultJsonService;
+
+    @Autowired
+    private ChartService chartService;
 
     private int HOUR_MINS = 60;
 
@@ -95,15 +103,21 @@
         List<String> outIds = reqVO.getOutIds();
         List<String> legends = new ArrayList<>();
         List<PreDataViewRespDTO> dataViewList = new ArrayList<>();
-        if (CollectionUtils.isEmpty(reqVO.getQueryIds())) {
+        if (CollectionUtils.isEmpty(outIds)) {
             return result;
         }
         Date predictTime = reqVO.getPredictTime();
         if (predictTime == null) {
-            Calendar calendar = Calendar.getInstance();
-            calendar.set(Calendar.MILLISECOND, 0);
-            calendar.set(Calendar.SECOND, 0);
-            predictTime = calendar.getTime();
+            MmItemOutputEntity output = mmItemOutputService.getOutPutById(reqVO.getOutIds().get(0));
+            ItemVO predictItem = mmPredictItemService.getItemById(output.getItemid());
+            if (predictItem.getLastTime() != null) {
+                predictTime = predictItem.getLastTime();
+            } else {
+                Calendar calendar = Calendar.getInstance();
+                calendar.set(Calendar.MILLISECOND, 0);
+                calendar.set(Calendar.SECOND, 0);
+                predictTime = calendar.getTime();
+            }
         }
         Date startTime = reqVO.getStartTime();
         if (startTime == null) {
@@ -125,9 +139,12 @@
             String outId = outIds.get(i);
             MmItemOutputEntity output = mmItemOutputService.getOutPutById(outId);
             if (output == null) {
-               continue;
+                continue;
             }
             legends.add(output.getResultstr());
+            viewDto.setItemId(output.getItemid());
+            viewDto.setOutId(outId);
+            viewDto.setResultstr(output.getResultstr());
             viewDto.setRealData(getHisData(output.getPointid(), startTime, endTime));
             viewDto.setPreDataN(mmItemResultService.getData(output.getId(), startTime, endTime));
             viewDto.setPreDataL(mmItemResultLastPointService.getData(output.getId(), startTime, endTime));
@@ -199,25 +216,25 @@
         if (predictItem.getLastTime() == null) {
             return result;
         }
-        result.setLastTime(predictItem.getLastTime());
+        result.setPredictTime(predictItem.getLastTime());
         Date startTime = reqVO.getStartTime();
         if (startTime == null) {
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(predictItem.getLastTime());
-            calendar.add(Calendar.HOUR_OF_DAY, -1);
+            calendar.add(Calendar.MINUTE, -1 * predictItem.getPredictLength());
             startTime = calendar.getTime();
         }
         Date endTime = reqVO.getEndTime();
         if (endTime == null) {
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(predictItem.getLastTime());
-            calendar.add(Calendar.HOUR_OF_DAY, 1);
+            calendar.add(Calendar.MINUTE, predictItem.getPredictLength());
             endTime = calendar.getTime();
         }
         if (endTime.getTime() <= startTime.getTime()) {
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(startTime);
-            calendar.add(Calendar.HOUR_OF_DAY, 1);
+            calendar.add(Calendar.MINUTE, predictItem.getPredictLength());
             endTime = calendar.getTime();
         }
 
@@ -243,6 +260,87 @@
         return result;
     }
 
+    @Override
+    public PreDataSingleChartRespVO getPreDataSingleChart(PreDataSingleChartReqVO reqVO) {
+        PreDataSingleChartRespVO result = new PreDataSingleChartRespVO();
+
+        Map<String, String> chartParams = chartService.getByChartCode(reqVO.getChartCode());
+        if (CollectionUtils.isEmpty(chartParams)) {
+            return result;
+        }
+        String itemCode = chartParams.get(CommonConstant.ITEM_CODE);
+        if (itemCode == null) {
+            return result;
+        }
+        String resultStr = chartParams.get(CommonConstant.RESULT_STR);
+        if (resultStr == null) {
+            return result;
+        }
+        ItemVO predictItem = mmPredictItemService.getItemByItemNo(itemCode);
+        if (predictItem == null || predictItem.getLastTime() == null) {
+            return result;
+        }
+        PreLineTypeEnum lineType = chartParams.get(CommonConstant.LINE_TYPE) == null ? PreLineTypeEnum.TN : PreLineTypeEnum.valueOf(chartParams.get(CommonConstant.LINE_TYPE));
+        BigDecimal rangeH = chartParams.get(CommonConstant.RANGE_H) == null ? BigDecimal.ZERO : new BigDecimal(chartParams.get(CommonConstant.RANGE_H));
+        BigDecimal rangeL = chartParams.get(CommonConstant.RANGE_L) == null ? BigDecimal.ZERO : new BigDecimal(chartParams.get(CommonConstant.RANGE_L));
+        BigDecimal limitH = chartParams.get(CommonConstant.LIMIT_H) == null ? BigDecimal.ZERO : new BigDecimal(chartParams.get(CommonConstant.LIMIT_H));
+        BigDecimal limitL = chartParams.get(CommonConstant.LIMIT_L) == null ? BigDecimal.ZERO : 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();
+        result.setPredictTime(predictItem.getLastTime());
+        Date predictTime = predictItem.getLastTime();
+        Date startTime = reqVO.getStartTime();
+        if (startTime == null) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(predictItem.getLastTime());
+            calendar.add(Calendar.MINUTE, -1 * lengthLeft);
+            startTime = calendar.getTime();
+        }
+        Date endTime = reqVO.getEndTime();
+        if (endTime == null) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(predictItem.getLastTime());
+            calendar.add(Calendar.MINUTE, lengthRight);
+            endTime = calendar.getTime();
+        }
+        if (endTime.getTime() <= startTime.getTime()) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(startTime);
+            calendar.add(Calendar.MINUTE, lengthRight);
+            endTime = calendar.getTime();
+        }
+        List<String> categories = DateUtils.getTimeScale(startTime, endTime, predictItem.getGranularity());
+        List<String> legend = new ArrayList<>();
+        MmItemOutputEntity outPut = mmItemOutputService.getByItemid(predictItem.getId(), resultStr);
+        PreDataViewRespDTO dataView = new PreDataViewRespDTO();
+        dataView.setItemId(predictItem.getId());
+        dataView.setItemName(predictItem.getItemName());
+        dataView.setResultstr(resultStr);
+        dataView.setRangeH(rangeH);
+        dataView.setRangeL(rangeL);
+        dataView.setLimitH(limitH);
+        dataView.setLimitL(limitL);
+        dataView.setRealData(getHisData(outPut.getPointid(), startTime, endTime));
+        dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime));
+        switch (lineType) {
+            case TN:
+                dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), startTime, endTime));
+                break;
+            case TL:
+                dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), predictTime, endTime));
+                dataView.setPreDataL(mmItemResultLastPointService.getData(outPut.getId(), startTime, endTime));
+                break;
+            default:
+                break;
+        }
+        result.setStartTime(startTime);
+        result.setEndTime(endTime);
+        result.setCategories(categories);
+        result.setLegend(legend);
+        result.setDataView(dataView);
+        return result;
+    }
+
     /**
      * 获取真实值
      *

--
Gitblit v1.9.3