瀏覽代碼

fix openDir bugs

allen 2 周之前
父節點
當前提交
6f7b095017

+ 46 - 44
taais-modules/taais-biz/src/main/java/com/taais/biz/controller/DataAugmentationController.java

@@ -1,62 +1,54 @@
 package com.taais.biz.controller;
 
 
-import java.io.*;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.DirectoryStream;
-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.stream.Stream;
-
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.mybatisflex.core.query.QueryWrapper;
 import com.taais.biz.domain.CommonAlgorithmConfig;
 import com.taais.biz.domain.DataAugmentation;
-import com.taais.biz.domain.bo.CommonAlgorithmConfigBo;
 import com.taais.biz.domain.bo.DataAugmentationBo;
 import com.taais.biz.domain.bo.DataAugmentationResultBo;
-import com.taais.biz.domain.bo.VideoStableStartResultBo;
 import com.taais.biz.domain.dto.Metric;
-import com.taais.biz.domain.vo.*;
+import com.taais.biz.domain.vo.DataAugmentationVo;
+import com.taais.biz.domain.vo.ImageUrlPair;
+import com.taais.biz.domain.vo.TaskDictDataVo;
+import com.taais.biz.domain.vo.VideoUrl;
 import com.taais.biz.service.ICommonAlgorithmConfigService;
+import com.taais.biz.service.IDataAugmentationService;
 import com.taais.biz.service.IVideoStableService;
+import com.taais.biz.utils.NaturalOrderComparator;
 import com.taais.common.core.config.TaaisConfig;
-import com.taais.common.core.service.OssService;
-import com.taais.system.domain.SysDictData;
-import com.taais.system.domain.SysOss;
+import com.taais.common.core.core.domain.CommonResult;
+import com.taais.common.core.core.page.PageResult;
+import com.taais.common.log.annotation.Log;
+import com.taais.common.log.enums.BusinessType;
+import com.taais.common.web.annotation.RepeatSubmit;
+import com.taais.common.web.core.BaseController;
 import com.taais.system.service.ISysDictDataService;
 import com.taais.system.service.ISysOssService;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
-import jakarta.servlet.http.HttpServletResponse;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import org.apache.commons.compress.archivers.ar.ArArchiveEntry;
 import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.FileSystemResource;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
-import com.taais.common.core.core.domain.CommonResult;
-import com.taais.common.excel.utils.ExcelUtil;
-import com.taais.common.log.annotation.Log;
-import com.taais.common.log.enums.BusinessType;
-import com.taais.common.web.annotation.RepeatSubmit;
-import com.taais.common.web.core.BaseController;
-import jakarta.annotation.Resource;
-import com.taais.biz.service.IDataAugmentationService;
-
-import com.taais.common.core.core.page.PageResult;
+import org.springframework.web.bind.annotation.*;
 
-import static com.taais.biz.service.impl.ToInfraredServiceImpl.readLogContent;
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+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.stream.Stream;
 
 /**
  * 数据增强Controller
@@ -107,24 +99,34 @@ public class DataAugmentationController extends BaseController {
         return -1;
     }
 
-    public static List<ImageUrlPair> generateFilePairs(Path inputPath, Path outputPath) throws IOException {
-        String localPath = TaaisConfig.getProfile();
-        Path localPathPath = Paths.get(localPath);
+public static List<ImageUrlPair> generateFilePairs(Path inputPath, Path outputPath) throws IOException {
+    String localPath = TaaisConfig.getProfile();
+    Path localPathPath = Paths.get(localPath);
 
+    // 使用Apache Commons IO的自然排序比较器
+    Comparator<Path> naturalOrderComparator = Comparator.comparing(
+            path -> path.getFileName().toString(),
+            new NaturalOrderComparator()
+    );
 
-        // 替换路径
-        return Files.list(inputPath)
-            .filter(Files::isRegularFile)  // 只处理文件
-            .sorted(Comparator.comparing(path -> path.getFileName().toString()))
+    return Files.list(inputPath)
+            .filter(Files::isRegularFile)
+            .sorted(naturalOrderComparator)
             .map(path -> {
                 String fileName = path.getFileName().toString();
                 ImageUrlPair imageUrlPair = new ImageUrlPair();
-                imageUrlPair.setInputUrl(inputPath.resolve(fileName).toString().replace(localPathPath.toString(), "/profile").replace("\\", "/"));
-                imageUrlPair.setOutputUrl(outputPath.resolve(fileName).toString().replace(localPathPath.toString(), "/profile").replace("\\", "/"));
+                imageUrlPair.setInputUrl(inputPath.resolve(fileName).toString()
+                        .replace(localPathPath.toString(), "/profile")
+                        .replace("\\", "/")
+                );
+                imageUrlPair.setOutputUrl(outputPath.resolve(fileName).toString()
+                        .replace(localPathPath.toString(), "/profile")
+                        .replace("\\", "/")
+                );
                 return imageUrlPair;
             })
             .collect(Collectors.toList());
-    }
+}
     //新接口获取图片对序列,返回支持前端PreviewCompareImages组件的数据格式
     @GetMapping("/imageCompare/{task_id}")
     public CommonResult<List<ImageUrlPair>> getCompareImageSeq(@PathVariable("task_id") Long taskId) throws IOException {

+ 1 - 1
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/TrackSequenceServiceImpl.java

@@ -209,7 +209,7 @@ public class TrackSequenceServiceImpl extends BaseServiceImpl<TrackSequenceMappe
 
     public TrackSequence packageTrackSequence(TrackSequenceBo entityBo, SysOssVo ossEntity) {
         TrackSequence entity = new TrackSequence();
-        entity.setInputOssId(entityBo.getInputOssId());
+        entity.setInputOssId(ossEntity.getOssId()); // fix bugs
         entity.setUrl(ossEntity.getUrl());
         entity.setZipFilePath(ossEntity.getFileName());
         entity.setName(entityBo.getName());

+ 37 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/utils/NaturalOrderComparator.java

@@ -0,0 +1,37 @@
+package com.taais.biz.utils;
+
+import java.util.Comparator;
+
+public class NaturalOrderComparator implements Comparator<String> {
+    @Override
+    public int compare(String a, String b) {
+        int ia = 0, ib = 0;
+        while (ia < a.length() && ib < b.length()) {
+            char ca = a.charAt(ia);
+            char cb = b.charAt(ib);
+
+            if (Character.isDigit(ca) && Character.isDigit(cb)) {
+                int numA = 0, numB = 0;
+
+                // 提取完整数字
+                while (ia < a.length() && Character.isDigit(a.charAt(ia))) {
+                    numA = numA * 10 + (a.charAt(ia++) - '0');
+                }
+                while (ib < b.length() && Character.isDigit(b.charAt(ib))) {
+                    numB = numB * 10 + (b.charAt(ib++) - '0');
+                }
+
+                if (numA != numB) {
+                    return Integer.compare(numA, numB);
+                }
+            } else {
+                if (ca != cb) {
+                    return Character.compare(ca, cb);
+                }
+                ia++;
+                ib++;
+            }
+        }
+        return Integer.compare(a.length(), b.length());
+    }
+}