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/constants/FlowContants.java             |   10 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java      |    3 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java                     |   17 ++-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java      |    3 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java    |   69 +++++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java          |    6 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml              |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java |  137 +++++++++++++++------------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java           |   10 ++
 9 files changed, 183 insertions(+), 76 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java
index b36d776..ed9c975 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java
@@ -2,9 +2,15 @@
 
 public class FlowContants {
 
+	/**
+	 * 璇曞垏娴佺▼KEY
+	 */
+	public static final String TRY_PROCESS_KEY = "dispatch";
 
-	public static final String PROGRAM_IDS_KEY = "programids";
-
+	/**
+	 * 鍥哄寲娴佺▼KEY
+	 */
+	public static final String CURE_PROCESS_KEY = "program-cure";
 	/**
 	 * 娴佺▼鏍囬
 	 */
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
index 81ed709..d86cfcb 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
@@ -105,7 +105,8 @@
 			taskService.complete(taskId, variables);
 			//鍦ㄧ紪鍒朵换鍔℃椂锛屽垱寤鸿妭鐐癸紙娌℃湁鑺傜偣鍒欏垱寤猴紝鏈夊氨鐩存帴浣跨敤
 			if(task.getTaskDefinitionKey().equals("programmingTask") && "Y".equals(operateResult)) {
-				ncNodeAutoCreateService.createNodeTree(processInstanceId);
+
+				ncNodeAutoCreateService.createNodeTreeWithProgram(flowCommonService.getProgramProperties(processInstanceId));
 			}
 			return R.success("娴佺▼鎻愪氦鎴愬姛");
 		}else {
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
index a645065..18326a8 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
@@ -49,6 +49,12 @@
 
 		programProperties.setCraftEdition(String.valueOf(vars.get(FlowContants.CRAFT_EDITION)));
 		programProperties.setHasCuredProgram(String.valueOf(vars.get(FlowContants.HAS_CURED_PROGRAM)));
+
+		ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
+			.processInstanceId(processInstanceId)
+			.singleResult();
+		String processDefinitionKey = processInstance.getProcessDefinitionKey();
+		programProperties.setProcessDefinitionKey(processDefinitionKey);
 		return programProperties;
 	}
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
index a7f66a9..1d2fc5c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
@@ -43,4 +43,7 @@
 
 	@Schema(description = "娴佺▼瀹炰緥id")
 	private String processInstanceId;
+
+	@Schema(description = "娴佺▼瀹氫箟key")
+	private String processDefinitionKey;
 }
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);
+
+
+
 	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml
index 0e42fd3..305b867 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml
@@ -35,7 +35,7 @@
     </select>
 
     <sql id="all_columns">id,tenant_id,name,parent_id,parent_ids,node_type,status,create_dept,is_deleted,create_time,create_user,update_time,update_user</sql>
