| | |
| | | |
| | | 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; |
| | | import com.iailab.module.model.mpk.common.MdkConstant; |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | Class<?> clazz; |
| | | URLClassLoader classLoader; |
| | | try { |
| | | File jarFile = new File(mpkBakFilePath + File.separator + MdkConstant.JAR + File.separator + dto.getPyName() + ".jar"); |
| | | File jarFile = new File(mpkTenantBakFilePath + File.separator + MdkConstant.JAR + File.separator + dto.getPyName() + ".jar"); |
| | | if (!jarFile.exists()) { |
| | | throw new RuntimeException("jar包不存在,请先生成代码。jarPath:" + jarFile.getAbsolutePath()); |
| | | } |
| | | File dllFile = new File(mpkBakFilePath + File.separator + MdkConstant.DLL + File.separator + dto.getPyName() + ".dll"); |
| | | File dllFile = new File(mpkTenantBakFilePath + File.separator + MdkConstant.DLL + File.separator + dto.getPyName() + ".dll"); |
| | | if (!dllFile.exists()) { |
| | | throw new RuntimeException("dll文件不存在,请先生成代码。dllPath:" + dllFile.getAbsolutePath()); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @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 { |