From 3357f4b98b68460c920df66260b0e641b60569be Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期日, 10 八月 2025 19:14:25 +0800
Subject: [PATCH] 修复工控网导入判断是否有固化程序的判断

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java        |   10 +++++++++-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java |   10 ++++++----
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java      |   18 ++++++++++++------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java             |    5 ++++-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java          |    4 ++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java                     |    8 ++++++++
 6 files changed, 41 insertions(+), 14 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
index 7c5b22d..e1fa5b8 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
@@ -114,8 +114,8 @@
 
 		// 鑾峰彇涓婁竴涓凡瀹屾垚鐨勪换鍔�
 		String assignee = "";
-		if(historicTasks.size()>1) {
-			assignee = historicTasks.get(historicTasks.size() - 2).getAssignee();
+		if(!historicTasks.isEmpty()) {
+			assignee = historicTasks.get(historicTasks.size() - 1).getAssignee();
 		}
 		return R.data(assignee);
 
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 5f73767..2f20bad 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
@@ -6,6 +6,7 @@
 import org.flowable.engine.IdentityService;
 import org.flowable.engine.runtime.ProcessInstance;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.mdm.flow.constants.FlowContants;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
@@ -74,11 +75,13 @@
 		}
 		String programPkgName = NcNodeService.genProgramName(startVO.getDrawingNo(),startVO.getProcessNo());
 		vars.put(FlowContants.PROGRAM_PACKAGE_NAME,programPkgName);
+
+		//TODO 鏌ヨ鍥哄寲绋嬪簭鏄紝搴旇鍘绘帀鏈夊亸绂诲崟鐨勶紵
 		NcNode curedProgramPackage = ncNodeService.getLastEditionCuredProgramPackage(programPkgName);
 		//璁剧疆鏄惁鏈夊浐鍖栫▼搴忔爣璁�
 		vars.put(FlowContants.HAS_CURED_PROGRAM,curedProgramPackage != null ? FlowContants.Y:FlowContants.N);
 		//宸ュ簭鐗堟鏄惁涓�鑷达紝鏄惁鍦ㄦ湁鏁堟湡鍐�
-		if(curedProgramPackage != null){
+		if(curedProgramPackage != null && Func.isBlank(startVO.getDeviation())){//鍋忕鍗曚紭鍏堬紝濡傛灉鏈夊亸绂诲崟锛岄偅涔堟壘鍒板浐鍖栫▼搴忕殑涔熶笉绠楀浐鍖栦簡
 			vars.put(FlowContants.CURED_NODE_ID,curedProgramPackage.getId());
 			vars.put(FlowContants.IS_PROCESS_EDITION_SAME, StringUtils.equals(curedProgramPackage.getProcessEdition(),startVO.getProcessEdition()) ? "Y":"N");
 			vars.put(FlowContants.VALIDITY_PERIOD, curedProgramPackage.withinValidityPeriod() ? FlowContants.Y:FlowContants.N);
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 3d508da..bf874c4 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
@@ -50,13 +50,19 @@
 		//绋嬪簭鍖呰妭鐐瑰拰涓嬪睘绋嬪簭鑺傜偣(鍖呮嫭鍘嗗彶鑺傜偣闈炴渶鏂扮増鏈殑)浠庤瘯鍒囨尓鍒板浐鍖栦笅闈�
 		//绋嬪簭鍖呰妭鐐� 璁剧疆鏈凡鍥哄寲
 		NcNode pkgNode =  nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId, processInstanceId).one();
-		pkgNode.setIsCured(1);
-		//璁剧疆杩囨湡鏃ユ湡
-		pkgNode.setExpireDate(calculateExpireDate());
-		nodeService.updateById(pkgNode);
+		if(pkgNode.isDeviation()){
+			//鍋忕鐨勭▼搴忕洿鎺ラ攣瀹�
+			pkgNode.setIsLocked(1);
+			nodeService.updateById(pkgNode);
+		}else {
+			pkgNode.setIsCured(1);
+			//璁剧疆杩囨湡鏃ユ湡
+			pkgNode.setExpireDate(calculateExpireDate());
+			nodeService.updateById(pkgNode);
 
-		List<NcNode> historyNodes = nodeService.getNodeHistory(pkgNode);
-		moveNodeToCuredTree(pkgNode,historyNodes,flowCommonService.getProgramProperties(processInstanceId));
+			List<NcNode> historyNodes = nodeService.getNodeHistory(pkgNode);
+			moveNodeToCuredTree(pkgNode, historyNodes, flowCommonService.getProgramProperties(processInstanceId));
+		}
 	}
 
 	/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java
