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 | 71 ++++++++++++++++++++++++++++++++++-
1 files changed, 68 insertions(+), 3 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 26edd95..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,29 +1,94 @@
package org.springblade.mdm.program.service.programannotation;
+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;
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.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 putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
- InputStream insAfter = super.putFilenameAnnotation(annoData.getFilename(),inputStream);
+ InputStream insAfter = putFilenameAnnotation(annoData.getFilename(),inputStream);
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 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{
+ //闈炴敞閲婏紝鎻掑叆鐘舵��
+ insAfterProgramName = FileContentUtil.insertLine(byteStream,annotationProperties.getProgramNameLineIndex(),proNameAnnotation);
+ }
+ return insAfterProgramName;
+ }
+
+ /**
+ * 鏄惁涓哄綋鍓嶇▼搴忕殑娉ㄩ噴
+ * @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
public void setControlSystem(String controlSystemDictVal) {
--
Gitblit v1.9.3