From 6ec7fbd5450e236b13d7f100781b4d92dad36247 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期五, 22 十一月 2024 17:33:23 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java | 86 +++++++++++++++++++++++++++++++++++-------- 1 files changed, 70 insertions(+), 16 deletions(-) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java index 3db6b2b..e63215f 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java @@ -20,6 +20,7 @@ import com.iailab.module.model.mpk.common.utils.GenUtils; import com.iailab.module.model.mpk.dao.MpkFileDao; import com.iailab.module.model.mpk.dto.GeneratorCodeHistoryDTO; +import com.iailab.module.model.mpk.dto.MethodSettingDTO; import com.iailab.module.model.mpk.dto.ModelMethodDTO; import com.iailab.module.model.mpk.dto.MpkFileDTO; import com.iailab.module.model.mpk.entity.GeneratorCodeHistoryEntity; @@ -128,30 +129,82 @@ entity.setCreator(SecurityFrameworkUtils.getLoginUserId()); entity.setCreateDate(new Date()); insert(entity); - modelMethodService.insertList(dto.getModelMethods(), entity.getId()); - // 替换环境变量MDK_PKGS下的py文件 -// String mdkPkgs = System.getenv("MDK_PKGS"); -// String pyFilePath = mdkPkgs + File.separator + entity.getPyModule().replace(".", File.separator) + File.separator + entity.getPyName() + ".pyd"; -// FileUtil.mkParentDirs(pyFilePath); -// FileUtil.copy(entity.getFilePath(), pyFilePath, true); + // 将备份的pyd文件,转移到MDK_PKGS环境变量下,并添加方法的默认参数(pyFile,模型路径) + String mdkPkgs = System.getenv("MDK_PKGS"); + String fileName = entity.getFilePath().substring(entity.getFilePath().lastIndexOf("\\") + 1,entity.getFilePath().lastIndexOf(".pyd")); + + String pyFilePath = mdkPkgs + File.separator + entity.getPyModule().replace(".", File.separator) + File.separator + fileName + ".pyd"; + FileUtil.mkParentDirs(pyFilePath); + FileUtil.copy(entity.getFilePath(), pyFilePath, true); + + // 添加参数 + for (ModelMethodDTO method : dto.getModelMethods()) { + List<MethodSettingDTO> methodSettings = method.getMethodSettings(); + if (methodSettings.stream().anyMatch(e -> e.getSettingKey().equals(MdkConstant.PY_FILE_KEY))) { + methodSettings.forEach(e -> { + if (e.getSettingKey().equals(MdkConstant.PY_FILE_KEY)) { + e.setValue(entity.getPyModule() + "." + fileName); + } + }); + }else { + MethodSettingDTO setting = new MethodSettingDTO(); + setting.setId(UUID.randomUUID().toString()); + setting.setMethodId(method.getId()); + setting.setSettingKey(MdkConstant.PY_FILE_KEY); + setting.setValue(entity.getPyModule() + "." + fileName); + setting.setName("模型路径"); + setting.setType("input"); + setting.setValueType("string"); + methodSettings.add(setting); + } + } + + modelMethodService.insertList(dto.getModelMethods(), entity.getId()); } @Override @DSTransactional(rollbackFor = Exception.class) public void update(MpkFileDTO dto) { + // 判断py文件是否修改 + MpkFileEntity oldEntity = selectById(dto.getId()); + if (!oldEntity.getFilePath().equals(dto.getFilePath())) { + // 将备份的pyd文件,转移到MDK_PKGS环境变量下,并添加方法的默认参数(pyFile,模型路径) + String mdkPkgs = System.getenv("MDK_PKGS"); + String fileName = dto.getFilePath().substring(dto.getFilePath().lastIndexOf("\\") + 1,dto.getFilePath().lastIndexOf(".pyd")); + String pyFilePath = mdkPkgs + File.separator + dto.getPyModule().replace(".", File.separator) + File.separator + fileName + ".pyd"; + FileUtil.mkParentDirs(pyFilePath); + FileUtil.copy(dto.getFilePath(), pyFilePath, true); + + // 添加/修改参数 + for (ModelMethodDTO method : dto.getModelMethods()) { + List<MethodSettingDTO> methodSettings = method.getMethodSettings(); + if (methodSettings.stream().anyMatch(e -> e.getSettingKey().equals(MdkConstant.PY_FILE_KEY))) { + methodSettings.forEach(e -> { + if (e.getSettingKey().equals(MdkConstant.PY_FILE_KEY)) { + e.setValue(dto.getPyModule() + "." + fileName); + } + }); + }else { + MethodSettingDTO setting = new MethodSettingDTO(); + setting.setId(UUID.randomUUID().toString()); + setting.setMethodId(method.getId()); + setting.setSettingKey(MdkConstant.PY_FILE_KEY); + setting.setValue(dto.getPyModule() + "." + fileName); + setting.setName("模型路径"); + setting.setType("input"); + setting.setValueType("string"); + methodSettings.add(setting); + } + } + } + MpkFileEntity entity = ConvertUtils.sourceToTarget(dto, MpkFileEntity.class); entity.setUpdater(SecurityFrameworkUtils.getLoginUserId()); entity.setUpdateDate(new Date()); updateById(entity); modelMethodService.deleteModelMethod(entity.getId()); modelMethodService.insertList(dto.getModelMethods(), entity.getId()); - - // 替换环境变量MDK_PKGS下的py文件 -// String mdkPkgs = System.getenv("MDK_PKGS"); -// String pyFilePath = mdkPkgs + File.separator + entity.getPyModule().replace(".", File.separator) + File.separator + entity.getPyName() + ".pyd"; -// FileUtil.mkParentDirs(pyFilePath); -// FileUtil.copy(entity.getFilePath(), pyFilePath, true); } @Override @@ -509,9 +562,10 @@ throw new RuntimeException("创建临时文件夹异常",e); } String fileName = file.getOriginalFilename(); - File pydBakFile = new File(bakDir.getAbsolutePath() + File.separator + UUID.randomUUID() + ".pyd"); - String pyName = fileName.substring(0, fileName.lastIndexOf(".")); + String pyName_uuTime = pyName + "_" + new Date().getTime(); + + File pydBakFile = new File(bakDir.getAbsolutePath() + File.separator + pyName_uuTime + ".pyd"); try { // py文件存入临时文件夹 File saveFile = new File(tempDir.getAbsolutePath() + File.separator + fileName); @@ -520,12 +574,12 @@ // 临时文件夹中生成pyd文件 // 生成setup.py文件 - createSetUpFile(tempDir.getAbsolutePath(),fileName,pyName); + createSetUpFile(tempDir.getAbsolutePath(),fileName,pyName_uuTime); // 执行cmd命令编译pyd文件 createPydFile(tempDir.getAbsolutePath()); // 临时文件夹中pyd文件移到dir下,修改为uuid.pyd - File pydFile = new File(tempDir.getAbsolutePath() + File.separator + pyName + MdkConstant.PYD_SUFFIX); + File pydFile = new File(tempDir.getAbsolutePath() + File.separator + pyName_uuTime + MdkConstant.PYD_SUFFIX); if (!pydFile.exists()) { throw new RuntimeException("编译pyd文件失败!"); } -- Gitblit v1.9.3