From 7bc1d0f521c1d59246f29bcadcc4343f88ceef1c Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 15 九月 2025 11:29:30 +0800
Subject: [PATCH] 性能优化+bug调整

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java                |    1 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ApproveTableInfo.java                          |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/CureFinishOperateTask.java          |    7 -
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java    |  100 +++++++++++++------------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ConfirmTablePrintService.java       |    8 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNodeHis.java                          |    7 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml                        |    2 
 doc/sql/mdm/mdm.mysql.all.create.sql                                                                             |    1 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java |   41 ++++++---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveInfoQueryService.java              |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java         |   10 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramConfirmTableService.java           |    2 
 12 files changed, 106 insertions(+), 79 deletions(-)

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 844ffaf..1309f3f 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
@@ -57,6 +57,7 @@
 			boolean isDuplicate = taskDispatchService.checkIsDuplicate(startVO);
 
 			TaskDispatch dispatch = taskDispatchService.saveTask(startVO,isDuplicate);
+			startVO.setCreateUser(dispatch.getCreateUser());
 			if(isDuplicate){
 				throw new ServiceException("閲嶅娲惧伐");
 			}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java
index acc6343..9a6504c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java
@@ -3,12 +3,14 @@
 import lombok.extern.slf4j.Slf4j;
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.delegate.DelegateExecution;
+import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.service.FlowCommonService;
 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.NcNodeHisService;
 import org.springblade.mdm.program.service.NcNodeService;
 import org.springblade.mdm.program.service.NcProgramApprovedService;
 import org.springblade.mdm.utils.EntityUtil;
@@ -16,6 +18,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -32,12 +35,15 @@
 	private FlowCommonService flowCommonService;
 	@Autowired
 	private NcNodeService ncNodeService;
-
+	@Autowired
+	private NcNodeHisService nodeHisService;
 	/**
 	 * 鍦ㄦ祦绋嬬粨鏉熸椂鑷姩璋冪敤,锛堥厤缃湪瀹℃壒缁撴潫浜嬩欢鐨別xecutelistener涓簡锛�
 	 * @param execution 鎵ц瀵硅薄
 	 */
 	public void handle(DelegateExecution execution) {
+		Date time = DateUtil.now();
+
 		// 鎵ц涓氬姟閫昏緫
 		String instId = execution.getProcessInstanceId();
 		log.info("浜嬩欢鍚嶇О{}锛宨nstid={}" , execution.getEventName(),instId);
@@ -80,6 +86,8 @@
 		}
 
 		addApproveTable(tempPkgNode,props);
+
+		nodeHisService.mergeNodeToHisGeTime(time);
 		log.info("绋嬪簭琛ュ厖娴佺▼宸插畬鎴恑n AppendFinishListener");
 	}
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/CureFinishOperateTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/CureFinishOperateTask.java
index c541dae..16619fb 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/CureFinishOperateTask.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/CureFinishOperateTask.java
@@ -31,8 +31,6 @@
 	private final NormalCureFinishDataHandler normalCureFinishDataHandler;
 	private final DeviationCureFinishDataHandler deviationCureFinishDataHandler;
 
-	private final NcNodeService ncNodeService;
-
 	/**
 	 * 鍥哄寲瀹℃壒閫氳繃澶勭悊浠诲姟锛�
 	 *
@@ -44,6 +42,7 @@
 		Date time = DateUtil.now();
 		//鍥哄寲绋嬪簭妫�鏌ユ湁鏁堟湡锛�
 		dealWithNode(execution.getProcessInstanceId());
+
 		nodeHisService.mergeNodeToHisGeTime(time);
 	}
 
@@ -74,8 +73,4 @@
 
 		}
 	}
-
-
-
-
 }
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 c4bb669..c568bef 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
@@ -29,10 +29,6 @@
 	private FlowProgramFileService flowProgramFileService;
 	@Autowired
 	private NcNodeService nodeService;
-	@Autowired
-	private NcNodeAutoCreateService ncNodeAutoCreateService;
-	@Autowired
-	private MachineService machineService;
 
 	/**
 	 * cureFinishOperateTask璋冪敤锛屽亸绂诲崟鍥炰紶瀹℃壒瀹屾垚澶勭悊涓氬姟
@@ -40,7 +36,6 @@
 	 */
 	public void handleData(FlowProgramProperties props) {
 		// 鎵ц涓氬姟閫昏緫
-		String instId = props.getProcessInstanceId();
 		NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId,  props.getProcessInstanceId()).one();
 
 		pkgNode.lock();
