From a3048fa6fa72fa3cc5da2c43c59bd000e00c9599 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 18 九月 2025 23:13:32 +0800
Subject: [PATCH] 工控网分析程序状态问题修复

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java |   44 +++++++++++++++++++++++++++-----------------
 1 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java
index c4bb669..6b5c328 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java
@@ -29,10 +29,6 @@
 	private FlowProgramFileService flowProgramFileService;
 	@Autowired
 	private NcNodeService nodeService;
-	@Autowired
-	private NcNodeAutoCreateService ncNodeAutoCreateService;
-	@Autowired
-	private MachineService machineService;
 
 	/**
 	 * cureFinishOperateTask璋冪敤锛屽亸绂诲崟鍥炰紶瀹℃壒瀹屾垚澶勭悊涓氬姟
@@ -40,10 +36,8 @@
 	 */
 	public void handleData(FlowProgramProperties props) {
 		// 鎵ц涓氬姟閫昏緫
-		String instId = props.getProcessInstanceId();
 		NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId,  props.getProcessInstanceId()).one();
-
-		pkgNode.lock();
+		pkgNode.lock("鍋忕鍗曞洖浼犻攣瀹�");
 		pkgNode.setIsLastEdition(0);
 		nodeService.updateById(pkgNode);
 
@@ -55,8 +49,21 @@
 
 		nodeService.save(newPkgNode);
 
-		//澶勭悊绋嬪簭鍖呬笅灞傜殑绋嬪簭鑺傜偣111
-		List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,pkgNode.getId()).list();
+		copyNonProgramNodes(pkgNode,newPkgNode);
+
+		addNewProgramNode(newPkgNode,props.getProcessInstanceId());
+
+		log.info("鍋忕鍥炰紶Listener瀹屾垚");
+	}
+
+	/**
+	 * 浠庡緟鍥哄寲鑺傜偣澶嶅埗闈炵▼搴忔枃浠惰妭鐐瑰埌鍥哄寲鑺傜偣涓�
+	 * @param oriPkgNode 寰呭浐鍖栬妭鐐�
+	 * @param cureNode 鍥哄寲鑺傜偣
+	 */
+	void copyNonProgramNodes(NcNode oriPkgNode,NcNode cureNode){
+		//澶勭悊绋嬪簭鍖呬笅灞傜殑绋嬪簭鑺傜偣1
+		List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,oriPkgNode.getId()).list();
 		FlowProgramFile pfile;
 		for(NcNode oldProgramNode : oriProgramNodes){
 			pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
@@ -66,17 +73,23 @@
 				NcNode newOtherFileNode = new NcNode();
 				BeanUtils.copyProperties(oldProgramNode,newOtherFileNode);
 				EntityUtil.clearBaseProperties(newOtherFileNode);
-				newOtherFileNode.setParentId(newPkgNode.getId());
-				newOtherFileNode.setParentIds(newPkgNode.getParentIds()+","+newPkgNode.getId());
+				newOtherFileNode.setParentId(cureNode.getId());
+				newOtherFileNode.setParentIds(cureNode.subNodeParentIds());
 				newOtherFileNode.setIsLastEdition(1);
 				nodeService.save(newOtherFileNode);
 			}
 
 		}
-		//nodeService.updateBatchById(oriProgramNodes);
+	}
 
+	/**
+	 * 鍔犲叆鏂扮殑绋嬪簭鏂囦欢鑺傜偣
+	 * @param newPkgNode 鏂扮殑鑺傜偣锛堝浐鍖栫殑锛�
+	 * @param processInstanceId 娴佺▼瀹炰緥id
+	 */
+	void addNewProgramNode(NcNode newPkgNode,String processInstanceId){
 		//鏂扮殑鏂囦欢浣滀负鏈�鏂扮増鏈�
-		List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode.getProcessInstanceId()).list();
+		List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,processInstanceId).list();
 		for(FlowProgramFile flowProgramFile : files){
 			NcNode newProgNode = new NcNode();
 			BeanUtils.copyProperties(newPkgNode, newProgNode);
@@ -85,7 +98,7 @@
 			newProgNode.setName(flowProgramFile.getName());
 			newProgNode.setNodeType(NcNode.TYPE_PROGRAM_FILE);
 			newProgNode.setParentId(newPkgNode.getId());
-			newProgNode.setParentIds(newPkgNode.getParentIds()+","+newPkgNode.getId());
+			newProgNode.setParentIds(newPkgNode.subNodeParentIds());
 			newProgNode.setIsLastEdition(1);
 			newProgNode.setVersionNumber(newPkgNode.getVersionNumber());
 			newProgNode.setFlowProgramFileId(flowProgramFile.getId());
@@ -93,8 +106,5 @@
 			nodeService.save(newProgNode);
 
 		}
-
-		log.info("鍋忕鍥炰紶Listener瀹屾垚");
 	}
-
 }

--
Gitblit v1.9.3