From 046e7e3c76ab6690d5e81566de31868257288df3 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 16 十月 2025 16:54:54 +0800
Subject: [PATCH] 任务导入+翻页修复

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java |   96 ++++++++++++++++++++++++++++++------------------
 1 files changed, 60 insertions(+), 36 deletions(-)

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 05f06fa..11c384f 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
@@ -9,8 +9,11 @@
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.commons.contants.RegExpConstants;
+import org.springblade.mdm.commons.service.MachineDirTranslator;
 import org.springblade.mdm.commons.service.ParamService;
 import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
+import org.springblade.mdm.gkw.task.entity.MachineBackTask;
+import org.springblade.mdm.gkw.task.service.MachineBackTaskService;
 import org.springblade.mdm.machinefile.entity.FileSendRecord;
 import org.springblade.mdm.machinefile.entity.MachineFile;
 import org.springblade.mdm.program.entity.ProgramOnMachine;
@@ -50,8 +53,9 @@
 	@Autowired
 	private AnnotationProcessorHelper annoProcessHelper;
 	@Autowired
-	private ProgramAnnotationService programAnnotationService;
-
+	private MachineDirTranslator machineDirTranslator;
+	@Autowired
+	private MachineBackTaskService machineBackTaskService;
 	/**
 	 * 鏂囦欢鍚堟硶鎬ф鏌�
 	 * @param machineFile
@@ -59,14 +63,13 @@
 	@Transactional(rollbackFor = Exception.class)
 	public void check(MachineFile machineFile,List<MachineFile> allFilesInDir,Machine machine) throws IOException {
 
-		String srcFilepath = MachineFileService.getBasePath(machine,machineFile.getDirType())+ File.separator+machineFile.getName();
+		String srcFilepath = machineDirTranslator.trans(MachineFileService.getBasePath(machine,machineFile.getDirType())+ File.separator+machineFile.getName());
 		log.info("寮�濮嬫鏌ユ枃浠秢}",srcFilepath);
 		Path checkFilePath = Paths.get(srcFilepath);
 		if(!checkFilePath.toFile().exists()){
 			return;
 		}
 
-		AnnotationProperties annoProps = AnnotationProperties.getDefault();
 		try(InputStream fileIns = Files.newInputStream(checkFilePath);) {
 			int excepType = MachineFile.EXCEPTION_OK;
 			ByteArrayInputStream byteStream = new ByteArrayInputStream(IOUtils.toByteArray(fileIns));
@@ -74,7 +77,6 @@
 				//闈炴枃鏈�
 				excepType = MachineFile.EXCEPTION_NOT_TEXT;
 			}else{
-				//Matcher matcher = RegExpConstants.PROGRAM_FILE_PATTERN.matcher(machineFile.getName());
 				ProgramNameVO progNameVO =  ProgramFileNameParser.parseProgramName(machineFile.getName());
 				boolean filenameValid = progNameVO.isValidFilename();
 				if(!filenameValid){
@@ -86,49 +88,57 @@
 					if(matchCount != progNameVO.getSegmentCount()){//鏂囦欢娈垫暟缂哄け
 						excepType = MachineFile.EXCEPTION_LOST_FILES;
 					}else{
-						//妫�鏌ユ槸鍚﹀尮閰嶄笅鍙戣褰曠殑娈垫暟
-						//姝h礋3绉掍綔涓烘煡璇㈡椂闂�
-						Date beginTime = new Date(machineFile.getFileCreateTime().getTime()-3000);
-						Date endTime = new Date(machineFile.getFileCreateTime().getTime()+3000);
+						//妫�鏌ユ槸鍚﹀尮閰嶆満搴婂洖浼犱换鍔�
+						byteStream.reset();
+						AnnotationProcessor annoProcessor = this.annoProcessHelper.getProcessor(machine.getControlSystem());
+						AnnotationData annoData = annoProcessor.readAnnotationData(byteStream);
+						Optional<MachineBackTask> taskOpt = backTaskForFile(machineFile,annoData);
+
+						/*
+						String nameLikeStr;
+						if(StringUtils.isNotBlank(progNameVO.getLgPart())){
+							nameLikeStr = prefix +"%P%";
+						}else{
+							nameLikeStr = prefix;
+						}
 						Optional<FileSendRecord> optFile = fileSendRecordService.lambdaQuery()
 							.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_SEG_COUNT;
-							}else if(!StringUtils.equals(sendProgNameVO.getLgPart(),progNameVO.getLgPart())){
-								excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND_LG;
+							.likeRight(FileSendRecord::getName,nameLikeStr).last("limit 1")
+							.orderByDesc(FileSendRecord::getCreateTime).oneOpt();
+						*/
+						//boolean matchSendRecord;//鏂囦欢鏄惁鏈変笅鍙戣褰�
+						if(taskOpt.isPresent()){
+							//鏈変换鍔★紝姣斿鎬绘鏁版槸鍚︾浉鍚�
+							MachineBackTask backTask = taskOpt.get();
+							//FileSendRecord sendFile = optFile.get();
+							//ProgramNameVO sendProgNameVO =  ProgramFileNameParser.parseProgramName(sendFile.getName());
+							if(!backTask.isProgramOnMachineTask() ){//宸ヨ壓缂栧埗
+								if(progNameVO.getSegmentCount() != backTask.getSegCount()) {
+									//娈垫暟涓嶅尮閰嶄笅鍙戣褰�
+									excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND_SEG_COUNT;
+								}
+							}else{
+								//鐜板満缂栫▼锛屾鏌ユ洿鏀瑰崟搴忓彿
+								if(StringUtils.isNotBlank(backTask.getDeviationSerial()) && !StringUtils.equals(backTask.getDeviationSerial(),progNameVO.lgSerial())){
+									excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND_LG;
+								}
 							}
+
 						}else{
-							matchSendRecord = false;
+							excepType = MachineFile.EXCEPTION_NOT_MATCH_RECORD;
 						}
 
