Browse Source

数据集,模型上传接口逻辑修改,先上传文件再插入记录

pull/7/head
西大锐 1 year ago
parent
commit
06edf7585b
16 changed files with 218 additions and 51 deletions
  1. +16
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java
  2. +26
    -2
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java
  3. +3
    -4
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsController.java
  4. +13
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsVersionController.java
  5. +2
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/DatasetVersion.java
  6. +2
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java
  7. +6
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ImageService.java
  8. +2
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java
  9. +2
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsVersionService.java
  10. +1
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java
  11. +30
    -9
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java
  12. +59
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java
  13. +23
    -24
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
  14. +28
    -6
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java
  15. +3
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java
  16. +2
    -2
      ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetVersionDaoMapper.xml

+ 16
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java View File

@@ -8,6 +8,7 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
* (DatasetVersion)表控制层
@@ -69,7 +70,7 @@ public class DatasetVersionController {


/**
* 新增数据
* 新增单条数据
*
* @param datasetVersion 实体
* @return 新增结果
@@ -80,6 +81,20 @@ public class DatasetVersionController {
return AjaxResult.success(this.datasetVersionService.insert(datasetVersion));
}

/**
* 批量新增数据集版本
*
* @param datasetVersions 实体
* @return 新增结果
*/
@PostMapping(("/addDatasetVersions"))
@ApiOperation("添加数据集版本")
public AjaxResult addDatasetVersions(@RequestBody List<DatasetVersion> datasetVersions) throws Exception {
return AjaxResult.success(this.datasetVersionService.addDatasetVersions(datasetVersions));
}



/**
* 编辑数据
*


+ 26
- 2
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java View File

@@ -12,6 +12,7 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;

@@ -84,7 +85,7 @@ public class ImageController {
/**
* 新增镜像和版本
*
* @param datasetVo 实体
* @param imageVo 实体
* @return 新增结果
*/
@PostMapping("/addImageAndVersion")
@@ -109,13 +110,36 @@ public class ImageController {
* 删除数据
*
* @param id 主键
*
* @return 删除是否成功
*/
@DeleteMapping("{id}")
public AjaxResult deleteById(@PathVariable("id") Integer id) {

return AjaxResult.success(this.imageService.removeById(id));
}

@PostMapping("/local")
@ApiOperation("从本地上传构建镜像")
public AjaxResult createImageFromLocal(@RequestParam("name") String imageName,
@RequestParam("tag") String imageTag,
@RequestParam("description") String imageDescription){
return AjaxResult.success(this.imageService.createImageFromLocal(imageName,imageTag,imageDescription));
}

/**
* 镜像上传
*
*
* @param files 文件
* @return 上传结果
*/

@PostMapping("/upload")
@ApiOperation(value = "上传镜像文件", notes = "上传镜像tar包,返回存储路径")
public AjaxResult uploadImageFiles(@RequestParam("files") MultipartFile[] files) throws Exception {
return AjaxResult.success(this.imageService.uploadImageFiles(files));

}

}


+ 3
- 4
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsController.java View File

@@ -124,14 +124,13 @@ public class ModelsController {
*
* @param files 文件
* @param modelsId 模型表主键
* @param version 模型版本表主键
* @return 上传结果
*/

@PostMapping("/upload")
@ApiOperation(value = "上传模型", notes = "根据模型id和版本号上传模型文件,并将信息存入数据库。")
public AjaxResult uploadModels(@RequestParam("files") MultipartFile[] files, @RequestParam("models_id") Integer modelsId, @RequestParam("version") String version) throws Exception {
return AjaxResult.success(this.modelsService.uploadModels(files,modelsId,version));
@ApiOperation(value = "上传模型", notes = "根据模型id上传模型文件,并将信息存入数据库。")
public AjaxResult uploadModels(@RequestParam("files") MultipartFile[] files, @RequestParam("models_id") Integer modelsId) throws Exception {
return AjaxResult.success(this.modelsService.uploadModels(files,modelsId));

}



+ 13
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsVersionController.java View File

@@ -10,6 +10,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
* (ModelsVersion)表控制层
@@ -80,6 +81,18 @@ public class ModelsVersionController {
return AjaxResult.success(this.modelsVersionService.insert(modelsVersion));
}

/**
* 批量新增模型版本
*
* @param datasetVersions 实体
* @return 新增结果
*/
@PostMapping(("/addDatasetVersions"))
@ApiOperation("添加数据集版本")
public AjaxResult addModelVersions(@RequestBody List<ModelsVersion> modelsVersions) throws Exception {
return AjaxResult.success(this.modelsVersionService.addModelVersions(modelsVersions));
}

/**
* 编辑数据
*


+ 2
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/DatasetVersion.java View File

@@ -28,12 +28,13 @@ public class DatasetVersion implements Serializable {
* 版本
*/
@ApiModelProperty(name = "version")
@CheckDuplicate
//@CheckDuplicate
private String version;
/**
* 数据集存储地址
*/
@ApiModelProperty(name = "url")
@CheckDuplicate
private String url;
/**
* 文件名


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

@@ -71,4 +71,6 @@ public interface DatasetVersionService {
Map<Integer,String> deleteDatasetVersion(Integer datasetId, String version);

void checkDeclaredVersion(DatasetVersion insert) throws Exception;

String addDatasetVersions(List<DatasetVersion> datasetVersions);
}

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

@@ -5,6 +5,7 @@ import com.ruoyi.platform.domain.Workflow;
import com.ruoyi.platform.vo.ImageVo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.web.multipart.MultipartFile;

import java.util.Collection;

@@ -64,4 +65,9 @@ public interface ImageService {
Page<Image> queryByName(String name);

String insertImageAndVersion(ImageVo imageVo) throws Exception;

String createImageFromLocal(String imageName, String imageTag, String imageDescription);

String uploadImageFiles(MultipartFile[] files);

}

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

@@ -11,6 +11,7 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
@@ -69,7 +70,7 @@ public interface ModelsService {



Map uploadModels(MultipartFile[] files, Integer id, String version) throws Exception;
List<Map<String, String>> uploadModels(MultipartFile[] files, Integer id) throws Exception;

Map uploadModelsPipeline(ModelsVersion modelsVersion) throws Exception;



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

@@ -69,4 +69,6 @@ public interface ModelsVersionService {
List<ModelsVersion> queryByModelsIdAndVersion(Integer modelsId, String version);

Map<Integer, String> deleteModelsVersion(Integer modelsId, String version);

String addModelVersions(List<ModelsVersion> modelsVersions);
}

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

@@ -340,7 +340,7 @@ public class DatasetServiceImpl implements DatasetService {
datasetVersion.setAvailableCluster(datasetVo.getAvailableCluster());
DatasetVersion datasetVersionInsert = datasetVersionService.insert(datasetVersion);
if (datasetVersionInsert == null) {
throw new Exception("新增数据集失败");
throw new Exception("新增数据集版本失败");
}
return "新增数据集成功";
}


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

@@ -65,13 +65,8 @@ public class DatasetVersionServiceImpl implements DatasetVersionService {
*/
@Override
public DatasetVersion insert(DatasetVersion datasetVersion) throws Exception {
checkDeclaredVersion(datasetVersion);
LoginUser loginUser = SecurityUtils.getLoginUser();
datasetVersion.setCreateBy(loginUser.getUsername());
datasetVersion.setUpdateBy(loginUser.getUsername());
datasetVersion.setUpdateTime(new Date());
datasetVersion.setCreateTime(new Date());
datasetVersion.setState(1);
//插入预备
insertPrepare(datasetVersion);
this.datasetVersionDao.insert(datasetVersion);
return datasetVersion;
}
@@ -161,13 +156,39 @@ public class DatasetVersionServiceImpl implements DatasetVersionService {
public void checkDeclaredVersion(DatasetVersion insert) throws Exception {
DatasetVersion datasetVersion = datasetVersionDao.queryByDatasetVersion(insert);
if (datasetVersion != null) {
Field[] fields = Dataset.class.getDeclaredFields();
Field[] fields = DatasetVersion.class.getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(CheckDuplicate.class)) {
CheckDuplicate annotation = field.getAnnotation(CheckDuplicate.class);
throw new Exception(annotation.value() + "不能重复");
throw new Exception(annotation.value() + "数据集版本不能重复");
}
}
}
}

@Override
public String addDatasetVersions(List<DatasetVersion> datasetVersions) {
try {
// 遍历传入的 datasetVersions 列表
for(DatasetVersion datasetVersion : datasetVersions) {
insertPrepare(datasetVersion);
}
this.datasetVersionDao.insertBatch(datasetVersions);
return "新增数据集版本成功";
} catch (Exception e) {
// 如果出现异常,返回异常消息
return "新增数据集版本失败: " + e.getMessage();
}

}

private void insertPrepare(DatasetVersion datasetVersion) throws Exception {
//checkDeclaredVersion(datasetVersion);
LoginUser loginUser = SecurityUtils.getLoginUser();
datasetVersion.setCreateBy(loginUser.getUsername());
datasetVersion.setUpdateBy(loginUser.getUsername());
datasetVersion.setUpdateTime(new Date());
datasetVersion.setCreateTime(new Date());
datasetVersion.setState(1);
}
}

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

@@ -6,6 +6,7 @@ import com.ruoyi.platform.mapper.ImageDao;
import com.ruoyi.platform.mapper.ImageVersionDao;
import com.ruoyi.platform.service.ImageService;
import com.ruoyi.platform.service.ImageVersionService;
import com.ruoyi.platform.utils.FileUtil;
import com.ruoyi.platform.vo.ImageVo;
import com.ruoyi.system.api.model.LoginUser;
import org.apache.commons.lang3.StringUtils;
@@ -13,9 +14,14 @@ import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
* (Image)表服务实现类
@@ -142,6 +148,7 @@ public class ImageServiceImpl implements ImageService {
}

@Override
@Transactional
public String insertImageAndVersion(ImageVo imageVo) throws Exception {
Image image = new Image();
image.setName(imageVo.getName());
@@ -165,4 +172,56 @@ public class ImageServiceImpl implements ImageService {
}
return "新增镜像成功";
}

@Override
public String createImageFromLocal(String imageName, String imageTag, String imageDescription) {
return null;
}

@Override
public String uploadImageFiles(MultipartFile[] files) {
// Map<Integer, Object> results = new HashMap<Integer, Object>();
//
// // 验证模型是否存在
// Models models = this.modelsDao.queryById(id);
// if (models == null) {
// throw new Exception("未找到模型记录");
// }
//
// for (MultipartFile file:files){
// if (file.isEmpty()) {
// throw new Exception("文件为空,无法上传");
// }
// // 获取文件大小并转换为KB
// long sizeInBytes = file.getSize();
// String formattedSize = FileUtil.formatFileSize(sizeInBytes); // 格式化文件大小
//
// // 其余操作基于 modelsVersionToUse
// String username = SecurityUtils.getLoginUser().getUsername();
// String fileName = file.getOriginalFilename();
// // String timestamp = new SimpleDateFormat("yyyyMMdd-HHmmss").format(createTime);
// String objectName = "models/" + username + "/" + models.getName() + "/" + version + "/" + fileName;
//
// // 上传文件到MinIO并将记录新增到数据库中
// try (InputStream inputStream = file.getInputStream()) {
// minioUtil.uploadObject(bucketName, objectName, inputStream);
// ModelsVersion modelsVersion = new ModelsVersion();
// modelsVersion.setModelsId(id);
// modelsVersion.setVersion(version);
// modelsVersion.setUrl(objectName);
// modelsVersion.setFileName(fileName);
// modelsVersion.setFileSize(formattedSize);
// //返回插入结果
// ModelsVersion insertedModelsVersion = modelsVersionService.insert(modelsVersion);
// Map<String, String> fileResult = new HashMap<>();
// fileResult.put("fileName", file.getOriginalFilename());
// fileResult.put("url", objectName); // objectName根据实际情况定义
// results.put(insertedModelsVersion.getId(), fileResult);
// } catch (Exception e) {
// throw new Exception("上传到模型失败: " + e.getMessage(), e);
// }
// }
// return results;
return null;
}
}

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

