Jay
5 天以前 eca625c35d5ed64c98277d2f83963e46438f50ce
执行调度模型新增可以传入模型参数
已修改6个文件
28 ■■■■■ 文件已修改
iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleReqDTO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/ScheduleModelHandler.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mdk/dto/MdkScheduleReqDTO.java
@@ -6,7 +6,7 @@
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.Map;
import java.util.HashMap;
/**
 * @author PanZhibao
@@ -25,4 +25,7 @@
    @NotNull(message="调度方案时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date scheduleTime;
    @Schema(description = "模型参数")
    private HashMap<String, Object> params;
}
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/MdkApiImpl.java
@@ -8,7 +8,6 @@
import com.iailab.module.model.api.mdk.dto.*;
import com.iailab.module.model.common.enums.IsWriteEnum;
import com.iailab.module.model.common.enums.ModelOutResultType;
import com.iailab.module.model.common.enums.OutResultType;
import com.iailab.module.model.mcs.pre.entity.DmModuleEntity;
import com.iailab.module.model.mcs.pre.service.DmModuleService;
import com.iailab.module.model.mcs.pre.service.MmPredictItemService;
@@ -30,8 +29,6 @@
import java.util.*;
import java.util.stream.Collectors;
import static com.iailab.module.model.common.enums.ModelOutResultType.D;
/**
 * @author PanZhibao
@@ -216,7 +213,7 @@
        resp.setScheduleTime(reqDTO.getScheduleTime());
        try {
            log.info("调度计算开始: " + System.currentTimeMillis());
            ScheduleResultVO scheduleResult = scheduleModelHandler.doSchedule(reqDTO.getScheduleCode(), reqDTO.getScheduleTime());
            ScheduleResultVO scheduleResult = scheduleModelHandler.doSchedule(reqDTO.getScheduleCode(), reqDTO.getScheduleTime(), reqDTO.getParams());
            resp.setStatusCode(scheduleResult.getResultCode());
            resp.setResult(scheduleResult.getResult());
            stScheduleRecordService.create(scheduleResult);
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleConstructor.java
@@ -29,7 +29,7 @@
        try {
            SampleInfoConstructor sampleInfoConstructor = sampleFactory.createSampleInfo(typeA, modelId);
            SampleInfo sampleInfo = sampleInfoConstructor.prepareSampleInfo(modelId, runTime);
            SampleDataConstructor sampleDataConstructor = sampleFactory.createSampelData(typeA);
            SampleDataConstructor sampleDataConstructor = sampleFactory.createSampleData(typeA);
            return sampleDataConstructor.prepareSampleData(sampleInfo);
        } catch (Exception e) {
            e.printStackTrace();
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleFactory.java
@@ -36,7 +36,7 @@
        return sampleInfoConstructor;
    }
    public SampleDataConstructor createSampelData(String typeA) {
    public SampleDataConstructor createSampleData(String typeA) {
        SampleDataConstructor sampleDataConstructor = null;
        if (typeA.compareTo(TypeA.Predict.name()) == 0) {
            sampleDataConstructor = predictSampleDataConstructor;
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/ScheduleModelHandler.java
@@ -4,6 +4,7 @@
import com.iailab.module.model.mdk.vo.ScheduleResultVO;
import java.util.Date;
import java.util.HashMap;
/**
 * @author PanZhibao
@@ -12,5 +13,5 @@
 */
public interface ScheduleModelHandler {
    ScheduleResultVO doSchedule(String schemeCode, Date scheduleTime) throws ModelInvokeException;
    ScheduleResultVO doSchedule(String schemeCode, Date scheduleTime, HashMap<String, Object> params) throws ModelInvokeException;
}
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java
@@ -28,6 +28,7 @@
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author PanZhibao
@@ -51,7 +52,7 @@
    private SampleConstructor sampleConstructor;
    @Override
    public ScheduleResultVO doSchedule(String schemeCode, Date scheduleTime) throws ModelInvokeException {
    public ScheduleResultVO doSchedule(String schemeCode, Date scheduleTime, HashMap<String, Object> params) throws ModelInvokeException {
        ScheduleResultVO scheduleResult = new ScheduleResultVO();
        StScheduleSchemeEntity scheduleScheme = stScheduleSchemeService.getByCode(schemeCode);
        StScheduleModelEntity scheduleModel = stScheduleModelService.get(scheduleScheme.getModelId());
@@ -76,6 +77,14 @@
                log.error("模型setting不存在,modelId=" + modelId);
                return null;
            }
            //如果输入参数中包含setting,则覆盖默认的setting
            if (!params.isEmpty()){
                for (Map.Entry<String, Object> entry : params.entrySet()){
                    if (settings.containsKey(entry.getKey())){
                        settings.put(entry.getKey(), entry.getValue());
                    }
                }
            }
            // 校验setting必须有pyFile,否则可能导致程序崩溃
            if (!settings.containsKey(MdkConstant.PY_FILE_KEY)) {
                log.error("模型设置参数缺少必要信息【" + MdkConstant.PY_FILE_KEY +  "】,请重新上传模型!");