From edf66f68df77254d85f52fedde9eba171c475e20 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期二, 22 四月 2025 08:40:23 +0800
Subject: [PATCH] 忽略建议

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java |  263 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 206 insertions(+), 57 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 e73ecba..19268d2 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,11 +23,12 @@
 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;
 import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmMessageSaveReqVO;
 import com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO;
-import com.iailab.module.model.mcs.sche.entity.StAdjustConfigDetEntity;
 import com.iailab.module.model.mcs.sche.entity.StScheduleModelEntity;
 import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity;
 import com.iailab.module.model.mcs.sche.service.*;
@@ -116,10 +117,6 @@
 
     @Autowired
     private StScheduleModelSettingService stScheduleModelSettingService;
-
-    @Autowired
-    private StAdjustConfigService stAdjustConfigService;
-
     private int HOUR_MINS = 60;
 
     @Override
@@ -141,6 +138,7 @@
                 PredictItemTreeDTO chd = new PredictItemTreeDTO();
                 chd.setLabel(item1.getItemName());
                 chd.setId(item1.getId());
+                chd.setDisabled(true);
                 List<PredictItemTreeDTO> chd1 = new ArrayList<>();
                 List<MmItemOutputEntity> outList = mmItemOutputService.getByItemid(item1.getId());
                 if (!CollectionUtils.isEmpty(outList)) {
@@ -200,6 +198,7 @@
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(predictTime);
             calendar.add(Calendar.HOUR_OF_DAY, 1);
+            calendar.add(Calendar.MINUTE, 1);
             endTime = calendar.getTime();
         }
 
@@ -215,9 +214,10 @@
             viewDto.setOutId(outId);
             viewDto.setResultstr(output.getResultstr());
             viewDto.setResultName(output.getResultName());
-            viewDto.setRealData(getHisData(output.getPointid(), startTime, endTime));
+            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));
@@ -271,7 +271,7 @@
             //处理预测累计
             if (output.getIscumulant() == 1) {
                 if (StringUtils.isNotBlank(output.getCumulpoint())) {
-                    viewDto.setCumulantRealData(getHisData(output.getCumulpoint(), startTime, endTime));
+                    viewDto.setCumulantRealData(getHisData(output.getCumulpoint(), startTime, endTime, reqVO.getPrec()));
                 }
                 viewDto.setCumulantPreData(mmItemResultService.getData(output.getId() + CommonDict.CUMULANT_SUFFIX, startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
             }
@@ -330,18 +330,19 @@
             legend.add(out.getResultName());
             PreDataSampleViewRespDTO viewDto = new PreDataSampleViewRespDTO();
             if (StringUtils.isNotBlank(out.getPointid())) {
-                viewDto.setRealData(getHisData(out.getPointid(), startTime, endTime));
+                viewDto.setRealData(getHisData(out.getPointid(), startTime, endTime, reqVO.getPrec()));
             }
             viewDto.setPreDataN(mmItemResultService.getData(out.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
+            viewDto.setPreDataL(mmItemResultLastPointService.getData(out.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, 3));
             //处理预测累计
             if (out.getIscumulant() == 1) {
                 if (StringUtils.isNotBlank(out.getCumulpoint())) {
-                    viewDto.setCumulantRealData(getHisData(out.getCumulpoint(), startTime, endTime));
+                    viewDto.setCumulantRealData(getHisData(out.getCumulpoint(), startTime, endTime, reqVO.getPrec()));
                 }
                 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);
         }
@@ -352,6 +353,7 @@
         result.setViewMap(viewMap);
         return result;
     }
+
 
     @Override
     public PreDataSingleChartRespVO getPreDataSingleChart(PreDataSingleChartReqVO reqVO) {
@@ -383,6 +385,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];
@@ -400,26 +403,52 @@
         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.setRealData(getHisData(outPut.getPointid(), startTime, endTime, timeFormat, decimalPlaces));
+            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, decimalPlaces, true, curReal));
+        } else {
+            dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat, decimalPlaces));
+        }
+
         // 调整预测值
-        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:
-                dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), startTime, endTime, timeFormat));
+                dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), startTime, endTime, timeFormat, decimalPlaces));
                 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(), startTime, endTime, timeFormat, decimalPlaces));
+                dataView.setPreDataL(mmItemResultLastPointService.getData(outPut.getId(), startTime, endTime, timeFormat, decimalPlaces));
                 break;
             default:
                 break;
         }
