From 55e316d9f3ee4e3fd0ae21b193efa7b358a0ae00 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期六, 23 八月 2025 00:17:41 +0800
Subject: [PATCH] 不可用流程修复

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java |   32 +++++++++++++++++++++-----------
 1 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
index 0755078..92d3bdc 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
@@ -38,6 +38,7 @@
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * 鏅�氭淳宸ュ畬鎴愭暟鎹鐞嗗櫒锛屽姛鑳斤細鎻掑叆瀹℃壒琛ㄦ暟鎹紝DispatchFinishListener璋冪敤
@@ -78,8 +79,16 @@
 		//璇曞垏鐨�
 		pkgNode.setIsCured(1);
 		pkgNode.setIsLocked(NcNode.UNLOCK);
+
+		Optional<NcNode> optOldCuredPackageNode = nodeService.lambdaQuery().eq(NcNode::getName,pkgNode.getName())
+			.eq(NcNode::getProcessNo,pkgNode.getProcessNo())
+			.eq(NcNode::getProcessEdition,pkgNode.getProcessEdition())
+			.eq(NcNode::getIsLastEdition,1).eq(NcNode::getIsCured,1).oneOpt();
 		//璁剧疆杩囨湡鏃ユ湡
-		pkgNode.upgradeVersionNumber();
+		if(optOldCuredPackageNode.isEmpty()){
+			//涔嬪墠 娌℃湁宸插浐鍖栫殑绋嬪簭鍖呭悕锛屽垯鐩存帴鏇存柊鐗堟湰鍙凤紝濡傛灉鏈夛紝閭e氨浣跨敤node鐜板湪鐨勭増鏈彿锛屽洜涓轰笉鍙敤杞负璇曞垏锛屽鎵瑰畬鎴愬凡缁忓崌绾ersion
+			pkgNode.upgradeVersionNumber();
+		}
 		pkgNode.setExpireDate(calculateExpireDate());
 		nodeService.updateById(pkgNode);
 
@@ -121,20 +130,20 @@
 			hisPackageNode.setParentIds(machineNode.getParentIds());//绋嬪簭鍖呬笌鏈哄簥鑺傜偣鍚岀骇
 
 			//澶勭悊绋嬪簭鍖呬笅灞傜殑绋嬪簭鑺傜偣111
-			List<NcNode> programNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
+			List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
 			FlowProgramFile pfile;
-			for(NcNode programNode : programNodes){
-				programNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId());
-				programNode.setIsLastEdition(0);
+			for(NcNode oldProgramNode : oriProgramNodes){
+				oldProgramNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId());
+				oldProgramNode.setIsLastEdition(0);
 
-				pfile = flowProgramFileService.getById(programNode.getFlowProgramFileId());
-				if(programNode.getParentId().equals(pkgNode.getId()) && !pfile.isProgram()){
+				pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
+				if(oldProgramNode.getParentId().equals(pkgNode.getId()) && !pfile.isProgram()){
 					//褰撳墠鍥哄寲绋嬪簭鍖呭悕涓嬬殑鈥滃叾浠栨枃浠垛�濋潪绋嬪簭鏂囦欢銆備笉璁剧疆涓鸿�佺増鏈紝鐩存帴鎸埌鍥哄寲鏍戜笅,涓や釜缃戠粶涔嬮棿鍙氦鎹㈢▼搴忔枃浠讹紝鍏朵粬鏂囦欢鍙兘淇濈暀
-					programNode.setIsLastEdition(1);
+					oldProgramNode.setIsLastEdition(1);
 				}
 
 			}
-			nodeService.updateBatchById(programNodes);
+			nodeService.updateBatchById(oriProgramNodes);
 		}
 		nodeService.updateBatchById(historyProgramPackageNodes);
 
@@ -144,7 +153,10 @@
 		List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode.getProcessInstanceId()).list();
 		for(FlowProgramFile flowProgramFile : files){
 			NcNode newProgNode = new NcNode();
+
 			BeanUtils.copyProperties(pkgNode,newProgNode);
+			EntityUtil.clearBaseProperties(newProgNode);
+
 			newProgNode.setName(flowProgramFile.getName());
 			newProgNode.setNodeType(NcNode.TYPE_PROGRAM_FILE);
 			newProgNode.setParentId(pkgNode.getId());
@@ -157,8 +169,6 @@
 			//淇敼鏂囦欢鍐呭鏇存柊娉ㄩ噴锛屽苟鏇存柊鏂囦欢鏁版嵁鐨勫湴鍧�
 			///鏇挎崲娉ㄩ噴鍚庢�绘槸涓嶈鍟�
 			setGhAnnotation(flowProgramFile,machine.getMachineGroupCode(),annoDicts);
-
-			//flowProgramFileService.updateById(flowProgramFile);
 		}
 	}
 

--
Gitblit v1.9.3