潘志宝
昨天 271fed395d4d3e4ab8cdb44ccf466859ba485e46
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictModuleHandler.java
@@ -4,6 +4,7 @@
import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
import com.iailab.module.model.mcs.pre.enums.ItemRunStatusEnum;
import com.iailab.module.model.mcs.pre.enums.ItemStatus;
import com.iailab.module.model.mcs.pre.enums.PredGranularityEnum;
import com.iailab.module.model.mcs.pre.service.MmItemStatusService;
import com.iailab.module.model.mdk.factory.PredictItemFactory;
import com.iailab.module.model.mdk.vo.ItemVO;
@@ -14,12 +15,7 @@
import org.springframework.util.CollectionUtils;
import java.text.MessageFormat;
import java.time.Duration;
import java.time.Instant;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * @author PanZhibao
@@ -61,6 +57,17 @@
            }
        }
        for (ItemVO predictItem : predictItemList) {
            // 根据item粒度处理预测时间
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(predictTime);
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            if (PredGranularityEnum.H1.getCode().equals(predictItem.getGranularity())) {
                calendar.set(Calendar.MINUTE,0);
            }else if (PredGranularityEnum.D1.getCode().equals(predictItem.getGranularity())) {
                calendar.set(Calendar.MINUTE,0);
                calendar.set(Calendar.HOUR_OF_DAY,0);
            }
            PredictResultVO predictResult;
            if (!predictItem.getStatus().equals(ItemStatus.STATUS1.getCode())) {
                continue;
@@ -68,12 +75,12 @@
            Long totalDur = 0L;
            ItemRunStatusEnum itemRunStatusEnum = ItemRunStatusEnum.PROCESSING;
            try {
                mmItemStatusService.recordStatus(predictItem.getId(), itemRunStatusEnum, totalDur, predictTime);
                mmItemStatusService.recordStatus(predictItem.getId(), itemRunStatusEnum, totalDur, calendar.getTime());
                PredictItemHandler predictItemHandler = predictItemFactory.create(predictItem.getId());
                long start = System.currentTimeMillis();
                try {
                    // 预测项开始预测
                    predictResult = predictItemHandler.predict(predictTime, predictItem, predictValueMap);
                    predictResult = predictItemHandler.predict(calendar.getTime(), predictItem, predictValueMap);
                } catch (ModelResultErrorException e) {
                    itemRunStatusEnum = ItemRunStatusEnum.MODELRESULTERROR;
                    continue;
@@ -109,7 +116,7 @@
                log.error(MessageFormat.format("预测项编号:{0},预测项名称:{1},预测失败:{2} 预测时刻:{3}",
                        predictItem.getId(), predictItem.getItemName(), e.getMessage(), predictTime));
            } finally {
                mmItemStatusService.recordStatus(predictItem.getId(), itemRunStatusEnum, totalDur, predictTime);
                mmItemStatusService.recordStatus(predictItem.getId(), itemRunStatusEnum, totalDur, calendar.getTime());
            }
        }
    }