Browse Source

数据集自动升级版本

dev-opt-cp
ddmte32 8 months ago
parent
commit
e2761cb8d2
3 changed files with 49 additions and 1 deletions
  1. +13
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java
  2. +2
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/NewDatasetService.java
  3. +34
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java

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

@@ -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 {


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

@@ -46,4 +46,6 @@ public interface NewDatasetService {
String newCreateVersionFromLabelStudio(LabelDatasetVersionVo datasetVo) throws Exception;

List<NewDatasetVo> convert(List<Map<String, Object>> lst, String datasetTopic, String datasetTagName, String datasetTypeName);

String getNextVersion(NewDatasetVo datasetVo) throws Exception;
}

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

@@ -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<Map<String, Object>> versionList = getVersionList(datasetVo.getIdentifier(), datasetVo.getOwner());
//TODO 查出最新的自定义版本,在此基础上升级一个版本
for (Map<String, Object> 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<Map<String, Object>> versionList = getVersionList(datasetVo.getIdentifier(), datasetVo.getOwner());
return incrementVersion(versionList);
}

/**
* 从Map列表中提取"v+数字"格式的版本号并升级
*
* @param versionList 包含版本号的Map列表
* @return 新版本号(如"v3"),找不到时返回"v1"
*/
private String incrementVersion(List<Map<String, Object>> versionList) {
int maxVersionNumber = 0;
Pattern versionPattern = Pattern.compile("^v(\\d+)$"); // 严格匹配"V"开头+数字

// 1. 遍历所有Map,找出符合格式的最大版本号
for (Map<String, Object> 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());


Loading…
Cancel
Save