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 | 106 +++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 90 insertions(+), 16 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 7c3f930..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
@@ -1,6 +1,7 @@
package org.springblade.mdm.basesetting.machine.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.MybatisUtils;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BizServiceImpl;
@@ -15,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;
@@ -34,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> {
@@ -43,11 +46,17 @@
private DynamicDirectoryWatcher dynamicDirectoryWatcher;
@Autowired
private ParamService paramService;
+ @Autowired
+ private MachineDirTranslator machineDirTranslator;
+
@Transactional(rollbackFor = Exception.class)
public void saveMachine(MachineSaveVO vo) throws IOException {
checkMachine(vo);
if(existsByCode(vo.getCode(),null)){
throw new ServiceException("鏈哄簥缂栫爜宸插瓨鍦�:"+vo.getCode());
+ }
+ if(existsByEquipmentCode(vo.getEquipmentCode(),null)){
+ throw new ServiceException("璁惧缂栧彿宸插瓨鍦�:"+vo.getEquipmentCode());
}
Machine machine = new Machine();
@@ -62,16 +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()));
}
}
@@ -92,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));
@@ -106,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));
@@ -119,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));
@@ -168,6 +186,17 @@
}
/**
+ * 鏍规嵁 璁惧缂栧彿鍒ゆ柇鏈哄簥鏄惁瀛樺湪
+ * @param equipmentCode 璁惧缂栧彿
+ * @param excludeId 鎺掗櫎id
+ * @return 鏄惁瀛樺湪
+ */
+ boolean existsByEquipmentCode(String equipmentCode,Long excludeId){
+ return this.lambdaQuery().eq(Machine::getEquipmentCode, equipmentCode).ne(excludeId!=null,Machine::getId, excludeId).count()>0;
+ }
+
+
+ /**
* 淇敼鏈哄簥淇℃伅
* @param vo
* @return
@@ -178,7 +207,9 @@
if(existsByCode(vo.getCode(),vo.getId())){
throw new ServiceException("鏈哄簥缂栫爜宸插瓨鍦�:"+vo.getCode());
}
-
+ if(existsByEquipmentCode(vo.getEquipmentCode(),vo.getId())){
+ throw new ServiceException("璁惧缂栧彿宸插瓨鍦�:"+vo.getEquipmentCode());
+ }
Machine machine = this.getById(vo.getId());
Machine machineBak = new Machine();
@@ -186,6 +217,7 @@
machine.setMachineSpec(vo.getMachineSpec());
machine.setCode(vo.getCode());
+ machine.setEquipmentCode(vo.getEquipmentCode());
machine.setName(vo.getName());
machine.setMachineGroupCode(vo.getMachineGroupCode());
machine.setManufacturer(vo.getManufacturer());
@@ -321,4 +353,46 @@
return lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).list();
}
+ public String escapeSqlWildcard(String value) {
+ if (StringUtils.isBlank(value)) {
+ return value;
+ }
+ return value.replace("\\", "\\\\")
+ .replace("%", "\\%")
+ .replace("_", "\\_");
+ }
+ /**
+ * 鏍规嵁涓嬪彂璺緞鐨勬敞閲婃煡璇㈡満搴�
+ * @param sendPathLine 涓嬪彂璺緞娉ㄩ噴鏂囨湰
+ */
+ public Machine getMachineBySendPathAnnotation(String sendPathLine) {
+ //璺緞涓虹┖锛屼笉鍖归厤浠讳綍鏈哄櫒
+ if(StringUtils.isBlank(sendPathLine)){
+ return null;
+ }
+ //鍘绘帀鏈熬鎷彿(鍙戦偅绉�) ,鏈熬璺緞鍒嗛殧绗�
+ String oriPath = StringUtils.removeEnd(StringUtils.removeEnd(StringUtils.removeEnd(sendPathLine,")"),"/"),"\\");
+
+ 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);
+ }
+
+ /**
+ * 鏍规嵁璁惧缂栧彿鏌ヨ鏈哄簥
+ * @param equipmentCode 璁惧缂栧彿
+ * @return 鏈哄簥瀵硅薄
+ */
+ public Machine getByEquipmentCode(String equipmentCode) {
+ return this.lambdaQuery().eq(Machine::getEquipmentCode, equipmentCode).one();
+ }
}
--
Gitblit v1.9.3