@@ -55,8 +50,21 @@
 
 		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){
 			pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
@@ -66,17 +74,23 @@
 				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);
@@ -85,7 +99,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());
@@ -93,8 +107,5 @@
 			nodeService.save(newProgNode);
 
 		}
-
-		log.info("鍋忕鍥炰紶Listener瀹屾垚");
 	}
-
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
index 2b38716..295993f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
@@ -76,7 +76,12 @@
 
 		//闇�瑕佸浐鍖栫殑鑺傜偣
 		NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId,  flowProps.getProcessInstanceId()).one();
+		//鍘熻妭鐐逛繚鐣欎笉鍔�,缃负鑰佺増鏈�
+		pkgNode.setIsLastEdition(0);
+		pkgNode.setIsLocked(1);
+		nodeService.updateById(pkgNode);
 
+		nodeService.getBaseMapper().deleteById(pkgNode.getParentId());//鍒犻櫎鏈哄簥缁勮妭鐐�
 		//List<NcNode> historyProgramPackageNodes = nodeService.getTryNodeHistory(pkgNode);
 		try {
 			moveNodeToCuredTree(pkgNode, flowProps);//, historyProgramPackageNodes
@@ -91,20 +96,18 @@
 	/**
 	 * 灏嗚妭鐐瑰拰鍘嗗彶鑺傜偣鎸姩鍒板浐鍖栫殑鍚岀骇鑺傜偣涓�
 	 * @param pkgNode1 瑕佸浐鍖栫殑鑺傜偣
-	 * @param historyProgramPackageNodes 绋嬪簭鍖呭悕 鍘嗗彶鑺傜偣List<NcNode> historyProgramPackageNodes,
+	 * @param programProperties 娴佺▼灞炴��
 	 */
 	void moveNodeToCuredTree(NcNode pkgNode1, FlowProgramProperties programProperties) throws IOException {
 
 		//鍒涘缓鑺傜偣鍒版満搴婄骇鍒�.(鍥哄寲鏍�)
 		NcNode machineGroupNode = ncNodeAutoCreateService.createNodeTreeToMachineGroup(programProperties);
 
-		//鏂板缓涓�涓妭鐐癸紝浣滀负鍥哄寲鑺傜偣锛岃�佽妭鐐逛繚鐣欎笉鍔�,缃负鑰佺増鏈�
+		//鏂板缓涓�涓妭鐐癸紝浣滀负鍥哄寲鑺傜偣锛�
 		this.nodeService.lambdaUpdate().likeRight(NcNode::getParentIds, machineGroupNode.subNodeParentIds())
 			.in(NcNode::getNodeType, Arrays.asList(NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE))
 			.set(NcNode::getIsLastEdition,0).set(NcNode::getIsLocked,1).update();
 
-		//pkgNode1.setParentId(machineGroupNode.getId());
-		//pkgNode1.setParentIds(machineGroupNode.subNodeParentIds());//鏇存柊涓婄骇鑺傜偣锛屼笅闈㈣繕瑕佺敤搴斾负鍦╤istoryProgramPackageNodes涓殑鍜岃繖涓笉鏄竴涓疄渚�
 		List<NcNode> programNodes = nodeService.getProgramFilesByPackageId(pkgNode1.getId());
 		boolean tryPkgNodeHasChild = !programNodes.isEmpty();
 
@@ -114,64 +117,67 @@
 		cureNode.setParentIds(machineGroupNode.subNodeParentIds());
 		nodeService.save(cureNode);
 
+		this.copyNonProgramNodes(pkgNode1,cureNode);
+		/*
 		List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,pkgNode1.getId()).list();
-		//FlowProgramFile pfile;
+		FlowProgramFile pfile;
 		for(NcNode oldProgramNode : oriProgramNodes){
 			oldProgramNode.setParentIds(pkgNode1.subNodeParentIds());
 			oldProgramNode.setIsLastEdition(0);
-
-			//pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
-
 			//褰撳墠鍥哄寲绋嬪簭鍖呭悕涓嬬殑鈥滃叾浠栨枃浠垛�濋潪绋嬪簭鏂囦欢銆備笉璁剧疆涓鸿�佺増鏈紝鐩存帴鎸埌鍥哄寲鏍戜笅,涓や釜缃戠粶涔嬮棿鍙氦鎹㈢▼搴忔枃浠讹紝鍏朵粬鏂囦欢鍙兘淇濈暀
-			//鍏朵粬鏂囦欢锛岄渶瑕佸鍒跺埌鏂板缓鐨勫浐鍖栬妭鐐逛笅
-			NcNode newFileNode = new NcNode();
-			BeanUtils.copyProperties(oldProgramNode,newFileNode);
-			EntityUtil.clearBaseProperties(newFileNode);
-			newFileNode.setParentId(cureNode.getId());
-			newFileNode.setParentIds(cureNode.subNodeParentIds());
-			newFileNode.setIsLastEdition(1);
-			nodeService.save(newFileNode);
+			//鍏朵粬鏂囦欢锛岄渶瑕佸鍒跺埌鏂板缓鐨勫浐鍖栬妭鐐逛笅锛堢▼搴忔枃浠朵笉澶嶅埗锛�
+			pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
+			if(!pfile.isProgram()) {
+				NcNode newFileNode = new NcNode();
+				BeanUtils.copyProperties(oldProgramNode, newFileNode);
+				EntityUtil.clearBaseProperties(newFileNode);
+				newFileNode.setParentId(cureNode.getId());
+				newFileNode.setParentIds(cureNode.subNodeParentIds());
+				newFileNode.setIsLastEdition(1);
+				nodeService.save(newFileNode);
+			}
 
 		}
 		nodeService.updateBatchById(oriProgramNodes);
-		/*
-		for(NcNode hisPackageNode : historyProgramPackageNodes){
-			hisPackageNode.setIsLastEdition(0);
-			hisPackageNode.setParentId(machineGroupNode.getParentId());
-			hisPackageNode.setParentIds(machineGroupNode.subNodeParentIds());//绋嬪簭鍖呬笌鏈哄簥鑺傜偣鍚岀骇
-			hisPackageNode.lock();
+		*/
 
-			//澶勭悊绋嬪簭鍖呬笅灞傜殑绋嬪簭鑺傜偣锛岃繖閲岋細鑰佺殑绋嬪簭鑺傜偣涓嶇敤鏇存柊涓哄巻鍙茬増鏈紝鍥犱负浼氬缓绔嬫柊鑺傜偣銆傚彧淇敼parentId 鍜� parentIds //鏀逛簡锛岀湅鐪嬫晥鏋�
-			List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
-			FlowProgramFile pfile;
-			for(NcNode oldProgramNode : oriProgramNodes){
-				oldProgramNode.setParentIds(hisPackageNode.subNodeParentIds());
-				oldProgramNode.setIsLastEdition(0);
+		this.addNewProgramNode(cureNode,pkgNode1.getProcessInstanceId());
 
-				pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
-				//if(oldProgramNode.getParentId().equals(pkgNode1.getId()) && !pfile.isProgram()){
-					//褰撳墠鍥哄寲绋嬪簭鍖呭悕涓嬬殑鈥滃叾浠栨枃浠垛�濋潪绋嬪簭鏂囦欢銆備笉璁剧疆涓鸿�佺増鏈紝鐩存帴鎸埌鍥哄寲鏍戜笅,涓や釜缃戠粶涔嬮棿鍙氦鎹㈢▼搴忔枃浠讹紝鍏朵粬鏂囦欢鍙兘淇濈暀
-					//鍏朵粬鏂囦欢锛岄渶瑕佸鍒跺埌鏂板缓鐨勫浐鍖栬妭鐐逛笅
-					NcNode newFileNode = new NcNode();
-					BeanUtils.copyProperties(oldProgramNode,newFileNode);
-					EntityUtil.clearBaseProperties(newFileNode);
-					newFileNode.setParentId(cureNode.getId());
-					newFileNode.setParentIds(cureNode.subNodeParentIds());
-					newFileNode.setIsLastEdition(1);
-					nodeService.save(newFileNode);
-				//}
+	}
 
+	/**
+	 * 浠庡緟鍥哄寲鑺傜偣澶嶅埗闈炵▼搴忔枃浠惰妭鐐瑰埌鍥哄寲鑺傜偣涓�
+	 * @param oriPkgNode 寰呭浐鍖栬妭鐐�
+	 * @param cureNode 鍥哄寲鑺傜偣
+	 */
+	void copyNonProgramNodes(NcNode oriPkgNode,NcNode cureNode){
+		List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,oriPkgNode.getId()).list();
+		FlowProgramFile pfile;
+		for(NcNode oldProgramNode : oriProgramNodes){
+			oldProgramNode.setParentIds(oriPkgNode.subNodeParentIds());
+			oldProgramNode.setIsLastEdition(0);
+			//褰撳墠鍥哄寲绋嬪簭鍖呭悕涓嬬殑鈥滃叾浠栨枃浠垛�濋潪绋嬪簭鏂囦欢銆備笉璁剧疆涓鸿�佺増鏈紝鐩存帴鎸埌鍥哄寲鏍戜笅,涓や釜缃戠粶涔嬮棿鍙氦鎹㈢▼搴忔枃浠讹紝鍏朵粬鏂囦欢鍙兘淇濈暀
+			//鍏朵粬鏂囦欢锛岄渶瑕佸鍒跺埌鏂板缓鐨勫浐鍖栬妭鐐逛笅锛堢▼搴忔枃浠朵笉澶嶅埗锛�
+			pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
+			if(!pfile.isProgram()) {
+				NcNode newFileNode = new NcNode();
+				BeanUtils.copyProperties(oldProgramNode, newFileNode);
+				EntityUtil.clearBaseProperties(newFileNode);
+				newFileNode.setParentId(cureNode.getId());
+				newFileNode.setParentIds(cureNode.subNodeParentIds());
+				newFileNode.setIsLastEdition(1);
+				nodeService.save(newFileNode);
 			}
-			nodeService.updateBatchById(oriProgramNodes);
+
 		}
+		nodeService.updateBatchById(oriProgramNodes);
+	}
 
-		 */
-		//nodeService.updateBatchById(historyProgramPackageNodes);
-
+	void addNewProgramNode(NcNode cureNode,String processInstanceId) throws IOException {
 		Machine machine = machineService.getByCode(cureNode.getMachineCode());
 		List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
-		//鏂扮殑娴佺▼鏂囦欢锛岄渶瑕佸湪鍖呰妭鐐逛笅鏂板缓锛屼笉鑳界敤鑰佺殑
-		List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode1.getProcessInstanceId()).list();
+		//鏂扮殑娴佺▼鏂囦欢锛岄渶瑕佸湪鍖呰妭鐐逛笅鏂板缓锛屼笉鑳界敤鑰佺殑鍖呰妭鐐�
+		List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,processInstanceId).list();
 		for(FlowProgramFile flowProgramFile : files){
 			NcNode newProgNode = new NcNode();
 
@@ -190,8 +196,6 @@
 
 			nodeService.save(newProgNode);
 		}
