From 2689c8fec95018952784bd8d032afb5a194a6616 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期二, 02 九月 2025 00:17:45 +0800
Subject: [PATCH] 增加文件监控

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java |   79 +++++++++++++++++++++++++++------------
 1 files changed, 54 insertions(+), 25 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
index a573dd5..ff090f8 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
@@ -1,26 +1,16 @@
 package org.springblade.mdm.task;
 
-import com.alibaba.excel.util.StringUtils;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.springblade.mdm.basesetting.machine.MachineService;
-import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.commons.service.ParamService;
-import org.springblade.mdm.gkw.programnode.entity.MachineFile;
-import org.springblade.mdm.gkw.programnode.service.MachineFileService;
+import org.springblade.mdm.machinefile.service.MachineFileScanService;
+import org.springblade.mdm.machinefile.service.MachineFileService;
+import org.springblade.mdm.program.service.ProgramAnnotationService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.nio.file.attribute.FileTime;
-import java.util.Date;
-import java.util.List;
 
 @Slf4j
 @Component
@@ -32,6 +22,10 @@
 	private MachineService machineService;
 	@Autowired
 	private ParamService paramService;
+	@Autowired
+	private ProgramAnnotationService programAnnotationService;
+	@Autowired
+	private MachineFileScanService machineFileScanService;
 	// 姣�5绉掓墽琛屼竴娆�
 	//@Scheduled(fixedRate = 1000000)
 	//@Scheduled(cron = "0 1 0 * * ?") // 姣忓ぉ涓婂崍0鐐�1鍒嗘墽琛�
@@ -43,7 +37,7 @@
 
 		if(!ParamService.NETWORK_TYPE_SHEMI.equals(networkType)){
 			//闈炴秹瀵嗙綉锛屾墠鎵弿鐩綍鏂囦欢
-			scanMachineFile();
+			machineFileScanService.scanMachineFile();
 		}
 
 	}
@@ -51,47 +45,48 @@
 	/**
 	 * 鎵弿鎵�鏈夋満搴婄殑閰嶇疆涔嬬洰褰�
 	 */
+	/*
 	public void scanMachineFile() {
 		List<Machine> machines = machineService.lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).list();
 		for (Machine machine : machines) {
 
-			//鎵弿鏂伴椈鐣�
+			//鎵弿鏂版枃浠�
 			try {
 				scanDir(machine,MachineFile.DIR_TYPE_REC);
 			}catch(Exception e) {
-				log.error("REC鎵弿鏂囦欢寮傚父,鏈哄簥"+machine.getCode(),e);
+				log.error("REC鎵弿鏂囦欢寮傚父,鏈哄簥{}", machine.getCode(), e);
 			}
 			try {
 				scanDir(machine,MachineFile.DIR_TYPE_SEND);
 			}catch(Exception e) {
-				log.error("SEND鎵弿鏂囦欢寮傚父,鏈哄簥"+machine.getCode(),e);
+				log.error("SEND鎵弿鏂囦欢寮傚父,鏈哄簥{}", machine.getCode(), e);
 			}
 			try {
 				scanDir(machine,MachineFile.DIR_TYPE_TEMP);
 			}catch(Exception e) {
-				log.error("TEMP鎵弿鏂囦欢寮傚父,鏈哄簥"+machine.getCode(),e);
+				log.error("TEMP鎵弿鏂囦欢寮傚父,鏈哄簥{}", machine.getCode(), e);
 			}
 
 			//娓呯悊鏁版嵁搴擄紝鍒犻櫎鏂囦欢涓嶅瓨鍦ㄧ殑鏁版嵁
 			try {
 				clearDeletedReccords(machine,MachineFile.DIR_TYPE_REC);
 			}catch(Exception e) {
-				log.error("REC鎵弿鏂囦欢寮傚父,鏈哄簥"+machine.getCode(),e);
+				log.error("REC鎵弿鏂囦欢寮傚父,鏈哄簥{}", machine.getCode(), e);
 			}
 			try {
 				clearDeletedReccords(machine,MachineFile.DIR_TYPE_SEND);
 			}catch(Exception e) {
-				log.error("SEND鎵弿鏂囦欢寮傚父,鏈哄簥"+machine.getCode(),e);
+				log.error("SEND鎵弿鏂囦欢寮傚父,鏈哄簥{}", machine.getCode(), e);
 			}
 			try {
 				clearDeletedReccords(machine,MachineFile.DIR_TYPE_TEMP);
 			}catch(Exception e) {
-				log.error("TEMP鎵弿鏂囦欢寮傚父,鏈哄簥"+machine.getCode(),e);
+				log.error("TEMP鎵弿鏂囦欢寮傚父,鏈哄簥{}", machine.getCode(), e);
 			}
 		}
 
 	}
-
+	*/
 
 	/**
 	 * 鎵弿鐩綍
@@ -99,6 +94,7 @@
 	 * @param dirType 鐩綍绫诲瀷
 	 * @throws IOException
 	 */
