From 143e74027f8b68fb7fa4dcd0026ccfa1e0e16788 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 10 九月 2025 16:41:45 +0800
Subject: [PATCH] mes接口调整

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java |  127 ++++++++++++++++++++++++++++--------------
 1 files changed, 85 insertions(+), 42 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 7fecd89..b6095ae 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
@@ -11,6 +11,8 @@
 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.utils.EntityUtil;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -29,7 +31,7 @@
 	private final NcNodeService ncNodeService;
 	private final FlowCommonService flowCommonService;
 	private final FlowProgramFileService flowProgramFileService;
-	private final ProgramSeqService programSeqService;
+
 	public static final String TRY_NAME = "璇曞垏";
 	public static final String CURE_NAME = "鍥哄寲";
 	public static final String DEVIATION_NAME = "鍋忕";
@@ -42,8 +44,10 @@
 	public NcNode createNodeTreeToMachine(FlowProgramProperties programProperties) {
 		NcNode root;
 		if(programProperties.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)){
-			if(Func.isEmpty(programProperties.getDeviation())){
-				//璇曞垏
+			if(Func.isEmpty(programProperties.getDeviation()) ||
+				(FlowContants.Y.equals(programProperties.getHasCuredProgram()) &&  FlowContants.N.equals(programProperties.getCureProgramUseable()))){
+				//鏅�氳瘯鍒囷紝鎴栬�呮湁鍥哄寲涓嶅彲鐢紝寤虹珛璇曞垏鑺傜偣
+				//璇曞垏鏍硅妭鐐�
 				root = rootNodeByName(TRY_NAME);
 				if (root == null) {
 					root = createTryNode();
@@ -64,74 +68,106 @@
 			throw new ServiceException("娴佺▼瀹氫箟涓嶅湪鑼冨洿鍐�");
 		}
 		//鍒涘缓浜у搧鍨嬪彿鑺傜偣
-		NcNode productModelNode = createNodeIfNotExists(programProperties.getProductModel(),NcNode.TYPE_PRODUCT_MODEL, root,programProperties);
+		NcNode productModelNode = createNodeIfNotExists(programProperties.getProductModel(),NcNode.TYPE_PRODUCT_MODEL, root,programProperties,null);
 		//闆剁粍浠跺彿鑺傜偣
-		NcNode drawingNoNode = createNodeIfNotExists(programProperties.getDrawingNo(),NcNode.TYPE_DRAWING_NO, productModelNode,programProperties);
+		NcNode drawingNoNode = createNodeIfNotExists(programProperties.getDrawingNo(),NcNode.TYPE_DRAWING_NO, productModelNode,programProperties,null);
 		//宸ヨ壓鐗堟鑺傜偣
 		//NcNode craftEditionNode = createNodeIfNotExists(programProperties.getCraftEdition(),NcNode.TYPE_CRAFT_EDITION, drawingNoNode,programProperties);
 		//宸ュ簭鍙疯妭
-		NcNode processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, drawingNoNode,programProperties);
+		NcNode processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, drawingNoNode,programProperties,null);
 		//宸ュ簭鐗堟鑺傜偣
-		NcNode processEditionNode = createNodeIfNotExists(programProperties.getProcessEdition(),NcNode.TYPE_PROCESS_EDITION, processNoNode,programProperties);
+		NcNode processEditionNode = createNodeIfNotExists(programProperties.getProcessEdition(),NcNode.TYPE_PROCESS_EDITION, processNoNode,programProperties,null);
 		//鍔犲伐鏈哄簥鑺傜偣
-		return createNodeIfNotExists(programProperties.getMachineCode(),NcNode.TYPE_MACHINE_CODE, processEditionNode,programProperties);
+		return createNodeIfNotExists(programProperties.getMachineCode(),NcNode.TYPE_MACHINE_CODE, processEditionNode,programProperties,null);
+	}
+
+	@Transactional
+	public NcNode createNodeTreeToProcessEdition(FlowProgramProperties programProperties) {
+		NcNode root;
+		if(programProperties.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)){
+			if(Func.isEmpty(programProperties.getDeviation()) ||
+				(FlowContants.Y.equals(programProperties.getHasCuredProgram()) &&  FlowContants.N.equals(programProperties.getCureProgramUseable()))){
+				//鏅�氳瘯鍒囷紝鎴栬�呮湁鍥哄寲涓嶅彲鐢紝寤虹珛璇曞垏鑺傜偣
+				//璇曞垏鏍硅妭鐐�
+				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);
+			if(root == null){
+				root = createCureNode();
+			}
+		}else{
+			throw new ServiceException("娴佺▼瀹氫箟涓嶅湪鑼冨洿鍐�");
+		}
+		//鍒涘缓浜у搧鍨嬪彿鑺傜偣
+		NcNode productModelNode = createNodeIfNotExists(programProperties.getProductModel(),NcNode.TYPE_PRODUCT_MODEL, root,programProperties,null);
+		//闆剁粍浠跺彿鑺傜偣
+		NcNode drawingNoNode = createNodeIfNotExists(programProperties.getDrawingNo(),NcNode.TYPE_DRAWING_NO, productModelNode,programProperties,null);
+		//宸ヨ壓鐗堟鑺傜偣
+		//NcNode craftEditionNode = createNodeIfNotExists(programProperties.getCraftEdition(),NcNode.TYPE_CRAFT_EDITION, drawingNoNode,programProperties);
+		//宸ュ簭鍙疯妭
+		NcNode processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, drawingNoNode,programProperties,null);
+		//宸ュ簭鐗堟鑺傜偣
+		NcNode processEditionNode = createNodeIfNotExists(programProperties.getProcessEdition(),NcNode.TYPE_PROCESS_EDITION, processNoNode,programProperties,null);
+		//鍔犲伐鏈哄簥鑺傜偣
+		return createNodeIfNotExists(programProperties.getMachineCode(),NcNode.TYPE_MACHINE_CODE, processEditionNode,programProperties,null);
 	}
 	/**
 	 * 鏍规嵁娴佺▼淇℃伅锛岃嚜鍔ㄥ垱寤哄悇涓妭鐐�,鍖呮嫭绋嬪簭鑺傜偣
 	 * @param programProperties 绋嬪簭灞炴��
+	 * @return 绋嬪簭鍖呰妭鐐瑰疄渚�
 	 */
 	@Transactional