@@ -1,8 +1,6 @@
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;
@@ -10,6 +8,7 @@ import com.ruoyi.platform.mapper.ModelsVersionDao;
import com.ruoyi.platform.service.ModelsService;
import com.ruoyi.platform.service.ModelsVersionService;
import com.ruoyi.platform.utils.BeansUtils;
import com.ruoyi.platform.utils.FileUtil;
import com.ruoyi.platform.utils.MinioUtil;
import com.ruoyi.platform.vo.ModelsVo;
import com.ruoyi.system.api.model.LoginUser;
@@ -32,10 +31,8 @@ import javax.annotation.Resource;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -209,15 +206,14 @@ public class ModelsServiceImpl implements ModelsService {
/**
* 上传模型
*
* @param files 文件
* @param id 模型id
* @param version 模型版本
* @param files 文件
* @param id 模型id
* @return 是否成功
*/
@Override
public Map uploadModels(MultipartFile[] files, Integer id, String version) throws Exception {
public List<Map<String, String>> uploadModels(MultipartFile[] files, Integer id) throws Exception {

Map<Integer, Object> results = new HashMap<Integer, Object>();
List<Map<String, String>> results = new ArrayList<>();

// 验证模型是否存在
Models models = this.modelsDao.queryById(id);
@@ -231,33 +227,36 @@ public class ModelsServiceImpl implements ModelsService {
}
// 获取文件大小并转换为KB
long sizeInBytes = file.getSize();
double sizeInKB = sizeInBytes / 1024.0;
String formattedSize = FileUtil.formatFileSize(sizeInBytes); // 格式化文件大小

// 其余操作基于 modelsVersionToUse
String username = SecurityUtils.getLoginUser().getUsername();
String fileName = file.getOriginalFilename();
// String timestamp = new SimpleDateFormat("yyyyMMdd-HHmmss").format(createTime);
String objectName = "models/" + username + "/" + models.getName() + "/" + version + "/" + fileName;
Date createTime = new Date();
String timestamp = new SimpleDateFormat("yyyyMMdd-HHmmss").format(createTime);
String objectName = "models/" + username + "/" + models.getName() + "/" + timestamp + "/" + fileName;

// 上传文件到MinIO并将记录新增到数据库中
try (InputStream inputStream = file.getInputStream()) {
minioUtil.uploadObject(bucketName, objectName, inputStream);
ModelsVersion modelsVersion = new ModelsVersion();
modelsVersion.setModelsId(id);
modelsVersion.setVersion(version);
modelsVersion.setUrl(objectName);
modelsVersion.setFileName(fileName);
modelsVersion.setFileSize(String.valueOf(sizeInKB));
//返回插入结果
ModelsVersion insertedModelsVersion = modelsVersionService.insert(modelsVersion);
// ModelsVersion modelsVersion = new ModelsVersion();
// modelsVersion.setModelsId(id);
// modelsVersion.setVersion(version);
// modelsVersion.setUrl(objectName);
// modelsVersion.setFileName(fileName);
// modelsVersion.setFileSize(formattedSize);
// //返回插入结果
// ModelsVersion insertedModelsVersion = modelsVersionService.insert(modelsVersion);
Map<String, String> fileResult = new HashMap<>();
fileResult.put("fileName", file.getOriginalFilename());
fileResult.put("url", objectName); // objectName根据实际情况定义
results.put(insertedModelsVersion.getId(), fileResult);
fileResult.put("fileSize", formattedSize);
results.add(fileResult);
} catch (Exception e) {
throw new Exception("上传模型失败: " + e.getMessage(), e);
throw new Exception("上传模型失败: " + e.getMessage(), e);
}
}

return results;
}



+ 28
- 6
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;
@@ -64,12 +65,8 @@ public class ModelsVersionServiceImpl implements ModelsVersionService {
*/
@Override
public ModelsVersion insert(ModelsVersion modelsVersion) {
LoginUser loginUser = SecurityUtils.getLoginUser();
modelsVersion.setCreateBy(loginUser.getUsername());
modelsVersion.setUpdateBy(loginUser.getUsername());
modelsVersion.setUpdateTime(new Date());
modelsVersion.setCreateTime(new Date());
modelsVersion.setState(1);
//插入预备
insertPrepare(modelsVersion);
this.modelsVersionDao.insert(modelsVersion);
return modelsVersion;
}
@@ -179,4 +176,29 @@ public class ModelsVersionServiceImpl implements ModelsVersionService {
return results;
}

@Override
public String addModelVersions(List<ModelsVersion> modelsVersions) {
try {
// 遍历传入的 datasetVersions 列表
for(ModelsVersion modelsVersion : modelsVersions) {
insertPrepare(modelsVersion);
}
this.modelsVersionDao.insertBatch(modelsVersions);
return "新增模型版本成功";
} catch (Exception e) {
// 如果出现异常,返回异常消息
return "新增模型版本失败: " + e.getMessage();
}
}

private void insertPrepare(ModelsVersion modelsVersion) {
LoginUser loginUser = SecurityUtils.getLoginUser();
modelsVersion.setCreateBy(loginUser.getUsername());
modelsVersion.setUpdateBy(loginUser.getUsername());
modelsVersion.setUpdateTime(new Date());
modelsVersion.setCreateTime(new Date());
modelsVersion.setState(1);

}

}

+ 3
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java View File

@@ -21,4 +21,7 @@ public class FileUtil {
}
}




}

+ 2
- 2
ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetVersionDaoMapper.xml View File

@@ -171,7 +171,7 @@
</insert>

<insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
insert into dataset_version(dataset_idversionurlfile_namefile_sizeavailable_clusterstatuscreate_bycreate_timeupdate_byupdate_timestate)
insert into dataset_version(dataset_id,version,url,file_name,file_size,available_cluster,status,create_by,create_time,update_by,update_time,state)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.datasetId},#{entity.version},#{entity.url},#{entity.fileName},#{entity.fileSize},#{entity.availableCluster},#{entity.status},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state})
@@ -179,7 +179,7 @@
</insert>

<insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">
insert into dataset_version(dataset_idversionurlfile_namefile_sizeavailable_clusterstatuscreate_bycreate_timeupdate_byupdate_timestate)
insert into dataset_version(dataset_id,version,url,file_name,file_size,available_cluster,status,create_by,create_time,update_by,update_time,state)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.datasetId},#{entity.version},#{entity.url},#{entity.fileName},#{entity.fileSize},#{entity.availableCluster},#{entity.status},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state})


Loading…
Cancel
Save