package org.springblade.mdm.program.service.programannotation; import com.qiniu.util.IOUtils; import org.apache.commons.io.FilenameUtils; 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; import java.io.InputStream; import java.util.List; import java.util.regex.Pattern; @Component("fanucProcessor") public class FanucProcessor extends AbstractProcessor{ @Autowired private ProgramAnnotationService programAnnotationService; private String controlSystem; //AnnotationProperties annotationProperties; private Pattern PATTERN = Pattern.compile("^[oO]\\d{4}"); private final int O_LINE = 1; @Override public InputStream setAnnotation(AnnotationData annoData,InputStream inputStream) throws IOException { //在O0001 这种文字后面增加文件名(不带扩展名) ByteArrayInputStream bais = new ByteArrayInputStream(IOUtils.toByteArray(inputStream)); String line = FileContentUtil.readLineAt(bais,O_LINE); bais.reset(); boolean oMatched = PATTERN.matcher(line).matches(); InputStream ins1; if(oMatched){ List annoDicts = programAnnotationService.getAnnotionDictList(); String newline = line + generateAnnotation(FilenameUtils.removeExtension(annoData.getFilename()),getControlSystem(),annoDicts); ins1 = FileContentUtil.replaceAtLine(bais,O_LINE,newline); }else{ ins1 = bais; } return super.setAnnotation(annoData, ins1); } @Override public void setControlSystem(String controlSystemDictVal) { this.controlSystem = controlSystemDictVal; } @Override public String getControlSystem() { return this.controlSystem; } }