From 9411abb091ab9c69d0da75e5742b825dca1be7af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Fri, 1 Mar 2024 11:34:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/dataset/DatasetController.java | 22 ++--- .../dataset/DatasetVersionController.java | 14 +++ .../model/ModelsVersionController.java | 17 ++++ .../platform/mapper/DatasetVersionDao.java | 3 + .../platform/service/DatasetService.java | 2 +- .../service/DatasetVersionService.java | 2 + .../service/ModelsVersionService.java | 2 + .../service/impl/DatasetServiceImpl.java | 98 +++++++++---------- .../impl/DatasetVersionServiceImpl.java | 5 + .../service/impl/ModelsServiceImpl.java | 1 - .../impl/ModelsVersionServiceImpl.java | 15 +++ .../DatasetVersionDaoMapper.xml | 18 ++++ 12 files changed, 131 insertions(+), 68 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetController.java index 1bba562b..c78c780a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetController.java @@ -9,7 +9,9 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.PageRequest; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -106,26 +108,22 @@ public class DatasetController { */ @GetMapping("/download/{dataset_version_id}") @ApiOperation(value = "下载数据集", notes = "根据数据集版本表id下载数据集文件") - public AjaxResult downloadDataset(@PathVariable("dataset_version_id") Integer dataset_version_id) { - return AjaxResult.success(datasetService.downloadDataset(dataset_version_id)); + public ResponseEntity downloadDataset(@PathVariable("dataset_version_id") Integer dataset_version_id) { + return datasetService.downloadDataset(dataset_version_id); } /** * 上传数据集 * - * @param dataset_version_id ps:这里的id是dataset_version表的主键 - * @param file 上传的数据集文件 + * @param datasetId 数据集ID + * @param files 上传的数据集文件 + * @param version 版本文件 * @return 上传结果 */ - @PostMapping("/upload/{dataset_version_id}") + @PostMapping("/upload") @ApiOperation(value = "上传数据集", notes = "根据数据集版本表id上传数据集文件,并将信息存入数据库。") - @ApiImplicitParams({ - @ApiImplicitParam(name = "file", value = "要上传的数据集文件", required = true, dataType = "file", paramType = "form"), - @ApiImplicitParam(name = "dataset_version_id", value = "数据集版本表id", required = true, dataType = "integer", paramType = "path") - }) - public AjaxResult uploadDataset(@RequestParam("file") MultipartFile file, - @PathVariable("dataset_version_id") Integer dataset_version_id) throws Exception { - return AjaxResult.success(this.datasetService.uploadDataset(file, dataset_version_id)); + public AjaxResult uploadDataset(@RequestParam("files") MultipartFile[] files, @RequestParam("dataset_id") Integer datasetId, @RequestParam("version") String version) throws Exception { + return AjaxResult.success(this.datasetService.uploadDataset(files,datasetId,version )); } /** diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java index 685d214b..7183b2fe 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java @@ -53,6 +53,20 @@ public class DatasetVersionController { return AjaxResult.success(this.datasetVersionService.queryById(id)); } + /** + * 通过数据集id和version查询版本列表 + * + * @param datasetId 数据集ID + * @param version 数据集版本 + * @return 匹配的数据集版本记录列表 + */ + @GetMapping("/versions") + public AjaxResult queryByDatasetIdAndVersion(@RequestParam("dataset_id") Integer datasetId, + @RequestParam("version") String version) { + return AjaxResult.success(this.datasetVersionService.queryByDatasetIdAndVersion(datasetId, version)); + } + + /** * 新增数据 * diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsVersionController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsVersionController.java index 4034afcb..88b82547 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsVersionController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelsVersionController.java @@ -52,6 +52,23 @@ public class ModelsVersionController { return AjaxResult.success(this.modelsVersionService.queryById(id)); } + /** + * 通过模型id和version查询版本列表 + * + * @param modelsId 模型ID + * @param version 模型版本 + * @return 匹配的模型版本记录列表 + */ + @GetMapping("/versions") + public AjaxResult queryByModelsIdAndVersion(@RequestParam("models_id") Integer modelsId, + @RequestParam("version") String version) { + return AjaxResult.success(this.modelsVersionService.queryByModelsIdAndVersion(modelsId, version)); + } + + + + + /** * 新增数据 * diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetVersionDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetVersionDao.java index 56c4751d..fb924330 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetVersionDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetVersionDao.java @@ -86,6 +86,9 @@ public interface DatasetVersionDao { DatasetVersion queryByDatasetVersion(DatasetVersion datasetVersion); + List queryByDatasetIdAndVersion(@Param("datasetId") Integer datasetId, @Param("version") String version); + + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java index 085af37d..77040fd4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java @@ -69,7 +69,7 @@ public interface DatasetService { ResponseEntity downloadDataset(Integer id); - Map uploadDataset(MultipartFile file, Integer id) throws Exception; + Map uploadDataset(MultipartFile[] files, Integer id, String version) throws Exception; Map uploadDatasetPipeline(DatasetVersion datasetVersion) throws Exception; } 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 d817f7e1..29b6afec 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 @@ -65,4 +65,6 @@ public interface DatasetVersionService { DatasetVersion duplicateDatasetVersion(DatasetVersion oldDatasetVersion); DatasetVersion queryByDatasetVersion(DatasetVersion datasetVersion); + + List queryByDatasetIdAndVersion(Integer datasetId, String version); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsVersionService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsVersionService.java index cde1e41f..24802210 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsVersionService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsVersionService.java @@ -65,4 +65,6 @@ public interface ModelsVersionService { ModelsVersion duplicateModelsVersion(ModelsVersion oldModelsVersion); ModelsVersion queryByModelsVersion(ModelsVersion modelsVersion); + + List queryByModelsIdAndVersion(Integer modelsId, String version); } 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 d2b190d7..b8a21556 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,7 +4,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.Workflow; +import com.ruoyi.platform.domain.Models; +import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.mapper.DatasetDao; import com.ruoyi.platform.mapper.DatasetVersionDao; import com.ruoyi.platform.service.DatasetService; @@ -14,7 +15,6 @@ import com.ruoyi.platform.utils.MinioUtil; import com.ruoyi.system.api.model.LoginUser; import io.minio.MinioClient; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; @@ -34,7 +34,6 @@ import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -212,65 +211,56 @@ public class DatasetServiceImpl implements DatasetService { /** * 上传数据集 * - * @param file 文件 - * @param id 注意是dataset_version表的主键 + * @param files 文件 + * @param id 注意是dataset_version表的主键 + * @param version * @return 是否成功 */ @Override - public Map uploadDataset(MultipartFile file, Integer id) throws Exception { - if (file.isEmpty()) { - throw new Exception("文件为空,无法上传"); - } - // 获取文件大小并转换为KB - long sizeInBytes = file.getSize(); - double sizeInKB = sizeInBytes / 1024.0; - - // 检查并处理现有的数据集版本记录 - DatasetVersion currentDatasetVersion = this.datasetVersionDao.queryById(id); - if (currentDatasetVersion == null) { - throw new Exception("未找到数据集版本记录"); - } - - DatasetVersion datasetVersionToUse = currentDatasetVersion; - //检查版本下是否存在URL记录 - String url = currentDatasetVersion.getUrl(); - if (url != null && !url.isEmpty()) { - // 逻辑删除当前版本 - currentDatasetVersion.setState(0); - datasetVersionDao.update(currentDatasetVersion); - // 创建并插入新版本 - datasetVersionToUse = this.datasetVersionService.duplicateDatasetVersion(currentDatasetVersion); + public Map uploadDataset(MultipartFile[] files, Integer id, String version) throws Exception { + Map results = new HashMap(); - } - - //查询数据集名称 - Integer datasetID = datasetVersionToUse.getDatasetId(); - Dataset dataset = this.datasetDao.queryById(datasetID); + // 验证模型是否存在 + Dataset dataset = this.datasetDao.queryById(id); if (dataset == null) { - throw new Exception("未找到数据集记录"); + throw new Exception("未找到模型记录"); } - // 其余操作基于 datasetVersionToUse - String username = SecurityUtils.getLoginUser().getUsername(); - String version = datasetVersionToUse.getVersion(); - Date createTime = datasetVersionToUse.getCreateTime(); - String fileName = file.getOriginalFilename(); - // String timestamp = new SimpleDateFormat("yyyyMMdd-HHmmss").format(createTime); - String objectName = "datasets/" + username + "/" + dataset.getName() + "/" + version + "/" + fileName; - - // 上传文件到MinIO - try (InputStream inputStream = file.getInputStream()) { - minioUtil.uploadObject(bucketName, objectName, inputStream); - datasetVersionToUse.setUrl(objectName); - datasetVersionToUse.setFileName(fileName); - datasetVersionToUse.setFileSize(String.valueOf(sizeInKB)); - datasetVersionDao.update(datasetVersionToUse); - } catch (Exception e) { - throw new Exception("上传到数据集失败: " + e.getMessage(), e); + for (MultipartFile file:files){ + if (file.isEmpty()) { + throw new Exception("文件为空,无法上传"); + } + // 获取文件大小并转换为KB + long sizeInBytes = file.getSize(); + double sizeInKB = sizeInBytes / 1024.0; + + // 其余操作基于 modelsVersionToUse + String username = SecurityUtils.getLoginUser().getUsername(); + String fileName = file.getOriginalFilename(); + // String timestamp = new SimpleDateFormat("yyyyMMdd-HHmmss").format(createTime); + String objectName = "datasets/" + username + "/" + dataset.getName() + "/" + version + "/" + fileName; + + // 上传文件到MinIO并将记录新增到数据库中 + try (InputStream inputStream = file.getInputStream()) { + minioUtil.uploadObject(bucketName, objectName, inputStream); + DatasetVersion datasetVersion = new DatasetVersion(); + datasetVersion.setDatasetId(id); + datasetVersion.setVersion(version); + datasetVersion.setUrl(objectName); + datasetVersion.setFileName(fileName); + datasetVersion.setFileSize(String.valueOf(sizeInKB)); + datasetVersionService.insert(datasetVersion); + } catch (Exception e) { + throw new Exception("上传数据集失败: " + e.getMessage(), e); + } + Map fileResult = new HashMap<>(); + fileResult.put("fileName", file.getOriginalFilename()); + fileResult.put("url", objectName); // objectName根据实际情况定义 + results.put(file.getOriginalFilename(), fileResult); + } - Map result = new HashMap(); - result.put("url",objectName); - return result; + return results; + } @Override 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 0facc4a2..30d00e42 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 @@ -145,4 +145,9 @@ public class DatasetVersionServiceImpl implements DatasetVersionService { return datasetVersionDao.queryByDatasetVersion(datasetVersion); } + @Override + public List queryByDatasetIdAndVersion(Integer datasetId, String version) { + return this.datasetVersionDao.queryByDatasetIdAndVersion(datasetId, version); + } + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index fdd8e121..3358c4e4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -319,7 +319,6 @@ public class ModelsServiceImpl implements ModelsService { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (ZipOutputStream zos = new ZipOutputStream(baos)) { //遍历每一个version数据项 - for (ModelsVersion modelsVersion : modelsVersionList) { String objectName = modelsVersion.getUrl(); if (objectName != null && !objectName.isEmpty()) { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java index 8732275d..f676b3a6 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java @@ -150,4 +150,19 @@ public class ModelsVersionServiceImpl implements ModelsVersionService { return this.modelsVersionDao.queryByModelsVersion(modelsVersion); } + + + /** + * 复制模型版本 + * + * @param modelsId 模型的id + * @param version 模型版本号 + * @return 新的模型版本记录列表 + */ + @Override + public List queryByModelsIdAndVersion(Integer modelsId, String version) { + return this.modelsVersionDao.queryAllByModelsVersion(modelsId, version) ; + + } + } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetVersionDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetVersionDaoMapper.xml index b9240f6c..366171f4 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetVersionDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DatasetVersionDaoMapper.xml @@ -49,6 +49,24 @@ limit 1 + + + + +