From 3baca21e0e6563f8379359ef2ba78c224eb4bc80 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期二, 23 九月 2025 22:45:51 +0800
Subject: [PATCH] 修复审批表,确认表内容

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java |   85 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 69 insertions(+), 16 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 937aca5..c955ac7 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
@@ -1,8 +1,11 @@
 package org.springblade.mdm.machinefile.service;
 
+import com.qiniu.util.IOUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.commons.contants.RegExpConstants;
@@ -10,8 +13,10 @@
 import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
 import org.springblade.mdm.machinefile.entity.FileSendRecord;
 import org.springblade.mdm.machinefile.entity.MachineFile;
+import org.springblade.mdm.program.entity.ProgramOnMachine;
 import org.springblade.mdm.program.service.ProgramAnnotationService;
-import org.springblade.mdm.program.service.programannotation.AnnotationUtil;
+import org.springblade.mdm.program.service.ProgramOnMachineService;
+import org.springblade.mdm.program.service.programannotation.*;
 import org.springblade.mdm.utils.FileContentUtil;
 import org.springblade.mdm.utils.ProgramFileNameParser;
 import org.springblade.system.pojo.entity.DictBiz;
@@ -20,10 +25,7 @@
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -42,9 +44,14 @@
 	@Autowired
 	private MachineService machineService;
 	@Autowired
-	private ParamService paramService;
+	private ProgramOnMachineService programOnMachineService;
 	@Autowired
 	private FileSendRecordService fileSendRecordService;
+	@Autowired
+	private AnnotationProcessorHelper annoProcessHelper;
+	@Autowired
+	private ProgramAnnotationService programAnnotationService;
+
 	/**
 	 * 鏂囦欢鍚堟硶鎬ф鏌�
 	 * @param machineFile
@@ -58,19 +65,21 @@
 		if(!checkFilePath.toFile().exists()){
 			return;
 		}
+
 		try(InputStream fileIns = Files.newInputStream(checkFilePath);) {
 			int excepType = MachineFile.EXCEPTION_OK;
-			if(!FileContentUtil.isTextFile(fileIns)){
+			ByteArrayInputStream byteStream = new ByteArrayInputStream(IOUtils.toByteArray(fileIns));
+			if(!FileContentUtil.isTextFile(byteStream)){
 				//闈炴枃鏈�
 				excepType = MachineFile.EXCEPTION_NOT_TEXT;
 			}else{
-				Matcher matcher = RegExpConstants.PROGRAM_FILE_PATTERN.matcher(machineFile.getName());
-
-				boolean filenameValid = matcher.find();
+				//Matcher matcher = RegExpConstants.PROGRAM_FILE_PATTERN.matcher(machineFile.getName());
+				ProgramNameVO progNameVO =  ProgramFileNameParser.parseProgramName(machineFile.getName());
+				boolean filenameValid = progNameVO.isValidFilename();
 				if(!filenameValid){
 					excepType = MachineFile.EXCEPTION_BAD_FILENAME;
 				}else {
-					ProgramNameVO progNameVO =  ProgramFileNameParser.parseProgramName(machineFile.getName());
+
 					String prefix = progNameVO.logicProgramName()+"-";
 					long matchCount = allFilesInDir.stream().filter(file -> file.getName().startsWith(prefix)).count();
 					if(matchCount != progNameVO.getSegmentCount()){//鏂囦欢娈垫暟缂哄け
@@ -78,20 +87,64 @@
 					}else{
 						//妫�鏌ユ槸鍚﹀尮閰嶄笅鍙戣褰曠殑娈垫暟
 						//姝h礋3绉掍綔涓烘煡璇㈡椂闂�
-						Date beginTime = new Date(machineFile.getFileCreateTime().getTime()-3000);
-						Date endTime = new Date(machineFile.getFileCreateTime().getTime()+3000);
+						//Date beginTime = new Date(machineFile.getFileCreateTime().getTime()-3000);
+						//Date endTime = new Date(machineFile.getFileCreateTime().getTime()+3000);
+						String likeStr;
+						if(StringUtils.isNotBlank(progNameVO.getLgPart())){
+							likeStr = prefix +"%P%";
+						}else{
+							likeStr = prefix;
+						}
 						Optional<FileSendRecord> optFile = fileSendRecordService.lambdaQuery()
 							.eq(FileSendRecord::getMachineCode,machineFile.getMachineCode())
-							.likeRight(FileSendRecord::getName,prefix).between(FileSendRecord::getCreateTime,beginTime,endTime).oneOpt();
+							.likeRight(FileSendRecord::getName,likeStr).last("limit 1")
+							.orderByDesc(FileSendRecord::getCreateTime).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 if(!StringUtils.equals(sendProgNameVO.getLgPart(),progNameVO.getLgPart())){
+								excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND_LG;
 							}
+						}else{
+							matchSendRecord = false;
+						}
+
+						if(!matchSendRecord){//濡傛灉鏂囦欢鏈笅鍙戣繃锛屾煡鐪嬫槸鍚︽湁鐜板満缂栫▼璁板綍
+							byteStream.reset();
+
+							/*
+							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(devSerial != null,ProgramOnMachine::getDeviationSerial,devSerial)
+								.eq(ProgramOnMachine::getMachineCode,machineFile.getMachineCode()).count();
+
+							if(progOnMachineCount == 0){//鏃犵幇鍦虹紪绋嬭褰�
+								excepType = MachineFile.EXCEPTION_NOT_MATCH_RECORD;
+							}
+
 						}
 					}
 				}

--
Gitblit v1.9.3