From 4c1658f05f5be04b135920366ad4c417fad0c491 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期四, 10 四月 2025 09:48:36 +0800 Subject: [PATCH] 增加真实值为空判断 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java | 70 +++++++++++++++++++++++++++-------- 1 files changed, 54 insertions(+), 16 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 f480fbe..bf0c67d 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; @@ -215,7 +216,7 @@ 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.setCurData(mmItemResultJsonService.getData(output.getId(), predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); @@ -271,7 +272,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,13 +331,13 @@ 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)); //处理预测累计 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)); } @@ -401,12 +402,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,10 +429,6 @@ 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)); - break; - case CL: dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), predictTime, endTime, timeFormat)); dataView.setPreDataL(mmItemResultLastPointService.getData(outPut.getId(), startTime, endTime, timeFormat)); break; @@ -565,9 +575,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; @@ -581,10 +592,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; @@ -711,7 +729,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(); @@ -866,8 +893,9 @@ } @Override - public List<Object[]> getItemResult(String outputid, Date startTime, Date endTime, String timeFormat) { - return mmItemResultService.getData(outputid,startTime,endTime,timeFormat); + public List<Object[]> getItemResult(PreItemResultReqVO reqVO) { + + return mmItemResultService.getData(reqVO.getOutputid(),reqVO.getStartTime(),reqVO.getEndTime(),reqVO.getTimeFormat()); } @Override @@ -876,8 +904,18 @@ } @Override - public List<Object[]> getItemResultLastPoint(String outputid, Date startTime, Date endTime, String timeFormat) { - return mmItemResultLastPointService.getData(outputid,startTime,endTime,timeFormat); + 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 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