-	public void createNodeTreeWithProgram(FlowProgramProperties programProperties) {
+	public NcNode createNodeTreeWithProgram(FlowProgramProperties programProperties,Integer versionNumber) {
 		//,int rootNodeCatgory = 1:璇曞垏锛�2鍥哄寲锛�3鍋忕
-		NcNode programPkdNode = createTreeToPackage(programProperties);
+		NcNode programPkdNode = createTreeToPackage(programProperties,versionNumber);
 		//鍒犻櫎涔嬪墠鍒涘缓杩囩殑绋嬪簭鏂囦欢鑺傜偣(鍥犱负閲嶅鍦ㄧ紪鍒惰妭鐐瑰鎵�)锛岄伩鍏嶉噸澶嶆暟鎹�
-		//this.ncNodeService.lambdaUpdate().eq(NcNode::getParentId, programPkdNode.getId()).remove();
 		ncNodeService.deleteSubNodes(programPkdNode.getId());
 
 		List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, programProperties.getProcessInstanceId()).list();
 		for (FlowProgramFile programFile : programFiles) {
-			if(programFile.isProgram()) {
-				createProgramFileNode(programFile, programPkdNode, programProperties);
-			}
+			createProgramFileNode(programFile, programPkdNode,versionNumber);//鎵�鏈夋枃浠跺寘鎷▼搴忓拰鍏朵粬锛岄兘闇�瑕佸缓绔嬭妭鐐�
 		}
-		createOtherNode(programFiles);
+
+		return programPkdNode;
 	}
-	void  createOtherNode(List<FlowProgramFile> programFiles){
-//111mqita 鑺傜偣
-	}
+
 	/**
 	 * 寤虹珛绋嬪簭鏂囦欢鑺傜偣
 	 * @param programFile 娴佺▼鏂囦欢
 	 * @param programPkdNode 绋嬪簭鍖呭悕 鑺傜偣锛岀▼搴忚妭鐐圭殑 涓婄骇
-	 * @param programProperties 娴佺▼鍙戣捣鐨勭▼搴忕殑灞炴��
+	 * @param versionNumber 鐗堟湰鍙�
 	 */
