diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComponentDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComponentDao.java index ce42dca6..14c85f20 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComponentDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComponentDao.java @@ -82,6 +82,7 @@ public interface ComponentDao { */ int update(@Param("component") Component component); + /** * 通过主键删除数据 * @@ -94,5 +95,13 @@ public interface ComponentDao { Integer countByNameAndCategoryId(@Param("componentName") String componentName, @Param("categoryId") Integer categoryId); + + + + + + + + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComputingResourceDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComputingResourceDao.java index ddde771d..59211da5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComputingResourceDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComputingResourceDao.java @@ -64,6 +64,7 @@ public interface ComputingResourceDao { */ int insertOrUpdateBatch(@Param("entities") List entities); + /** * 修改数据 * diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java index 3c7bf079..54fa9db4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java @@ -61,4 +61,6 @@ public interface DatasetVersionService { String removeById(Integer id); List queryByDatasetId(Integer datasetId); + + DatasetVersion duplicateDatasetVersion(DatasetVersion oldDatasetVersion); } 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 04a26b89..72978c72 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 @@ -4,6 +4,7 @@ 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.Workflow; import com.ruoyi.platform.mapper.DatasetDao; import com.ruoyi.platform.mapper.DatasetVersionDao; import com.ruoyi.platform.service.DatasetService; @@ -156,7 +157,7 @@ public class DatasetServiceImpl implements DatasetService { String username = loginUser.getUsername(); String createdBy = dataset.getCreateBy(); if (!(StringUtils.equals(username,"admin") || StringUtils.equals(username,createdBy))){ - return "无权限删除该数据集"; + return "无权限删除该数据集版本"; } if (datasetVersionService.queryByDatasetId(id).size()>0){ return "请先删除该数据集的版本文件"; @@ -213,50 +214,61 @@ public class DatasetServiceImpl implements DatasetService { */ @Override public String uploadDataset(MultipartFile file, Integer id) throws Exception { - if(file.isEmpty()){ + if (file.isEmpty()) { throw new Exception("文件为空,无法上传"); } // 获取文件大小并转换为KB long sizeInBytes = file.getSize(); double sizeInKB = sizeInBytes / 1024.0; - //拿到dataset表的id去查数据集名字 - DatasetVersion datasetVersion = this.datasetVersionDao.queryById(id); - if (datasetVersion == null) { + // 检查并处理现有的数据集版本记录 + DatasetVersion currentDatasetVersion = this.datasetVersionDao.queryById(id); + if (currentDatasetVersion == null) { throw new Exception("未找到数据集版本记录"); } - Integer datasetID = datasetVersion.getDatasetId(); + + DatasetVersion datasetVersionToUse = currentDatasetVersion; + //检查是否存在URL记录 + if (!currentDatasetVersion.getUrl().isEmpty()) { + // 逻辑删除当前版本 + currentDatasetVersion.setState(0); + datasetVersionDao.update(currentDatasetVersion); + + // 创建并插入新版本 + datasetVersionToUse = this.datasetVersionService.duplicateDatasetVersion(currentDatasetVersion); + datasetVersionDao.insert(datasetVersionToUse); + } + + //查询数据集名称 + Integer datasetID = datasetVersionToUse.getDatasetId(); Dataset dataset = this.datasetDao.queryById(datasetID); if (dataset == null) { throw new Exception("未找到数据集记录"); } - LoginUser loginUser = SecurityUtils.getLoginUser(); - //拼接objectName - String username = loginUser.getUsername(); - String version = datasetVersion.getVersion(); - Date createTime = datasetVersion.getCreateTime(); + // 其余操作基于 datasetVersionToUse + String username = SecurityUtils.getLoginUser().getUsername(); + String version = datasetVersionToUse.getVersion(); + Date createTime = datasetVersionToUse.getCreateTime(); String fileName = file.getOriginalFilename(); - //格式化日期为时间戳字符串 - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-HHmmss"); - String timestamp = sdf.format(createTime); - - String objectName = "datasets/" + username + "/" + dataset.getName() + "-" + timestamp + "/" + version + "/" + fileName; + String timestamp = new SimpleDateFormat("yyyyMMdd-HHmmss").format(createTime); + String objectName = "datasets/" + username + "/" + dataset.getName() + "-" + timestamp + "/" + version + "/" + fileName; // 上传文件到MinIO try (InputStream inputStream = file.getInputStream()) { minioUtil.uploadObject(bucketName, objectName, inputStream); - // 更新数据库中dataset_version表url记录 - datasetVersion.setUrl(objectName); - datasetVersion.setFileName(fileName); - datasetVersion.setFileSize(String.valueOf(sizeInKB)); - datasetVersionDao.update(datasetVersion); + datasetVersionToUse.setUrl(objectName); + datasetVersionToUse.setFileName(fileName); + datasetVersionToUse.setFileSize(String.valueOf(sizeInKB)); + datasetVersionDao.update(datasetVersionToUse); 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/DatasetVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java index 3bcbdedc..a3a3f8a9 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java @@ -2,6 +2,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.Workflow; import com.ruoyi.platform.mapper.DatasetVersionDao; import com.ruoyi.platform.service.DatasetVersionService; import com.ruoyi.system.api.model.LoginUser; @@ -123,4 +124,20 @@ public class DatasetVersionServiceImpl implements DatasetVersionService { return datasetVersionDao.queryByDatasetId(datasetId); } + + /** + * 复制数据集版本 + * + * @param oldDatasetVersion 待更新的数据集版本 + * @return 新的数据集版本记录 + */ + public DatasetVersion duplicateDatasetVersion(DatasetVersion oldDatasetVersion) { + DatasetVersion newDatasetVersion = new DatasetVersion(); + newDatasetVersion.setDatasetId(oldDatasetVersion.getDatasetId()); + newDatasetVersion.setVersion(oldDatasetVersion.getVersion()); + newDatasetVersion.setAvailableCluster(oldDatasetVersion.getAvailableCluster()); + newDatasetVersion.setStatus(oldDatasetVersion.getStatus()); + return this.insert(newDatasetVersion); + } + }