From 14f02f7b3c95c0287dec7a4175cd18247c4e78d8 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 18 八月 2025 23:57:58 +0800
Subject: [PATCH] 固化下发流程,文件错误的问题

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java        |   42 ++++++++------------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java |   19 +++++----
 2 files changed, 27 insertions(+), 34 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java
index 98d88a7..52efbbf 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java
@@ -82,26 +82,27 @@
 				//鍥哄寲绋嬪簭涓嶅彲鐢紝闇�瑕侀噸鏂板缓绔嬬▼搴忓寘鍚嶅拰鏂囦欢鑺傜偣;鍙敤鎯呭喌鍦ㄦ祦绋嬪鎵逛腑宸茬粡鍗囩骇杩囪妭鐐逛簡
 				NcNode curedProgramPackage = ncNodeService.getById(Func.toLong(progProperties.getCuredNodeId()));
 
-				NcNode newCuredNode = new NcNode();
-				BeanUtils.copyProperties(curedProgramPackage, newCuredNode);
-				EntityUtil.clearBaseProperties(newCuredNode);
-				newCuredNode.setIsLastEdition(1);
-				newCuredNode.setIsLocked(0);
-				ncNodeService.save(newCuredNode);
+				NcNode newCuredPkgNode = new NcNode();
+				BeanUtils.copyProperties(curedProgramPackage, newCuredPkgNode);
+				EntityUtil.clearBaseProperties(newCuredPkgNode);
+				newCuredPkgNode.setIsLastEdition(1);
+				newCuredPkgNode.setIsLocked(0);
+				newCuredPkgNode.upgradeVersionNumber();
+				ncNodeService.save(newCuredPkgNode);
 
 				//鏂扮殑娴佺▼瀵瑰簲鐨勬枃浠舵洿鏂板埌鏂拌妭鐐逛笅
 				List<FlowProgramFile> newFlowFileList = flowProgramFileService.listByProcessInstanceId(progProperties.getProcessInstanceId());
 				for (FlowProgramFile newFlowFile : newFlowFileList) {
 					NcNode newProgramNode = new NcNode();
-					BeanUtils.copyProperties(curedProgramPackage, newProgramNode);
+					BeanUtils.copyProperties(newCuredPkgNode, newProgramNode);
 					EntityUtil.clearBaseProperties(newProgramNode);
 
 					newProgramNode.setName(newFlowFile.getName());
 					newProgramNode.setNodeType(NcNode.TYPE_PROGRAM_FILE);
-					newProgramNode.setParentId(newCuredNode.getId());
+					newProgramNode.setParentId(newCuredPkgNode.getId());
 					newProgramNode.setIsLastEdition(1);
 					newProgramNode.setIsLocked(0);
-					newProgramNode.setParentIds(newCuredNode.getParentIds() + "," + newCuredNode.getId());
+					newProgramNode.setParentIds(newCuredPkgNode.getParentIds() + "," + newCuredPkgNode.getId());
 					newProgramNode.setFlowProgramFileId(newFlowFile.getId());
 					ncNodeService.save(newProgramNode);
 				}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
index ac61907..c059ac3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
@@ -103,44 +103,36 @@
 		identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//璁剧疆娴佺▼鍙戣捣浜�
 		ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.TRY_PROCESS_KEY,businessKey,vars);
 
-		if(curedProgramPackage != null) {//瀛樺湪宸插浐鍖栫▼搴忥紝澶嶅埗鍘熸潵鐨勭▼搴忔枃浠躲�傚垱寤鸿妭鐐逛粛鐒跺湪缂栫▼浜哄憳鎻愪氦浠ュ悗
-			copyFlowProgramFiles(curedProgramPackage.getProcessInstanceId(),inst.getProcessInstanceId());
+		if(curedProgramPackage != null) {//瀛樺湪宸插浐鍖栫▼搴忥紝澶嶅埗鍘熸潵鐨勭▼搴忔枃浠躲��
+			copyFlowProgramFiles(curedProgramPackage.getId(),inst.getProcessInstanceId());
+
+			curedProgramPackage.setProcessInstanceId(inst.getProcessInstanceId());
+			ncNodeService.updateById(curedProgramPackage);
 		}
+
 
 		return inst.getProcessInstanceId();
 	}
 
-	/**
-	 * 灏嗛粯璁ゅ鎵圭敤鎴锋斁鍏ap涓�
-	 * @param vars 鍚姩娴佺▼鐨勫彉閲弇ap
-	 * @param drawingNo 闆剁粍浠跺彿
-	 */
-	void putDefaultAssignees(Map<String, Object> vars,String drawingNo){
-		ProduceDivision div = produceDivisionService.getByDrawingNoWithQinzhe(drawingNo);
-		vars.put(FlowContants.TEAM_LEADER,div.getTeamLeaderId());
-		vars.put(FlowContants.PROGRAMMER,div.getProgrammerId());
-		vars.put(FlowContants.CHECKER,div.getCheckerId());
-		vars.put(FlowContants.SENIOR,div.getSeniorId());
-
-		vars.put(FlowContants.ASSIGNEE,div.getTeamLeaderId());//绗竴涓鎵圭敤鎴凤細缁勯暱
-	}
 
 	/**
 	 * 澶嶅埗娴佺▼绋嬪簭鏂囦欢
 	 * @param processInstanceId 鏂板惎鍔ㄧ殑娴佺▼id
 	 */
-	private void copyFlowProgramFiles(String oldProcessInstanceId,String processInstanceId) {
-		List<FlowProgramFile> fileList = flowProgramFileService.lambdaQuery()
-			.eq(FlowProgramFile::getProcessInstanceId,oldProcessInstanceId).list();
+	private void copyFlowProgramFiles(long packageNameNodeId,String processInstanceId) {
+		List<Long> fileIds = ncNodeService.getProgramFilesByPackageId(packageNameNodeId).stream().map(NcNode::getFlowProgramFileId).toList();
+		if(!fileIds.isEmpty()) {
+			List<FlowProgramFile> fileList = flowProgramFileService.lambdaQuery().in(FlowProgramFile::getId, fileIds).list();
 
-		for (FlowProgramFile file : fileList) {
-			FlowProgramFile newFile = new FlowProgramFile();
-			BeanUtils.copyProperties(file, newFile);
-			EntityUtil.clearBaseProperties(newFile);
+			for (FlowProgramFile file : fileList) {
+				FlowProgramFile newFile = new FlowProgramFile();
+				BeanUtils.copyProperties(file, newFile);
+				EntityUtil.clearBaseProperties(newFile);
 
-			newFile.setProcessInstanceId(processInstanceId);
+				newFile.setProcessInstanceId(processInstanceId);
 
-			this.flowProgramFileService.save(newFile);
+				this.flowProgramFileService.save(newFile);
+			}
 		}
 	}
 

--
Gitblit v1.9.3