-	private void createProgramFileNode(FlowProgramFile programFile, NcNode programPkdNode, FlowProgramProperties programProperties) {
+	private void createProgramFileNode(FlowProgramFile programFile, NcNode programPkdNode, Integer versionNumber) {
 		//姝ゅ搴旈伩鍏嶉噸澶嶅垱寤�
 
 		NcNode node = new NcNode();
+		BeanUtils.copyProperties(programPkdNode, node);
+		EntityUtil.clearBaseProperties(node);
+
 		node.setNodeType(NcNode.TYPE_PROGRAM_FILE);
 		node.setName(programFile.getName());//鏂囦欢鍚嶏紝
 
 		node.setIsLastEdition(1);
-		node.setDrawingNo(programPkdNode.getDrawingNo());
-		node.setDrawingNoEdition(programProperties.getDrawingNoEdition());
-		node.setCraftEdition(programProperties.getCraftEdition());
-		node.setProcessName(programProperties.getProcessName());
-		node.setProcessNo(programProperties.getProcessNo());
-		node.setProcessEdition(programProperties.getProcessEdition());
-		node.setMachineCode(programProperties.getMachineCode());
-		node.setProductModel(programProperties.getProductModel());
+
 		node.setFlowProgramFileId(programFile.getId());
-		node.setVersionNumber(1);
+		if(versionNumber == null){
+			node.setVersionNumber(1);
+		}else {
+			node.setVersionNumber(versionNumber);
+		}
 		node.setParentId(programPkdNode.getId());
 		node.setParentIds(programPkdNode.getParentIds()+","+programPkdNode.getId());
-		/*
-		if("program".equals(programFile.getFileType())){
 
-		}else{
-			//鍏朵粬鏂囦欢锛屽拰绋嬪簭鍖呭悕鍚岀骇骞跺垪
-
-		}*/
 
 		ncNodeService.save(node);
 	}
@@ -142,7 +178,7 @@
 	 * @return 绋嬪簭鍖呭悕鑺傜偣锛堟渶鏈骇锛�
 	 */
 	@Transactional
-	public NcNode createTreeToPackage(FlowProgramProperties programProperties) {
+	public NcNode createTreeToPackage(FlowProgramProperties programProperties,Integer versionNumber) {
 		NcNode machineCodeNode = createNodeTreeToMachine(programProperties);
 		NcNode processEditionNode = this.ncNodeService.getById(machineCodeNode.getParentId());
 		//鑾峰彇宸ュ簭鐗堟涓嬪叾浠栨満搴婂悕锛屽瓨鍦ㄥ垯鍒犻櫎
@@ -153,8 +189,8 @@
 		//淇濇寔鍔犲伐鏈哄簥鏄渶鏂颁笅鍙戜换鍔$殑鏈哄簥锛屼笉鏄柊寤轰竴涓満搴婅妭鐐癸紝鎻掑彊宸ュ簭鐗堟涓嬫槸鍚︽湁鍏朵粬鐨勬満搴婏紙闆朵欢鍙蜂竴鑷达紝宸ュ簭鍙凤紝宸ュ簭鐗堟涓�鑷达級
 		//鑾峰彇
 		//鍔犲伐鏈哄簥鍜岀▼搴忓寘鍚嶅湪鍚屼竴绾ц妭鐐�,鍚屽湪宸ュ簭鐗堟涓嬬骇
-		String programPkgName = NcNodeService.genProgramName(programProperties.getDrawingNo(),programProperties.getProcessNo());
-		return createNodeIfNotExists(programPkgName ,NcNode.TYPE_PROGRAM_PACKAGE, processEditionNode,programProperties);
+		String programPkgName = NcNodeService.genProgramName(programProperties.getDrawingNo(),programProperties.getProcessNo(),programProperties.getProcessEdition());
+		return createNodeIfNotExists(programPkgName ,NcNode.TYPE_PROGRAM_PACKAGE, processEditionNode,programProperties,versionNumber);
 
 	}
 
@@ -166,7 +202,7 @@
 	 * @param programProperties 娴佺▼绋嬪簭灞炴��
 	 * @return 鍒涘缓鎴栧凡瀛樺湪鐨勮妭鐐规垨
 	 */
-	NcNode createNodeIfNotExists(String name,String nodeType,NcNode parentNode,FlowProgramProperties programProperties) {
+	NcNode createNodeIfNotExists(String name,String nodeType,NcNode parentNode,FlowProgramProperties programProperties,Integer versionNumber) {
 		Optional<NcNode>  nodeOpt = this.ncNodeService.lambdaQuery().eq(NcNode::getName,name).eq(NcNode::getNodeType,nodeType)
 			.eq(NcNode::getParentId,parentNode.getId()).eq(NcNode::getIsLastEdition,1).oneOpt();
 		if(nodeOpt.isPresent()){
@@ -177,13 +213,15 @@
 			ncNode.setParentId(parentNode.getId());
 			ncNode.setParentIds(parentNode.getParentIds() + "," + parentNode.getId());
 			ncNode.setNodeType(nodeType);
-			ncNode.setVersionNumber(1);
+			if(versionNumber == null){
+				ncNode.setVersionNumber(1);
+			}else{
+				ncNode.setVersionNumber(versionNumber);
+			}
 
 			//绋嬪簭鍖呰妭鐐瑰拰绋嬪簭鏂囦欢鑺傜偣鏁版嵁
 			if(NcNode.TYPE_PROGRAM_PACKAGE.equals(nodeType) || NcNode.TYPE_PROGRAM_FILE.equals(nodeType)){
 
-				String programNo = programSeqService.generageProgramNo();
-				ncNode.setProgramNo(programNo);
 				ncNode.setProcessInstanceId(programProperties.getProcessInstanceId());
 				ncNode.setDrawingNo(programProperties.getDrawingNo());
 				ncNode.setDrawingNoEdition(programProperties.getDrawingNoEdition());
@@ -195,6 +233,11 @@
 				ncNode.setProductModel(programProperties.getProductModel());
 
 				ncNode.setDeviation(programProperties.getDeviation());
+
+				if(NcNode.TYPE_PROGRAM_PACKAGE.equals(nodeType)) {//绋嬪簭鍖呰妭鐐癸紝鍒嗛厤绋嬪簭缂栧彿
+
+					ncNode.setProgramNo(programProperties.getProgramNo());
+				}
 			}
 
 			ncNode.setIsLastEdition(1);

--
Gitblit v1.9.3