| | |
| | | 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; |
| | |
| | | private StScheduleModelSettingService stScheduleModelSettingService; |
| | | |
| | | @Autowired |
| | | private StAdjustConfigService stAdjustConfigService; |
| | | private MmPredictAutoAdjustConfigService autoAdjustService; |
| | | private int HOUR_MINS = 60; |
| | | |
| | | @Override |
| | |
| | | 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)); |
| | |
| | | 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]; |
| | |
| | | } else { |
| | | dataView.setRealData(new ArrayList<>()); |
| | | } |
| | | dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat, 3)); |
| | | |
| | | Map<String, Object> realDataMap = new HashMap<>(); |
| | | dataView.getRealData().forEach(item -> { |
| | | realDataMap.put(item[0].toString(), item[1]); |
| | | }); |
| | | Object curReal = realDataMap.get(DateUtils.format(predictTime, timeFormat)) == null ? dataView.getPreDataL().get(dataView.getPreDataL().size() - 1) : realDataMap.get(DateUtils.format(predictTime, timeFormat)); |
| | | |
| | | // 当前值T0 + 当前预测值 20250409 |
| | | dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat, 3, true, curReal)); |
| | | // 调整预测值 |
| | | dataView.setAdjData(stAdjustResultService.getData(outPut.getId(),predictTime,timeFormat)); |
| | | dataView.setLineType(lineType.getCode()); |
| | |
| | | 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; |
| | |
| | | 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(); |
| | |
| | | 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(); |