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 |   57 ++++++++++++++++++++++++++++-----------------------------
 1 files changed, 28 insertions(+), 29 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 d7b6dd4..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
@@ -5,7 +5,6 @@
 import org.springblade.mdm.flow.entity.ApproveRecord;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.excution.dispatch.FinishDataHandler;
-import org.springblade.mdm.flow.service.ApproveRecordService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
 import org.springblade.mdm.flow.service.FlowProgramProperties;
 import org.springblade.mdm.program.entity.NcNode;
@@ -25,18 +24,11 @@
 @Slf4j
 @Component("deviationCureFinishDataHandler")
 public class DeviationCureFinishDataHandler implements FinishDataHandler {
-	@Autowired
-	private NcProgramApprovedService approvedService;
-	@Autowired
-	private ApproveRecordService approveRecordService;
+
 	@Autowired
 	private FlowProgramFileService flowProgramFileService;
 	@Autowired
 	private NcNodeService nodeService;
-	@Autowired
-	private NcNodeAutoCreateService ncNodeAutoCreateService;
-	@Autowired
-	private MachineService machineService;
 
 	/**
 	 * cureFinishOperateTask璋冪敤锛屽亸绂诲崟鍥炰紶瀹℃壒瀹屾垚澶勭悊涓氬姟
@@ -44,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);
 
@@ -59,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());
@@ -70,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);
@@ -89,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());
@@ -97,15 +106,5 @@
 			nodeService.save(newProgNode);
 
 		}
-
-		updateApproveRecordNodeId(instId, pkgNode.getId());
-		log.info("鍋忕鍥炰紶Listener瀹屾垚");
-	}
-
-	void updateApproveRecordNodeId(String processInstanceId,Long nodeId){
-		//鏇存柊瀹℃壒璁板綍鐨刵cNodeId
-		approveRecordService.lambdaUpdate()
-			.eq(ApproveRecord::getProcessInstanceId, processInstanceId)
-			.set(ApproveRecord::getNcNodeId,nodeId).update();
 	}
 }

--
Gitblit v1.9.3