+	/*
 	public void scanDir(Machine machine,String dirType) throws IOException {
 		String basePath = MachineFileService.getBasePath(machine,dirType);
 		if(basePath == null) {
@@ -117,6 +113,7 @@
 		byte[] buffer = new byte[2048];
 
 		MachineFile existFileInDb;
+		List<DictBiz> annotatiionList = programAnnotationService.getAnnotionDictList();
 		//boolean exists;//鏂囦欢鏄惁瀛樺湪浜庢暟鎹簱涓�
 		for (Path filePath : files) {
 
@@ -131,6 +128,9 @@
 			mf.setMachineCode(machine.getCode());
 
 			try {
+				//璇诲彇鍐呭锛岀‘瀹氱▼搴忕姸鎬�
+				int pstatus = readProgramStatus(filePath,machine.getMachineGroupCode(),annotatiionList);
+				mf.setProgramStatus(pstatus);
 				BasicFileAttributes attrs = Files.readAttributes(
 					filePath,
 					BasicFileAttributes.class
@@ -165,7 +165,7 @@
 				log.info("鏂囦欢宸插瓨鍦ㄦ帬杩�:{}",filePath.getFileName());
 				//宸插瓨鍦ㄥ拫鏁淬��
 				existFileInDb.setFileSize(mf.getFileSize());
-
+				existFileInDb.setProgramStatus(mf.getProgramStatus());
 				existFileInDb.setFileCreateTime(mf.getFileCreateTime());
 				existFileInDb.setFileModifyTime(mf.getFileModifyTime());
 				if(!StringUtils.equals(existFileInDb.getMd5(),mf.getMd5())){
@@ -183,13 +183,42 @@
 
 
 	}
+	*/
+	/**
+	 * 璇诲彇鏂囦欢涓殑绋嬪簭鐘舵��
+	 * @param filePath 鏂囦欢璺緞
+	 * @param machineGroupCode
+	 * @param annotatiionList 娉ㄩ噴閰嶇疆瀛楀吀
+	 * @return 鐘舵�佺殑鏁存暟涔嬪拰
+	 * @throws IOException
+	 */
+	/*
+	int readProgramStatus(Path filePath,String machineGroupCode,List<DictBiz> annotatiionList) throws IOException {
+		int programStatus = MachineFile.PROGRAM_STATUS_UNKNOWN;
+		try(InputStream ins = Files.newInputStream(filePath)){
+			String statusLine = FileContentUtil.readLineAt(ins,ProgramAnnotationService.STATUS_LINE_INDEX);
+			if(programAnnotationService.isAnnotation(statusLine,machineGroupCode,annotatiionList)){
+				String progStatusTxt = programAnnotationService.removeAnnotation(machineGroupCode,statusLine,annotatiionList);
+				if(ProgramAnnotationService.SQ.equals(progStatusTxt)){
+					programStatus = MachineFile.PROGRAM_STATUS_TRY;
+				}else if(ProgramAnnotationService.GH.equals(progStatusTxt)){
+					programStatus = MachineFile.PROGRAM_STATUS_CURED;
+				}else if(ProgramAnnotationService.PL.equals(progStatusTxt)){
+					programStatus = MachineFile.PROGRAM_STATUS_DIVIASTION;
+				}
+			}
+		}
 
+		return programStatus;
+	}
+	*/
 	/**
 	 * 娓呯悊宸茬粡鍒犻櫎浜嗘枃浠剁殑璁板綍
 	 * @param machine
 	 * @param dirType
 	 * @throws IOException
 	 */
+	/*
 	void clearDeletedReccords(Machine machine,String dirType) throws IOException {
 		List<MachineFile> machineFiles =  this.machineFileService.lambdaQuery().eq(MachineFile::getDirType,dirType)
 			.eq(MachineFile::getMachineCode,machine.getCode()).list();
@@ -216,5 +245,5 @@
 				this.machineFileService.updateById(mf);
 			}
 		}
-	}
+	}*/
 }

--
Gitblit v1.9.3