From 016f6009aef19985e5e50be497651cb77795c868 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 22 八月 2025 18:26:42 +0800
Subject: [PATCH] 偏离单审批完成文件内容未更新问题修复

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java |   77 +++++++++++++++++++++++++++-----------
 1 files changed, 54 insertions(+), 23 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java
index e597920..9f93f02 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java
@@ -3,6 +3,8 @@
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.mdm.flow.constants.FlowContants;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.service.FlowCommonService;
@@ -30,7 +32,7 @@
 	private final ProgramSeqService programSeqService;
 	public static final String TRY_NAME = "璇曞垏";
 	public static final String CURE_NAME = "鍥哄寲";
-	public static final String PIANLI_NAME = "鍋忕";
+	public static final String DEVIATION_NAME = "鍋忕";
 
 	/**
 	 * 鍒涘缓鏍戝埌鏈哄簥绾у埆
@@ -38,13 +40,20 @@
 	 */
 	@Transactional
 	public NcNode createNodeTreeToMachine(FlowProgramProperties programProperties) {
-
 		NcNode root;
 		if(programProperties.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)){
-			//璇曞垏
-			root = rootNodeByName(TRY_NAME);
-			if(root == null){
-				root = createTryNode();
+			if(Func.isEmpty(programProperties.getDeviation())){
+				//璇曞垏
+				root = rootNodeByName(TRY_NAME);
+				if (root == null) {
+					root = createTryNode();
+				}
+			}else{
+				//鏈夊亸绂�
+				root = rootNodeByName(DEVIATION_NAME);
+				if(root == null){
+					root = createDeviationNode();
+				}
 			}
 		}else if(programProperties.getProcessDefinitionKey().equals(FlowContants.CURE_PROCESS_KEY)){
 			root = rootNodeByName(CURE_NAME);
@@ -52,21 +61,16 @@
 				root = createCureNode();
 			}
 		}else{
-			root = rootNodeByName(PIANLI_NAME);
-			if(root == null){
-				root = createPianliNode();
-			}
+			throw new ServiceException("娴佺▼瀹氫箟涓嶅湪鑼冨洿鍐�");
 		}
-
-		NcNode lastNode = null;
 		//鍒涘缓浜у搧鍨嬪彿鑺傜偣
 		NcNode productModelNode = createNodeIfNotExists(programProperties.getProductModel(),NcNode.TYPE_PRODUCT_MODEL, root,programProperties);
 		//闆剁粍浠跺彿鑺傜偣
 		NcNode drawingNoNode = createNodeIfNotExists(programProperties.getDrawingNo(),NcNode.TYPE_DRAWING_NO, productModelNode,programProperties);
 		//宸ヨ壓鐗堟鑺傜偣
-		NcNode craftEditionNode = createNodeIfNotExists(programProperties.getCraftEdition(),NcNode.TYPE_CRAFT_EDITION, drawingNoNode,programProperties);
+		//NcNode craftEditionNode = createNodeIfNotExists(programProperties.getCraftEdition(),NcNode.TYPE_CRAFT_EDITION, drawingNoNode,programProperties);
 		//宸ュ簭鍙疯妭
-		NcNode processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, craftEditionNode,programProperties);
+		NcNode processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, drawingNoNode,programProperties);
 		//宸ュ簭鐗堟鑺傜偣
 		NcNode processEditionNode = createNodeIfNotExists(programProperties.getProcessEdition(),NcNode.TYPE_PROCESS_EDITION, processNoNode,programProperties);
 		//鍔犲伐鏈哄簥鑺傜偣
@@ -86,11 +90,16 @@
 
 		List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, programProperties.getProcessInstanceId()).list();
 		for (FlowProgramFile programFile : programFiles) {
-			createProgramFileNode(programFile, programPkdNode, programProperties);
+			createProgramFileNode(programFile, programPkdNode, programProperties);//鎵�鏈夋枃浠跺寘鎷▼搴忓拰鍏朵粬锛岄兘闇�瑕佸缓绔嬭妭鐐�
+			//if(programFile.isProgram()) {
+
+			//}
 		}
-
+		createOtherNode(programFiles);
 	}
