考虑指标精度和转换系数
如果参数粒度小于天,则从下个粒度开始取,因为存预测数据的时候就是这么存的
已修改2个文件
27 ■■■■■ 文件已修改
iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/IndItemCollector.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/IndItemCollector.java
@@ -8,9 +8,13 @@
import com.iailab.module.data.ind.item.service.IndItemService;
import com.iailab.module.data.ind.item.vo.IndItemValueVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -56,6 +60,22 @@
            default:
                break;
        }
        // 考虑指标精度和转换系数
        if (!CollectionUtils.isEmpty(result)) {
            result.forEach(e -> {
                Object dataValue = e.getDataValue();
                if (dataValue instanceof Number) {
                    BigDecimal value = new BigDecimal(dataValue.toString());
                    if (indItem.getPrecision() != null) {
                        value = new BigDecimal(dataValue.toString()).setScale(indItem.getPrecision(), BigDecimal.ROUND_HALF_UP);
                    }
                    if (StringUtils.isNotBlank(indItem.getCoefficient())) {
                        value = value.multiply(new BigDecimal(indItem.getCoefficient()));
                    }
                    e.setDataValue(value.doubleValue());
                }
            });
        }
        return result;
    }
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java
@@ -5,6 +5,7 @@
import com.iailab.module.data.api.point.dto.ApiPointDTO;
import com.iailab.module.data.enums.DataPointFreqEnum;
import com.iailab.module.data.enums.TimeGranularitySecEnum;
import com.iailab.module.model.mcs.pre.enums.PredGranularityEnum;
import com.iailab.module.model.mcs.pre.service.MmPredictItemService;
import com.iailab.module.model.mdk.common.enums.ModelParamType;
import com.iailab.module.model.mdk.sample.dto.ColumnItem;
@@ -90,7 +91,8 @@
                break;
            case NORMALITEM:
            case MERGEITEM:
                dateTime = calculateTime(originalTime, false, 1, columnItem.getGranularity());
                // 如果参数粒度小于天,则从下个粒度开始取,因为存预测数据的时候就是这么存的
                dateTime = calculateTime(originalTime, false, columnItem.getGranularity() < PredGranularityEnum.D1.getCode() ? 1 : 0, columnItem.getGranularity());
                break;
            default:
                break;
@@ -123,7 +125,8 @@
                break;
            case NORMALITEM:
            case MERGEITEM:
                dateTime = calculateTime(originalTime, false, columnItem.getDataLength() + 1, columnItem.getGranularity());
                // 如果参数粒度小于天,则从下个粒度开始取,因为存预测数据的时候就是这么存的
                dateTime = calculateTime(originalTime, false, columnItem.getGranularity() < PredGranularityEnum.D1.getCode() ? columnItem.getDataLength() + 1 : columnItem.getDataLength(), columnItem.getGranularity());
                break;
            default:
                break;