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/test/java/org/springblade/mdm/program/service/programannotation/FanucProcessorTest.java | 30 ++++++++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java | 4
blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java | 11 ++-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java | 16 ++--
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java | 15 +++-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameParser.java | 56 +++---------------
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml | 2
blade-service/blade-mdm/src/test/java/org/springblade/mdm/commons/contants/RegExpConstantsTest.java | 4
9 files changed, 73 insertions(+), 69 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java
index 73b1bc8..8900f01 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java
@@ -7,8 +7,8 @@
/**
* 绋嬪簭鏂囦欢鍚� 姝e垯
*/
- public static final Pattern PROGRAM_FILE_PATTERN = Pattern.compile("^[0-9a-zA-Z_\\-]+\\-[0-9a-zA-Z]+-[0-9a-zA-Z]+\\-\\d+\\-\\d+\\.*[a-zA-Z]*$");
+ public static final Pattern PROGRAM_FILE_PATTERN = Pattern.compile("^([\\w\\-]+)-([0-9]+)-([0-9a-zA-Z]+)-(\\d+)-(\\d+)-?([Pp]\\d*)?(\\.*[a-zA-Z]*)$");
//public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("[\\w\\-]+\\-\\w+\\-\\w+");
- public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("([\\w\\-]+)\\-\\w+\\-\\w+");
+ public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("([\\w\\-]+)-[0-9a-zA-Z]+-[0-9a-zA-Z]+");
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
index 3f2a342..9e5d400 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
@@ -31,9 +31,9 @@
private int segmentNo;
/**
- * 鍋忕鍗曢儴鍒嗭細 P1锛孭2绛�
+ * 涓存椂鏇存敼鍗曢儴鍒嗭細 P1锛孭2绛�
*/
- private String pldPart;
+ private String lgPart;
public String logicProgramName(){
return this.drawingNo+"-"+this.processNo+"-"+processEdition;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java
index 3edccd1..8e9b57f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java
@@ -81,8 +81,12 @@
/**
* 鏂囦欢寮傚父绫诲瀷锛氭枃浠舵鏁颁笌涓嬪彂璁板綍涓嶅尮閰嶏紙杞﹀簥/鐜板満缂栧埗闄ゅ)
*/
- public static final int EXCEPTION_NOT_MATCH_SEND = 3;
+ public static final int EXCEPTION_NOT_MATCH_SEND_SEG_COUNT = 4;
+ /**
+ * 涓嶅尮閰嶄笅鍙戣褰曪紙璇曞垏涓嬪彂 銆� 鐜板満缂栫▼涓嬪彂锛�
+ */
+ public static final int EXCEPTION_NOT_MATCH_RECORD = 5;
/**
* 鏂囦欢鍚�
@@ -172,10 +176,11 @@
return "姝e父";
}
return switch (exceptionType) {
- case 1 -> "闈炴枃鏈�";
- case 2 -> "鏂囦欢鍚嶆牸寮忛敊璇�";
- case 3 -> "鏂囦欢纭け";
- case 4 -> "娈垫暟涓庝笅鍙戣褰曚笉鍖归厤";
+ case EXCEPTION_NOT_TEXT -> "闈炴枃鏈�";
+ case EXCEPTION_BAD_FILENAME -> "鏂囦欢鍚嶆牸寮忛敊璇�";
+ case EXCEPTION_LOST_FILES -> "鏂囦欢纭け";
+ case EXCEPTION_NOT_MATCH_SEND_SEG_COUNT -> "娈垫暟涓庝笅鍙戣褰曚笉鍖归厤";
+ case EXCEPTION_NOT_MATCH_RECORD -> "鏃犺褰曞尮閰�";//璇曞垏涓嬪彂锛岀幇鍦虹紪绋嬮兘涓嶅尮閰�
default -> "姝e父";
};
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml
index f1a9b35..c680a65 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml
@@ -95,7 +95,7 @@
select f.id,f.name,f.machine_code,f.file_create_time, f.file_modify_time,f.md5,f.file_size,f.exception_type,f.create_time,f.update_time
from mdm_machine_file f join mdm_machine m on f.machine_code=m.code and m.is_deleted=0
<where>
- f.dir_type='REC' and f.is_deleted=0 and f.exception_type is not null and f.exception_type <> 0
+ f.status <> 4 and f.dir_type='REC' and f.is_deleted=0 and f.exception_type is not null and f.exception_type <> 0
<if test="query.name!=null and query.name!=''">
and f.name like CONCAT('%', #{query.name,jdbcType=VARCHAR},'%')
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java
index 4288c15..d27d9f4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java
@@ -93,22 +93,22 @@
.eq(FileSendRecord::getMachineCode,machineFile.getMachineCode())
.likeRight(FileSendRecord::getName,prefix).between(FileSendRecord::getCreateTime,beginTime,endTime).oneOpt();
+ boolean matchSendRecord;//鏂囦欢鏄惁鏈変笅鍙戣褰�
if(optFile.isPresent()){
+ matchSendRecord = true;
//纭疄涓嬪彂杩囷紝姣斿鎬绘鏁版槸鍚︾浉鍚�
FileSendRecord sendFile = optFile.get();
ProgramNameVO sendProgNameVO = ProgramFileNameParser.parseProgramName(sendFile.getName());
if(progNameVO.getSegmentCount() != sendProgNameVO.getSegmentCount()){
//娈垫暟涓嶅尮閰嶄笅鍙戣褰�
- excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND;
+ excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND_SEG_COUNT;
}
+ }else{
+ matchSendRecord = false;
}
- if(excepType == MachineFile.EXCEPTION_NOT_MATCH_SEND){
- //濡傛灉鏂囦欢鏈笅鍙戣繃锛屾煡鐪嬫槸鍚︽湁鐜板満缂栫▼璁板綍
+ if(!matchSendRecord){//濡傛灉鏂囦欢鏈笅鍙戣繃锛屾煡鐪嬫槸鍚︽湁鐜板満缂栫▼璁板綍
byteStream.reset();
-
- //AnnotationProcessor processor = annoProcessHelper.getProcessor(machine.getControlSystem());
-
String planStatusLine = AnnotationUtil.removeAnnotation(machine.getControlSystem(),FileContentUtil.readLineAt(byteStream,annoProps.getStatusLineIndex()),programAnnotationService.getAnnotionDictList());
String lgNo;//鏇存敼鍗曞彿
@@ -127,8 +127,8 @@
.eq(ProgramOnMachine::getMachineCode,machineFile.getMachineCode()).count();
- if(progOnMachineCount > 0){//鏈夌幇鍦虹紪绋嬭褰曪紝妫�鏌ラ�氳繃
- excepType = MachineFile.EXCEPTION_OK;
+ if(progOnMachineCount == 0){//鏃犵幇鍦虹紪绋嬭褰�
+ excepType = MachineFile.EXCEPTION_NOT_MATCH_RECORD;
}
}
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;
}
diff --git a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/commons/contants/RegExpConstantsTest.java b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/commons/contants/RegExpConstantsTest.java
index 96ebacf..863986d 100644
--- a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/commons/contants/RegExpConstantsTest.java
+++ b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/commons/contants/RegExpConstantsTest.java
@@ -65,12 +65,12 @@
Assertions.assertTrue(m.find());
- m = RegExpConstants.PROGRAM_PACKAGE_PATTERN.matcher("CP3X296-A-B");
+ m = RegExpConstants.PROGRAM_PACKAGE_PATTERN.matcher("C_P3X296-A-B");
String drawingNo = null;
if(m.find()) {
drawingNo = m.group(1);
- Assertions.assertEquals("CP3X296",drawingNo );
+ Assertions.assertEquals("C_P3X296",drawingNo );
}
String processNo = null;
diff --git a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/program/service/programannotation/FanucProcessorTest.java b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/program/service/programannotation/FanucProcessorTest.java
new file mode 100644
index 0000000..e173b18
--- /dev/null
+++ b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/program/service/programannotation/FanucProcessorTest.java
@@ -0,0 +1,30 @@
+package org.springblade.mdm.program.service.programannotation;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.regex.Pattern;
+
+public class FanucProcessorTest {
+
+ @Test
+ public void testMatchOline(){
+
+ boolean oMatched = FanucProcessor.PATTERN.matcher("O1234(A-1)").matches();
+ Assertions.assertTrue(oMatched);
+
+ oMatched = FanucProcessor.PATTERN.matcher("O1234").matches();
+ Assertions.assertTrue(oMatched);
+
+ }
+
+ @Test
+ public void testGenProgramNameLine(){
+ FanucProcessor p = new FanucProcessor();
+ String newLine = p.genProgramNameLine("O1234","(A-1)");
+ Assertions.assertEquals("O1234(A-1)", newLine);
+
+ newLine = p.genProgramNameLine("O1001(MY zhushi)","(A-1)");
+ Assertions.assertEquals("O1001(A-1)", newLine);
+ }
+}
diff --git a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java
index c6bff09..ec5904e 100644
--- a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java
+++ b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java
@@ -8,15 +8,18 @@
@Test
public void testParseProgramName() {
- String fname = "CP1-1-1-A-2-1.txt";
+ String fname = "CP1-1-1-A-2-1-P1.txt";
ProgramNameVO vo = ProgramFileNameParser.parseProgramName(fname);
+ Assertions.assertEquals("CP1-1",vo.getDrawingNo());
+ Assertions.assertEquals("1",vo.getProcessNo());
+ Assertions.assertEquals("A",vo.getProcessEdition());
Assertions.assertEquals(2,vo.getSegmentCount());
Assertions.assertEquals(1,vo.getSegmentNo());
- Assertions.assertEquals("A",vo.getProcessEdition());
- Assertions.assertEquals("1",vo.getProcessNo());
- Assertions.assertEquals("CP1-1",vo.getDrawingNo());
+ Assertions.assertEquals("P1",vo.getLgPart());
+
+
fname = "T-9-B-5-3.txt";
vo = ProgramFileNameParser.parseProgramName(fname);
--
Gitblit v1.9.3