From 86079d1c2bd7981165487e6e08d2399b80687f6e Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 04 九月 2025 14:21:49 +0800
Subject: [PATCH] 工控网导出使用实际编程人匹配

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java |   76 +++++++++++++++++++++++++++-----------
 1 files changed, 54 insertions(+), 22 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
index 64e1da3..6583647 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
@@ -1,9 +1,7 @@
 package org.springblade.mdm.flow.excution.dispatch;
 
 import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.tool.utils.Func;
 import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.mdm.flow.entity.ApproveRecord;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.service.ApproveRecordService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
@@ -29,8 +27,6 @@
 	@Autowired
 	private NcProgramApprovedService approvedService;
 	@Autowired
-	private ApproveRecordService approveRecordService;
-	@Autowired
 	private FlowProgramFileService flowProgramFileService;
 	@Autowired
 	private NcNodeService ncNodeService;
@@ -42,11 +38,7 @@
 	 */
 	public void handleData(FlowProgramProperties props) {
 		// 鎵ц涓氬姟閫昏緫
-		String instId = props.getProcessInstanceId();
-
-		String programPkgName = NcNodeService.genProgramName(props.getDrawingNo(),props.getProcessNo());
-		//NcNode packageNode =createProgramNodes(props);
-		NcNode packageNode;// = ncNodeAutoCreateService.createNodeTreeWithProgram(props);
+		NcNode packageNode;
 		if(FlowContants.Y.equals(props.getHasCuredProgram())){
 			//鏈夊浐鍖�
 			packageNode = ncNodeService.getById(props.getCuredNodeId());
@@ -58,18 +50,65 @@
 				ncNodeService.updateById(packageNode);
 
 				Integer newVersion = packageNode.genNewVersionNumber();
-				packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props);
-				packageNode.setVersionNumber(newVersion);
-				ncNodeService.updateById(packageNode);
+				packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props,newVersion);
+			}else{
+				//鍙敤锛屽崌鐗堬紙淇敼鍏跺伐搴忕増鏈級锛屽師鏉ョ殑鑺傜偣娓呴櫎
+				moveToNewProcessEdition(packageNode,props);
 			}
-
 		}else{
-			packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props);
+			//鏅�氳瘯鍒�
+			packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props,1);
 		}
 
 		addApproveTable(packageNode,props);
 		//updateApproveRecordNodeId(instId, packageNode.getId());
 		log.info("鏅�氭祦绋嬪凡瀹屾垚in DispatchFinishListener");
+	}
+
+	/**
+	 * 鑺傜偣绉诲姩鍒版柊鐨勫伐搴忕増鏈笅
+	 * @param packageNode 绋嬪簭鍖呭悕鑺傜偣
+	 * @param props 娴佺▼灞炴��
+	 */
+	private void moveToNewProcessEdition(NcNode packageNode, FlowProgramProperties props) {
+		ncNodeService.deleteMachineNodeByParentId(packageNode.getParentId());
+
+		FlowProgramProperties tempProps = new FlowProgramProperties();
+		BeanUtils.copyProperties(props,tempProps);
+		tempProps.setProcessDefinitionKey(FlowContants.CURE_PROCESS_KEY);//涓存椂淇敼鍏朵负鍥哄寲,鍦ㄥ浐鍖栦笅鍒涘缓鑺傜偣
+		NcNode machineNode = ncNodeAutoCreateService.createNodeTreeToMachine(tempProps);
+
+		//绉诲姩鍘嗗彶鑺傜偣鍒版柊鐨勭増娆¤妭鐐逛笅
+		List<NcNode> packageHisNodes = ncNodeService.getNodeHistory(packageNode);//璇ュ寘鐨勫巻鍙茶妭鐐瑰垪琛�
+		for(NcNode hisPackageNode : packageHisNodes){
+			hisPackageNode.setParentId(machineNode.getParentId());
+			hisPackageNode.setParentIds(machineNode.getParentIds());
+
+			List<NcNode> oriProgramNodes = ncNodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
+
+			for(NcNode oldProgramNode : oriProgramNodes){
+				oldProgramNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId());
+			}
+			ncNodeService.updateBatchById(oriProgramNodes);
+		}
+		ncNodeService.updateBatchById(packageHisNodes);
+
+		//绉诲姩绋嬪簭鍖呭悕鑺傜偣
+		packageNode.setProcessEdition(tempProps.getProcessEdition());
+		packageNode.setParentId(machineNode.getParentId());
+		packageNode.setParentIds(machineNode.getParentIds());
+		this.ncNodeService.updateById(packageNode);
+
+		//绉诲姩绋嬪簭鑺傜偣
+		List<NcNode> programNodes = ncNodeService.getProgramFilesByPackageId(packageNode.getId());
+		for(NcNode programNode : programNodes){
+			programNode.setParentIds(packageNode.getParentIds()+","+packageNode.getId());
+			programNode.setProcessEdition(tempProps.getProcessEdition());//淇敼宸ュ簭鐗堟
+			programNode.setVersionNumber(packageNode.getVersionNumber());
+		}
+		ncNodeService.updateBatchById(programNodes);
+
+
 	}
 
 
@@ -84,17 +123,10 @@
 		approved.setProgramName(packageNode.getName());
 		approved.setNcNodeId(packageNode.getId());//绋嬪簭鍖呰妭鐐筰d
 		approved.setTitle(props.getTitle());
-		approved.setProgrammerId(props.getProgrammerId());
+		approved.setProgrammerId(props.getActProgrammerId());
 		approved.setProcessInstanceId(props.getProcessInstanceId());
 		approvedService.save(approved);
 
 	}
 
-	/*
-	void updateApproveRecordNodeId(String processInstanceId,Long nodeId){
-		//鏇存柊瀹℃壒璁板綍鐨刵cNodeId
-		approveRecordService.lambdaUpdate()
-			.eq(ApproveRecord::getProcessInstanceId, processInstanceId)
-			.set(ApproveRecord::getNcNodeId,nodeId).update();
-	}*/
 }

--
Gitblit v1.9.3