+
+        //处理预测累计
+        if (outPut.getIscumulant() != null && outPut.getIscumulant() == 1) {
+            /*if (StringUtils.isNotBlank(outPut.getCumulpoint())) {
+                dataView.setCumulantRealData(getHisData(outPut.getCumulpoint(), startTime, endTime));
+            }*/
+            List<Object[]> cumulantPreList = mmItemResultService.getData(outPut.getId() + CommonDict.CUMULANT_SUFFIX, startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
+            dataView.setCumulantPreData(cumulantPreList);
+            if (!CollectionUtils.isEmpty(cumulantPreList)) {
+                dataView.setCumulantPreLast(new BigDecimal(cumulantPreList.get(cumulantPreList.size() - 1)[1].toString()).setScale(2, BigDecimal.ROUND_HALF_UP));
+            }
+        }
+
         if (!CollectionUtils.isEmpty(dataView.getRealData())) {
             Object[] rdo = dataView.getRealData().get(dataView.getRealData().size() - 1);
             dataView.setCurrValue(new BigDecimal(rdo[1].toString()));
@@ -427,17 +456,29 @@
 
         if (!CollectionUtils.isEmpty(dataView.getCurData())) {
             List<Double> curList = dataView.getCurData().stream().map(t -> {
-                return new Double(t[1].toString());
-            }).collect(Collectors.toList());
-            dataView.setPreMax(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
-            dataView.setPreMin(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
-            dataView.setPreLast(new BigDecimal(curList.get(curList.size() - 1)).setScale(2, BigDecimal.ROUND_HALF_UP));
-            dataView.setPreCumulant(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).sum()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                try {
+                    return new Double(t[1].toString());
+                } catch (NumberFormatException e) {
+                    return null;
+                }
+            }).filter(Objects::nonNull).collect(Collectors.toList());
+            if (!curList.isEmpty()) {
+                dataView.setPreMax(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                dataView.setPreMin(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                dataView.setPreLast(new BigDecimal(curList.get(curList.size() - 1)).setScale(2, BigDecimal.ROUND_HALF_UP));
+                dataView.setPreCumulant(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).sum()).setScale(2, BigDecimal.ROUND_HALF_UP));
+            } else {
+                dataView.setPreMax(null);
+                dataView.setPreMin(null);
+                dataView.setPreLast(null);
+                dataView.setPreCumulant(null);
+            }
         }
 
         String alarmObj = chartParams.get(CommonConstant.ALARM_OBJ);
         if (StringUtils.isNotBlank(alarmObj)) {
-            List<AlarmMessageRespDTO> alarmList = ConvertUtils.sourceToTarget(mmPredictAlarmMessageService.getList(alarmObj, predictTime), AlarmMessageRespDTO.class);
+            String alarmTitle = chartParams.get(CommonConstant.ALARM_TITLE);
+            List<AlarmMessageRespDTO> alarmList = ConvertUtils.sourceToTarget(mmPredictAlarmMessageService.getList(alarmObj, predictTime, alarmTitle), AlarmMessageRespDTO.class);
             dataView.setAlarmList(alarmList);
             if (CollectionUtils.isEmpty(alarmList)) {
                 dataView.setAlarmMessage("暂无预警信息");
@@ -460,7 +501,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);
@@ -546,9 +587,10 @@
      * @param pointId
      * @param startTime
      * @param endTime
+     * @param prec
      * @return
      */
-    private List<Object[]> getHisData(String pointId, Date startTime, Date endTime) {
+    private List<Object[]> getHisData(String pointId, Date startTime, Date endTime, Integer prec) {
         List<Object[]> result = new ArrayList<>();
         if (StringUtils.isBlank(pointId)) {
             return result;
@@ -562,10 +604,17 @@
         if (CollectionUtils.isEmpty(valueDTOS)) {
             return result;
         }
+        int defaultPrec = 3;
         valueDTOS.forEach(item -> {
             Object[] values = new Object[2];
             values[0] = DateUtils.format(item.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
-            values[1] = new BigDecimal(item.getV()).setScale(3, BigDecimal.ROUND_HALF_UP);
+            if (prec != null && prec < 0) {
+                values[1] = item.getV();
+            } else if (prec != null && prec > 0) {
+                values[1] = new BigDecimal(item.getV()).setScale(prec, BigDecimal.ROUND_HALF_UP);
+            } else {
+                values[1] = new BigDecimal(item.getV()).setScale(defaultPrec, BigDecimal.ROUND_HALF_UP);
+            }
             result.add(values);
         });
         return result;
@@ -594,7 +643,36 @@
         valueDTOS.forEach(item -> {
             Object[] values = new Object[2];
             values[0] = DateUtils.format(item.getT(), timeFormat);
-            values[1] = new BigDecimal(item.getV()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            values[1] = new BigDecimal(item.getV()).setScale(3, BigDecimal.ROUND_HALF_UP);
+            result.add(values);
+        });
+        return result;
+    }
+
+    /**
+     * 获取真实值
+     *
+     * @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;
@@ -692,22 +770,32 @@
             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();
                 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;
     }
 
+    @Override
     public Map<String, BigDecimal> getPredictLastValue(PredictLastValueReqVO reqVO) {
         Map<String, BigDecimal> result = new HashMap<>(reqVO.getItemNos().size());
         if (CollectionUtils.isEmpty(reqVO.getItemNos())) {
@@ -722,13 +810,39 @@
             }
             MmItemOutputEntity outPut = mmItemOutputService.getByItemid(predictItem.getId(), itemNo[1], itemNo[2]);
             String outputId = outPut.getId();
-            // 如果第5个参数为1,则取累计值
-            if ("1".equals(itemNo[4])){
-                outputId = outPut.getId() + CommonDict.CUMULANT_SUFFIX;
+            // 判断是否有第五个参数,如果有第5个参数为1,则取累计值
+            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()));
+            }
+        }
+        return result;
+    }
+
+    @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()));
@@ -742,7 +856,7 @@
         if (StringUtils.isBlank(scheduleCode)) {
             return null;
         }
-        return stScheduleRecordService.getLastScheduleResult(scheduleCode,limit);
+        return stScheduleRecordService.getLastScheduleResult(scheduleCode, limit);
     }
 
     @Override
@@ -763,12 +877,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)) {
@@ -783,12 +897,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());
@@ -819,25 +933,60 @@
     }
 
     @Override
-    public List<StAdjustConfigDetDTO> getAdjustConfigListByModelId(String modelId) {
-        List<StAdjustConfigDetEntity> list = stAdjustConfigService.getDetByModelId(modelId);
-        return ConvertUtils.sourceToTarget(list, StAdjustConfigDetDTO.class);
+    public Boolean updateAlarmConfig(String alarmObj, String upperLimit, String lowerLimit) {
+        MmPredictAlarmConfigSaveReqVO reqVO = new MmPredictAlarmConfigSaveReqVO();
+        reqVO.setAlarmObj(alarmObj);
+        reqVO.setUpperLimit(BigDecimal.valueOf(Double.parseDouble(upperLimit)));
+        reqVO.setLowerLimit(BigDecimal.valueOf(Double.parseDouble(lowerLimit)));
+        mmPredictAlarmConfigService.updateByAlarmObj(reqVO);
+        return true;
     }
 
-    /**
-     * 计算功率因数 p²/(根号:p²+Q²)
-     **/
-    public Double calculateCos(Double PValue,Double QValue) {
-        // 绝对值
-        PValue = Math.abs(PValue);
-        QValue = Math.abs(QValue);
-        //PValue [0,0.001] 直接判断为关闭返回0
-        if (PValue >= 0 && PValue <= 0.001) {
-            return 0.0;
-        }else {
-            BigDecimal result = new BigDecimal(PValue).divide(BigDecimal.valueOf(Math.sqrt(Math.pow(PValue, 2) + Math.pow(QValue, 2))), 2, BigDecimal.ROUND_HALF_UP);
-            return result.doubleValue();
-        }
+    @Override
+    public Boolean updateChartParam(ChartDTO chartDTO) {
+        ChartDTO oldChartDTO = chartService.getChartByChartCode(chartDTO.getChartCode());
+        List<ChartParamDTO> chartParams = chartDTO.getChartParams();
+        chartParams.forEach(item -> {
+            item.setChartId(oldChartDTO.getId());
+        });
+        chartParamService.updateByChartIdAndParamCode(chartParams);
+        return true;
+    }
+
+    @Override
+    public MmItemOutputDTO getItemOutputByItemid(String itemid, String resultstr, String resultIndex) {
+        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());
+    }
+
+    @Override
+    public PredictItemVO getPredictItemByItemNo(String itemNo) {
+        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());
+    }
+
+    @Override
+    public Boolean useSuggest(StAlarmAndSuggestReqVO reqVO) {
+        return stScheduleSuggestService.useSuggest(reqVO);
+    }
+
+    @Override
+    public Boolean ignoreSuggest(StAlarmAndSuggestReqVO reqVO) {
+        return stScheduleSuggestService.ignoreSuggest(reqVO);
+    }
+
+    @Override
+    public List<ScheduleSuggestRespDTO> getLastSuggest(Map<String, Object> params) {
+        return stScheduleSuggestService.getLastSuggest(params);
     }
 
     private Date[] calResultTime(ItemVO predictItem, Date startTimeReq, Date endTimeReq, int lengthLeft, int lengthRight) {

--
Gitblit v1.9.3