-    <sql id="all_columns_n">n.id,n.tenant_id,n.name,n.parent_id,n.parent_ids,n.node_type,n.description,n.remark,n.status,n.create_dept,n.is_deleted,n.create_time,n.create_user,n.update_time,n.update_user</sql>
+    <sql id="all_columns_n">n.id,n.tenant_id,n.name,n.parent_id,n.parent_ids,n.node_type,n.description,n.remark,n.drawing_no,n.drawing_no_edition,n.craft_edition,n.is_last_edition,n.is_locked,n.process_edition,n.process_no,n.is_cured,n.process_instance_id,n.status,n.create_dept,n.is_deleted,n.create_time,n.create_user,n.update_time,n.update_user</sql>
     <select id="lazyList" resultType="org.springblade.mdm.program.vo.NcNodeVO">
         select <include refid="all_columns_n"/>,dt.dict_value as node_type_name,u.name create_user_name,(
         SELECT
@@ -94,7 +94,7 @@
     </select>
 
     <select id="historyByParentIdAndName" resultType="org.springblade.mdm.program.vo.NcNodeVO">
-        select n.id,n.name,n.create_time,n.update_time,u.name create_user_name,n.process_no
+        select n.id,n.name,n.version_number,n.create_time,n.update_time,u.name create_user_name,n.process_no
          from mdm_nc_node n left join blade_user u on n.create_user=u.id and u.is_deleted=0
 
         where n.is_deleted=0 and n.parent_id in (select id from mdm_nc_node where parent_id=#{parentNode.parentId}) and n.name=#{name}
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 d3ec4c7..bea9b12 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,7 @@
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.mdm.flow.constants.FlowContants;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
@@ -27,27 +28,72 @@
 	private final FlowCommonService flowCommonService;
 	private final FlowProgramFileService flowProgramFileService;
 	private final ProgramSeqService programSeqService;
-	public static final String SHIQIE_NAME = "璇曞垏";
-	public static final String GUHUA_NAME = "鍥哄寲";
+	public static final String TRY_NAME = "璇曞垏";
+	public static final String CURE_NAME = "鍥哄寲";
 	public static final String PIANLI_NAME = "鍋忕";
+
 	/**
-	 * 鏍规嵁娴佺▼淇℃伅锛岃嚜鍔ㄥ垱寤哄悇涓妭鐐�
-	 * @param processInstanceId
+	 * 鍒涘缓鏍戝埌鏈哄簥绾у埆
+	 * @param programProperties
 	 */
 	@Transactional
-	public void createNodeTree(String processInstanceId) {
-		FlowProgramProperties programProperties = flowCommonService.getProgramProperties(processInstanceId);
+	public NcNode createNodeTreeToMachine(FlowProgramProperties programProperties) {
 
-		//,int rootNodeCatgory = 1:璇曞垏锛�2鍥哄寲锛�3鍋忕
-		NcNode programPkdNode = createTreeToProgramPackageByRootCategory(1,programProperties);
-
-		List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, processInstanceId).list();
-		for (FlowProgramFile programFile : programFiles) {
-			createProgramFileNode(programFile,programPkdNode,programProperties);
+		NcNode root;
+		if(programProperties.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)){
+			//璇曞垏
+			root = rootNodeByName(TRY_NAME);
+			if(root == null){
+				root = createTryNode();
+			}
+		}else if(programProperties.getProcessDefinitionKey().equals(FlowContants.CURE_PROCESS_KEY)){
+			root = rootNodeByName(CURE_NAME);
+			if(root == null){
+				root = createCureNode();
+			}
+		}else{
+			root = rootNodeByName(PIANLI_NAME);
+			if(root == null){
+				root = createPianliNode();
+			}
 		}
+
+		NcNode lastNode = null;
+		//鍒涘缓浜у搧鍨嬪彿鑺傜偣
+		//NcNode productModelNode = createProductModelNode(programProperties.getProductModel(), root);
+		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 processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, craftEditionNode,programProperties);
+		//宸ュ簭鐗堟鑺傜偣
+		NcNode processEditionNode = createNodeIfNotExists(programProperties.getProcessEdition(),NcNode.TYPE_PROCESS_EDITION, processNoNode,programProperties);
+		//鍔犲伐鏈哄簥鑺傜偣
+		return createNodeIfNotExists(programProperties.getMachineCode(),NcNode.TYPE_MACHINE_CODE, processEditionNode,programProperties);
+	}
+	/**
+	 * 鏍规嵁娴佺▼淇℃伅锛岃嚜鍔ㄥ垱寤哄悇涓妭鐐�,鍖呮嫭绋嬪簭鑺傜偣
+	 * @param programProperties 绋嬪簭灞炴��
+	 */
+	@Transactional
+	public void createNodeTreeWithProgram(FlowProgramProperties programProperties) {
+		//,int rootNodeCatgory = 1:璇曞垏锛�2鍥哄寲锛�3鍋忕
+		NcNode programPkdNode = createTreeToPackage(programProperties);
+		//鍒犻櫎涔嬪墠鍒涘缓杩囩殑绋嬪簭鏂囦欢鑺傜偣(鍥犱负閲嶅鍦ㄧ紪鍒惰妭鐐瑰鎵�)锛岄伩鍏嶉噸澶嶆暟鎹�
+		this.ncNodeService.lambdaUpdate().eq(NcNode::getParentId, programPkdNode.getId()).remove();
+
+		List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, programProperties.getProcessInstanceId()).list();
+		for (FlowProgramFile programFile : programFiles) {
+			createProgramFileNode(programFile, programPkdNode, programProperties);
+		}
+
 	}
 
 	private void createProgramFileNode(FlowProgramFile programFile, NcNode programPkdNode, FlowProgramProperties programProperties) {
+		//姝ゅ搴旈伩鍏嶉噸澶嶅垱寤�
+
 		NcNode node = new NcNode();
 		node.setNodeType(NcNode.TYPE_PROGRAM_FILE);
 		node.setName(programFile.getName());//鏂囦欢鍚嶏紝
@@ -66,42 +112,17 @@
 		ncNodeService.save(node);
 	}
 
