yangys
2025-09-20 fcee672452c02cc29e0e17ebc27a8c51698c6d0d
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/FanucProcessor.java
@@ -19,27 +19,39 @@
   @Autowired
   private ProgramAnnotationService programAnnotationService;
   private String controlSystem;
   private Pattern PATTERN = Pattern.compile("^[oO]\\d{4}");
   private final int O_LINE = 1;
   static final Pattern PATTERN = Pattern.compile("^[oO]\\d{4}.*");
   //private final int O_LINE = 1;
   @Override
   public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
      //在O0001 这种文字后面增加文件名(不带扩展名)
      ByteArrayInputStream bais = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
      String line = FileContentUtil.readLineAt(bais,O_LINE);
      bais.reset();
      ByteArrayInputStream byteStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
      //String line = FileContentUtil.readLineAt(byteStream,O_LINE);
      String line = FileContentUtil.readLineAt(byteStream,getAnnotationProperties().getProgramNameLineIndex());
      byteStream.reset();
      boolean oMatched = PATTERN.matcher(line).matches();
      InputStream ins1;
      if(oMatched){
         List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
         String newline =  line + AnnotationUtil.generateAnnotation(FilenameUtils.removeExtension(annoData.getFilename()),getControlSystem(),annoDicts);
         ins1 = FileContentUtil.replaceAtLine(bais,O_LINE,newline);
         String programAnno =  AnnotationUtil.generateAnnotation(FilenameUtils.removeExtension(annoData.getFilename()),getControlSystem(),annoDicts);
         ins1 = FileContentUtil.replaceAtLine(byteStream,getAnnotationProperties().getProgramNameLineIndex(),genProgramNameLine(line,programAnno));
      }else{
         ins1 = bais;
         ins1 = byteStream;
      }
      return super.putAnnotation(annoData, ins1);
   }
   /**
    * 生成程序名称注释行,O[4位数字](程序名) ,需要将用户自己的程序名去或其他注释掉放后面
    * @param oriLine 原始行文本
    * @param programNameAnno 程序注释文本:(程序名)
    * @return Oxxxx+程序注释文本
    */
   String genProgramNameLine(String oriLine,String programNameAnno){
      return oriLine.substring(0,5)+programNameAnno;
   }
   @Override
   public void setControlSystem(String controlSystemDictVal) {