|
package org.springblade.mdm.program.service;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springblade.core.tool.api.R;
|
import org.springblade.system.feign.IDictClient;
|
import org.springblade.system.pojo.entity.Dict;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Collections;
|
import java.util.List;
|
import java.util.Optional;
|
|
/**
|
* 下发/回传程序统计
|
*
|
* @author yangys
|
*/
|
@Slf4j
|
@Service
|
public class ProgramAnnotationService {
|
|
@Autowired
|
private IDictClient dictClient;
|
|
private static final String DEFAULT_ANNOTATION_SETTING = "(,)";
|
|
public static final String ANNOTATION_DICT = "machine_annotation";
|
|
public List<Dict> getAnnotionList(){
|
List<Dict> annotationList;
|
R<List<Dict>> dictsResult = dictClient.getList(ANNOTATION_DICT);
|
if(dictsResult.isSuccess()) {
|
annotationList = dictsResult.getData();
|
}else{
|
annotationList = Collections.emptyList();
|
}
|
|
return annotationList;
|
}
|
|
|
/**
|
* 判断一行文本是否是注释
|
* @param line
|
* @param annotationList 注释注释字典项列表
|
* @return
|
*/
|
public boolean isAnnotation(String line,String machineGroupCode,List<Dict> annotationList){
|
boolean isAnno = false;
|
Optional<Dict> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst();
|
String annotationSetting = DEFAULT_ANNOTATION_SETTING;
|
if(dictOpt.isPresent()) {
|
annotationSetting = dictOpt.get().getRemark();
|
}
|
String begin = "";
|
String end = "";
|
String[] arr = annotationSetting.split(",");
|
if(arr.length == 2){
|
begin = arr[0];
|
end = arr[1];
|
}
|
isAnno = StringUtils.startsWith(line,begin) && StringUtils.endsWith(line,end);
|
return isAnno;
|
}
|
|
|
|
public String generateAnnotation(String oriTest,String machineGroupCode,List<Dict> annotationList) {
|
|
String annotation = oriTest;
|
String begin = "(";
|
String end = ")";
|
|
Optional<Dict> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst();
|
String annotationSetting = DEFAULT_ANNOTATION_SETTING;
|
if(dictOpt.isPresent()) {
|
annotationSetting = dictOpt.get().getRemark();
|
}
|
String[] arr = StringUtils.split(annotationSetting,",");
|
if(arr.length == 2){
|
begin = arr[0];
|
end = arr[1];
|
}else if(arr.length == 1){
|
begin = begin = arr[0];
|
end = "";
|
}
|
|
annotation = begin + oriTest + end;
|
return annotation;
|
}
|
|
public String[] getAnnotationStartAndEnd(String machineGroupCode,List<Dict> annotationList) {
|
|
String begin = "(";
|
String end = ")";
|
|
Optional<Dict> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst();
|
String annotationSetting = DEFAULT_ANNOTATION_SETTING;
|
if(dictOpt.isPresent()) {
|
annotationSetting = dictOpt.get().getRemark();
|
}
|
String[] arr = StringUtils.split(annotationSetting,",");
|
if(arr.length == 2){
|
begin = arr[0];
|
end = arr[1];
|
}else if(arr.length == 1){
|
begin = arr[0];
|
end = "";
|
}
|
|
|
return new String[]{begin,end};
|
}
|
|
public String removeAnnotation(String machineGroupCode,String text,String begin,String end){
|
List<Dict> annoDicts = getAnnotionList();
|
String[] arr = getAnnotationStartAndEnd(machineGroupCode,annoDicts);
|
return removeAnnotationInner(text,begin,end);
|
}
|
|
public static String removeAnnotationInner(String text,String begin,String end){
|
String temp = StringUtils.removeEnd(StringUtils.removeStart(text,begin),end);
|
return temp;
|
}
|
}
|