From b7af95d487f49490de16f9636147e5a40911e157 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 29 八月 2025 23:36:48 +0800
Subject: [PATCH] 确认表增加程序编号
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProgramAnnotationService.java | 156 +++++++++++++++++++++++++++++++++------------------
1 files changed, 101 insertions(+), 55 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProgramAnnotationService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProgramAnnotationService.java
index 8a1f63f..5bcd37e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProgramAnnotationService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProgramAnnotationService.java
@@ -4,7 +4,10 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
+import org.jetbrains.annotations.NotNull;
+import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.api.R;
+import org.springblade.mdm.program.vo.ProgramAnnotation;
import org.springblade.mdm.utils.FileContentUtil;
import org.springblade.system.feign.IDictBizClient;
import org.springblade.system.pojo.entity.DictBiz;
@@ -42,16 +45,19 @@
*/
public static final int STATUS_LINE_INDEX = 2;
+ /**
+ * 鍋忕鍗曟敞閲婅绱㈠紩鍙� 0 based
+ */
+ public static final int STATUS_DEVIATION_INDEX = 3;
+
public static final String SQ = "SQ";
public static final String GH = "GH";
public static final String PL = "PL";
- public List<DictBiz> getAnnotionList(){
+ public List<DictBiz> getAnnotionDictList(){
List<DictBiz> annotationList;
- //R<List<Dict>> dictsResult = dictClient.getList(ANNOTATION_DICT);
+
R<List<DictBiz>> dictBizResult = bizDictClient.getList(ANNOTATION_DICT);
- R<List<DictBiz>> gr = bizDictClient.getList("machine_group");
- R<List<DictBiz>> gcate = bizDictClient.getList("org_category");
if(dictBizResult.isSuccess()) {
annotationList = dictBizResult.getData();
}else{
@@ -70,30 +76,20 @@
*/
public boolean isAnnotation(String line,String machineGroupCode,List<DictBiz> annotationList){
boolean isAnno = false;
- Optional<DictBiz> 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];
- }
+
+ ProgramAnnotation progAnnotation = this.getProgramAnnotationFormat(machineGroupCode,annotationList);
+
line = StringUtils.trim(line);//鍘婚灏剧┖鏍�
- isAnno = StringUtils.startsWith(line,begin) && StringUtils.endsWith(line,end);
- return isAnno;
+ return progAnnotation.isAnnotation(line);
}
public String generateAnnotation(String oriTest,String machineGroupCode,List<DictBiz> annotationList) {
+ /*
String annotation = oriTest;
String begin = "(";
String end = ")";
-
Optional<DictBiz> dictOpt = annotationList.stream().filter(dict -> {return dict.getDictKey().equals(machineGroupCode);}).findFirst();
String annotationSetting = DEFAULT_ANNOTATION_SETTING;
if(dictOpt.isPresent()) {
@@ -104,14 +100,14 @@
begin = arr[0];
end = arr[1];
}else if(arr.length == 1){
- begin = begin = arr[0];
+ begin = arr[0];
end = "";
}
-
- annotation = begin + oriTest + end;
- return annotation;
+ */
+ ProgramAnnotation progAnnotation = this.getProgramAnnotationFormat(machineGroupCode,annotationList);
+ return progAnnotation.addAnnotation(oriTest);
}
-
+ /*
public String[] getAnnotationStartAndEnd(String machineGroupCode,List<DictBiz> annotationList) {
String begin = "(";
@@ -130,54 +126,69 @@
begin = arr[0];
end = "";
}
-
-
+ ProgramAnnotation progAnno = this.getProgramAnnotationFormat(machineGroupCode,annotationList);
return new String[]{begin,end};
}
-
- public String removeAnnotation(String machineGroupCode,String text,String begin,String end){
- List<DictBiz> 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;
- }
-
-
+*/
/**
- * 璁剧疆鍥哄寲娉ㄩ噴琛�
- * @param inputStream
- * @param machineGroup
- * @param annoDicts
- * @return
- * @throws IOException
+ * 鎻愬彇娉ㄩ噴涓殑鏂囨湰
+ * @param machineGroupCode 鏈哄簥缁勪唬鐮�
+ * @param text 娓呴櫎娉ㄩ噴鏍囪
+ * @return 娓呴櫎鍚庣殑鏂囨湰
*/
- public InputStream setGHAnnotation(InputStream inputStream, String machineGroup,List<DictBiz> annoDicts) throws IOException {
- //
+ public String removeAnnotation(String machineGroupCode,String text){
+ List<DictBiz> annoDicts = getAnnotionDictList();
+ ProgramAnnotation panno = this.getProgramAnnotationFormat(machineGroupCode,annoDicts);
+ //String[] arr = getAnnotationStartAndEnd(machineGroupCode,annoDicts);
+ return panno.cleanAnnotation(text);
+ }
+ /**
+ * 璁剧疆鍥哄寲娉ㄩ噴琛�
+ * @param inputStream 杈撳叆妗�
+ * @param machineGroup 鏈哄簥缁勭紪鐮�
+ * @param annoDictList 娉ㄩ噴瀛楀吀閰嶇疆
+ * @return 鍔犲ソ娉ㄩ噴鐨�
+ * @throws IOException
+ */
+ public InputStream setGHAnnotation(InputStream inputStream, String machineGroup,List<DictBiz> annoDictList) throws IOException {
+ return setAnnotationAndGetInputStream(inputStream, machineGroup, annoDictList, GH, STATUS_LINE_INDEX);
+ }
+
+ /**
+ * 璁剧疆鍋忕鍗曟敞閲�
+ * @param inputStream 鏂囨湰杈撳叆娴�
+ * @param machineGroup 鏈哄簥缁勪唬鐮�
+ * @param annoDictList 娉ㄩ噴瀛楀吀閰嶇疆
+ * @return 鍔犲ソ娉ㄩ噴鐨勮緭鍏ユ祦
+ * @throws IOException 璁块棶娴佸彲鑳芥姏鍑哄紓甯�
+ */
+ public InputStream setPldAnnotation(String deviation,InputStream inputStream,String machineGroup,List<DictBiz> annoDictList) throws IOException {
+ return setAnnotationAndGetInputStream(inputStream, machineGroup, annoDictList, deviation, STATUS_DEVIATION_INDEX);
+ }
+
+ @NotNull
+ private InputStream setAnnotationAndGetInputStream(InputStream inputStream, String machineGroup, List<DictBiz> annoDictList, String text, int lineIndex) throws IOException {
InputStream finishedStream;
try(inputStream){
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
- String annoTxt = generateAnnotation(GH,machineGroup,annoDicts);//鍔犱簡娉ㄩ噴涔嬪悗鐨勬枃鏈�
+ String annoTxt = generateAnnotation(text,machineGroup,annoDictList);//鍔犱簡娉ㄩ噴涔嬪悗鐨勬枃鏈�
- String lineText = FileContentUtil.readLineAt(byteInputStream,STATUS_LINE_INDEX);//绗笁琛屽簲璇ユ槸鐘舵�佹敞閲�
+ String lineText = FileContentUtil.readLineAt(byteInputStream, lineIndex);
byteInputStream.reset();
- if(isAnnotation(lineText,machineGroup,annoDicts)){
- finishedStream = FileContentUtil.replaceAtLine(byteInputStream,STATUS_LINE_INDEX,annoTxt);
+ if(isAnnotation(lineText,machineGroup,annoDictList)){
+ finishedStream = FileContentUtil.replaceAtLine(byteInputStream, lineIndex,annoTxt);
}else{
- finishedStream = FileContentUtil.insertLine(byteInputStream,STATUS_LINE_INDEX,annoTxt);
+ finishedStream = FileContentUtil.insertLine(byteInputStream, lineIndex,annoTxt);
}
finishedStream.reset();
-
}
return finishedStream;
}
+
/**
* 涓鸿緭鍏ユ祦璁剧疆鍙戦�佺洰褰�(绗簩琛�)鍜岀姸鎬侊紙绗笁琛岋級
@@ -189,7 +200,7 @@
* @throws IOException
*/
public InputStream setSendDirAndStatusAnnotation(String sendPath,String statusText,InputStream inputStream, String machineGroup) throws IOException {
- List<DictBiz> annoDicts = getAnnotionList();
+ List<DictBiz> annoDicts = getAnnotionDictList();
InputStream finishedStream;
try(inputStream){
@@ -198,12 +209,13 @@
//1鍔犲叆鍙戦�佽矾寰勭殑娉ㄩ噴
String sendPathAnnotation = generateAnnotation(sendPath,machineGroup,annoDicts);//鍔犱簡娉ㄩ噴涔嬪悗鐨勬枃鏈�
- InputStream insAfterSetSendDir ;
+
String sendDirLine = FileContentUtil.readLineAt(byteInputStream,SENDPATH_LINE_INDEX);//绗�2琛屾槸鍙戦�佽矾寰�
byteInputStream.reset();
String statusLine = FileContentUtil.readLineAt(byteInputStream,STATUS_LINE_INDEX);//绗笁琛屾槸鐘舵�佹敞閲�
byteInputStream.reset();
+ InputStream insAfterSetSendDir ;
if(isAnnotation(sendDirLine,machineGroup,annoDicts)){
insAfterSetSendDir = FileContentUtil.replaceAtLine(byteInputStream,SENDPATH_LINE_INDEX,sendPathAnnotation);
}else{
@@ -222,5 +234,39 @@
return finishedStream;
}
+
+ /**
+ * 瑙f瀽鍑烘満搴婄▼搴忔敞閲婄殑鏍煎紡
+ * @param machineGroupCode 鏈哄簥缁�
+ * @param annoDictList 閰嶇疆鐨勬敞閲婂瓧鍏告暟鎹�
+ * @return
+ */
+ ProgramAnnotation getProgramAnnotationFormat(String machineGroupCode,List<DictBiz> annoDictList){
+ String begin;
+ String end;
+
+ Optional<DictBiz> dictOpt = annoDictList.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 = "";
+ }else{
+ throw new ServiceException("娉ㄩ噴鏍煎紡閰嶇疆閿欒锛屽簲璇ヤ负1鍒�2娈碉紝涓棿鐢ㄩ�楀彿鍒嗛殧");
+ }
+
+ ProgramAnnotation programAnnotation = new ProgramAnnotation();
+ programAnnotation.setBegin(begin);
+ programAnnotation.setEnd(end);
+ return programAnnotation;
+ }
}
+
+
--
Gitblit v1.9.3