-
-
 	}
 
 	/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveInfoQueryService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveInfoQueryService.java
index 03ff98a..563b0ec 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveInfoQueryService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveInfoQueryService.java
@@ -101,10 +101,10 @@
 		//鏌ヨ鏁版帶绋嬪簭缂栧彿
 		Optional<NcProgramApproved> appOpt = programApprovedService.lambdaQuery().eq(NcProgramApproved::getProcessInstanceId, props.getProcessInstanceId()).oneOpt();
 		if(appOpt.isEmpty()){
-			appInfo.setProgramNo("锛堟湭鐢熸垚锛�");
+			appInfo.setProgramName("锛堟湭鐢熸垚锛�");
 		}else{
 			NcNodeHis programPkgNameNode = this.ncNodeHisService.getById(appOpt.get().getNcNodeId());
-			appInfo.setProgramNo(programPkgNameNode.programNo());
+			appInfo.setProgramName(programPkgNameNode.programName());
 		}
 
 		return appInfo;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramConfirmTableService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramConfirmTableService.java
index fe8af9f..a33e49c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramConfirmTableService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramConfirmTableService.java
@@ -143,7 +143,7 @@
 		data.put("checkerName",approveInfo.getCheckerName());
 		data.put("seniorName",approveInfo.getSeniorName());
 
