From 07890ec0dcb75572740f25a29c80f6d7bddb39e0 Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期四, 19 十二月 2024 15:45:46 +0800 Subject: [PATCH] 模型运行测点数据获取方式修改 merge预测模型数据获取方式修改 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java | 94 ++++++++++++++++++++++++----------------------- 1 files changed, 48 insertions(+), 46 deletions(-) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java index ef85630..e9385d7 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/impl/PredictItemMergeHandlerImpl.java @@ -21,6 +21,7 @@ import java.sql.Timestamp; import java.util.*; +import java.util.stream.Collectors; /** * @author PanZhibao @@ -58,7 +59,7 @@ * @throws ItemInvokeException */ @Override - public PredictResultVO predict(Date predictTime, ItemVO predictItemDto) + public PredictResultVO predict(Date predictTime, ItemVO predictItemDto,Map<String, double[]> predictValueMap) throws ItemInvokeException { PredictResultVO predictResult = new PredictResultVO(); ItemPredictStatus itemStatus = ItemPredictStatus.PREDICTING; @@ -67,7 +68,6 @@ String expression = itemEntityFactory.getMergeItem(itemId).getExpression(); int predictLength = itemEntityFactory.getItemById(itemId).getPredictLength(); double[][] predictResultMat = new double[predictLength][1]; - Map<String, List<DataValueVO>> predictValueMap = new HashMap<>(); String[] mathOutPutId = expression.split("[\\+ \\-]"); ArrayList<Character> operator = new ArrayList<>(); for (int i = 0; i < expression.length(); i++) { @@ -75,63 +75,65 @@ operator.add(expression.charAt(i)); } } - String[] compositionItem = expression.split(String.valueOf("&".toCharArray())); +// String[] compositionItem = expression.split(String.valueOf("&".toCharArray())); //是否为计算预测项 if (mathOutPutId.length > 1) { - for (String outPutId : mathOutPutId) { - if (outPutId.length() > 4) { - Date endTime = predictTime; -// ItemVO itemEntity = itemEntityFactory.getItemByItemNo(itemNo); -// List<MmItemOutputEntity> outPutList = itemEntityFactory.getOutPutByItemId(itemEntity.getId()); - MmItemOutputEntity outPut = mmItemOutputService.getOutPutById(outPutId); - ApiPointDTO pointEntity = dataPointApi.getInfoById(outPut.getPointid()); +// Map<String, List<DataValueVO>> predictValueMap = new HashMap<>(); +// for (String outPutId : mathOutPutId) { +// if (outPutId.length() > 4) { +// Date endTime = predictTime; +//// ItemVO itemEntity = itemEntityFactory.getItemByItemNo(itemNo); +//// List<MmItemOutputEntity> outPutList = itemEntityFactory.getOutPutByItemId(itemEntity.getId()); +// MmItemOutputEntity outPut = mmItemOutputService.getOutPutById(outPutId); +// ApiPointDTO pointEntity = dataPointApi.getInfoById(outPut.getPointid()); +// +// Calendar calendar = Calendar.getInstance(); +// calendar.setTime(endTime); +// calendar.add(Calendar.SECOND, (predictLength - 1) * DataPointFreqEnum.getEumByCode(pointEntity.getMinfreqid()).getValue()); +// endTime = new Timestamp(calendar.getTime().getTime()); +//// List<DataValueVO> predictValueList = predictResultHandler.getPredictValueByItemNo(itemNo, predictTime, endTime); +// List<DataValueVO> predictValueList = mmItemResultService.getPredictValue(outPutId, predictTime, endTime); +// if (predictValueList.size() != predictLength) { +// log.debug("merge项融合失败:缺少子项预测数据,对应子项outPutId=" + outPutId); +// return null; +// } +// predictValueMap.put(outPutId, predictValueList); +// } +// } - Calendar calendar = Calendar.getInstance(); - calendar.setTime(endTime); - calendar.add(Calendar.SECOND, (predictLength - 1) * DataPointFreqEnum.getEumByCode(pointEntity.getMinfreqid()).getValue()); - endTime = new Timestamp(calendar.getTime().getTime()); -// List<DataValueVO> predictValueList = predictResultHandler.getPredictValueByItemNo(itemNo, predictTime, endTime); - List<DataValueVO> predictValueList = mmItemResultService.getPredictValue(outPutId, predictTime, endTime); - if (predictValueList.size() != predictLength) { - log.debug("merge项融合失败:缺少子项预测数据,对应子项outPutId=" + outPutId); - return null; - } - predictValueMap.put(outPutId, predictValueList); - } - } for (Integer i = 0; i < predictLength; i++) { double sum =0.0; - sum = predictValueMap.get(mathOutPutId[0]).get(i).getDataValue(); + sum = predictValueMap.get(mathOutPutId[0])[i]; for (int j = 1; j < mathOutPutId.length; j++) { if (operator.get(j-1)=='+') - {sum += predictValueMap.get(mathOutPutId[j]).get(i).getDataValue();} + {sum += predictValueMap.get(mathOutPutId[j])[i];} if (operator.get(j-1)=='-') - {sum -= predictValueMap.get(mathOutPutId[j]).get(i).getDataValue();} + {sum -= predictValueMap.get(mathOutPutId[j])[i];} } predictResultMat[i][0] = sum; } } //是否为组合预测项 - if (compositionItem.length > 1) { - Map<String, PredictResultVO> predictResultMap = new HashMap<>(); - Integer columnTotalNumber = 0; - Integer rowNumber = 0; - for (String itemNo : compositionItem) { - PredictItemHandler predictItem = (PredictItemHandler) predictItemFactory.create(itemEntityFactory. - getItemByItemNo(itemNo).getId()); - predictResult = predictItem.predict(predictTime, predictItemDto); - columnTotalNumber += Integer.valueOf(predictResult.getPredictMatrix().length); - predictResultMap.put(itemNo, predictItem.predict(predictTime, predictItemDto)); - } - double[][] matrix = new double[columnTotalNumber][1]; - for (String itemNo : compositionItem) { - for (Integer i = 0; i < predictResultMap.get(itemNo).getPredictMatrix().length; i++) { - matrix[rowNumber][0] = predictResultMap.get(itemNo).getPredictMatrix()[i][0]; - rowNumber++; - } - } - predictResult.setPredictMatrix(matrix); - } +// if (compositionItem.length > 1) { +// Map<String, PredictResultVO> predictResultMap = new HashMap<>(); +// Integer columnTotalNumber = 0; +// Integer rowNumber = 0; +// for (String itemNo : compositionItem) { +// PredictItemHandler predictItem = (PredictItemHandler) predictItemFactory.create(itemEntityFactory. +// getItemByItemNo(itemNo).getId()); +// predictResult = predictItem.predict(predictTime, predictItemDto); +// columnTotalNumber += Integer.valueOf(predictResult.getPredictMatrix().length); +// predictResultMap.put(itemNo, predictItem.predict(predictTime, predictItemDto)); +// } +// double[][] matrix = new double[columnTotalNumber][1]; +// for (String itemNo : compositionItem) { +// for (Integer i = 0; i < predictResultMap.get(itemNo).getPredictMatrix().length; i++) { +// matrix[rowNumber][0] = predictResultMap.get(itemNo).getPredictMatrix()[i][0]; +// rowNumber++; +// } +// } +// predictResult.setPredictMatrix(matrix); +// } predictResult.setPredictId(itemId); predictResult.setPredictMatrix(predictResultMat); predictResult.setPredictTime(predictTime); -- Gitblit v1.9.3