From 9dd7fff1e71be76b19a3e2e5b41bd236178df424 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 14 八月 2025 19:51:50 +0800
Subject: [PATCH] 修复文件名检查

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java               |    5 +
 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/service/NcProgramExportDNCService.java |   42 +++-------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java              |    2 
 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/entity/FlowProgramFile.java               |    8 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java   |   10 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramFileService.java       |  118 ++++------------------------
 8 files changed, 58 insertions(+), 135 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 6c8c798..16f3d67 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
@@ -114,4 +114,9 @@
 	 * 鍥哄寲绋嬪簭锛屽鎵瑰叿浣撴槸鍚﹀彲鐢�
 	 */
 	public static final String CURE_PROGRAM_USEABLE = "cureProgramUseable";
+
+	/**
+	 * 鑷繁瀹氫竴鐨勬祦绋嬪悕绉�
+	 */
+	public static final String MY_PROCESS_NAME = "myProcessName";
 }
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 2cf990b..6cb0fc4 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
@@ -56,9 +56,6 @@
 
 	private final TaskService taskService;
 	private final RuntimeService runtimeService;
-	private final ProcessProgRefService processProgRefService;
-
-	private final ApproveRecordService approveRecordService;
 	private final FlowProgramFileService flowProgramFileService;
 
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/FlowProgramFile.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/FlowProgramFile.java
index 134ff69..a58080d 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/FlowProgramFile.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/FlowProgramFile.java
@@ -15,6 +15,11 @@
 @Getter
 @TableName("mdm_flow_program_file")
 public class FlowProgramFile extends BizEntity {
+	/**
+	 * 绫诲瀷锛氱▼搴忔枃浠�
+	 */
+	public static final String TYPE_PROGRAM = "program";
+	public static final String TYPE_OTHER = "program";
 
 	private String processInstanceId;
 	/**
@@ -34,4 +39,7 @@
 	 */
 	private String fileType;
 
+	public boolean isProgram(){
+		return "program".equals(fileType);
+	}
 }
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 2f20bad..09b5a6a 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
@@ -89,6 +89,11 @@
 			vars.put(FlowContants.IS_PROCESS_EDITION_SAME, FlowContants.Y);
 			vars.put(FlowContants.VALIDITY_PERIOD, FlowContants.Y);
 		}
+		String myProcessName = "璇曞垏涓嬪彂娴佺▼";
+		if(vars.getOrDefault(FlowContants.HAS_CURED_PROGRAM,FlowContants.N).equals(FlowContants.Y)){
+			myProcessName = "鍥哄寲涓嬪彂娴佺▼";
+		}
+		vars.put(FlowContants.MY_PROCESS_NAME, myProcessName);
 
 		String businessKey = "0";//涓氬姟琛╧ey
 		identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//璁剧疆娴佺▼鍙戣捣浜�
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
index 19f7eab..fe191cc 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
@@ -202,6 +202,8 @@
 		vars.put(FlowContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
 		vars.put(FlowContants.TITLE,programPackage.getName()+"-鍥哄寲");//鑷姩澧炲姞鏍囬
 
+		vars.put(FlowContants.MY_PROCESS_NAME, "鍥哄寲娴佺▼");
+
 		ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.CURE_PROCESS_KEY,"0",vars);
 
 		//鏇存柊绋嬪簭鍖呭悕鑺傜偣鐨勬祦绋嬪疄渚媔d
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramFileService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramFileService.java
index 8703901..f329e43 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramFileService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramFileService.java
@@ -24,6 +24,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
@@ -55,9 +56,9 @@
 		if(file.getSize() == 0){
 			throw new ServiceException("绋嬪簭鏂囦欢涓嶅彲涓虹┖鏂囦欢");
 		}
-		ProgramFileNameCheckUtil.checkFilename(file.getOriginalFilename(),progProps);
-
-		String programName = NcNodeService.genProgramName(progProps.getDrawingNo(),progProps.getProcessNo());
+		if(FlowProgramFile.TYPE_PROGRAM.equals(uploadVO.getFileType())) {
+			ProgramFileNameCheckUtil.checkFilename(file.getOriginalFilename(), progProps);
+		}
 
 		BladeFile bfile = ossTemplate.putFile(file);
 
@@ -65,95 +66,13 @@
 		progFile.setName(file.getOriginalFilename());
 		progFile.setOssName(bfile.getName());
 		progFile.setProcessInstanceId(uploadVO.getProcessInstanceId());
-		progFile.setProgramName(programName);
+		progFile.setProgramName(NcNodeService.genProgramName(progProps.getDrawingNo(),progProps.getProcessNo()));
 		progFile.setFileType(uploadVO.getFileType());
 		save(progFile);
 
 	}
 
 
