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/basesetting/machine/service/MachineService.java |   65 +++++++++++++++++++++-----------
 1 files changed, 42 insertions(+), 23 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/service/MachineService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/service/MachineService.java
index 6915e01..cbb5456 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/service/MachineService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/service/MachineService.java
@@ -16,6 +16,7 @@
 import org.springblade.mdm.basesetting.machine.vo.MachineSaveVO;
 import org.springblade.mdm.basesetting.machine.vo.MachineVO;
 import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService;
+import org.springblade.mdm.commons.service.MachineDirTranslator;
 import org.springblade.mdm.commons.service.ParamService;
 import org.springblade.mdm.machinefile.entity.MachineFile;
 import org.springblade.mdm.machinefile.filewatch.DynamicDirectoryWatcher;
@@ -35,6 +36,7 @@
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.List;
+import java.util.Optional;
 
 @Service
 public class MachineService extends BizServiceImpl<MachineMapper, Machine> {
@@ -44,6 +46,9 @@
 	private DynamicDirectoryWatcher dynamicDirectoryWatcher;
 	@Autowired
 	private ParamService paramService;
+	@Autowired
+	private MachineDirTranslator machineDirTranslator;
+
 	@Transactional(rollbackFor = Exception.class)
 	public void saveMachine(MachineSaveVO vo) throws IOException {
 		checkMachine(vo);
@@ -66,15 +71,15 @@
 	void makeMachineDirs(Machine machine) throws IOException {
 		Path dir;
 		if(StringUtils.isNotBlank(machine.getProgSendDir())){
-			createDirIsNotExists(machine.getProgSendDir());
+			createDirIsNotExists(machineDirTranslator.trans(machine.getProgSendDir()));
 		}
 
-		if(StringUtils.isNotBlank(machine.getProgReceiveDir())){
-			createDirIsNotExists(machine.getProgReceiveDir());
+		if(StringUtils.isNotBlank(machineDirTranslator.trans(machine.getProgReceiveDir()))){
+			createDirIsNotExists(machineDirTranslator.trans(machine.getProgReceiveDir()));
 		}
 
-		if(StringUtils.isNotBlank(machine.getProgTempDir())){
-			createDirIsNotExists(machine.getProgTempDir());
+		if(StringUtils.isNotBlank(machineDirTranslator.trans(machine.getProgTempDir()))){
+			createDirIsNotExists(machineDirTranslator.trans(machine.getProgTempDir()));
 		}
 	}
 
@@ -95,13 +100,17 @@
 			ProgramAnnotationService annoService = SpringUtil.getBean(ProgramAnnotationService.class);
 
 			if(StringUtils.isNotBlank(machine.getProgSendDir())) {
+
+				String sendDir = machineDirTranslator.trans(machine.getProgSendDir());
+
 				WatchInfo watchInfoSend = new WatchInfo();
 				watchInfoSend.setMachine(machine);
 				watchInfoSend.setDirType(MachineFile.DIR_TYPE_SEND);
-				watchInfoSend.setPath(machine.getProgSendDir());
+				watchInfoSend.setPath(sendDir);
 
-				if(!dynamicDirectoryWatcher.containsPath(Paths.get(machine.getProgSendDir()))) {
-					dynamicDirectoryWatcher.addDirectory(Paths.get(machine.getProgSendDir()),
+				Path path = Paths.get(sendDir);
+				if(!dynamicDirectoryWatcher.containsPath(path)) {
+					dynamicDirectoryWatcher.addDirectory(path,
 						new MachineFileChangeListener(machineFileService,
 							annoService,
 							watchInfoSend));
@@ -109,12 +118,16 @@
 			}
 
 			if(StringUtils.isNotBlank(machine.getProgReceiveDir())) {
+
+				String recDir = machineDirTranslator.trans(machine.getProgReceiveDir());
+
 				WatchInfo watchInfoRec = new WatchInfo();
 				watchInfoRec.setMachine(machine);
 				watchInfoRec.setDirType(MachineFile.DIR_TYPE_REC);
-				watchInfoRec.setPath(machine.getProgReceiveDir());
-				if(!dynamicDirectoryWatcher.containsPath(Paths.get(machine.getProgReceiveDir()))) {
-					dynamicDirectoryWatcher.addDirectory(Paths.get(machine.getProgReceiveDir()),
+				watchInfoRec.setPath(recDir);
+				Path path = Paths.get(recDir);
+				if(!dynamicDirectoryWatcher.containsPath(path)) {
+					dynamicDirectoryWatcher.addDirectory(path,
 						new MachineFileChangeListener(machineFileService,
 							annoService,
 							watchInfoRec));
@@ -122,12 +135,14 @@
 			}
 
 			if(StringUtils.isNotBlank(machine.getProgTempDir())) {
+				String tempDir = machineDirTranslator.trans(machine.getProgTempDir());
 				WatchInfo watchInfoTemp = new WatchInfo();
 				watchInfoTemp.setMachine(machine);
 				watchInfoTemp.setDirType(MachineFile.DIR_TYPE_TEMP);
-				watchInfoTemp.setPath(machine.getProgTempDir());
-				if(!dynamicDirectoryWatcher.containsPath(Paths.get(machine.getProgTempDir()))) {
-					dynamicDirectoryWatcher.addDirectory(Paths.get(machine.getProgTempDir()),
+				watchInfoTemp.setPath(tempDir);
+				Path path = Paths.get(machine.getProgTempDir());
+				if(!dynamicDirectoryWatcher.containsPath(path)) {
+					dynamicDirectoryWatcher.addDirectory(path,
 						new MachineFileChangeListener(machineFileService,
 							annoService,
 							watchInfoTemp));
@@ -356,16 +371,20 @@
 			return null;
 		}
 		//鍘绘帀鏈熬鎷彿(鍙戦偅绉�) ,鏈熬璺緞鍒嗛殧绗�
-		String tempPath = StringUtils.removeEnd(StringUtils.removeEnd(StringUtils.removeEnd(sendPathLine,")"),"/"),"\\");
-		//鍘绘帀鍓�2浣嶅彲鑳界殑娉ㄩ噴(*-)銆�
-		String sendPath = escapeSqlWildcard(StringUtils.trim(StringUtils.substring(tempPath,2)));
+		String oriPath = StringUtils.removeEnd(StringUtils.removeEnd(StringUtils.removeEnd(sendPathLine,")"),"/"),"\\");
 
-		List<Machine> machines = lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).like(Machine::getProgSendDir,sendPath).list();
-		if(machines.isEmpty()){
-			return null;
-		}else{
-			return machines.get(0);
-		}
+		String tempPathRepl1 = StringUtils.replace(oriPath,"/","\\");//鍙嶆枩鏉犵増鏈殑璺緞
+		String tempPathRepl2 = StringUtils.replace(oriPath,"\\","/");//姝f枩鏉犵増鏈殑璺緞
+
+		//鍘绘帀鍓�2浣嶅彲鑳界殑娉ㄩ噴(*-)銆�
+		String sendPath1 = escapeSqlWildcard(StringUtils.trim(StringUtils.substring(tempPathRepl1,2)));
+		String sendPath2 = escapeSqlWildcard(StringUtils.trim(StringUtils.substring(tempPathRepl2,2)));
+
+		Optional<Machine> machineOpt = lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).and(w -> {
+			w.like(Machine::getProgSendDir,sendPath1).or().like(Machine::getProgSendDir,sendPath2);
+		}).last("limit 1").oneOpt();
+
+		return machineOpt.orElse(null);
     }
 
 	/**

--
Gitblit v1.9.3