From e2761cb8d263f3d1021732cfec0597480eb39324 Mon Sep 17 00:00:00 2001 From: ddmte32 Date: Fri, 1 Aug 2025 16:25:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/NewDatasetFromGitController.java | 13 +++++++ .../platform/service/NewDatasetService.java | 2 ++ .../service/impl/NewDatasetServiceImpl.java | 35 ++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index d067a796..9cbbb95a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -62,6 +62,19 @@ public class NewDatasetFromGitController { } + /** + * 查询最新版本 + * + * @param datasetVo 实体 + * @return 最新版本 + */ + @PostMapping("/queryNextVersion") + @ApiOperation("查询最新版本") + public AjaxResult queryNextVersion(@RequestBody NewDatasetVo datasetVo) throws Exception { + return AjaxResult.success("查询成功",this.newDatasetService.getNextVersion(datasetVo)); + + } + @PutMapping("/updateVersionDesc") @ApiOperation("修改版本描述") public AjaxResult updateVersionDesc(@RequestBody NewDatasetVo datasetVo) throws Exception { diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java index 04d994ae..5d5fc4ce 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java @@ -46,4 +46,6 @@ public interface NewDatasetService { String newCreateVersionFromLabelStudio(LabelDatasetVersionVo datasetVo) throws Exception; List convert(List> lst, String datasetTopic, String datasetTagName, String datasetTypeName); + + String getNextVersion(NewDatasetVo datasetVo) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 13c19dcc..5cdfb8f9 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -36,6 +36,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -174,12 +176,14 @@ public class NewDatasetServiceImpl implements NewDatasetService { dvcUtils.dvcPush(localPath); // 创建分支 - newCreateVersion(datasetVo); + //TODO 取消创建新版本 +// newCreateVersion(datasetVo); return "新增数据集成功"; } public String newCreateVersion(NewDatasetVo datasetVo) throws Exception { List> versionList = getVersionList(datasetVo.getIdentifier(), datasetVo.getOwner()); + //TODO 查出最新的自定义版本,在此基础上升级一个版本 for (Map versionMap : versionList) { String version = (String) versionMap.get("name"); if (version.equals(datasetVo.getVersion())) { @@ -706,6 +710,35 @@ public class NewDatasetServiceImpl implements NewDatasetService { return new ArrayList<>(); } + @Override + public String getNextVersion(NewDatasetVo datasetVo) throws Exception { + List> versionList = getVersionList(datasetVo.getIdentifier(), datasetVo.getOwner()); + return incrementVersion(versionList); + } + + /** + * 从Map列表中提取"v+数字"格式的版本号并升级 + * + * @param versionList 包含版本号的Map列表 + * @return 新版本号(如"v3"),找不到时返回"v1" + */ + private String incrementVersion(List> versionList) { + int maxVersionNumber = 0; + Pattern versionPattern = Pattern.compile("^v(\\d+)$"); // 严格匹配"V"开头+数字 + + // 1. 遍历所有Map,找出符合格式的最大版本号 + for (Map map : versionList) { + Matcher matcher = versionPattern.matcher(StrUtil.toString(map.get("name"))); + if (matcher.find()) { + int currentNum = Integer.parseInt(matcher.group(1)); + maxVersionNumber = Math.max(maxVersionNumber, currentNum); + } + } + + // 2. 返回结果(找不到时返回V1) + return maxVersionNumber > 0 ? "v" + (maxVersionNumber + 1) : "v1"; + } + private NewDatasetVo addDatasetSourceToDataVo(NewDatasetVo datasetVo) { DatasetTempStorage queryDatasetTempStorage = new DatasetTempStorage(); queryDatasetTempStorage.setName(datasetVo.getIdentifier());