From 053a438acf9ec33e182b25211ce8108f0367feac Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 06 八月 2025 09:35:58 +0800
Subject: [PATCH] 固化流程,建立node;

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java |   69 ++++++++++++++++++++++++++++++++--
 1 files changed, 65 insertions(+), 4 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
index 78864a6..2d2ece0 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
@@ -1,19 +1,80 @@
 package org.springblade.mdm.flow.task.cure;
 
+import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.flowable.engine.delegate.DelegateExecution;
+import org.springblade.mdm.flow.service.FlowCommonService;
+import org.springblade.mdm.flow.service.FlowProgramProperties;
+import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.entity.NcProgram;
+import org.springblade.mdm.program.service.NcNodeAutoCreateService;
+import org.springblade.mdm.program.service.NcNodeService;
 import org.springframework.stereotype.Component;
+
+import java.util.List;
 
 @Slf4j
 @Component("cureFinishOperateTask")
+@AllArgsConstructor
 public class CureFinishOperateTask {
-
+	private final NcNodeService nodeService;
+	private final NcNodeAutoCreateService ncNodeAutoCreateService;
+	private final FlowCommonService flowCommonService;
+	/**
+	 * 鍥哄寲瀹℃壒閫氳繃澶勭悊浠诲姟锛�
+	 * @param execution 娴佺▼execution
+	 */
 	public void execute(DelegateExecution execution) {
+		log.info("鎵ц鍥哄寲绋嬪簭浠诲姟鏈嶅姟,娴佺▼瀹炰緥id={}", execution.getProcessInstanceId());
 		//鍥哄寲绋嬪簭妫�鏌ユ湁鏁堟湡锛�
-		String hasCuredProgram =  (String)execution.getVariable("hasCuredProgram");
-		NcProgram ncProgram =  (NcProgram)execution.getVariable("curedNcProgram");
+		//1.灏嗘祦绋嬭缃�
+		dealWithNode(execution.getProcessInstanceId());
 
-		System.out.println("鎵ц鍥哄寲绋嬪簭浠诲姟鏈嶅姟");
+	}
+
+	/**
+	 * 澶勭悊node鐘舵�併��
+	 * @param processInstanceId 娴佺▼瀹炰緥id
+	 */
+	void dealWithNode(String processInstanceId) {
+		//绋嬪簭鍖呰妭鐐瑰拰涓嬪睘绋嬪簭鑺傜偣(鍖呮嫭鍘嗗彶鑺傜偣闈炴渶鏂扮増鏈殑)浠庤瘯鍒囨尓鍒板浐鍖栦笅闈�
+		//绋嬪簭鍖呰妭鐐� 璁剧疆鏈凡鍥哄寲
+		NcNode pkgNode =  nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId, processInstanceId).one();
+		pkgNode.setIsCured(1);
+
+		List<NcNode> historyNodes = nodeService.getNodeHistorys(pkgNode);
+		moveNodeToCuredTree(pkgNode,historyNodes,flowCommonService.getProgramProperties(processInstanceId));
+
+	}
+
+	/**
+	 * 灏嗚妭鐐瑰拰鍘嗗彶鑺傜偣鎸姩鍒板浐鍖栫殑鍚岀骇鑺傜偣涓�
+	 * @param historyNodes
+	 */
+	void moveNodeToCuredTree(NcNode pkgNode,List<NcNode> historyNodes, FlowProgramProperties programProperties) {
+		NcNode node = historyNodes.get(0);
+		//鍒涘缓鑺傜偣鍒版満搴婄骇鍒�.(鍥哄寲鏍�)
+		NcNode machineNode = ncNodeAutoCreateService.createNodeTreeToMachine(programProperties);
+
+		//绉诲姩鍒板浐鍖栨爲涓嬬殑鏈哄簥鑺傜偣涓嬪眰
+		String newParentIds = machineNode.getParentIds()+","+machineNode.getId();
+		for(NcNode hisNode : historyNodes){
+			if(!hisNode.getId().equals(pkgNode.getId())){
+				hisNode.setIsLastEdition(0);
+			}
+			hisNode.setParentId(machineNode.getParentId());
+			hisNode.setParentIds(newParentIds);
+
+			//澶勭悊绋嬪簭鍖呬笅灞傜殑绋嬪簭鑺傜偣
+			List<NcNode> pragramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisNode.getId()).list();
+			for(NcNode pragramNode : pragramNodes){
+				pragramNode.setParentIds(hisNode.getParentIds()+","+hisNode.getId());
+			}
+			nodeService.updateBatchById(pragramNodes);
+		}
+		nodeService.updateBatchById(historyNodes);
+
+
+
 	}
 }

--
Gitblit v1.9.3