From 4988082dcafba6a928aab186ae18a8da3e16795e Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 18 八月 2025 12:00:55 +0800
Subject: [PATCH] 替换流程发起,增加文件校验
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProgramAnnotationService.java | 73 ++++++++++++++++++++++++++++++++++++
1 files changed, 73 insertions(+), 0 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 743671e..0bab27e 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
@@ -2,13 +2,20 @@
package org.springblade.mdm.program.service;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
+import org.springblade.core.oss.model.BladeFile;
import org.springblade.core.tool.api.R;
+import org.springblade.mdm.flow.entity.FlowProgramFile;
+import org.springblade.mdm.utils.FileContentUtil;
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.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -92,5 +99,71 @@
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;
+ }
+
+ /**
+ * 涓虹▼搴忔枃浠跺鍔犳敞閲�
+ * @param oriText 鍘熷鏂囨湰
+ * @param lineIndex 琛岀储寮� 0 based
+ * @param inputStream 鏂囦欢鐨勮緭鍏ユ祦
+ * @param machineGroup 鏈哄簥缁� 鐢熸垚娉ㄩ噴鐢�
+ * @return 鍔犳敞閲婂悗鐨勬祦
+ * @throws IOException
+ */
+ public InputStream setAnnotation(String oriText,int lineIndex,InputStream inputStream, String machineGroup) throws IOException {
+ List<Dict> annoDicts = getAnnotionList();
+ //
+ InputStream finishedStream;
+ try(inputStream){
+ ByteArrayInputStream byteInputStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
+
+ String annoTxt = generateAnnotation(oriText,machineGroup,annoDicts);//鍔犱簡娉ㄩ噴涔嬪悗鐨勬枃鏈�
+
+ String lineText = FileContentUtil.readLineAt(byteInputStream,lineIndex);//绗笁琛屽簲璇ユ槸鐘舵�佹敞閲�
+ byteInputStream.reset();
+
+ if(isAnnotation(lineText,machineGroup,annoDicts)){
+ finishedStream = FileContentUtil.replaceAtLine(byteInputStream,lineIndex,annoTxt);
+ }else{
+ finishedStream = FileContentUtil.insertLine(byteInputStream,lineIndex,annoTxt);
+ }
+ finishedStream.reset();
+
+ }
+
+ return finishedStream;
+ }
}
--
Gitblit v1.9.3