Browse Source

数据集、模型版本更新功能实现

tags/v20240126
西大锐 2 years ago
parent
commit
a513cc2138
4 changed files with 57 additions and 27 deletions
  1. +2
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsVersionService.java
  2. +4
    -4
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java
  3. +32
    -23
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
  4. +19
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java

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

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

List<ModelsVersion> queryByModelsId(Integer modelsId);

ModelsVersion duplicateModelsVersion(ModelsVersion oldModelsVersion);
}

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

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

//查询数据集名称


+ 32
- 23
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java View File

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


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

@@ -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<ModelsVersion> 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);
}



}

Loading…
Cancel
Save