From a513cc213834fa57d7f008e2219b44e70f58b297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Sat, 13 Jan 2024 10:48:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E3=80=81=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ModelsVersionService.java | 2 + .../service/impl/DatasetServiceImpl.java | 8 +-- .../service/impl/ModelsServiceImpl.java | 55 +++++++++++-------- .../impl/ModelsVersionServiceImpl.java | 19 +++++++ 4 files changed, 57 insertions(+), 27 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsVersionService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsVersionService.java index b34fab1d..c72e346a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsVersionService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsVersionService.java @@ -61,4 +61,6 @@ public interface ModelsVersionService { String removeById(Integer id); List queryByModelsId(Integer modelsId); + + ModelsVersion duplicateModelsVersion(ModelsVersion oldModelsVersion); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index 72978c72..0a8c3e22 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -228,15 +228,15 @@ public class DatasetServiceImpl implements DatasetService { } DatasetVersion datasetVersionToUse = currentDatasetVersion; - //检查是否存在URL记录 - if (!currentDatasetVersion.getUrl().isEmpty()) { + //检查版本下是否存在URL记录 + String url = currentDatasetVersion.getUrl(); + if (url != null && !url.isEmpty()) { // 逻辑删除当前版本 currentDatasetVersion.setState(0); datasetVersionDao.update(currentDatasetVersion); - // 创建并插入新版本 datasetVersionToUse = this.datasetVersionService.duplicateDatasetVersion(currentDatasetVersion); - datasetVersionDao.insert(datasetVersionToUse); + } //查询数据集名称 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 8f491553..c0258cc0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.domain.Dataset; +import com.ruoyi.platform.domain.DatasetVersion; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.mapper.ModelsDao; @@ -201,53 +203,60 @@ public class ModelsServiceImpl implements ModelsService { * @param id 注意是models_version表的主键 * @return 是否成功 */ - @Override - public String uploadModels(MultipartFile file, Integer id) throws Exception{ - if(file.isEmpty()){ + public String uploadModels(MultipartFile file, Integer id) throws Exception { + if (file.isEmpty()) { throw new Exception("文件为空,无法上传"); } // 获取文件大小并转换为KB long sizeInBytes = file.getSize(); double sizeInKB = sizeInBytes / 1024.0; - //拿到models表的id去查模型名字 - ModelsVersion modelsVersion = this.modelsVersionDao.queryById(id); - if (modelsVersion == null){ + // 检查并处理现有的数据集版本记录 + ModelsVersion currentModelsVersion = this.modelsVersionDao.queryById(id); + if (currentModelsVersion == null) { throw new Exception("未找到模型版本记录"); } - Integer modelsId = modelsVersion.getModelsId(); + + ModelsVersion modelsVersionToUse = currentModelsVersion; + //检查是否存在URL记录 + String url = currentModelsVersion.getUrl(); + if (url != null && !url.isEmpty()) { + // 逻辑删除当前版本 + currentModelsVersion.setState(0); + modelsVersionDao.update(currentModelsVersion); + + // 复制原有版本并在数据库中插入新版本 + modelsVersionToUse = this.modelsVersionService.duplicateModelsVersion(currentModelsVersion); + } + + //查询模型名称 + Integer modelsId = modelsVersionToUse.getModelsId(); Models models = this.modelsDao.queryById(modelsId); if (models == null) { throw new Exception("未找到模型记录"); } - //得到用户名 - LoginUser loginUser = SecurityUtils.getLoginUser(); - String version = modelsVersion.getVersion(); - String username = loginUser.getUsername(); - Date createTime = models.getCreateTime(); + // 其余操作基于 datasetVersionToUse + String username = SecurityUtils.getLoginUser().getUsername(); + String version = modelsVersionToUse.getVersion(); + Date createTime = modelsVersionToUse.getCreateTime(); String fileName = file.getOriginalFilename(); - //格式化日期为时间戳字符串 - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-HHmmss"); - String timestamp = sdf.format(createTime); - //拼接objectName - String objectName = "models/" + username + "/" + models.getName() + "-" + timestamp + "/" + version + "/" + fileName; + String timestamp = new SimpleDateFormat("yyyyMMdd-HHmmss").format(createTime); + String objectName = "models/" + username + "/" + models.getName() + "-" + timestamp + "/" + version + "/" + fileName; // 上传文件到MinIO try (InputStream inputStream = file.getInputStream()) { minioUtil.uploadObject(bucketName, objectName, inputStream); - // 更新数据库url - modelsVersion.setUrl(objectName); - modelsVersion.setFileName(fileName); - modelsVersion.setFileSize(String.valueOf(sizeInKB)); - modelsVersionDao.update(modelsVersion); + modelsVersionToUse.setUrl(objectName); + modelsVersionToUse.setFileName(fileName); + modelsVersionToUse.setFileSize(String.valueOf(sizeInKB)); + modelsVersionDao.update(modelsVersionToUse); return "模型成功上传到: " + objectName; } catch (Exception e) { throw new Exception("上传到MinIO失败: " + e.getMessage(), e); } } - private String extractFileName(String urlStr) { return urlStr.substring(urlStr.lastIndexOf('/') + 1); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java index 22bb348a..fe4312df 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.domain.DatasetVersion; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.mapper.ModelsDao; import com.ruoyi.platform.mapper.ModelsVersionDao; @@ -128,4 +129,22 @@ public class ModelsVersionServiceImpl implements ModelsVersionService { public List queryByModelsId(Integer modelsId){ return modelsVersionDao.queryByModelsId(modelsId); } + + + /** + * 复制模型版本 + * + * @param oldModelsVersion 待更新的模型版本 + * @return 新的模型版本记录 + */ + public ModelsVersion duplicateModelsVersion(ModelsVersion oldModelsVersion) { + ModelsVersion newModelsVersion = new ModelsVersion(); + newModelsVersion.setModelsId(oldModelsVersion.getModelsId()); + newModelsVersion.setVersion(oldModelsVersion.getVersion()); + newModelsVersion.setStatus(oldModelsVersion.getStatus()); + return this.insert(newModelsVersion); + } + + + }