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;