blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java
@@ -7,8 +7,8 @@ /** * ç¨åºæä»¶å æ£å */ 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]+"); } blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
@@ -31,9 +31,9 @@ private int segmentNo; /** * å离åé¨åï¼ P1ï¼P2ç * ä¸´æ¶æ´æ¹åé¨åï¼ P1ï¼P2ç */ private String pldPart; private String lgPart; public String logicProgramName(){ return this.drawingNo+"-"+this.processNo+"-"+processEdition; 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 "æ£å¸¸"; } 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 -> "æ£å¸¸"; }; } 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},'%') 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; } } 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){ //带Pï¼æ¯å离åå· 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)); } //è§£æå·¥åºç次 idx = tempstr.lastIndexOf("-"); if(idx != -1){ String processEdition = tempstr.substring(idx+1); pname.setProcessEdition(processEdition); tempstr = tempstr.substring(0,idx); } //è§£æå·¥åºå· 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; } 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; 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); } } 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);