From 3907579a69079b5ee462d17799e3995d9cd77fd4 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 17 九月 2025 21:54:38 +0800
Subject: [PATCH] 延时问题

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java |  107 +++++++++++++++--------------------------------------
 1 files changed, 31 insertions(+), 76 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
index 9318958..d34603f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
@@ -6,19 +6,20 @@
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springblade.core.log.exception.ServiceException;
-import org.springblade.core.mp.base.BizEntity;
 import org.springblade.core.mp.base.BizServiceImpl;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.basesetting.machine.MachineService;
+import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.machinefile.entity.FileSendRecord;
+import org.springblade.mdm.machinefile.service.FileSendRecordService;
 import org.springblade.mdm.program.entity.NcProgramExchange;
 import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
+import org.springblade.mdm.program.service.programannotation.AnnotationProperties;
 import org.springblade.mdm.program.vo.MdmProgramImportVO;
 import org.springblade.mdm.utils.FileContentUtil;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.support.SimpleTriggerContext;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -49,6 +50,9 @@
 	@Autowired
 	private MachineService machineService;
 
+	@Autowired
+	private FileSendRecordService fileSendRecordService;
+
 	private String getFileKey(){
 		return "mdmgkwimpfile-"+ AuthUtil.getUserId();
 	}
@@ -72,7 +76,6 @@
 
 			// 鍒涘缓瑙e帇鐩爣鐩綍锛堝湪涓存椂鐩綍涓嬪垱寤轰竴涓敮涓�瀛愮洰褰曪級
 			Path tempZipFile = Files.createTempFile("mdmimpfile-"+System.currentTimeMillis(), ".zip");
-			//Path extractDir = Files.createTempDirectory(tempPath, "unzip_");
 
 			file.transferTo(tempZipFile);
 
@@ -84,15 +87,6 @@
 			extractZipToTempDir(tempZipFile,extractDir);
 
 			//璇诲彇鏂囦欢鐩綍