-
+	void  createOtherNode(List<FlowProgramFile> programFiles){
+//111mqita 鑺傜偣
+	}
 	/**
 	 * 寤虹珛绋嬪簭鏂囦欢鑺傜偣
 	 * @param programFile 娴佺▼鏂囦欢
@@ -103,8 +112,7 @@
 		NcNode node = new NcNode();
 		node.setNodeType(NcNode.TYPE_PROGRAM_FILE);
 		node.setName(programFile.getName());//鏂囦欢鍚嶏紝
-		node.setParentId(programPkdNode.getId());
-		node.setParentIds(programPkdNode.getParentIds()+","+programPkdNode.getId());
+
 		node.setIsLastEdition(1);
 		node.setDrawingNo(programPkdNode.getDrawingNo());
 		node.setDrawingNoEdition(programProperties.getDrawingNoEdition());
@@ -116,6 +124,16 @@
 		node.setProductModel(programProperties.getProductModel());
 		node.setFlowProgramFileId(programFile.getId());
 		node.setVersionNumber(1);
+		node.setParentId(programPkdNode.getId());
+		node.setParentIds(programPkdNode.getParentIds()+","+programPkdNode.getId());
+		/*
+		if("program".equals(programFile.getFileType())){
+
+		}else{
+			//鍏朵粬鏂囦欢锛屽拰绋嬪簭鍖呭悕鍚岀骇骞跺垪
+
+		}*/
+
 		ncNodeService.save(node);
 	}
 
@@ -127,8 +145,17 @@
 	@Transactional
 	public NcNode createTreeToPackage(FlowProgramProperties programProperties) {
 		NcNode machineCodeNode = createNodeTreeToMachine(programProperties);
+		NcNode processEditionNode = this.ncNodeService.getById(machineCodeNode.getParentId());
+		//鑾峰彇宸ュ簭鐗堟涓嬪叾浠栨満搴婂悕锛屽瓨鍦ㄥ垯鍒犻櫎
+		ncNodeService.lambdaUpdate().eq(NcNode::getNodeType,NcNode.TYPE_MACHINE_CODE)
+			.eq(NcNode::getParentId,processEditionNode.getId()).eq(NcNode::getIsLastEdition,1)
+			.ne(NcNode::getName,machineCodeNode.getName()).remove();
+
+		//淇濇寔鍔犲伐鏈哄簥鏄渶鏂颁笅鍙戜换鍔$殑鏈哄簥锛屼笉鏄柊寤轰竴涓満搴婅妭鐐癸紝鎻掑彊宸ュ簭鐗堟涓嬫槸鍚︽湁鍏朵粬鐨勬満搴婏紙闆朵欢鍙蜂竴鑷达紝宸ュ簭鍙凤紝宸ュ簭鐗堟涓�鑷达級
+		//鑾峰彇
+		//鍔犲伐鏈哄簥鍜岀▼搴忓寘鍚嶅湪鍚屼竴绾ц妭鐐�,鍚屽湪宸ュ簭鐗堟涓嬬骇
 		String programPkgName = NcNodeService.genProgramName(programProperties.getDrawingNo(),programProperties.getProcessNo());
-		return createNodeIfNotExists(programPkgName ,NcNode.TYPE_PROGRAM_PACKAGE, machineCodeNode,programProperties);
+		return createNodeIfNotExists(programPkgName ,NcNode.TYPE_PROGRAM_PACKAGE, processEditionNode,programProperties);
 
 	}
 
@@ -138,7 +165,7 @@
 	 * @param nodeType 鑺傜偣绫诲瀷
 	 * @param parentNode 鐖惰妭鐐�
 	 * @param programProperties 娴佺▼绋嬪簭灞炴��
-	 * @return
+	 * @return 鍒涘缓鎴栧凡瀛樺湪鐨勮妭鐐规垨
 	 */
 	NcNode createNodeIfNotExists(String name,String nodeType,NcNode parentNode,FlowProgramProperties programProperties) {
 		Optional<NcNode>  nodeOpt = this.ncNodeService.lambdaQuery().eq(NcNode::getName,name).eq(NcNode::getNodeType,nodeType)
@@ -167,6 +194,8 @@
 				ncNode.setProcessName(programProperties.getProcessName());
 				ncNode.setMachineCode(programProperties.getMachineCode());
 				ncNode.setProductModel(programProperties.getProductModel());
+
+				ncNode.setDeviation(programProperties.getDeviation());
 			}
 
 			ncNode.setIsLastEdition(1);
@@ -214,10 +243,10 @@
 		return ncNode;
 	}
 
-	NcNode createPianliNode() {
+	NcNode createDeviationNode() {
 		NcNode ncNode = new NcNode();
 		ncNode.setId(3L);
-		ncNode.setName(PIANLI_NAME);
+		ncNode.setName(DEVIATION_NAME);
 		ncNode.setParentId(0L);
 		ncNode.setParentIds("0");
 		ncNode.setNodeType("10");
@@ -226,4 +255,6 @@
 
 		return ncNode;
 	}
+
+
 }

--
Gitblit v1.9.3