package com.iailab.module.model.mdk.predict.impl;
|
|
import com.iailab.framework.common.util.collection.CollectionUtils;
|
import com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity;
|
import com.iailab.module.model.mcs.pre.service.MmPredictModelService;
|
import com.iailab.module.model.mdk.common.enums.ItemPredictStatus;
|
import com.iailab.module.model.mdk.common.exceptions.ItemInvokeException;
|
import com.iailab.module.model.mdk.common.exceptions.ModelInvokeException;
|
import com.iailab.module.model.mdk.predict.PredictItemHandler;
|
import com.iailab.module.model.mdk.predict.PredictModelHandler;
|
import com.iailab.module.model.mdk.vo.ItemVO;
|
import com.iailab.module.model.mdk.vo.PredictResultVO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.sql.Timestamp;
|
import java.text.MessageFormat;
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author PanZhibao
|
* @Description
|
* @createTime 2024年09月01日
|
*/
|
@Component
|
public class PredictItemNormalHandlerImpl implements PredictItemHandler {
|
|
@Autowired
|
private MmPredictModelService mmPredictModelService;
|
|
@Autowired
|
private PredictModelHandler predictModelHandler;
|
|
@Override
|
public PredictResultVO predict(Date predictTime, ItemVO predictItemDto)
|
throws ItemInvokeException{
|
String itemId = predictItemDto.getId();
|
ItemPredictStatus itemStatus = ItemPredictStatus.PREDICTING;
|
PredictResultVO finalResult = new PredictResultVO();
|
PredictResultVO predictResult = new PredictResultVO();
|
List<PredictResultVO> predictResultList = new ArrayList<>();
|
try {
|
// 获取预测项模型
|
List<MmPredictModelEntity> predictModelList = mmPredictModelService.getActiveModelByItemId(itemId);
|
if (CollectionUtils.isAnyEmpty(predictModelList)) {
|
throw new ModelInvokeException(MessageFormat.format("{0},itemId={1}",
|
ModelInvokeException.errorGetModelEntity, itemId));
|
}
|
for (MmPredictModelEntity predictModel : predictModelList) {
|
predictResult = predictModelHandler.predictByModel(predictTime, predictModel);
|
predictResult.setPredictId(itemId);
|
predictResultList.add(predictResult);
|
}
|
itemStatus = ItemPredictStatus.SUCCESS;
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(predictTime);
|
calendar.add(Calendar.MINUTE, predictResult.getPredictMatrix().length - 1);
|
Timestamp endTime = new Timestamp(calendar.getTime().getTime());
|
finalResult = predictResultList.get(0);
|
|
} catch (Exception ex) {
|
ex.printStackTrace();
|
//预测项预测失败的状态
|
itemStatus = ItemPredictStatus.FAILED;
|
throw new ItemInvokeException(MessageFormat.format("{0},itemId={1}",
|
ItemInvokeException.errorItemFailed, itemId));
|
}
|
|
return finalResult;
|
}
|
}
|