-			/*
-			BladeFile bfile = ossTemplate.putFile(file);//涓婁紶锛屼緵鍚庣画鍏ュ簱浣跨敤
-
-			//璁剧疆涓�涓紦瀛橈紝2灏忔椂杩囨湡
-			InputStream zipFileInputStream = file.getInputStream();//test
-
-			byte[] bytes = FileUtil.copyToByteArray(zipFileInputStream);
-			list = parseMdmZipFromByteArray(bytes);
-			*/
 			list = readTempDir(extractDir);
 		} catch (IOException e) {
 			log.error("瀵煎叆娑夊瘑缃戞憜娓℃枃浠跺け璐�",e);
@@ -107,9 +101,6 @@
 		Path tempPath = Paths.get(tempDir);
 
 		// 鍒涘缓瑙e帇鐩爣鐩綍锛堝湪涓存椂鐩綍涓嬪垱寤轰竴涓敮涓�瀛愮洰褰曪級
-		//Path extractDir = Files.createTempDirectory(tempPath, "unzip_");
-		System.out.println("瑙e帇鐩綍: " + extractDir.toString());
-		//Files.newInputStream(Paths.get(zipFilePath));
 		try (InputStream fis = Files.newInputStream(zipFilePath);
 			 ZipInputStream zis = new ZipInputStream(fis)) {
 
@@ -159,64 +150,25 @@
 
 		return normalizePath;
 	}
-	/*
-	public static List<MdmProgramImportVO> parseMdmZipFromByteArray(byte[] zipData) throws IOException {
-		List<MdmProgramImportVO> list = new ArrayList<>();
-		Map<String,String> fileMd5Map = new HashMap<>();
-		Map<String,MdmProgramImportVO> fileDataMap = new HashMap<>();
-		try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(zipData);
-			 ZipFile zipFile = new ZipFile(channel)) {
 
-			ZipArchiveEntry entry;
-			Enumeration<ZipArchiveEntry> entries = zipFile.getEntries();
-			while (entries.hasMoreElements()) {
-				entry = entries.nextElement();
-
-				String entryName = entry.getName();
-
-				if (!entry.isDirectory()) {
-					//鐩存帴瑙f瀽绋嬪簭鐨刯son鏂囦欢
-
-
-				}
-
-			}
-
-		}
-		//璁剧疆md5鍊�
-		fileDataMap.forEach((k,v)->{
-			if(fileMd5Map.containsKey(k)){
-				v.setMd5(fileMd5Map.get(k));
-			}
-		});
-		return list;
-	}
-	*/
 
 	public List<MdmProgramImportVO> readTempDir(Path extractDir) throws IOException {
 		List<MdmProgramImportVO> list = new ArrayList<>();
 
-		List<Machine> machines = machineService.lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).list();
+		//List<Machine> machines = machineService.getEnableMachines();
 		//璇诲彇鎵�鏈夋枃浠跺す
-		//List<Path> dirs = Files.list(extractDir).filter(Files::isDirectory).toList();
 		try (DirectoryStream<Path> stream = Files.newDirectoryStream(extractDir)) {
 			for (Path path : stream) {
 				if (Files.isDirectory(path)) {
-
-
 
 					// 濡傛灉鏄瓙鐩綍锛岃鍙栧叾涓殑鏂囦欢
 					try (DirectoryStream<Path> subStream = Files.newDirectoryStream(path)) {
 						for (Path subPath : subStream) {
 							if (Files.isRegularFile(subPath)) {
 								System.out.println("鎵惧埌鏂囦欢: " + subPath);
-								//files.add(subPath.getFileName().toString());
-								// 杩欓噷鍙互娣诲姞瀵规枃浠剁殑澶勭悊閫昏緫
 							}
 						}
 					}
-					//vo.setFiles(files);
-
 				} else if (Files.isRegularFile(path)) {
 					System.out.println("鎵惧埌鏂囦欢2: " + path);
 					//杩欓噷 鎵惧埌鐨勬枃浠朵笉鏄�
@@ -229,8 +181,6 @@
 						byte[] buffer = new byte[2000];
 						inputStream.read(buffer);
 						vo.setMd5(DigestUtils.md5Hex(buffer));
-
-
 					} catch (IOException e) {
 						log.error("璇诲彇鏂囦欢md5澶辫触",e);
 					}
@@ -239,27 +189,33 @@
 					try (InputStream inputStream = Files.newInputStream(path, StandardOpenOption.READ)) {
 						// 浣跨敤杈撳叆娴佽鍙栨枃浠跺唴瀹�
 						ByteArrayInputStream bas = new ByteArrayInputStream(inputStream.readAllBytes());
-						String line1 = FileContentUtil.readLineAt(bas,1);
+
+						AnnotationProperties defAnnoProperties = AnnotationProperties.getDefault();
+						String sendPathLine = FileContentUtil.readLineAt(bas,defAnnoProperties.getSendPathLineIndex());
 						//bas.mark(0);
 						bas.reset();
-						String line2 = FileContentUtil.readLineAt(bas,2);
-						System.out.println("line1="+line1);
-						Machine matchedMachine = null;
+						String statusLine = FileContentUtil.readLineAt(bas,defAnnoProperties.getStatusLineIndex());
+						log.info("sendPathLine={}", sendPathLine);
+
+						Machine matchedMachine = machineService.getMachineBySendPathAnnotation(sendPathLine);
+						/*
 						for (Machine machine : machines) {
-							if(Func.isNotBlank(machine.getProgSendDir()) && line1.contains(machine.getProgSendDir())){
+							if(Func.isNotBlank(machine.getProgSendDir()) && sendPathLine.contains(machine.getProgSendDir())){
 								matchedMachine = machine;
 								break;
 							}
 
 						}
+
+						 */
 						if (matchedMachine != null) {
 							vo.setName(parseProgramName(vo.getFilename()));
 							vo.setMachineCode(matchedMachine.getCode());
-							//String sendPath = programAnnotationService.removeAnnotation(matchedMachine.getMachineGroupCode(),line1,"(",")");
+
 							vo.setFullPath(path.toString());//鏂囦欢鍦板潃
 							vo.setSendPath(matchedMachine.getProgSendDir());
 							vo.setId(vo.getFullPath());
-							vo.setProgramStatus(programAnnotationService.removeAnnotation(matchedMachine.getMachineGroupCode(),line2,"(",")"));
+							vo.setProgramStatus(programAnnotationService.removeAnnotation(matchedMachine.getControlSystem(),statusLine));
 
 							list.add(vo);
 						}
@@ -267,17 +223,9 @@
 					} catch (IOException e) {
 						log.error("璇诲彇鏂囦欢md5澶辫触",e);
 					}
-
-
-					//List<String> files = new ArrayList<>();
-
-
-					// 杩欓噷鍙互娣诲姞瀵规枃浠剁殑澶勭悊閫昏緫
 				}
 			}
 		}
-
-
 		return list;
 	}
 
@@ -350,20 +298,27 @@
 
 		List<String> idList = Func.toStrList(ids);
 
-		String ditStr = bladeRedis.get(getFileKey());
-		Path extractDir = Paths.get(ditStr);
+		String dictStr = bladeRedis.get(getFileKey());
+		Path extractDir = Paths.get(dictStr);
 
 		List<MdmProgramImportVO> list = readTempDir(extractDir);
 
 		String destFileFull;
 		for(String str : idList){
-			System.out.println(str);
+			//System.out.println(str);
 			for(MdmProgramImportVO vo : list){
 				if(StringUtils.equals(vo.getFullPath(),str)){
 					destFileFull = vo.getSendPath()+File.separator+vo.getFilename();
 					File destFile = new File(destFileFull);
 					FileUtils.forceMkdirParent(destFile);
 					FileUtils.copyFile(new File(str),destFile);
+
+					FileSendRecord record = new FileSendRecord();
+					record.setName(destFile.getName());
+					Path destPath = Paths.get(destFileFull);
+					record.setMachineCode(vo.getMachineCode());
+					record.setFileSize(Files.size(destPath));
+					fileSendRecordService.save(record);
 					break;
 				}
 			}

--
Gitblit v1.9.3