Browse Source

数据集版本更新功能实现

tags/v20240126
西大锐 2 years ago
parent
commit
7d3ca2847f
5 changed files with 62 additions and 21 deletions
  1. +9
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComponentDao.java
  2. +1
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComputingResourceDao.java
  3. +2
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java
  4. +33
    -21
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java
  5. +17
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java

+ 9
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComponentDao.java View File

@@ -82,6 +82,7 @@ public interface ComponentDao {
*/ */
int update(@Param("component") Component component); int update(@Param("component") Component component);



/** /**
* 通过主键删除数据 * 通过主键删除数据
* *
@@ -94,5 +95,13 @@ public interface ComponentDao {
Integer countByNameAndCategoryId(@Param("componentName") String componentName, @Param("categoryId") Integer categoryId); Integer countByNameAndCategoryId(@Param("componentName") String componentName, @Param("categoryId") Integer categoryId);












} }



+ 1
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ComputingResourceDao.java View File

@@ -64,6 +64,7 @@ public interface ComputingResourceDao {
*/ */
int insertOrUpdateBatch(@Param("entities") List<ComputingResource> entities); int insertOrUpdateBatch(@Param("entities") List<ComputingResource> entities);



/** /**
* 修改数据 * 修改数据
* *


+ 2
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java View File

@@ -61,4 +61,6 @@ public interface DatasetVersionService {
String removeById(Integer id); String removeById(Integer id);


List<DatasetVersion> queryByDatasetId(Integer datasetId); List<DatasetVersion> queryByDatasetId(Integer datasetId);

DatasetVersion duplicateDatasetVersion(DatasetVersion oldDatasetVersion);
} }

+ 33
- 21
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java View File

@@ -4,6 +4,7 @@ package com.ruoyi.platform.service.impl;
import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.Dataset;
import com.ruoyi.platform.domain.DatasetVersion; import com.ruoyi.platform.domain.DatasetVersion;
import com.ruoyi.platform.domain.Workflow;
import com.ruoyi.platform.mapper.DatasetDao; import com.ruoyi.platform.mapper.DatasetDao;
import com.ruoyi.platform.mapper.DatasetVersionDao; import com.ruoyi.platform.mapper.DatasetVersionDao;
import com.ruoyi.platform.service.DatasetService; import com.ruoyi.platform.service.DatasetService;
@@ -156,7 +157,7 @@ public class DatasetServiceImpl implements DatasetService {
String username = loginUser.getUsername(); String username = loginUser.getUsername();
String createdBy = dataset.getCreateBy(); String createdBy = dataset.getCreateBy();
if (!(StringUtils.equals(username,"admin") || StringUtils.equals(username,createdBy))){ if (!(StringUtils.equals(username,"admin") || StringUtils.equals(username,createdBy))){
return "无权限删除该数据集";
return "无权限删除该数据集版本";
} }
if (datasetVersionService.queryByDatasetId(id).size()>0){ if (datasetVersionService.queryByDatasetId(id).size()>0){
return "请先删除该数据集的版本文件"; return "请先删除该数据集的版本文件";
@@ -213,50 +214,61 @@ public class DatasetServiceImpl implements DatasetService {
*/ */
@Override @Override
public String uploadDataset(MultipartFile file, Integer id) throws Exception { public String uploadDataset(MultipartFile file, Integer id) throws Exception {
if(file.isEmpty()){
if (file.isEmpty()) {
throw new Exception("文件为空,无法上传"); throw new Exception("文件为空,无法上传");
} }
// 获取文件大小并转换为KB // 获取文件大小并转换为KB
long sizeInBytes = file.getSize(); long sizeInBytes = file.getSize();
double sizeInKB = sizeInBytes / 1024.0; 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("未找到数据集版本记录"); 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); Dataset dataset = this.datasetDao.queryById(datasetID);
if (dataset == null) { if (dataset == null) {
throw new Exception("未找到数据集记录"); 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(); 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 // 上传文件到MinIO
try (InputStream inputStream = file.getInputStream()) { try (InputStream inputStream = file.getInputStream()) {
minioUtil.uploadObject(bucketName, objectName, inputStream); 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; return "数据集成功上传到: " + objectName;
} catch (Exception e) { } catch (Exception e) {
throw new Exception("上传到MinIO失败: " + e.getMessage(), e); throw new Exception("上传到MinIO失败: " + e.getMessage(), e);
} }
} }




private String extractFileName(String urlStr) { private String extractFileName(String urlStr) {
return urlStr.substring(urlStr.lastIndexOf('/') + 1); return urlStr.substring(urlStr.lastIndexOf('/') + 1);
} }


+ 17
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java View File

@@ -2,6 +2,7 @@ package com.ruoyi.platform.service.impl;


import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.platform.domain.DatasetVersion; import com.ruoyi.platform.domain.DatasetVersion;
import com.ruoyi.platform.domain.Workflow;
import com.ruoyi.platform.mapper.DatasetVersionDao; import com.ruoyi.platform.mapper.DatasetVersionDao;
import com.ruoyi.platform.service.DatasetVersionService; import com.ruoyi.platform.service.DatasetVersionService;
import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUser;
@@ -123,4 +124,20 @@ public class DatasetVersionServiceImpl implements DatasetVersionService {
return datasetVersionDao.queryByDatasetId(datasetId); 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);
}

} }

Loading…
Cancel
Save