From db80a7d0d44912a61c42eb99bd5b09eca79b15a1 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 14 八月 2025 22:47:05 +0800
Subject: [PATCH] 导出错误提示

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java |   61 ++++++++++++++++++++----------
 1 files changed, 41 insertions(+), 20 deletions(-)

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 bf874c4..9d1720b 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
@@ -2,11 +2,14 @@
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.checkerframework.checker.units.qual.N;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.mdm.commons.contants.ParamContants;
+import org.springblade.mdm.commons.contants.ParamConstants;
+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.service.NcNodeAutoCreateService;
@@ -26,11 +29,14 @@
 	private final NcNodeService nodeService;
 	private final NcNodeAutoCreateService ncNodeAutoCreateService;
 	private final FlowCommonService flowCommonService;
+	private final FlowProgramFileService flowProgramFileService;
 	private final ISysClient sysClient;
 	/**
 	 * 榛樿鏈夋晥鏈熼棿锛堟湀鏁帮級,2骞�
 	 */
 	private static final int DEFAULT_VALID_MONTH = 24;
+	private final NcNodeService ncNodeService;
+
 	/**
 	 * 鍥哄寲瀹℃壒閫氳繃澶勭悊浠诲姟锛�
 	 * @param execution 娴佺▼execution
@@ -50,53 +56,68 @@
 		//绋嬪簭鍖呰妭鐐瑰拰涓嬪睘绋嬪簭鑺傜偣(鍖呮嫭鍘嗗彶鑺傜偣闈炴渶鏂扮増鏈殑)浠庤瘯鍒囨尓鍒板浐鍖栦笅闈�
 		//绋嬪簭鍖呰妭鐐� 璁剧疆鏈凡鍥哄寲
 		NcNode pkgNode =  nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId, processInstanceId).one();
-		if(pkgNode.isDeviation()){
+		if(pkgNode.isDeviationProgram()){
 			//鍋忕鐨勭▼搴忕洿鎺ラ攣瀹�
 			pkgNode.setIsLocked(1);
 			nodeService.updateById(pkgNode);
 		}else {
+			//璇曞垏鐨�
 			pkgNode.setIsCured(1);
 			//璁剧疆杩囨湡鏃ユ湡
+			pkgNode.upgradeVersionNUmber();
 			pkgNode.setExpireDate(calculateExpireDate());
 			nodeService.updateById(pkgNode);
 
-			List<NcNode> historyNodes = nodeService.getNodeHistory(pkgNode);
-			moveNodeToCuredTree(pkgNode, historyNodes, flowCommonService.getProgramProperties(processInstanceId));
+			List<NcNode> historyProgramPackageNodes = nodeService.getNodeHistory(pkgNode);
+			moveNodeToCuredTree(pkgNode, historyProgramPackageNodes, flowCommonService.getProgramProperties(processInstanceId));
 		}
 	}
 
 	/**
 	 * 灏嗚妭鐐瑰拰鍘嗗彶鑺傜偣鎸姩鍒板浐鍖栫殑鍚岀骇鑺傜偣涓�
-	 * @param historyNodes
+	 * @param pkgNode 瑕佹尓鍔ㄧ殑鑺傜偣
+	 * @param historyProgramPackageNodes 绋嬪簭鍖呭悕 鍘嗗彶鑺傜偣
 	 */