-		data.put("programNo",approveInfo.getProgramNo());
+		data.put("programNo",approveInfo.getProgramName());
 
 		return data;
 	}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ApproveTableInfo.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ApproveTableInfo.java
index b89ebe6..3ba1ed8 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ApproveTableInfo.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ApproveTableInfo.java
@@ -28,5 +28,5 @@
 	/**
 	 * 鏁版帶绋嬪簭缂栧彿
 	 */
-	private String programNo;
+	private String programName;
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNodeHis.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNodeHis.java
index 1add83e..792d255 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNodeHis.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNodeHis.java
@@ -82,7 +82,10 @@
 	 * 浜у搧鍨嬪彿
 	 */
 	private String productModel;
-
+	/**
+	 * 绋嬪簭缂栧彿锛堢▼搴忓寘鍚嶈妭鐐归渶瑕侊級
+	 */
+	private String programNo;
 	/**
 	 * 鍘嗗彶搴忓垪鍙�
 	 */
@@ -143,7 +146,7 @@
 		return this.isLocked != null && this.isLocked == NcNode.LOCKED;
     }
 
-	public String programNo() {
+	public String programName() {
 		return this.getDrawingNo()+"-"+this.getProcessNo()+"-"+this.getProcessEdition();
 	}
 }
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 514cc89..9e96ee9 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
@@ -48,7 +48,7 @@
         ) AS "has_children" from mdm_nc_node n left join blade_user u on n.create_user=u.id
         left join blade_dict_biz dt on n.node_type=dt.dict_key and dt.code='nc_node_type' and dt.is_deleted=0
         where n.is_deleted=0 and n.is_last_edition=1 and n.parent_id=#{parentId}
