From 4c7296d45efe849dc70a3b2e2240c905481a91c9 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 29 九月 2025 17:44:46 +0800
Subject: [PATCH] 工控网涉密网联调

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java |  128 ++++++++++++++++++++++++++++++------------
 1 files changed, 92 insertions(+), 36 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
index a837e3b..08f278e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
@@ -4,18 +4,17 @@
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.springblade.core.tool.api.R;
-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.commons.contants.ParamContants;
-import org.springblade.mdm.machineback.filewatch.DirectorLockService;
-import org.springblade.mdm.machineback.filewatch.DynamicDirectoryWatcher;
-import org.springblade.mdm.machineback.filewatch.FileWatcherService;
-import org.springblade.mdm.machineback.filewatch.MachineFileBackListener;
-import org.springblade.mdm.machineback.service.MachineBackFileService;
-import org.springblade.mdm.program.service.NcProgramService;
-import org.springblade.system.feign.ISysClient;
-import org.springframework.context.annotation.Bean;
+import org.springblade.mdm.commons.service.MachineDirTranslator;
+import org.springblade.mdm.commons.service.ParamService;
+import org.springblade.mdm.flow.service.TaskDispatchService;
+import org.springblade.mdm.machinefile.entity.MachineFile;
+import org.springblade.mdm.machinefile.filewatch.*;
+import org.springblade.mdm.machinefile.service.MachineFileScanService;
+import org.springblade.mdm.machinefile.service.MachineFileService;
+import org.springblade.mdm.program.service.ProgramAnnotationService;
+import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.stereotype.Component;
 
 import java.nio.file.Path;
@@ -26,23 +25,33 @@
 @Slf4j
 @AllArgsConstructor
 @Component
