From a2b4314c590248f3826764ac0ea63dcecc6fb20b Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期五, 21 三月 2025 09:16:51 +0800 Subject: [PATCH] 预测值模拟调整 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java | 26 +++++++++++++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java | 2 + iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java | 1 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java | 27 +++++++------ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java | 5 ++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java | 8 +-- 6 files changed, 51 insertions(+), 18 deletions(-) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java index 659f4da..194133c 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java @@ -24,6 +24,8 @@ double[] getSimpleData(String outputId, Date predictTime, int predictLength); + List<DataValueVO> getPredictValue(String outputId, Date predictTime); + List<Object[]> getData(String outputId, Date predictTime, String timeFormat); StAdjustResultRespVO getInfo(String id); diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java index 5e690a2..7d90b48 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java @@ -75,6 +75,32 @@ } @Override + public List<DataValueVO> getPredictValue(String outputId, Date predictTime) { + List<DataValueVO> result = new ArrayList<>(); + QueryWrapper<StAdjustResultEntity> wrapper = new QueryWrapper<>(); + wrapper.eq("output_id", outputId) + .eq("adjust_time", DateUtils.format(predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); + StAdjustResultEntity data = baseDao.selectOne(wrapper); + if (data == null || StringUtils.isBlank(data.getJsonValue())) { + return result; + } + List<Double> valueList = JSONArray.parseArray(data.getJsonValue(), Double.class); + if (CollectionUtils.isEmpty(valueList)) { + return result; + } + Calendar calendar = Calendar.getInstance(); + calendar.setTime(predictTime); + for (int i = 1; i < valueList.size() + 1; i++) { + calendar.add(Calendar.MINUTE, i); + DataValueVO vo = new DataValueVO(); + vo.setDataValue(valueList.get(i - 1)); + vo.setDataTime(calendar.getTime()); + result.add(vo); + } + return result; + } + + @Override public List<Object[]> getData(String outputId, Date predictTime, String timeFormat) { List<Object[]> result = new ArrayList<>(); QueryWrapper<StAdjustResultEntity> wrapper = new QueryWrapper<>(); diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java index f5d23e7..c306fc4 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java @@ -14,10 +14,8 @@ import com.iailab.module.data.common.ApiDataQueryDTO; import com.iailab.module.data.common.ApiDataValueDTO; import com.iailab.module.model.common.utils.ASCIIUtil; -import com.iailab.module.model.mcs.pre.service.MmItemOutputService; -import com.iailab.module.model.mcs.pre.service.MmItemResultJsonService; import com.iailab.module.model.mcs.pre.service.MmItemResultService; -import com.iailab.module.model.mcs.pre.service.MmItemTypeService; +import com.iailab.module.model.mcs.sche.service.StAdjustResultService; import com.iailab.module.model.mdk.common.enums.ModelParamType; import com.iailab.module.model.mdk.sample.dto.ColumnItem; import com.iailab.module.model.mdk.sample.dto.ColumnItemPort; @@ -57,13 +55,7 @@ private MmItemResultService mmItemResultService; @Autowired - private MmItemResultJsonService mmItemResultJsonService; - - @Autowired - private MmItemTypeService mmItemTypeService; - - @Autowired - private MmItemOutputService mmItemOutputService; + private StAdjustResultService stAdjustResultService; /** * alter by zfc 2020.11.24 修改数据样本构造方案:sampleInfo中数据已按爪子进行分类,但爪内数据为无序的, @@ -134,7 +126,7 @@ //对每一项依次进行数据查询,然后将查询出的值赋给matrix对应的位置 for (int i = 0; i < entry.getColumnItemList().size(); i++) { try { - List<DataValueVO> dataEntityList = getData(entry.getColumnItemList().get(i), pointMap, planMap, indMap); + List<DataValueVO> dataEntityList = getData(sampleInfo, entry.getColumnItemList().get(i), pointMap, planMap, indMap); //补全数据 ColumnItem columnItem = entry.getColumnItemList().get(i); @@ -173,6 +165,7 @@ /** * getData * + * @param sampleInfo * @param columnItem * @param pointMap * @param planMap @@ -180,7 +173,8 @@ * @return * @throws Exception */ - private List<DataValueVO> getData(ColumnItem columnItem, Map<String, ApiPointDTO> pointMap, Map<String, ApiPlanItemDTO> planMap, Map<String, ApiIndItemDTO> indMap) throws Exception { + private List<DataValueVO> getData(SampleInfo sampleInfo, ColumnItem columnItem, Map<String, ApiPointDTO> pointMap, Map<String, ApiPlanItemDTO> planMap, + Map<String, ApiIndItemDTO> indMap) throws Exception { List<DataValueVO> dataList = new ArrayList<>(); String paramType = columnItem.getParamType(); switch (ModelParamType.getEumByCode(paramType)) { @@ -202,11 +196,18 @@ break; case NORMALITEM: case MERGEITEM: - List<DataValueVO> predictValue = mmItemResultService.getPredictValue(columnItem.getParamId(), columnItem.getStartTime(), columnItem.getEndTime()); + List<DataValueVO> predictValue = new ArrayList<>(); + if (sampleInfo.getIsAdjust()) { + // 模拟调整数据查询 + predictValue = stAdjustResultService.getPredictValue(columnItem.getParamId(), sampleInfo.getPredictTime()); + } else { + predictValue = mmItemResultService.getPredictValue(columnItem.getParamId(), columnItem.getStartTime(), columnItem.getEndTime()); + } if (CollectionUtils.isEmpty(predictValue)) { break; } dataList = predictValue; + break; case PLAN: ApiDataQueryDTO queryPlanItemDto = new ApiDataQueryDTO(); diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java index d2c8240..95a8c7b 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java @@ -50,6 +50,7 @@ SampleInfoConstructor sampleInfoConstructor = sampleFactory.createSampleInfo(typeA, modelId); SampleInfo sampleInfo = sampleInfoConstructor.prepareSampleInfo(modelId, runTime, dynamicDataLength); sampleInfo.setDeviation(deviationList); + sampleInfo.setIsAdjust(true); SampleDataConstructor sampleDataConstructor = sampleFactory.createSampleData(typeA); return sampleDataConstructor.prepareSampleData(sampleInfo); } catch (Exception e) { diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java index 75f2d1a..af4ae5b 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java @@ -1,6 +1,5 @@ package com.iailab.module.model.mdk.sample; -import com.iailab.module.data.api.ind.IndItemApi; import com.iailab.module.data.api.ind.dto.ApiIndItemDTO; import com.iailab.module.data.api.plan.dto.ApiPlanItemDTO; import com.iailab.module.data.api.point.dto.ApiPointDTO; @@ -25,9 +24,6 @@ abstract class SampleInfoConstructor { @Autowired - private IndItemApi indItemApi; - - @Autowired private MmPredictItemService mmPredictItemService; /** @@ -39,7 +35,9 @@ */ protected SampleInfo prepareSampleInfo(String modelId, Date predictTime, Map<Integer, Integer> dynamicDataLength) { //样本的列信息 - return getColumnInfo(modelId, predictTime, dynamicDataLength); + SampleInfo sampleInfo = getColumnInfo(modelId, predictTime, dynamicDataLength); + sampleInfo.setPredictTime(predictTime); + return sampleInfo; } /** diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java index 7d4b804..6b9f3c9 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java @@ -12,6 +12,7 @@ import java.math.BigDecimal; import java.sql.Timestamp; +import java.util.Date; import java.util.List; import java.util.Map; @@ -27,6 +28,8 @@ private Integer sampleColumn; + private Date predictTime; + private Timestamp startTime; private Timestamp endTime; @@ -35,6 +38,8 @@ private Integer sampleCycle; + private Boolean isAdjust = false; + // 调整值 private List<StAdjustDeviationDTO> deviation; // 所有测点信息,避免重复查询 -- Gitblit v1.9.3