From caa63a39e63cc6fb80b97cfd94fbc0199d887931 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期四, 10 四月 2025 17:28:06 +0800
Subject: [PATCH] 调整预测值decimalPlaces

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java |   75 ++++++++++++++++++++++++++-----------
 1 files changed, 52 insertions(+), 23 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 176e863..e69bac2 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
@@ -219,7 +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.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));
@@ -343,7 +343,7 @@
                 viewDto.setCumulantPreData(mmItemResultService.getData(out.getId() + CommonDict.CUMULANT_SUFFIX, startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
             }
             // 调整预测值
-            viewDto.setAdjData(stAdjustResultService.getData(out.getId(),predictItem.getLastTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
+            viewDto.setAdjData(stAdjustResultService.getData(out.getId(), predictItem.getLastTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
 
             viewMap.put(out.getResultName(), viewDto);
         }
@@ -407,7 +407,7 @@
 
         Map<String, Object> realDataMap = new HashMap<>();
         if (StringUtils.isNotBlank(outPut.getPointid())) {
-            dataView.setRealData(getHisData(outPut.getPointid(), startTime, endTime, timeFormat));
+            dataView.setRealData(getHisData(outPut.getPointid(), startTime, endTime, timeFormat, decimalPlaces));
             dataView.getRealData().forEach(item -> {
                 realDataMap.put(item[0].toString(), item[1]);
             });
@@ -424,7 +424,7 @@
         }
 
         // 调整预测值
-        dataView.setAdjData(stAdjustResultService.getData(outPut.getId(),predictTime,timeFormat));
+        dataView.setAdjData(stAdjustResultService.getData(outPut.getId(), predictTime, timeFormat, decimalPlaces));
         dataView.setLineType(lineType.getCode());
         switch (lineType) {
             case TN:
@@ -491,7 +491,7 @@
                 String[] adjPointArr = adjValueArrPoint.split(",");
                 Map<String, Object> adjValue = dataPointApi.queryPointsRealValue(Arrays.asList(adjPointArr));
                 BigDecimal[] adjValueArr = new BigDecimal[adjPointArr.length];
-                for(int i = 0; i < adjPointArr.length; i++) {
+                for (int i = 0; i < adjPointArr.length; i++) {
                     adjValueArr[i] = new BigDecimal(adjValue.get(adjPointArr[i]).toString());
                 }
                 dataView.setAdjValueArr(adjValueArr);
@@ -640,6 +640,35 @@
     }
 
     /**
+     * 获取真实值
+     *
+     * @param pointId
+     * @param startTime
+     * @param endTime
+     * @param timeFormat
+     * @return
+     */
+    private List<Object[]> getHisData(String pointId, Date startTime, Date endTime, String timeFormat, int decimalPlaces) {
+        List<Object[]> result = new ArrayList<>();
+        ApiPointDTO pointDTO = dataPointApi.getInfoById(pointId);
+        ApiPointValueQueryDTO queryPointDto = new ApiPointValueQueryDTO();
+        queryPointDto.setPointNo(pointDTO.getPointNo());
+        queryPointDto.setStart(startTime);
+        queryPointDto.setEnd(endTime);
+        List<ApiPointValueDTO> valueDTOS = dataPointApi.queryPointHistoryValue(queryPointDto);
+        if (CollectionUtils.isEmpty(valueDTOS)) {
+            return result;
+        }
+        valueDTOS.forEach(item -> {
+            Object[] values = new Object[2];
+            values[0] = DateUtils.format(item.getT(), timeFormat);
+            values[1] = new BigDecimal(item.getV()).setScale(decimalPlaces, BigDecimal.ROUND_HALF_UP);
+            result.add(values);
+        });
+        return result;
+    }
+
+    /**
      * 新增预警信息
      *
      * @param dto
@@ -737,7 +766,7 @@
             lastTime.setTime(mmPredictItemRespVO.getLastTime());
             if (mmPredictItemRespVO.getGranularity() < PredGranularityEnum.D1.getCode()) {
                 // 如果小于天粒度,则从下个时间粒度开始
-                lastTime.add(Calendar.SECOND,mmPredictItemRespVO.getGranularity());
+                lastTime.add(Calendar.SECOND, mmPredictItemRespVO.getGranularity());
             }
 
             Map<String, List<InfluxModelResultVO>> outPutIdDoubles = influxDBService.queryModelResultsByOutPutIds(pojo, lastTime.getTime(), lastTime.getTime());
@@ -747,11 +776,11 @@
                 if (outPutIdDoubles.containsKey(outPutId)) {
                     List<InfluxModelResultVO> influxModelResultVOS = outPutIdDoubles.get(outPutId);
                     if (!CollectionUtils.isEmpty(influxModelResultVOS)) {
-                        outPutIdDouble.put(outPut.getResultstr(),Double.valueOf(influxModelResultVOS.get(0).getValue().toString()));
+                        outPutIdDouble.put(outPut.getResultstr(), Double.valueOf(influxModelResultVOS.get(0).getValue().toString()));
                     }
                 }
             }
-            result.put(mmPredictItemRespVO.getItemno(),outPutIdDouble);
+            result.put(mmPredictItemRespVO.getItemno(), outPutIdDouble);
         }
         return result;
     }
@@ -771,14 +800,14 @@
             MmItemOutputEntity outPut = mmItemOutputService.getByItemid(predictItem.getId(), itemNo[1], itemNo[2]);
             String outputId = outPut.getId();
             // 判断是否有第五个参数,如果有第5个参数为1,则取累计值
-            if (itemNo.length >= 5){
-                if (StringUtils.isNotBlank(itemNo[4]) && "1".equals(itemNo[4])){
+            if (itemNo.length >= 5) {
+                if (StringUtils.isNotBlank(itemNo[4]) && "1".equals(itemNo[4])) {
                     outputId = outPut.getId() + CommonDict.CUMULANT_SUFFIX;
                 }
             }
             Date predictTime = predictItem.getLastTime();
             List<Object[]> curData = mmItemResultJsonService.getData(outputId, predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
-            if(CollectionUtils.isEmpty(curData)) {
+            if (CollectionUtils.isEmpty(curData)) {
                 result.put(key, BigDecimal.ZERO);
             } else {
                 result.put(key, new BigDecimal(curData.get(curData.size() - 1)[1].toString()));
@@ -792,7 +821,7 @@
         if (StringUtils.isBlank(scheduleCode)) {
             return null;
         }
-        return stScheduleRecordService.getLastScheduleResult(scheduleCode,limit);
+        return stScheduleRecordService.getLastScheduleResult(scheduleCode, limit);
     }
 
     @Override
@@ -813,12 +842,12 @@
         if (null == reqVO.getEndTime()) {
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(predictItem.getLastTime());
-            calendar.add(Calendar.SECOND,predictItem.getPredictLength() * predictItem.getGranularity());
+            calendar.add(Calendar.SECOND, predictItem.getPredictLength() * predictItem.getGranularity());
             reqVO.setEndTime(calendar.getTime());
         }
 
-        List<String> itemNos = new ArrayList<String>(){{
-           add(reqVO.getItemNo());
+        List<String> itemNos = new ArrayList<String>() {{
+            add(reqVO.getItemNo());
         }};
         List<MmPredictItemRespVO> ItemRespVOs = mmPredictItemService.getArrayOutPutsByItemNos(itemNos);
         if (CollectionUtils.isEmpty(ItemRespVOs)) {
@@ -833,12 +862,12 @@
         pojo.setOutPutIds(outPuts.stream().map(MmItemOutputRespVO::getId).collect(Collectors.toList()));
         pojo.setType(DataTypeEnum.FLOAT.getCode());
         Map<String, List<InfluxModelResultVO>> outPutDatas = influxDBService.queryModelResultsByOutPutIds(pojo, reqVO.getStartTime(), reqVO.getEndTime());
-        Map<String,List<Object[]>> result = new HashMap<>(outPuts.size());
+        Map<String, List<Object[]>> result = new HashMap<>(outPuts.size());
         for (MmItemOutputRespVO outPut : outPuts) {
             String outPutId = outPut.getId();
             if (outPutDatas.containsKey(outPutId)) {
                 List<InfluxModelResultVO> influxModelResultVOS = outPutDatas.get(outPutId);
-                result.put(null == outPut.getResultIndex() ? outPut.getResultstr() : outPut.getResultstr()+"_"+outPut.getResultIndex(),influxModelResultVOS.stream().map(e -> {
+                result.put(null == outPut.getResultIndex() ? outPut.getResultstr() : outPut.getResultstr() + "_" + outPut.getResultIndex(), influxModelResultVOS.stream().map(e -> {
                     Object[] values = new Object[2];
                     values[0] = DateUtils.format(Date.from(e.getTimestamp()), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
                     values[1] = Double.valueOf(e.getValue().toString());
@@ -869,7 +898,7 @@
     }
 
     @Override
-    public Boolean updateAlarmConfig(String alarmObj,String upperLimit,String lowerLimit) {
+    public Boolean updateAlarmConfig(String alarmObj, String upperLimit, String lowerLimit) {
         MmPredictAlarmConfigSaveReqVO reqVO = new MmPredictAlarmConfigSaveReqVO();
         reqVO.setAlarmObj(alarmObj);
         reqVO.setUpperLimit(BigDecimal.valueOf(Double.parseDouble(upperLimit)));
@@ -891,23 +920,23 @@
 
     @Override
     public MmItemOutputDTO getItemOutputByItemid(String itemid, String resultstr, String resultIndex) {
-        return ConvertUtils.sourceToTarget(mmItemOutputService.getByItemid(itemid,resultstr,resultIndex),MmItemOutputDTO.class);
+        return ConvertUtils.sourceToTarget(mmItemOutputService.getByItemid(itemid, resultstr, resultIndex), MmItemOutputDTO.class);
     }
 
     @Override
     public List<Object[]> getItemResult(PreItemResultReqVO reqVO) {
 
-        return mmItemResultService.getData(reqVO.getOutputid(),reqVO.getStartTime(),reqVO.getEndTime(),reqVO.getTimeFormat());
+        return mmItemResultService.getData(reqVO.getOutputid(), reqVO.getStartTime(), reqVO.getEndTime(), reqVO.getTimeFormat());
     }
 
     @Override
     public PredictItemVO getPredictItemByItemNo(String itemNo) {
-        return ConvertUtils.sourceToTarget(mmPredictItemService.getItemByItemNo(itemNo),PredictItemVO.class);
+        return ConvertUtils.sourceToTarget(mmPredictItemService.getItemByItemNo(itemNo), PredictItemVO.class);
     }
 
     @Override
     public List<Object[]> getItemResultLastPoint(PreItemResultReqVO reqVO) {
-        return mmItemResultLastPointService.getData(reqVO.getOutputid(),reqVO.getStartTime(),reqVO.getEndTime(),reqVO.getTimeFormat());
+        return mmItemResultLastPointService.getData(reqVO.getOutputid(), reqVO.getStartTime(), reqVO.getEndTime(), reqVO.getTimeFormat());
     }
 
     @Override
@@ -922,7 +951,7 @@
 
     @Override
     public Boolean autoAdjustByCode(MmPredictAutoAdjustReqVO reqVO) {
-        return autoAdjustService.autoAdjustByCode(reqVO.getConfigCode(),reqVO.getAdjustStartTime());
+        return autoAdjustService.autoAdjustByCode(reqVO.getConfigCode(), reqVO.getAdjustStartTime());
     }
 
     private Date[] calResultTime(ItemVO predictItem, Date startTimeReq, Date endTimeReq, int lengthLeft, int lengthRight) {

--
Gitblit v1.9.3