From eca625c35d5ed64c98277d2f83963e46438f50ce Mon Sep 17 00:00:00 2001
From: Jay <csj123456>
Date: 星期五, 03 一月 2025 09:57:50 +0800
Subject: [PATCH] 执行调度模型新增可以传入模型参数

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java |   32 +++++++++++++++++++-------------
 1 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java
index 104d7d1..52b5f90 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/schedule/impl/ScheduleModelHandlerImpl.java
+++ b/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 +  "】,请重新上传模型!");
@@ -89,29 +98,26 @@
             param2Values[portLength] = settings;
 
             log.info("#######################调度模型 " + scheduleModel.getModelName() + " ##########################");
-//            JSONObject jsonObjNewModelBean = new JSONObject();
-//            jsonObjNewModelBean.put("newModelBean", newModelBean);
-//            log.info(String.valueOf(jsonObjNewModelBean));
-//            JSONObject jsonObjParam2Values = new JSONObject();
-//            jsonObjParam2Values.put("param2Values", param2Values);
             log.info("参数: " + JSON.toJSONString(param2Values));
-
             //IAILMDK.run
             HashMap<String, Object> modelResult = DllUtils.run(newModelBean, param2Values, scheduleScheme.getMpkprojectid());
-            if (!modelResult.containsKey(CommonConstant.MDK_STATUS_CODE) || !modelResult.containsKey(CommonConstant.MDK_RESULT) ||
-                    !modelResult.get(CommonConstant.MDK_STATUS_CODE).toString().equals(CommonConstant.MDK_STATUS_100)) {
-                throw new RuntimeException("模型结果异常:" + modelResult);
+            if (!modelResult.containsKey(CommonConstant.MDK_STATUS_CODE) || !modelResult.containsKey(CommonConstant.MDK_RESULT)) {
+                log.info("模型结果异常:" + modelResult);
             }
-            modelResult = (HashMap<String, Object>) modelResult.get(CommonConstant.MDK_RESULT);
             String statusCode = modelResult.get(CommonConstant.MDK_STATUS_CODE).toString();
+            HashMap<String, Object> result = new HashMap<>();
+            if (modelResult.containsKey(CommonConstant.MDK_RESULT) && modelResult.get(CommonConstant.MDK_RESULT) != null &&
+                    CommonConstant.MDK_STATUS_100.equals(modelResult.get(CommonConstant.MDK_STATUS_CODE).toString())) {
+                result = (HashMap<String, Object>) modelResult.get(CommonConstant.MDK_RESULT);
+            }
             //打印结果
             JSONObject jsonObjResult = new JSONObject();
-            jsonObjResult.put("result", modelResult);
+            jsonObjResult.put("result", result);
             log.info(String.valueOf(jsonObjResult));
 
             //5.返回调度结果
             scheduleResult.setResultCode(statusCode);
-            scheduleResult.setResult(modelResult);
+            scheduleResult.setResult(result);
             scheduleResult.setModelId(modelId);
             scheduleResult.setSchemeId(scheduleScheme.getId());
             scheduleResult.setScheduleTime(scheduleTime);

--
Gitblit v1.9.3