From 4c7296d45efe849dc70a3b2e2240c905481a91c9 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 29 九月 2025 17:44:46 +0800
Subject: [PATCH] 工控网涉密网联调

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java |   79 +++++++++++++++++++++++++++++++--------
 1 files changed, 63 insertions(+), 16 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
index eb2908a..cf0bcba 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
@@ -1,7 +1,8 @@
 package org.springblade.mdm.program.service.programannotation;
 
-import com.qiniu.util.IOUtils;
 import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.mdm.program.service.ProgramAnnotationService;
 import org.springblade.mdm.utils.FileContentUtil;
 import org.springblade.system.pojo.entity.DictBiz;
@@ -12,35 +13,81 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 
 @Component("defaultProcessor")
 public class DefaultProcessor extends AbstractProcessor{
 
-	@Autowired
-	private ProgramAnnotationService programAnnotationService;
+	//@Autowired
+	//private ProgramAnnotationService programAnnotationService;
 	private String controlSystem;
 
 
 	@Override
-	public InputStream setAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
-		List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
-		ByteArrayInputStream bais = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
+	public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
+		InputStream insAfter = putFilenameAnnotation(annoData.getFilename(),inputStream);
 
-		String line = FileContentUtil.readLineAt(bais, annotationProperties.getProgramNameLineIndex());
-		bais.reset();
-		boolean isAnnotation = AnnotationUtil.isAnnotation(line,controlSystem,annoDicts);
-		InputStream insAfter;
+		return super.putAnnotation(annoData, insAfter);
+
+	}
+
+	@Override
+	public InputStream putFilenameAnnotation(String fileName, InputStream inputStream) throws IOException {
+		List<DictBiz> annoDicts = getAnnotationDictList();
+		ByteArrayInputStream byteStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
+
+		String programNameLine = FileContentUtil.readLineAt(byteStream, annotationProperties.getProgramNameLineIndex());
+		byteStream.reset();
+		boolean isAnnotation = AnnotationUtil.isAnnotation(programNameLine,this.getControlSystem(),annoDicts);
+		InputStream insAfterProgramName;
 		//鍔犲叆绋嬪簭鍚嶆敞閲婅
-		String proNameLine =  AnnotationUtil.generateAnnotation(FilenameUtils.removeExtension(annoData.getFilename()),getControlSystem(),annoDicts);
-		if(isAnnotation){
-			insAfter = FileContentUtil.replaceAtLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine);
+		String programNameStr = genProgramNameText(FilenameUtils.removeExtension(fileName));
+
+		String proNameAnnotation =  AnnotationUtil.generateAnnotation(programNameStr,getControlSystem(),annoDicts);
+
+		if(isAnnotation){//鏄敞閲�
+			//鎻愬彇娉ㄩ噴鍐呮枃瀛�
+			String programName = FilenameUtils.removeExtension(fileName);
+			String progNameLineWithoutAnno = AnnotationUtil.removeAnnotation(this.getControlSystem(),programNameLine,annoDicts);
+			if(!isCurrentProgramNameAnnotation(progNameLineWithoutAnno,programName)) {
+				//娉ㄩ噴涓嶆槸绋嬪簭鍚嶏紙宸ヨ壓鍛樿嚜宸卞啓鐨勬敞閲婏級锛屾彃鍏�
+				insAfterProgramName = FileContentUtil.insertLine(byteStream,annotationProperties.getProgramNameLineIndex(),proNameAnnotation);
+			}else{
+				//鏄▼搴忓悕娉ㄩ噴锛屼笉澶勭悊锛岃繑鍥炲師stream
+				insAfterProgramName =  byteStream;
+			}
 		}else{
-			insAfter = FileContentUtil.insertLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine);
+			//闈炴敞閲婏紝鎻掑叆鐘舵��
+			insAfterProgramName = FileContentUtil.insertLine(byteStream,annotationProperties.getProgramNameLineIndex(),proNameAnnotation);
 		}
+		return insAfterProgramName;
+	}
 
-		return super.setAnnotation(annoData, insAfter);
-
+	/**
+	 * 鏄惁涓哄綋鍓嶇▼搴忕殑娉ㄩ噴
+	 * @param lineTextWithoutAnno 娉ㄩ噴琛岀殑鏂囧瓧
+	 * @param programName 绋嬪簭鍚嶇О
+	 * @return 鏄惁鏃剁▼搴忔敞閲婅锛屽鏋滀笌褰撳墠绋嬪簭鍚嶅尮閰嶅垯true
+	 */
+	boolean isCurrentProgramNameAnnotation(String lineTextWithoutAnno,String programName){
+		Pattern pattern = Pattern.compile("^\\((.+)\\)");
+		Matcher matcher = pattern.matcher(lineTextWithoutAnno);
+		if(matcher.find()){
+			String findText = matcher.group(1);
+			return findText.equals(programName);
+		}else{
+			return false;
+		}
+	}
+	/**
+	 * 鐢熸垚绋嬪簭鍚嶆垚鐨勮 鍔犲叆 (pname=[绋嬪簭鍚嶇О])
+	 * @param proggramName
+	 * @return 鎶ヨ鍚庣殑绋嬪簭鍚嶇О
+	 */
+	private String genProgramNameText(String proggramName) {
+		return String.format("(%s)",proggramName);
 	}
 
 	@Override

--
Gitblit v1.9.3