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;
|
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 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 programAnno = AnnotationUtil.generateAnnotation(FilenameUtils.removeExtension(annoData.getFilename()),getControlSystem(),annoDicts);
|
|
ins1 = FileContentUtil.replaceAtLine(byteStream,getAnnotationProperties().getProgramNameLineIndex(),genProgramNameLine(line,programAnno));
|
}else{
|
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) {
|
this.controlSystem = controlSystemDictVal;
|
}
|
|
@Override
|
public String getControlSystem() {
|
return this.controlSystem;
|
}
|
}
|