From 3e18d4bfbf2c657b08b21512c2d884cc9d59df7b Mon Sep 17 00:00:00 2001
From: dengzedong <dengzedong@email>
Date: 星期一, 14 十月 2024 16:29:49 +0800
Subject: [PATCH] 模型运行

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MdkController.java |   43 ++++++++++++++++++++-
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dto/MdkRunDTO.java                  |   27 +++++++++++++
 2 files changed, 68 insertions(+), 2 deletions(-)

diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MdkController.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MdkController.java
index 65a2438..8d75179 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MdkController.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/controller/admin/MdkController.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.iail.utils.RSAUtils;
 import com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants;
 import com.iailab.framework.common.pojo.CommonResult;
 import com.iailab.framework.tenant.core.context.TenantContextHolder;
@@ -9,6 +10,7 @@
 import com.iailab.module.model.mpk.common.utils.DllUtils;
 import com.iailab.module.model.mpk.common.utils.Readtxt;
 import com.iailab.module.model.mpk.dto.MdkDTO;
+import com.iailab.module.model.mpk.dto.MdkRunDTO;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
@@ -17,6 +19,7 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
+import java.lang.reflect.Method;
 import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -38,8 +41,13 @@
     private String mpkBakFilePath;
 
 
-    @PostMapping("run")
-    public CommonResult<String> run(@RequestBody MdkDTO dto) {
+    /**
+     * @description: 模型测试运行
+     * @author: dzd
+     * @date: 2024/10/14 15:26
+     **/
+    @PostMapping("test")
+    public CommonResult<String> test(@RequestBody MdkDTO dto) {
         Long tenantId = TenantContextHolder.getTenantId();
         // 备份文件 租户隔离
         String mpkTenantBakFilePath = mpkBakFilePath + File.separator + tenantId;
@@ -116,6 +124,37 @@
         }
     }
 
+    /**
+     * @description: 模型运行
+     * @author: dzd
+     * @date: 2024/10/14 15:26
+     **/
+    @PostMapping("run")
+    public CommonResult<String> run(@RequestBody MdkRunDTO dto) {
+        if (RSAUtils.checkLisenceBean().getCode() != 1) {
+            log.error("Lisence 不可用!");
+            return CommonResult.error(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"Lisence 不可用!");
+        } else {
+            try {
+                URLClassLoader classLoader = DllUtils.getClassLoader(dto.getProjectId());
+                if (null == classLoader) {
+                    return CommonResult.error(GlobalErrorCodeConstants.ERROR_CONFIGURATION.getCode(),"请先发布项目!");
+                }
+
+                Class<?> clazz = classLoader.loadClass(dto.getClassName());
+                Method method = clazz.getMethod(dto.getMethodName(), dto.getParamsClassArray());
+                HashMap invoke = (HashMap) method.invoke(clazz.newInstance(), dto.getParamsValueArray());
+
+                // todo 将结果存入数据库
+
+            } catch (Exception e) {
+                log.error("模型运行失败",e);
+                return CommonResult.error(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"模型运行失败!");
+            }
+        }
+        return CommonResult.success();
+    }
+
     @PostMapping("/import")
     @Operation(summary = "导入参数")
     public CommonResult<List<String>> importExcel(@RequestParam("file") MultipartFile file) throws Exception {
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dto/MdkRunDTO.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dto/MdkRunDTO.java
new file mode 100644
index 0000000..404338d
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/dto/MdkRunDTO.java
@@ -0,0 +1,27 @@
+package com.iailab.module.model.mpk.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @description:
+ * @author: dzd
+ * @date: 2024/10/14 16:09
+ **/
+@Data
+public class MdkRunDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String projectId;
+
+    private String className;
+
+    private String methodName;
+
+    private Class<?>[] paramsClassArray;
+
+    private Object[] paramsValueArray;
+}
\ No newline at end of file

--
Gitblit v1.9.3