-	/**
-	 * 妫�鏌ユ枃浠跺悕鍚堟硶鎬�
-	 * @param filename 鏂囦欢鍚�
-	 * @param programProperties 绋嬪簭灞炴�э紝鍙戣捣鏃跺~鍐欑殑
-	 */
-	/*
-	void checkFilename(String filename,FlowProgramProperties programProperties){
-		//绋嬪簭鍚嶇О锛氶浂浠跺彿鍔犲伐搴忓彿锛屾枃浠跺悕搴旇浠ユ寮�澶�
-		String programNamePrefix = NcNodeService.genProgramName(programProperties.getDrawingNo(),programProperties.getProcessNo()) + "-"+programProperties.getProcessEdition();
-		if(!StringUtils.startsWith(filename,programNamePrefix)){
-
-			IResultCode rc = new IResultCode() {
-				@Override
-				public String getMessage() {
-					return "绋嬪簭鏂囦欢鍚嶄笉鍚堟硶锛屽簲涓猴細"+programNamePrefix+"-[娈垫暟]-[娈靛彿].[鏂囦欢鎵╁睍鍚峕";
-				}
-
-				@Override
-				public int getCode() {
-					return 1;
-				}
-			};
-			throw new ServiceException(rc);
-		}
-
-		//鎴彇鍚庨潰鐨勬鏁板拰绗嚑娈�
-		String endPart = StringUtils.removeStart(filename,programNamePrefix+"-");
-
-		//鍘绘帀鎵╁睍鍚�
-		if(endPart.contains(".")){
-			endPart = endPart.substring(0,endPart.indexOf("."));
-		}
-
-		int sepCount = StringUtils.countMatches(endPart,"-");
-		if(sepCount != 1){//- 鍙峰簲璇ユ槸1涓�
-			IResultCode rc = new IResultCode() {
-				@Override
-				public String getMessage() {
-					return "绋嬪簭鏂囦欢鍚嶄笉鍚堟硶锛屽簲涓猴細"+programNamePrefix+"-[娈垫暟]-[娈靛彿].[鏂囦欢鎵╁睍鍚峕";
-				}
-
-				@Override
-				public int getCode() {
-					return 2;
-				}
-			};
-			throw new ServiceException(rc);
-		}
-
-		String[] arr = StringUtils.split(endPart,"-");
-		if(!StringUtils.isNumeric(arr[0]) || Func.toInt(arr[0]) >99 || Func.toInt(arr[0]) < 1){
-			IResultCode rc = new IResultCode() {
-				@Override
-				public String getMessage() {
-					return "绋嬪簭娈垫暟涓嶅悎娉曪紝搴斾负涓や綅浠ュ唴鏁存暟";
-				}
-
-				@Override
-				public int getCode() {
-					return 3;
-				}
-			};
-			throw new ServiceException(rc);
-		}
-		int segCount = Func.toInt(arr[0]);
-
-		if(!StringUtils.isNumeric(arr[1]) || Func.toInt(arr[1]) < 1 || Func.toInt(arr[1]) > segCount){
-			IResultCode rc = new IResultCode() {
-				@Override
-				public String getMessage() {
-					return "绋嬪簭娈靛彿涓嶅悎娉曪紝搴斾负涓や綅浠ュ唴鏁存暟涓斿皬浜庣瓑浜庢鏁般��";
-				}
-
-				@Override
-				public int getCode() {
-					return 4;
-				}
-			};
-			throw new ServiceException(rc);
-		}
-	}
-*/
 	/**
 	 * 鑾峰彇鏂囦欢鍐呭
 	 * @param id 鏂囦欢id
@@ -163,18 +82,17 @@
 		String result  ="";
 
 		FlowProgramFile programFile = this.getById(id);
-		/*
-			String fileName = programFile.getOssName();
-			try (InputStream inputStream = ossTemplate.statFileStream(fileName)) {
-				result = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
-			} catch (IOException e) {
-				throw new RuntimeException(e);
-			}
-		*/
 
 		String fileName = programFile.getOssName();
 		try (InputStream inputStream = ossTemplate.statFileStream(fileName)) {
-			result = FileContentUtil.getContentFromStream(inputStream);
+			ByteArrayInputStream bos = new ByteArrayInputStream(inputStream.readAllBytes());
+			boolean isText= FileContentUtil.isTextFile(bos);
+			if(isText){
+			bos.reset();
+				result = FileContentUtil.getContentFromStream(bos);
+			}else{
+				result = "<闈炴枃鏈枃浠�>";
+			}
 		} catch (IOException e) {
 			throw new RuntimeException(e);
 		}
@@ -188,16 +106,18 @@
 	 */
 	public void checkProgramFiles(String processInstanceId,boolean isPass) {
 		List<FlowProgramFile> flowPrograms = this.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, processInstanceId).orderByAsc(FlowProgramFile::getCreateTime).list();
