From 6b7db6b11ebcc2e8e1eff86443e77fe63e5d8080 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期六, 20 九月 2025 21:38:52 +0800
Subject: [PATCH] 优化程序名解析

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameParser.java |   56 +++++++++++---------------------------------------------
 1 files changed, 11 insertions(+), 45 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameParser.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameParser.java
index 45ac997..bdb1c7f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameParser.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameParser.java
@@ -4,9 +4,12 @@
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.api.IResultCode;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.mdm.commons.contants.RegExpConstants;
 import org.springblade.mdm.flow.service.FlowProgramProperties;
 import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
 import org.springblade.mdm.program.service.NcNodeService;
+
+import java.util.regex.Matcher;
 
 public class ProgramFileNameParser {
 	/**
@@ -15,55 +18,18 @@
 	 */
 	public static ProgramNameVO parseProgramName(String filename){
 		ProgramNameVO pname = new ProgramNameVO();
-		int idx = filename.lastIndexOf(".");
-		String tempstr = filename.substring(0,idx);//鍘绘帀鎵╁睍鍚�
 
-		idx = tempstr.lastIndexOf("-");
+		Matcher matcher = RegExpConstants.PROGRAM_FILE_PATTERN.matcher(filename);
+		if(matcher.find()){
+			pname.setDrawingNo(matcher.group(1));
+			pname.setProcessNo(matcher.group(2));
 
-		if(idx != -1){
-
-			String segNo = tempstr.substring(idx+1);
-			int idx2 = StringUtils.indexOfIgnoreCase(segNo,"P");
-			if(idx2!= -1){
-				//甯锛屾槸鍋忕鍗曞彿
-				pname.setPldPart(segNo.substring(idx+1));
-
-				tempstr = segNo.substring(0, idx2);//鍘绘帀鍋忕鍗曢儴鍒�
-			}
-			idx = tempstr.lastIndexOf("-");
-			if(idx != -1) {
-				idx = tempstr.lastIndexOf("-");
-				pname.setSegmentNo(Func.toInt(segNo));
-
-				tempstr = tempstr.substring(0,idx);
-			}
-
-
-		}
-		idx = tempstr.lastIndexOf("-");
-		if(idx != -1){
-			String seg = tempstr.substring(idx+1);
-			pname.setSegmentCount(Func.toInt(seg));
-			tempstr = tempstr.substring(0,idx);
+			pname.setProcessEdition(matcher.group(3));
+			pname.setSegmentCount(Func.toInt(matcher.group(4)));
+			pname.setSegmentNo(Func.toInt(matcher.group(5)));
+			pname.setLgPart(matcher.group(6));
 		}
 
-		//瑙f瀽宸ュ簭鐗堟
-		idx = tempstr.lastIndexOf("-");
-		if(idx != -1){
-			String processEdition = tempstr.substring(idx+1);
-			pname.setProcessEdition(processEdition);
-			tempstr = tempstr.substring(0,idx);
-		}
-
-		//瑙f瀽宸ュ簭鍙�
-		String processNo = "";
-		idx = tempstr.lastIndexOf("-");
-		if(idx != -1){
-			processNo = tempstr.substring(idx+1);
-			tempstr = tempstr.substring(0,idx);
-		}
-		pname.setProcessNo(processNo);
-		pname.setDrawingNo(tempstr);
 		return pname;
 	}
 

--
Gitblit v1.9.3