From f93760ef25c2a15259b567c87db1f4900b0a42c2 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期二, 04 三月 2025 10:07:51 +0800 Subject: [PATCH] 打印异常 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java | 86 +++++++++++++++++++++++++++++++------------ 1 files changed, 62 insertions(+), 24 deletions(-) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java index 391be24..4be15a7 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java @@ -1,24 +1,23 @@ package com.iailab.module.model.mdk.predict; +import com.alibaba.fastjson.JSONArray; +import com.iailab.module.model.common.exception.ModelResultErrorException; import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity; import com.iailab.module.model.mcs.pre.enums.ItemRunStatusEnum; import com.iailab.module.model.mcs.pre.enums.ItemStatus; +import com.iailab.module.model.mcs.pre.enums.PredGranularityEnum; import com.iailab.module.model.mcs.pre.service.MmItemStatusService; import com.iailab.module.model.mdk.factory.PredictItemFactory; import com.iailab.module.model.mdk.vo.ItemVO; import com.iailab.module.model.mdk.vo.PredictResultVO; +import com.iailab.module.model.mdk.vo.StAdjustDeviationDTO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import java.text.MessageFormat; -import java.time.Duration; -import java.time.Instant; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author PanZhibao @@ -48,61 +47,100 @@ * @param intervalTime * @return */ - public void predict(List<ItemVO> predictItemList, Date predictTime, int intervalTime,Map<String, PredictResultVO> predictResultMap) { - PredictResultVO predictResult; + public void predict(List<ItemVO> predictItemList, Date predictTime, int intervalTime, Map<String, PredictResultVO> predictResultMap) { Map<String, double[]> predictValueMap = null; if (!CollectionUtils.isEmpty(predictResultMap)) { // 将predictResultMap处理成Map<outPutId, double[]> predictValueMap = new HashMap<>(); for (Map.Entry<String, PredictResultVO> entry : predictResultMap.entrySet()) { for (Map.Entry<MmItemOutputEntity, double[]> mmItemOutputEntityEntry : entry.getValue().getPredictMatrixs().entrySet()) { - predictValueMap.put(mmItemOutputEntityEntry.getKey().getId(),mmItemOutputEntityEntry.getValue()); + predictValueMap.put(mmItemOutputEntityEntry.getKey().getId(), mmItemOutputEntityEntry.getValue()); } } } for (ItemVO predictItem : predictItemList) { + // 根据item粒度处理预测时间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(predictTime); + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.SECOND, 0); + if (PredGranularityEnum.H1.getCode().equals(predictItem.getGranularity())) { + calendar.set(Calendar.MINUTE, 0); + } else if (PredGranularityEnum.D1.getCode().equals(predictItem.getGranularity())) { + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + } + PredictResultVO predictResult; if (!predictItem.getStatus().equals(ItemStatus.STATUS1.getCode())) { continue; } Long totalDur = 0L; + ItemRunStatusEnum itemRunStatusEnum = ItemRunStatusEnum.PROCESSING; try { - mmItemStatusService.recordStatus(predictItem.getId(), ItemRunStatusEnum.PROCESSING, totalDur, predictTime); + mmItemStatusService.recordStatus(predictItem.getId(), itemRunStatusEnum, totalDur, calendar.getTime()); PredictItemHandler predictItemHandler = predictItemFactory.create(predictItem.getId()); long start = System.currentTimeMillis(); try { // 预测项开始预测 - predictResult = predictItemHandler.predict(predictTime, predictItem, predictValueMap); + predictResult = predictItemHandler.predict(calendar.getTime(), predictItem, predictValueMap); + } catch (ModelResultErrorException e) { + itemRunStatusEnum = ItemRunStatusEnum.MODELRESULTERROR; + continue; } catch (Exception e) { -// e.printStackTrace(); -// log.error(String.valueOf(e)); - mmItemStatusService.recordStatus(predictItem.getId(), ItemRunStatusEnum.FAIL, totalDur, predictTime); + itemRunStatusEnum = ItemRunStatusEnum.FAIL; continue; } long end = System.currentTimeMillis(); Long drtPre = end - start; log.info(MessageFormat.format("预测项:{0},预测时间:{1}ms", predictItem.getItemName(), drtPre)); totalDur = totalDur + drtPre; - predictResult.setGranularity(predictItem.getGranularity()); predictResult.setT(intervalTime); predictResult.setSaveIndex(predictItem.getSaveIndex()); predictResult.setLt(1); + predictResultMap.put(predictItem.getItemNo(), predictResult); // 保存预测结果 - predictResultHandler.savePredictResult(predictResult); - long endSave = System.currentTimeMillis(); - Long drtSave = endSave - end; - log.info(MessageFormat.format("预测项:{0},保存时间:{1}ms", predictItem.getItemName(), - drtSave)); - totalDur = totalDur + drtSave; - mmItemStatusService.recordStatus(predictItem.getId(), ItemRunStatusEnum.SUCCESS, totalDur, predictTime); - predictResultMap.put(predictItem.getItemNo(), predictResult); + try { + predictResultHandler.savePredictResult(predictResult); + } catch (Exception e) { + e.printStackTrace(); + itemRunStatusEnum = ItemRunStatusEnum.MODELRESULTSAVEERROR; + throw new RuntimeException("模型结果保存异常,result:" + predictResult); + } + itemRunStatusEnum = ItemRunStatusEnum.SUCCESS; } catch (Exception e) { e.printStackTrace(); log.error(MessageFormat.format("预测项编号:{0},预测项名称:{1},预测失败:{2} 预测时刻:{3}", predictItem.getId(), predictItem.getItemName(), e.getMessage(), predictTime)); - mmItemStatusService.recordStatus(predictItem.getId(), ItemRunStatusEnum.FAIL, totalDur, predictTime); + } finally { + mmItemStatusService.recordStatus(predictItem.getId(), itemRunStatusEnum, totalDur, calendar.getTime()); } } } + + public void predictAdjust(ItemVO predictItem, Date predictTime, List<StAdjustDeviationDTO> deviationList, String scheduleModelId) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(predictTime); + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.SECOND, 0); + if (PredGranularityEnum.H1.getCode().equals(predictItem.getGranularity())) { + calendar.set(Calendar.MINUTE, 0); + } else if (PredGranularityEnum.D1.getCode().equals(predictItem.getGranularity())) { + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + } + + try { + PredictItemHandler predictItemHandler = predictItemFactory.create(predictItem.getId()); + PredictResultVO predictResult = predictItemHandler.predictAdjust(calendar.getTime(), predictItem, deviationList); + + // 保存预测结果 + predictResultHandler.savePredictAdjustResult(predictResult, JSONArray.toJSONString(deviationList), scheduleModelId); + } catch (Exception e) { + e.printStackTrace(); + log.error(MessageFormat.format("预测项编号:{0},预测项名称:{1},预测失败:{2} 预测时刻:{3}", + predictItem.getId(), predictItem.getItemName(), e.getMessage(), predictTime)); + } + } } \ No newline at end of file -- Gitblit v1.9.3