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);


/**
* 通过主键删除数据
*
@@ -94,5 +95,13 @@ public interface ComponentDao {
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);


/**
* 修改数据
*


+ 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);

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.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);
}


+ 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.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);
}

}

Loading…
Cancel
Save