yangys
2025-08-30 86c8efdb19a2f4be79a947650ef62ed79382011b
blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/OssTestController.java
@@ -7,10 +7,16 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.oss.model.BladeFile;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.FileUtil;
import org.springblade.mdm.program.service.ProgramAnnotationService;
import org.springblade.mdm.utils.FileContentUtil;
import org.springblade.system.pojo.entity.Dict;
import org.springblade.system.pojo.entity.DictBiz;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -36,6 +42,7 @@
@Slf4j
public class OssTestController {
   private final OssTemplate ossTemplate;
   private final ProgramAnnotationService programAnnotationService;
   @GetMapping("/readzip")
   @ApiOperationSupport(order = 2)
   @Operation(summary = "读zip")
@@ -68,54 +75,61 @@
      System.out.println(entryNameList);
      /*
      try (ZipFile zipFile = new ZipFile(tempFile.toFile())) {
         ZipEntry entry = zipFile.getEntry(entryn);
         InputStream ins = zipFile.getInputStream(entry);
         Path outputPath = Paths.get("d:/downtest.txt");
         Files.copy(ins, outputPath, StandardCopyOption.REPLACE_EXISTING);
      }
         List<String> entryNameList = new ArrayList<>();
      try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(bytes);
          ZipFile zipFile = new ZipFile(channel)) {
         ZipArchiveEntry entry;
         Enumeration<ZipArchiveEntry> entries = zipFile.getEntries();
         String entryn = "CP1-13-1/CP1-13-1-1-1-1.txt";
         while (entries.hasMoreElements()) {
            entry = entries.nextElement();
            entryNameList.add(entry.getName());
         }
      }*/
         /*
      try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(bytes);
          ZipFile zipFile = new ZipFile(channel)) {
         List<String> dirList = entryNameList.stream().filter(s -> s.endsWith("/")).toList();
         for(String dir : dirList) {
            entryNameList.stream().filter(s -> s.startsWith(dir)).forEach(entryName -> {
               ZipArchiveEntry fileEntry = zipFile.getEntry(entryName);
               //ZipArchiveEntry fileEntry = entryMap.get(entryName);
               String fileName = StringUtils.removeStart(entryName,dir);//去除文件名路径部分
               try {
                  InputStream ins = zipFile.getInputStream(fileEntry);
                  ByteArrayInputStream byteS = new ByteArrayInputStream(ins.readAllBytes());
                  Path outputPath = Paths.get("d:/downtest.txt");
                  Files.copy(byteS, outputPath, StandardCopyOption.REPLACE_EXISTING);
                  byteS.reset();
                  BladeFile newOssFile = ossTemplate.putFile("mdm", fileName, byteS);
                  r.setData(newOssFile.getName());
                  System.out.println(newOssFile.getName());
               } catch (IOException e) {
                  throw new RuntimeException(e);
               }
            });
         }
      }*/
      return r;
   }
   @GetMapping("/replace")
   @ApiOperationSupport(order = 2)
   @Operation(summary = "替换内容")
   public R<String> replace(String filepath) throws IOException {
      File file = new File(filepath);
      FileInputStream fis = new FileInputStream(file);
      InputStream newins = FileContentUtil.replaceAtLine(fis,2,"GHTEST");
      BladeFile bfile = ossTemplate.putFile("replaceok.txt",newins);
      return R.data(bfile.getLink()+","+bfile.getName());
   }
   /*
   @GetMapping("/replace2")
   @ApiOperationSupport(order = 2)
   @Operation(summary = "替换内容2")
   public R<String> replace() throws IOException {
      String ossName = "upload/20250816/fb971fa2186b5572443687e9fa425123.txt";//这是里面已有的文件
      String filename = "CP3-1-1-1.txt";
      String machineGroup = "FANUC";
      List<DictBiz> annoDicts = programAnnotationService.getAnnotionList();
      BladeFile bfile = null;
      try(InputStream ins = ossTemplate.statFileStream(ossName);){
         byte[] bytes = IOUtils.toByteArray(ins);
         ByteArrayInputStream byteins =  new ByteArrayInputStream(bytes);
         String annoTxt = programAnnotationService.generateAnnotation("GH",machineGroup,annoDicts);
         int statusLineIndex = 2;
         String line2 = FileContentUtil.readLineAt(byteins,statusLineIndex);//第三行应该是状态注释
         byteins.reset();
         InputStream finishedStream;
         if(programAnnotationService.isAnnotation(line2,machineGroup,annoDicts)){
            finishedStream = FileContentUtil.replaceAtLine(byteins,statusLineIndex,annoTxt);
         }else{
            finishedStream = FileContentUtil.insertLine(byteins,statusLineIndex,annoTxt);
         }
         try(finishedStream) {
            finishedStream.reset();
            bfile = ossTemplate.putFile(filename, finishedStream);
            //替换原有的文件地址
            //flowProgramFile.setOssName(bfile.getName());
         }
      }
      InputStream ins  = ossTemplate.statFileStream(ossName);
      InputStream newins = FileContentUtil.replaceAtLine(fis,2,"GHTEST");
      BladeFile bfile = ossTemplate.putFile("replaceok.txt",newins);
      return R.data(bfile.getLink()+","+bfile.getName());
   }
*/
}