yangys
2025-09-19 e70c88930c51c7afeb3cc2ac72fbe6fad86a942c
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
@@ -1,11 +1,11 @@
package org.springblade.mdm.program.service.programannotation;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.springblade.mdm.program.service.ProgramAnnotationService;
import org.springblade.mdm.utils.FileContentUtil;
import org.springblade.system.pojo.entity.DictBiz;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -18,10 +18,50 @@
   private ProgramAnnotationService programAnnotationService;
   protected AnnotationProperties annotationProperties;
   @Override
   public InputStream putSendPathAnnotation(String sendPath, InputStream inputStream,List<DictBiz> annoDicts) throws IOException{
      InputStream finishedStream;
      try(inputStream){
         ByteArrayInputStream byteInputStream =  new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
         //1加入发送路径的注释
         String sendPathAnnotation = AnnotationUtil.generateAnnotation(sendPath,getControlSystem(),annoDicts);//加了注释之后的文本
         String sendDirLine = FileContentUtil.readLineAt(byteInputStream,annotationProperties.getSendPathLineIndex());//第2行是发送路径
         byteInputStream.reset();
         if(AnnotationUtil.isAnnotation(sendDirLine,getControlSystem(),annoDicts)){
            finishedStream = FileContentUtil.replaceAtLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
         }else{
            finishedStream = FileContentUtil.insertLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
         }
         finishedStream.reset();
      }
      return finishedStream;
   }
   @Override
   public InputStream putFilenameAnnotation(String fileName, InputStream inputStream) throws IOException {
      List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
      ByteArrayInputStream bais = new ByteArrayInputStream(com.qiniu.util.IOUtils.toByteArray(inputStream));
      String line = FileContentUtil.readLineAt(bais, annotationProperties.getProgramNameLineIndex());
      bais.reset();
      boolean isAnnotation = AnnotationUtil.isAnnotation(line,this.getControlSystem(),annoDicts);
      InputStream insAfter;
      //加入程序名注释行
      String proNameLine =  AnnotationUtil.generateAnnotation(FilenameUtils.removeExtension(fileName),getControlSystem(),annoDicts);
      if(isAnnotation){
         insAfter = FileContentUtil.replaceAtLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine);
      }else{
         insAfter = FileContentUtil.insertLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine);
      }
      return insAfter;
   }
   @Override
   public InputStream setAnnotation(AnnotationData annoData,InputStream inputStream) throws IOException {
   public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
      List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
      InputStream finishedStream;
@@ -29,7 +69,8 @@
         ByteArrayInputStream byteInputStream =  new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
         //1加入发送路径的注释
         String sendPathAnnotation = generateAnnotation(annoData.getSendPath(),getControlSystem(),annoDicts);//加了注释之后的文本
         /*
         String sendPathAnnotation = AnnotationUtil.generateAnnotation(annoData.getSendPath(),getControlSystem(),annoDicts);//加了注释之后的文本
         String sendDirLine = FileContentUtil.readLineAt(byteInputStream,annotationProperties.getSendPathLineIndex());//第2行是发送路径
         byteInputStream.reset();
@@ -37,16 +78,23 @@
         byteInputStream.reset();
         InputStream insAfterSetSendDir ;
         if(isAnnotation(sendDirLine,getControlSystem(),annoDicts)){
         if(AnnotationUtil.isAnnotation(sendDirLine,getControlSystem(),annoDicts)){
            insAfterSetSendDir = FileContentUtil.replaceAtLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
         }else{
            insAfterSetSendDir = FileContentUtil.insertLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
         }
         insAfterSetSendDir.reset();
         */
         InputStream insAfterSetSendDir = putSendPathAnnotation(annoData.getSendPath(),byteInputStream,annoDicts);
         String statusLine = FileContentUtil.readLineAt(insAfterSetSendDir,annotationProperties.getStatusLineIndex());//状态注释
         insAfterSetSendDir.reset();
         //加入状态注释行
         String statusAnnotation = generateAnnotation(annoData.getProgramStatus(),getControlSystem(),annoDicts);//注释后的状态文本
         if(isAnnotation(statusLine,getControlSystem(),annoDicts)){
         String statusAnnotation = AnnotationUtil.generateAnnotation(annoData.getProgramStatus(),getControlSystem(),annoDicts);//注释后的状态文本
         if(AnnotationUtil.isAnnotation(statusLine,getControlSystem(),annoDicts)){
            finishedStream = FileContentUtil.replaceAtLine(insAfterSetSendDir,annotationProperties.getStatusLineIndex(),statusAnnotation);
         }else{
            finishedStream = FileContentUtil.insertLine(insAfterSetSendDir,annotationProperties.getStatusLineIndex(),statusAnnotation);
@@ -64,6 +112,10 @@
      this.annotationProperties= annotationProperties;
   }
   @Override
   public AnnotationProperties getAnnotationProperties(){
      return annotationProperties;
   }
   public abstract String getControlSystem();
}