-		if(isPass && flowPrograms.isEmpty()){
+		List<FlowProgramFile> purePrograms = flowPrograms.stream().filter(FlowProgramFile::isProgram).toList();
+		if(isPass && purePrograms.isEmpty()){
 			throw new ServiceException("璇蜂笂浼犵▼搴忔枃浠�");
 		}
 		int totalSeg = 0;
-		if(!flowPrograms.isEmpty()){
-			FlowProgramFile progFile = flowPrograms.get(0);
+
+		if(!purePrograms.isEmpty()){
+			FlowProgramFile progFile = purePrograms.get(0);
 			totalSeg = ProgramFileNameCheckUtil.getProgramSegCount(progFile.getName());
 		}
 
-		if(totalSeg != flowPrograms.size()){
+		if(totalSeg != purePrograms.size()){
 			throw new ServiceException("搴斾笂浼�"+totalSeg+"娈电▼搴忥紝瀹為檯涓婁紶"+flowPrograms.size()+"娈�");
 		}
 
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 8eb75a3..7fecd89 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
@@ -90,11 +90,15 @@
 
 		List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, programProperties.getProcessInstanceId()).list();
 		for (FlowProgramFile programFile : programFiles) {
-			createProgramFileNode(programFile, programPkdNode, programProperties);
+			if(programFile.isProgram()) {
+				createProgramFileNode(programFile, programPkdNode, programProperties);
+			}
 		}
-
+		createOtherNode(programFiles);
 	}
-
+	void  createOtherNode(List<FlowProgramFile> programFiles){
+//111mqita 鑺傜偣
+	}
 	/**
 	 * 寤虹珛绋嬪簭鏂囦欢鑺傜偣
 	 * @param programFile 娴佺▼鏂囦欢
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 3617173..bb90ce4 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
@@ -8,6 +8,7 @@
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BizEntity;
 import org.springblade.core.mp.base.BizServiceImpl;
 import org.springblade.core.mp.support.Condition;
@@ -33,10 +34,7 @@
 
 import java.io.*;
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
@@ -82,19 +80,16 @@
 		//FileOutputStream fos = new FileOutputStream("d:/exportDnc.zip");
 		try (ZipOutputStream zipOut = new ZipOutputStream(os);) {//os
 
-			//ArrayList<Long> programPackageNodeIdList = new ArrayList<Long>();
-
 			for (Long approvedId : approvedIdArray) {
 				NcProgramApproved approved = approvedService.getById(approvedId);
-				//programPackageNodeIdList.add(approved.getNcNodeId());
-
 				addProgramPackageToZip(zipOut,approved);
 			}
 
 			//鐘舵�佷慨鏀逛负宸插鍑�
-			approvedService.lambdaUpdate().in(NcProgramApproved::getId, approvedIdArray)
+			approvedService.lambdaUpdate().in(NcProgramApproved::getId, Arrays.asList(approvedIdArray))
 				.set(NcProgramApproved::getStatus,NcProgramApproved.STATUS_EXPORTED).update();
-			//addDataJson(zipOut, programPackageNodeIdList);
+		}catch(Exception e){
+			throw new ServiceException("瀵煎嚭宸ユ帶缃戦敊璇�"+e.getMessage());
 		}
 
 		os.close();
@@ -126,31 +121,18 @@
 		for (NcNode node : programNodes) {
 			String filePathInZip = packageFolder + node.getName();
 			programFile = this.flowProgramFileService.getById(node.getFlowProgramFileId());
-
-			InputStream inputStream = ossTemplate.statFileStream(programFile.getOssName());
-			Machine machine = machineService.getByCode(node.getMachineCode());
-			InputStream addedIns1 = addSendDirAnnotation(inputStream,machine,annotationList);
-			InputStream addedIns2 = addProgramStatusAnnotation(addedIns1,status,machine,annotationList);
-			this.addInputStreamToZip(zipOut,addedIns2,filePathInZip);
+			if(programFile.isProgram()) {//绋嬪簭鏂囦欢锛屾墠浼氬姞鍏ュ帇缂╁寘
+				InputStream inputStream = ossTemplate.statFileStream(programFile.getOssName());
+				Machine machine = machineService.getByCode(node.getMachineCode());
+				InputStream addedIns1 = addSendDirAnnotation(inputStream, machine, annotationList);
+				InputStream addedIns2 = addProgramStatusAnnotation(addedIns1, status, machine, annotationList);
+				this.addInputStreamToZip(zipOut, addedIns2, filePathInZip);
+			}
 		}
 
 	}
 
-	/**
-	 * 鑾峰彇瀛楀吀涓厤缃殑娉ㄩ噴
-	 * @return 瀛楀吀椤瑰垪琛�
-	 */
-	List<Dict> getAnnotionList(){
-		List<Dict> annotationList;
-		R<List<Dict>> dictsResult = dictClient.getList(ANNOTATION_DICT);
-		if(dictsResult.isSuccess()) {
-			annotationList = dictsResult.getData();
-		}else{
-			annotationList = Collections.emptyList();
-		}
 
-		return annotationList;
-	}
 	/**
 	 * 鍔犲叆鏈哄簥涓嬪彂璺緞鍜岀▼搴忕姸鎬佺殑娉ㄩ噴
 	 * @param inputStream

--
Gitblit v1.9.3