-	NcNode createTreeToProgramPackageByRootCategory(int category,FlowProgramProperties programProperties) {
-		NcNode root;
-		if(category == 1){
-			//璇曞垏
-			root = rootNodeByName(SHIQIE_NAME);
-			if(root == null){
-				root = createShiqieNode();
-			}
-		}else if(category == 2){
-			root = rootNodeByName(GUHUA_NAME);
-			if(root == null){
-				root = createCureNode();
-			}
-		}else{
-			root = rootNodeByName(PIANLI_NAME);
-			if(root == null){
-				root = createPianliNode();
-			}
-		}
-
-		//鍒涘缓浜у搧鍨嬪彿鑺傜偣
-		//NcNode productModelNode = createProductModelNode(programProperties.getProductModel(), root);
-		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 processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, craftEditionNode,programProperties);
-		//宸ュ簭鐗堟鑺傜偣
-		NcNode processEditionNode = createNodeIfNotExists(programProperties.getProcessEdition(),NcNode.TYPE_PROCESS_EDITION, processNoNode,programProperties);
-		//鍔犲伐鏈哄簥鑺傜偣
-		NcNode machineCodeNode = createNodeIfNotExists(programProperties.getMachineCode(),NcNode.TYPE_MACHINE_CODE, processEditionNode,programProperties);
-		//绋嬪簭鍖呭悕鑺傜偣
+	/**
+	 * 鍒涘缓鑺傜偣鍒扮▼搴忓寘绾у埆
+	 * @param programProperties
+	 * @param createProgramPkg
+	 * @return
+	 */
+	public NcNode createTreeToPackage(FlowProgramProperties programProperties) {
+		NcNode machineCodeNode = createNodeTreeToMachine(programProperties);
 		String programPkgName = programProperties.getDrawingNo()+"-"+programProperties.getProcessNo();//闆朵欢鍙峰姞宸ュ簭鍙�
 		return createNodeIfNotExists(programPkgName ,NcNode.TYPE_PROGRAM_PACKAGE, machineCodeNode,programProperties);
+
 	}
 
 	/**
@@ -113,7 +134,8 @@
 	 * @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).eq(NcNode::getParentId,parentNode.getId()).oneOpt();
+		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()){
 			return nodeOpt.get();
 		}else {
@@ -149,15 +171,6 @@
 		}
 	}
 
-	/**
-	 * 鏍硅妭鐐规槸鍚﹀瓨鍦紝鏍硅妭鐐瑰彧鏈� 璇曞垏/鍒嗙/鍥哄寲 3涓�
-	 * @param name 鑺傜偣鍚嶇О
-	 * @return
-	 */
-	boolean rootNodeExists(String name){
-		return ncNodeService.lambdaQuery().eq(NcNode::getName, name).eq(NcNode::getParentId, 0).count()>0;
-	}
-
 	NcNode rootNodeByName(String name){
 		Optional<NcNode> rootOpt = ncNodeService.lambdaQuery().eq(NcNode::getName, name).eq(NcNode::getParentId, 0).oneOpt();
 		return rootOpt.orElse(null);
@@ -166,12 +179,12 @@
 	/**
 	 * 鍒涘缓璇曞垏鑺傜偣锛堟牴锛�
 	 */
-	NcNode createShiqieNode() {
+	NcNode createTryNode() {
 		NcNode ncNode = new NcNode();
 		ncNode.setId(1L);
-		ncNode.setName(SHIQIE_NAME);
+		ncNode.setName(TRY_NAME);
 		ncNode.setParentId(0L);
-		ncNode.setParentIds("");
+		ncNode.setParentIds("0");
 		ncNode.setNodeType("10");
 		ncNode.setVersionNumber(1);
 		ncNodeService.save(ncNode);
@@ -185,9 +198,9 @@
 	NcNode createCureNode() {
 		NcNode ncNode = new NcNode();
 		ncNode.setId(2L);
-		ncNode.setName(GUHUA_NAME);
+		ncNode.setName(CURE_NAME);
 		ncNode.setParentId(0L);
-		ncNode.setParentIds("");
+		ncNode.setParentIds("0");
 		ncNode.setNodeType("10");
 		ncNode.setVersionNumber(1);
 		ncNodeService.save(ncNode);
@@ -200,7 +213,7 @@
 		ncNode.setId(3L);
 		ncNode.setName(PIANLI_NAME);
 		ncNode.setParentId(0L);
-		ncNode.setParentIds("");
+		ncNode.setParentIds("0");
 		ncNode.setNodeType("10");
 		ncNode.setVersionNumber(1);
 		ncNodeService.save(ncNode);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
index 5fcfd04..cc66a8f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -213,4 +213,14 @@
 			return nodes.get(0);
 		}
 	}
+
+	/**
+	 * 鑾峰彇node鐨勫巻鍙插垪琛�(鍚屼竴涓埗鑺傜偣涓嬶紝鍚屽悕鐨勬墍鏈夎妭鐐癸級
+	 * @param pkgNode node
+	 * @return 鍘嗗彶鍒楄〃锛屾姤閿欒妭鐐规湰韬�
+	 */
+    public List<NcNode> getNodeHistorys(NcNode pkgNode) {
+		return this.lambdaQuery().eq(NcNode::getParentId,pkgNode.getParentId())
+			.eq(NcNode::getName,pkgNode.getName()).list();
+    }
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
index 7bb5827..40ad37d 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
@@ -36,14 +36,21 @@
 
 	@Schema(description = "宸ュ簭锛屽鈥滅簿閾b��,绋嬪簭鏂囦欢鑺傜偣鐨勫睘鎬�")
 	private String processName;
-	@Schema(description = "宸ュ簭鐗堟湰锛岀▼搴忔枃浠惰妭鐐圭殑灞炴��")
+	@Schema(description = "宸ュ簭鐗堟湰锛岀▼搴忓寘鍚嶈妭鐐圭殑灞炴��")
 	private String processEdition;
-	@Schema(description = "闆剁粍浠跺彿/鍥惧彿,绋嬪簭鏂囦欢鑺傜偣鐨勫睘鎬�")
+	@Schema(description = "宸ュ簭鍙�")
+	private String processNo;
+	@Schema(description = "闆剁粍浠跺彿/鍥惧彿,绋嬪簭鍖呭悕鑺傜偣鐨勫睘鎬�")
 	private String drawingNo;
-
-	@Schema(description = "鐗堟湰鍙�,绋嬪簭鏂囦欢鑺傜偣鐨勫睘鎬�")
+	@Schema(description = "鍥惧彿鐗堟")
+	private String drawingNoEdition;
+	@Schema(description = "鏄惁鍥哄寲")
+	private Integer isCured;
+	@Schema(description = "鏄惁鏈�鏂扮増鏈�")
+	private Integer isLastEdition;
+	@Schema(description = "鐗堟湰鍙�,绋嬪簭鍖呭悕鑺傜偣鐨勫睘鎬�")
 	private Integer versionNumber;
-	@Schema(description = "娴佺▼鐘舵��,绋嬪簭鏂囦欢鑺傜偣鐨勫睘鎬�")
+	@Schema(description = "娴佺▼鐘舵��,绋嬪簭鍖呭悕鑺傜偣鐨勫睘鎬�")
 	private Integer flowStatus;
 	@Schema(description = "瀛愯妭鐐�")
 	private List<NcNodeVO> children;

--
Gitblit v1.9.3