index 06af7c3..7178d5e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java
@@ -1,5 +1,6 @@
 package org.springblade.mdm.program.entity;
 
+import com.alibaba.excel.util.StringUtils;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Getter;
 import lombok.Setter;
@@ -164,6 +165,13 @@
 	transient FlowProgramFile flowProgramFile;
 
 	/**
+	 * 鏄惁鏄亸绂荤▼搴�
+	 * @return 鏄惁鍋忕
+	 */
+	public boolean isDeviation(){
+		return StringUtils.isNotBlank(this.deviation);
+	}
+	/**
 	 * 鏍规嵁褰撳墠鐗堟湰鍙凤紝鑾峰彇鏂板鐗堟湰鍙�
 	 * @return 鍗囩骇鍚庣殑鐗堟湰鍙�
 	 */
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
index 775e09c..4d443dc 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
@@ -2,6 +2,7 @@
 package org.springblade.mdm.program.service;
 
 import com.alibaba.fastjson.JSONObject;
+import io.netty.util.internal.StringUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -63,6 +64,13 @@
 	 */
 	public List<DncSendBackData> dncSendBackUpload(MultipartFile file) {
 		List<DncSendBackData> list;
+		if(file == null || file.isEmpty()){
+			throw new ServiceException("鏂囦欢涓虹┖");
+		}
+
+		if(StringUtils.endsWith(file.getOriginalFilename(),".zip")){
+			throw new ServiceException("鏂囦欢蹇呴』涓簔ip鍖� ");
+		}
 		try {
 			BladeFile bfile = ossTemplate.putFile(file);//涓婁紶锛屼緵鍚庣画鍏ュ簱浣跨敤
 			//璁剧疆涓�涓紦瀛橈紝2灏忔椂杩囨湡
@@ -106,7 +114,7 @@
 					NcNode programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName);
 					NcNode curedProgramPkg = ncNodeService.getLastEditionCuredProgramPackage(packageName);
 
-					if(programPackageNode!=null && curedProgramPkg != null) {//鏃犲浐鍖栫▼搴忥紝鎵嶆斁鍏ュ垪琛�
+					if(programPackageNode!=null && curedProgramPkg == null) {//鏃犲浐鍖栫▼搴忥紝鎵嶆斁鍏ュ垪琛�
 						//NcNode programPackageNode = pkgList.get(0);
 						progData.setId(programPackageNode.getId());
 						progData.setProgramName(packageName);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
index fa2d695..f681814 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
@@ -110,13 +110,15 @@
 		zipOut.putNextEntry(zipEntry);
 		zipOut.closeEntry();
 
-		List<NcNode> programNodes = ncNodeService.lambdaQuery().eq(NcNode::getParentId, approved.getNcNodeId()).list();
+		List<NcNode> programNodes = ncNodeService.lambdaQuery().eq(NcNode::getIsLastEdition,1).eq(NcNode::getParentId, approved.getNcNodeId()).list();
 
 		FlowProgramFile programFile;
 		NcNode programPackageNode = this.ncNodeService.getById(approved.getNcNodeId());
-		String status = "鏈浐鍖�";
-		if(programPackageNode.hasCured()){
-			status = "宸插浐鍖�";
+		String status = "璇曞垏";
+		if(programPackageNode.isDeviation()){
+			status = "鍋忕";
+		}else if(programPackageNode.hasCured()){
+			status = "鍥哄寲";
 		}
 		List<Dict> annotationList = getAnnotionList();
 		for (NcNode node : programNodes) {

--
Gitblit v1.9.3