+						/*
 						if(!matchSendRecord){//濡傛灉鏂囦欢鏈笅鍙戣繃锛屾煡鐪嬫槸鍚︽湁鐜板満缂栫▼璁板綍
-							byteStream.reset();
-							//TODO 涓嬮潰杩欎簺搴旇閮芥病鏈夛紝鍥犱负鏃剁幇鍦虹紪绋�
-							String planStatusLine = AnnotationUtil.removeAnnotation(machine.getControlSystem(),FileContentUtil.readLineAt(byteStream,annoProps.getStatusLineIndex()),programAnnotationService.getAnnotionDictList());
-
-							String lgNo;//鏇存敼鍗曞彿
-							if(AnnotationUtil.LG.equals(planStatusLine)) {//鏄洿鏀瑰崟
-								String lgLine = FileContentUtil.readLineAt(byteStream, annoProps.getDeviationLineIndex());
-								lgNo = AnnotationUtil.removeAnnotation(machine.getControlSystem(), lgLine, programAnnotationService.getAnnotionDictList());
-							}else{
-								lgNo = null;
+							String devSerial = null;
+							if(StringUtils.isNotBlank(progNameVO.getLgPart())){
+								devSerial = progNameVO.getLgPart().substring(1);
 							}
-
 							long progOnMachineCount = programOnMachineService.lambdaQuery()
 								.eq(ProgramOnMachine::getDrawingNo,progNameVO.getDrawingNo())
 								.eq(ProgramOnMachine::getProcessNo,progNameVO.getProcessNo())
 								.eq(ProgramOnMachine::getProcessEdition,progNameVO.getProcessEdition())
-								.eq(lgNo != null,ProgramOnMachine::getDeviation,lgNo)//TODO 涓存椂鏇存敼鍗曞簭鍙峰尮閰�
-
+								.eq(devSerial != null,ProgramOnMachine::getDeviationSerial,devSerial)
 								.eq(ProgramOnMachine::getMachineCode,machineFile.getMachineCode()).count();
 
 							if(progOnMachineCount == 0){//鏃犵幇鍦虹紪绋嬭褰�
@@ -136,6 +146,8 @@
 							}
 
 						}
+
+						 */
 					}
 				}
 			}
@@ -144,4 +156,16 @@
 			machineFileService.updateById(machineFile);
 		}
 	}
+
+	Optional<MachineBackTask> backTaskForFile(MachineFile machineFile,AnnotationData annoData){
+		ProgramNameVO progNameVO = ProgramFileNameParser.parseProgramName(machineFile.getName());
+
+		return machineBackTaskService.lambdaQuery()
+			.eq(MachineBackTask::getStatus,MachineBackTask.STATUS_PENDING)
+			.eq(MachineBackTask::getMachineCode,machineFile.getMachineCode())
+			.eq(MachineBackTask::getProgramName,progNameVO.logicProgramName())
+			.eq(progNameVO.lgSerial()!=null,MachineBackTask::getDeviation,annoData.getDeviation())
+			.eq(progNameVO.lgSerial()!=null,MachineBackTask::getDeviationSerial,progNameVO.lgSerial())
+			.last("limit 1").oneOpt();
+	}
 }

--
Gitblit v1.9.3