-	void moveNodeToCuredTree(NcNode pkgNode,List<NcNode> historyNodes, FlowProgramProperties programProperties) {
+	void moveNodeToCuredTree(NcNode pkgNode,List<NcNode> historyProgramPackageNodes, FlowProgramProperties programProperties) {
 		//鍒涘缓鑺傜偣鍒版満搴婄骇鍒�.(鍥哄寲鏍�)
 		NcNode machineNode = ncNodeAutoCreateService.createNodeTreeToMachine(programProperties);
 
-		//绉诲姩鍒板浐鍖栨爲涓嬬殑鏈哄簥鑺傜偣涓嬪眰
-		String newParentIds = machineNode.getParentIds()+","+machineNode.getId();
-
-		//鏇存柊鏈哄簥 涓嬪睘鑺傜偣鐨勬暟鎹� 涓烘棫鐗堟湰锛岄攣瀹�(鏈�鏂扮増鏈�=0锛宭ock=1)
-		this.nodeService.lambdaUpdate().likeRight(NcNode::getParentIds, newParentIds)
+		//鏈哄簥涓嬬幇鍦ㄦ病鏈夋枃浠朵簡锛岀▼搴忓寘鍚嶅崌绾т笌鏈哄簥鍚岀骇浜嗭紝鏀逛负鎵惧埌鏈哄簥鍚岀骇绋嬪簭鍖呭悕鏇存柊浜�
+		this.nodeService.lambdaUpdate().likeRight(NcNode::getParentIds, machineNode.getParentIds())
 			.in(NcNode::getNodeType, Arrays.asList(NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE))
 			.set(NcNode::getIsLastEdition,0).set(NcNode::getIsLocked,1).update();
 
-		for(NcNode hisNode : historyNodes){
-			if(!hisNode.getId().equals(pkgNode.getId())){
-				hisNode.setIsLastEdition(0);
+		for(NcNode hisPackageNode : historyProgramPackageNodes){
+			if(!hisPackageNode.getId().equals(pkgNode.getId())){
+				hisPackageNode.setIsLastEdition(0);
 			}
-			hisNode.setParentId(machineNode.getId());
-			hisNode.setParentIds(newParentIds);
+			hisPackageNode.setParentId(machineNode.getParentId());
+			hisPackageNode.setParentIds(machineNode.getParentIds());//绋嬪簭鍖呬笌鏈哄簥鑺傜偣鍚岀骇
 
 			//澶勭悊绋嬪簭鍖呬笅灞傜殑绋嬪簭鑺傜偣
-			List<NcNode> programNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisNode.getId()).list();
+			List<NcNode> programNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
 			for(NcNode programNode : programNodes){
-				programNode.setParentIds(hisNode.getParentIds()+","+hisNode.getId());
+				programNode.setIsLastEdition(0);
+				programNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId());
 			}
 			nodeService.updateBatchById(programNodes);
 		}
-		nodeService.updateBatchById(historyNodes);
+		nodeService.updateBatchById(historyProgramPackageNodes);
 
+		//鏂扮殑娴佺▼鏂囦欢锛岄渶瑕佸湪鍖呰妭鐐逛笅鏂板缓锛屼笉鑳界敤鑰佺殑
+		List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode.getProcessInstanceId()).list();
+		for(FlowProgramFile flowProgramFile : files){
+			NcNode newProgNode = new NcNode();
+			newProgNode.setName(flowProgramFile.getName());
+			newProgNode.setNodeType(NcNode.TYPE_PROGRAM_FILE);
+			newProgNode.setParentId(pkgNode.getId());
+			newProgNode.setParentIds(pkgNode.getParentIds()+","+pkgNode.getId());
+			newProgNode.setIsLastEdition(1);
+			newProgNode.setVersionNumber(pkgNode.getVersionNumber());
+			newProgNode.setFlowProgramFileId(flowProgramFile.getId());
+			newProgNode.setIsCured(1);
+			ncNodeService.save(newProgNode);
+		}
 	}
 
 	/**
@@ -104,7 +125,7 @@
 	 * @return
 	 */
 	private Date calculateExpireDate() {
-		R<String> validMonResult = sysClient.getParamValue(ParamContants.CURE_VALID_MONTH_KEY);
+		R<String> validMonResult = sysClient.getParamValue(ParamConstants.CURE_VALID_MONTH_KEY);
 
 		int month = DEFAULT_VALID_MONTH;
 		if(validMonResult.isSuccess() && validMonResult.getData()!=null){

--
Gitblit v1.9.3