From 12f2fafc574afb4c534ab59244f2b954d1876e9f Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 22 九月 2025 19:37:20 +0800
Subject: [PATCH] 解决回传工控网记录无法撤销的问题
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java | 148 +++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 123 insertions(+), 25 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
index 4eee91f..7933d98 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
@@ -2,6 +2,7 @@
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;
@@ -18,24 +19,70 @@
private ProgramAnnotationService programAnnotationService;
protected AnnotationProperties annotationProperties;
+ @Override
+ public InputStream putSendPathAnnotation(String sendPath, InputStream inputStream,List<DictBiz> annoDicts) throws IOException{
+ InputStream finishedStream;
+ try(inputStream){
+ ByteArrayInputStream byteInputStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
+ //1鍔犲叆鍙戦�佽矾寰勭殑娉ㄩ噴
+ String sendPathAnnotation = AnnotationUtil.generateAnnotation(sendPath,getControlSystem(),annoDicts);//鍔犱簡娉ㄩ噴涔嬪悗鐨勬枃鏈�
+
+ String sendDirLine = FileContentUtil.readLineAt(byteInputStream,annotationProperties.getSendPathLineIndex());//绗�2琛屾槸鍙戦�佽矾寰�
+ byteInputStream.reset();
+
+ if(AnnotationUtil.isAnnotation(sendDirLine,getControlSystem(),annoDicts)){
+ String planText = AnnotationUtil.removeAnnotation(getControlSystem(),sendDirLine,annoDicts);
+ if(!planText.equals(sendPath)) {
+ //闈炶矾寰勭殑娉ㄩ噴锛屾彃鍏�
+ finishedStream = FileContentUtil.insertLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
+ }else{
+ //鏄矾寰勶紝涓嶅鐞嗙洿鎺ヨ繑鍥炲師杈撳叆娴�
+ finishedStream = inputStream;
+ }
+ //finishedStream = FileContentUtil.replaceAtLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
+ }else{
+ finishedStream = FileContentUtil.insertLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
+ }
+ finishedStream.reset();
+ }
+
+ return finishedStream;
+
+ }
@Override
public InputStream putFilenameAnnotation(String fileName, InputStream inputStream) throws IOException {
- List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
- ByteArrayInputStream bais = new ByteArrayInputStream(com.qiniu.util.IOUtils.toByteArray(inputStream));
+ List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();//TODO 杩欓噷搴旇涓嶇敤鍔犺浇锛屽弬鏁颁紶杩囨潵灏辫
+ ByteArrayInputStream byteStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
- String line = FileContentUtil.readLineAt(bais, annotationProperties.getProgramNameLineIndex());
- bais.reset();
- boolean isAnnotation = AnnotationUtil.isAnnotation(line,this.getControlSystem(),annoDicts);
- InputStream insAfter;
+ 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(fileName),getControlSystem(),annoDicts);
+ String proNameAnnotation = AnnotationUtil.generateAnnotation(FilenameUtils.removeExtension(fileName),getControlSystem(),annoDicts);
+
+ if(isAnnotation){//鏄敞閲�
+ //鎻愬彇娉ㄩ噴鍐呮枃瀛�
+ //String planText = AnnotationUtil.removeAnnotation(getControlSystem(),programNameline,annoDicts);
+ if(!StringUtils.equals(programNameLine,proNameAnnotation)) {
+ //娉ㄩ噴涓嶆槸绋嬪簭鍚嶏紙宸ヨ壓鍛樿嚜宸卞啓鐨勬敞閲婏級锛屾彃鍏�
+ insAfterProgramName = FileContentUtil.insertLine(byteStream,annotationProperties.getProgramNameLineIndex(),proNameAnnotation);
+ }else{
+ //鏄▼搴忓悕娉ㄩ噴锛屼笉澶勭悊锛岃繑鍥炲師stream
+ insAfterProgramName = byteStream;
+ }
+ }else{
+ //闈炴敞閲婏紝鎻掑叆鐘舵��
+ insAfterProgramName = FileContentUtil.insertLine(byteStream,annotationProperties.getProgramNameLineIndex(),proNameAnnotation);
+ }
+ /*
if(isAnnotation){
insAfter = FileContentUtil.replaceAtLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine);
}else{
insAfter = FileContentUtil.insertLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine);
- }
- return insAfter;
+ }*/
+ return insAfterProgramName;
}
@Override
@@ -47,33 +94,84 @@
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
//1鍔犲叆鍙戦�佽矾寰勭殑娉ㄩ噴
- String sendPathAnnotation = AnnotationUtil.generateAnnotation(annoData.getSendPath(),getControlSystem(),annoDicts);//鍔犱簡娉ㄩ噴涔嬪悗鐨勬枃鏈�
-
- String sendDirLine = FileContentUtil.readLineAt(byteInputStream,annotationProperties.getSendPathLineIndex());//绗�2琛屾槸鍙戦�佽矾寰�
- byteInputStream.reset();
- String statusLine = FileContentUtil.readLineAt(byteInputStream,annotationProperties.getStatusLineIndex());//鐘舵�佹敞閲�
- byteInputStream.reset();
-
- InputStream insAfterSetSendDir ;
- if(AnnotationUtil.isAnnotation(sendDirLine,getControlSystem(),annoDicts)){
- insAfterSetSendDir = FileContentUtil.replaceAtLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
- }else{
- insAfterSetSendDir = FileContentUtil.insertLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
- }
-
+ InputStream insAfterSetSendDir = putSendPathAnnotation(annoData.getSendPath(),byteInputStream,annoDicts);
+ /*
+ String statusLine = FileContentUtil.readLineAt(insAfterSetSendDir,annotationProperties.getStatusLineIndex());//鐘舵�佹敞閲�
insAfterSetSendDir.reset();
+
//鍔犲叆鐘舵�佹敞閲婅
+ InputStream insAfterStatus;
String statusAnnotation = AnnotationUtil.generateAnnotation(annoData.getProgramStatus(),getControlSystem(),annoDicts);//娉ㄩ噴鍚庣殑鐘舵�佹枃鏈�
if(AnnotationUtil.isAnnotation(statusLine,getControlSystem(),annoDicts)){
- finishedStream = FileContentUtil.replaceAtLine(insAfterSetSendDir,annotationProperties.getStatusLineIndex(),statusAnnotation);
+ insAfterStatus = FileContentUtil.replaceAtLine(insAfterSetSendDir,annotationProperties.getStatusLineIndex(),statusAnnotation);
}else{
- finishedStream = FileContentUtil.insertLine(insAfterSetSendDir,annotationProperties.getStatusLineIndex(),statusAnnotation);
+ insAfterStatus = FileContentUtil.insertLine(insAfterSetSendDir,annotationProperties.getStatusLineIndex(),statusAnnotation);
+ }*/
+ InputStream insAfterStatus = putStatusAnnotation(annoData.getProgramStatus(),insAfterSetSendDir,annoDicts);
+
+ if(StringUtils.isNotBlank(annoData.getDeviation())){
+ finishedStream = putDeviationAnnotation(annoData.getDeviation(),insAfterStatus,annoDicts);
+ }else{
+ //鏄洿鏀瑰崟鍙凤紝涓嶅鐞嗙洿鎺ヨ繑鍥炲師杈撳叆娴�
+ finishedStream = insAfterStatus;
}
}
return finishedStream;
}
+ protected InputStream putStatusAnnotation(String status,InputStream inputStream,List<DictBiz> annoDicts) throws IOException {
+ InputStream insAfterStatus;
+ //鍔犲叆lg鍗曞彿
+
+ String statusLine = FileContentUtil.readLineAt(inputStream,annotationProperties.getStatusLineIndex());//鐘舵�佹敞閲�
+ String stationAnnotation = AnnotationUtil.generateAnnotation(status,getControlSystem(),annoDicts);
+
+ inputStream.reset();
+ if(AnnotationUtil.isAnnotation(statusLine,getControlSystem(),annoDicts) ){
+ //鏄敞閲�
+ //鎻愬彇娉ㄩ噴鍐呮枃瀛�
+ String planText = AnnotationUtil.removeAnnotation(getControlSystem(),statusLine,annoDicts);
+ if(!StringUtils.equalsAny(planText,AnnotationUtil.SQ,AnnotationUtil.GH,AnnotationUtil.LG)) {
+ //娉ㄩ噴涓嶆槸鐘舵�侊紙宸ヨ壓鍛樿嚜宸卞啓鐨勬敞閲婏級锛屾彃鍏�
+ insAfterStatus = FileContentUtil.insertLine(inputStream,annotationProperties.getStatusLineIndex(),stationAnnotation);
+ }else{
+ //鏄姸鎬佹敞閲婏紝鏇挎崲
+ insAfterStatus = FileContentUtil.replaceAtLine(inputStream,annotationProperties.getStatusLineIndex(),stationAnnotation);
+ }
+ }else{
+ //闈炴敞閲婏紝鎻掑叆鐘舵��
+ insAfterStatus = FileContentUtil.insertLine(inputStream,annotationProperties.getStatusLineIndex(),stationAnnotation);
+ }
+ return insAfterStatus;
+ }
+
+ protected InputStream putDeviationAnnotation(String deviation,InputStream inputStream,List<DictBiz> annoDicts) throws IOException {
+ InputStream insAfter1;
+ //鍔犲叆lg鍗曞彿
+ String devLine = FileContentUtil.readLineAt(inputStream,annotationProperties.getDeviationLineIndex());//鐘舵�佹敞閲�
+
+ String devAnnotation = AnnotationUtil.generateAnnotation(deviation,getControlSystem(),annoDicts);
+
+ inputStream.reset();
+ if(AnnotationUtil.isAnnotation(devLine,getControlSystem(),annoDicts) ){
+ //鏄敞閲�
+ //鎻愬彇娉ㄩ噴鍐呮枃瀛�
+ String planText = AnnotationUtil.removeAnnotation(getControlSystem(),devLine,annoDicts);
+ if(!planText.equals(deviation)) {
+ //娉ㄩ噴涓嶆槸涓存椂鏇存敼鍗曞彿锛堝伐鑹哄憳鑷繁鍐欑殑娉ㄩ噴锛夛紝鎻掑叆
+ insAfter1 = FileContentUtil.insertLine(inputStream,annotationProperties.getDeviationLineIndex(),devAnnotation);
+ }else{
+ //鏄洿鏀瑰崟鍙凤紝涓嶅鐞嗙洿鎺ヨ繑鍥炲師杈撳叆娴�
+ insAfter1 = inputStream;
+ }
+ }else{
+ //闈炴敞閲婏紝鎬庢彃鍏g鍙�
+ insAfter1 = FileContentUtil.insertLine(inputStream,annotationProperties.getDeviationLineIndex(),devAnnotation);
+ }
+ return insAfter1;
+ }
+
@Override
public abstract void setControlSystem(String controlSystemDictVal) ;
--
Gitblit v1.9.3