From 1e2b04fabbbc4b1ae37d7951068d7ab235f5b5f9 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 17 九月 2025 15:29:38 +0800
Subject: [PATCH] 现场编制功能适配

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java |   83 ++++++++++++++---------------------------
 1 files changed, 29 insertions(+), 54 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 0264cf3..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
@@ -1,17 +1,13 @@
 package org.springblade.mdm.flow.excution.cure;
 
 import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.basesetting.machine.MachineService;
-import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.basesetting.machine.service.MachineService;
 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;
-import org.springblade.mdm.program.entity.NcProgramApproved;
 import org.springblade.mdm.program.service.NcNodeAutoCreateService;
 import org.springblade.mdm.program.service.NcNodeService;
 import org.springblade.mdm.program.service.NcProgramApprovedService;
@@ -28,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璋冪敤锛屽亸绂诲崟鍥炰紶瀹℃壒瀹屾垚澶勭悊涓氬姟
@@ -47,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);
 
@@ -62,31 +49,47 @@
 
 		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){
-			//oldProgramNode.setIsLastEdition(0);
-			//oldProgramNode.setVersionNumber(pkgNode.getVersionNumber());
 			pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
 			if(!pfile.isProgram()){
 				//褰撳墠鍥哄寲绋嬪簭鍖呭悕涓嬬殑鈥滃叾浠栨枃浠垛�濋潪绋嬪簭鏂囦欢銆備笉璁剧疆涓鸿�佺増鏈紝澶嶅埗鍒板浐鍖栨爲涓�,涓や釜缃戠粶涔嬮棿鍙氦鎹㈢▼搴忔枃浠讹紝鍏朵粬鏂囦欢鍙兘淇濈暀
-				//oldProgramNode.setIsLastEdition(1);
 				//鍏朵粬鏂囦欢锛岄渶瑕佸鍒跺埌鏂板缓鐨勫浐鍖栬妭鐐逛笅
 				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);
@@ -95,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());
@@ -103,33 +106,5 @@
 			nodeService.save(newProgNode);
 
 		}
-
-		addApproveTable(pkgNode,props);
-		updateApproveRecordNodeId(instId, pkgNode.getId());
-		log.info("鍋忕鍥炰紶Listener瀹屾垚");
-	}
-
-	/**
-	 * 淇濆瓨瀹℃壒瀹屾垚鐨勮褰�
-	 * @param packageNode
-	 * @param props
-	 */
-	void addApproveTable(NcNode packageNode,FlowProgramProperties props){
-		NcProgramApproved approved = new NcProgramApproved();
-
-		approved.setProgramName(packageNode.getName());
-		approved.setNcNodeId(packageNode.getId());//绋嬪簭鍖呰妭鐐筰d
-		approved.setTitle(props.getTitle());
-		approved.setProgrammerId(props.getProgrammerId());
-		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