+@EnableAsync
 public class InitBean {
 	private final DirectorLockService directorLockService;
-	private final MachineService machineService;
-	private final FileWatcherService fileWatcherService;
-	private final ISysClient sysClient;
 	private final DynamicDirectoryWatcher directoryWatcher;
-	private final MachineBackFileService machineBackFileService;
-	private final NcProgramService ncProgramService;
-	//private final FileWatcherService.FileChangeListener listener;
+	private final MachineService machineService;
+	private final MachineFileService machineFileService;
+	private final ParamService paramService;
+	private final ProgramAnnotationService annotationService;
+	private final MachineFileScanService machineFileScanService;
+	private final TaskDispatchService taskDispatchService;
+	private final MachineDirTranslator dirTranslator;
+	private final TaskPropertieBean taskPropertieBean;
 	@PostConstruct
 	public void init() {
-		System.out.println("搴旂敤鍚姩鏃舵墽琛屽垵濮嬪寲鎿嶄綔 @PostConstruct");
-		// 鍒濆鍖栭�昏緫
-		R<String> networkTypeR = sysClient.getParamValue(ParamContants.NETWORK_TYPE_KEY);
-		String networkType = networkTypeR.getData() == null ? ParamContants.NETWORK_TYPE_SHEMI : networkTypeR.getData();
-		if (networkType.equals(ParamContants.NETWORK_TYPE_GONGKONG)) {
+		log.info("搴旂敤鍚姩鏃舵墽琛屽垵濮嬪寲鎿嶄綔 @PostConstruct");
+		String networkType = paramService.networkType();
+		if(!ParamService.NETWORK_TYPE_SHEMI.equals(networkType)) {
+			if(taskPropertieBean.isFileScanOnStart()) {
+				machineFileScanService.scanMachineFile();
+			}
+
+			//宸ユ帶缃戞墠鍚姩鏂囦欢鐩戞帶
+			log.info("宸ユ帶缃戝惎鍔ㄦ枃浠剁洃鎺�");
 			initMachineDirMonitor();
+		}else{
+			//娑夊瘑缃�
+			taskDispatchService.resetDrawingNos();
 		}
 	}
 
@@ -50,29 +59,28 @@
 	 * 鍒濆鍖栫洃鎺х洰褰�
 	 */
 	void initMachineDirMonitor() {
+		/*
 		boolean locked = directorLockService.acquireLock();
 		if (!locked) {
 			log.info("鍥炰紶鎺ユ敹鐩綍宸茬粡琚叾浠栭儴缃茬偣浣嶉攣瀹氾紝鐩存帴杩斿洖");
 			return;
 		}
-		List<Machine> machineList = machineService.list();
-		List<String> monitorDirList = new ArrayList<String>();
-		machineList.forEach(m -> {
-			if (StringUtils.isNotEmpty(m.getProgReceiveDir())) {
-				String dir = StringUtils.removeEnd(StringUtils.removeEnd(m.getProgReceiveDir(), "/"), "\\");
-				if (!monitorDirList.contains(dir)) {
-					monitorDirList.add(dir);
-				}
 
-			}
+		 */
+
+		List<Machine> machineList = machineService.getEnableMachines();;
+		List<WatchInfo> monitorInfoList = new ArrayList<>();
+		machineList.forEach(m -> {
+			addToWatchDirList(monitorInfoList,m);
 		});
-		for (String dir : monitorDirList) {
-			Path dirPath = Paths.get(dir);
+
+		for (WatchInfo info : monitorInfoList) {
 			try {
+				Path dirPath = Paths.get(info.getPath());
 				if(!dirPath.toFile().exists()) {
 					dirPath.toFile().mkdirs();
 				}
-				directoryWatcher.addDirectory(dirPath,getListener());
+				directoryWatcher.addDirectory(dirPath,getListener(info));
 			} catch (Exception e) {
 				log.error("娣诲姞鐩戞帶鐩綍寮傚父",e);
 			}
@@ -80,10 +88,58 @@
 
 	}
 
+	void addToWatchDirList(List<WatchInfo> monitorDirList,Machine machine){
+		String dir;
+		//鍔犲叆send鏂囦欢澶�
+		if (StringUtils.isNotEmpty(machine.getProgSendDir())) {
+			//dir = dirTranslator.trans(StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgSendDir(), "/"), "\\"));
+			dir = fixMachineDir(machine.getProgSendDir());
+			WatchInfo watchInfo = new WatchInfo();
+			watchInfo.setMachine(machine);
+			watchInfo.setDirType(MachineFile.DIR_TYPE_SEND);
+			watchInfo.setPath(dir);
+			if (!monitorDirList.contains(watchInfo)) {
+				monitorDirList.add(watchInfo);
+			}
+		}
 
-	FileWatcherService.FileChangeListener getListener() {
-		return new MachineFileBackListener(machineBackFileService,ncProgramService);
+		//鍔犲叆rec鏂囦欢澶�
+		if (StringUtils.isNotEmpty(machine.getProgReceiveDir())) {
+			//dir = StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgReceiveDir(), "/"), "\\");
+			dir = fixMachineDir(machine.getProgReceiveDir());
+			WatchInfo watchInfo = new WatchInfo();
+			watchInfo.setMachine(machine);
+			watchInfo.setDirType(MachineFile.DIR_TYPE_REC);
+			watchInfo.setPath(dir);
+			if (!monitorDirList.contains(watchInfo)) {
+				monitorDirList.add(watchInfo);
+			}
+		}
+
+		//鍔犲叆temp鏂囦欢澶�
+		if (StringUtils.isNotEmpty(machine.getProgTempDir())) {
+			//dir = StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgTempDir(), "/"), "\\");
+			dir = fixMachineDir(machine.getProgTempDir());
+			WatchInfo watchInfo = new WatchInfo();
+			watchInfo.setMachine(machine);
+			watchInfo.setDirType(MachineFile.DIR_TYPE_TEMP);
+			watchInfo.setPath(dir);
+			if (!monitorDirList.contains(watchInfo)) {
+				monitorDirList.add(watchInfo);
+			}
+		}
 	}
 
+	/**
+	 * 缈昏瘧鍏变韩鏂囦欢澶硅矾寰勫埌 鏍囧噯缃戠粶璺緞锛屽幓鎺夋湯灏捐矾寰勫垎鍓蹭笉
+	 * @param dirpath 鍘熷璺緞
+	 * @return 杞崲鍚庣殑璺緞
+	 */
+	String fixMachineDir(String dirpath){
+		return dirTranslator.trans(StringUtils.removeEnd(StringUtils.removeEnd(dirpath, "/"), "\\"));
+	}
 
+	FileWatcherService.FileChangeListener getListener(WatchInfo info) {
+		return new MachineFileChangeListener(machineFileService,annotationService,info);
+	}
 }

--
Gitblit v1.9.3