潘志宝
2025-03-21 a2b4314c590248f3826764ac0ea63dcecc6fb20b
预测值模拟调整
已修改6个文件
69 ■■■■ 文件已修改
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StAdjustResultService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StAdjustResultServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/dto/SampleInfo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
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<>();
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();
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) {
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;
    }
    /**
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;
    // 所有测点信息,避免重复查询