-        order by name
+        order by id
     </select>
 
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ConfirmTablePrintService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ConfirmTablePrintService.java
index 28751b9..276c51f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ConfirmTablePrintService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ConfirmTablePrintService.java
@@ -29,6 +29,8 @@
 import org.springblade.mdm.flow.vo.ApproveTableInfo;
 import org.springblade.mdm.flow.vo.FlowVO;
 import org.springblade.mdm.program.entity.NcNode;
+import org.springblade.mdm.program.entity.NcNodeHis;
+import org.springblade.mdm.program.service.NcNodeHisService;
 import org.springblade.mdm.program.service.NcNodeService;
 import org.springblade.mdm.statreport.utils.WordReplaceUtil;
 import org.springblade.system.feign.IDictBizClient;
@@ -48,13 +50,14 @@
 @Service
 @AllArgsConstructor
 public class ConfirmTablePrintService {
-	private final RuntimeService runtimeService;
+
 	private final IDictBizClient dictBizClient;
 	private final HistoryService historyService;
 	private final FlowProgramFileService flowProgramFileService;
 	private ApproveInfoQueryService approveInfoQueryService;
 	private final MachineService machineService;
 	private final NcNodeService nodeService;
+	private final NcNodeHisService nodeHisService;
 	private final ParamService paramService;
 	private final TaskDispatchService taskDispatchService;
 	private final OssTemplate ossTemplate;
@@ -85,7 +88,8 @@
 		machine = machineService.getByCode(machineCode);
 
 		Map<String, String> dataMap = new HashMap<>();
-		NcNode node = this.nodeService.getById(props.getNodeId());
+		//NcNode node = this.nodeService.getById(props.getNodeId());
+		NcNodeHis node = nodeHisService.getById(props.getNodeId());
 		TaskDispatch dispatch = taskDispatchService.getByProgramNo(node.getProgramNo());
 
 		if(dispatch == null){
diff --git a/doc/sql/mdm/mdm.mysql.all.create.sql b/doc/sql/mdm/mdm.mysql.all.create.sql
index f77f7a2..061cd61 100644
--- a/doc/sql/mdm/mdm.mysql.all.create.sql
+++ b/doc/sql/mdm/mdm.mysql.all.create.sql
@@ -179,6 +179,7 @@
    `parent_ids` varchar(200) DEFAULT NULL COMMENT '涓婄骇鑺傜偣ID闆嗗悎锛宨d閫楀彿鍒嗛殧',
    `node_type` varchar(20) DEFAULT NULL COMMENT '鑺傜偣绫诲瀷锛氫笟鍔″瓧鍏稿畾涔�',
    `product_model` varchar(100) NULL COMMENT '浜у搧鍨嬪彿',
+   `program_no` varchar(20) NULL COMMENT '绋嬪簭缂栧彿,鍙湁绋嬪簭鍖呭悕鑺傜偣鎵嶆湁鍊�',
    `his_serial` bigint NULL COMMENT '鍘嗗彶搴忓垪鍙凤紝搴忓垪鍙风浉鍚屽睘浜庡悓涓�鍘嗗彶鍒楄〃',
    `flow_program_file_id` bigint NULL COMMENT '鍏宠仈鐨勬祦绋嬬▼搴忔枃浠秈d锛岀▼搴忔枃浠剁被鍨嬬殑鑺傜偣鎵嶆湁鍊�',
    `process_instance_id` varchar(64) NULL COMMENT '鍏宠仈鐨勬祦绋嬪疄渚媔d锛岀▼搴忓寘 绫诲瀷鐨勮妭鐐规墠鏈夊��',

--
Gitblit v1.9.3