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