yangys
2025-09-29 4c7296d45efe849dc70a3b2e2240c905481a91c9
blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
@@ -6,13 +6,15 @@
import org.apache.commons.lang3.StringUtils;
import org.springblade.mdm.basesetting.machine.service.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
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.springblade.system.feign.ISysClient;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Component;
import java.nio.file.Path;
@@ -23,6 +25,7 @@
@Slf4j
@AllArgsConstructor
@Component
@EnableAsync
public class InitBean {
   private final DirectorLockService directorLockService;
   private final DynamicDirectoryWatcher directoryWatcher;
@@ -31,17 +34,24 @@
   private final ParamService paramService;
   private final ProgramAnnotationService annotationService;
   private final MachineFileScanService machineFileScanService;
   private final ISysClient sysClient;
   private final TaskDispatchService taskDispatchService;
   private final MachineDirTranslator dirTranslator;
   private final TaskPropertieBean taskPropertieBean;
   @PostConstruct
   public void init() {
      log.info("应用启动时执行初始化操作 @PostConstruct");
      String networkType = paramService.networkType();
      if(!ParamService.NETWORK_TYPE_SHEMI.equals(networkType)) {
         machineFileScanService.scanMachineFile();//启动执行一次扫描
         if(taskPropertieBean.isFileScanOnStart()) {
            machineFileScanService.scanMachineFile();
         }
         //工控网才启动文件监控
         log.info("工控网启动文件监控");
         initMachineDirMonitor();
      }else{
         //涉密网
         taskDispatchService.resetDrawingNos();
      }
   }
@@ -49,20 +59,24 @@
    * 初始化监控目录
    */
   void initMachineDirMonitor() {
      /*
      boolean locked = directorLockService.acquireLock();
      if (!locked) {
         log.info("回传接收目录已经被其他部署点位锁定,直接返回");
         return;
      }
       */
      List<Machine> machineList = machineService.getEnableMachines();;
      List<WatchInfo> monitorInfoList = new ArrayList<>();
      machineList.forEach(m -> {
         addToWatchDirList(monitorInfoList,m);
      });
      for (WatchInfo info : monitorInfoList) {
         Path dirPath = Paths.get(info.getPath());
         try {
            Path dirPath = Paths.get(info.getPath());
            if(!dirPath.toFile().exists()) {
               dirPath.toFile().mkdirs();
            }
@@ -78,7 +92,8 @@
      String dir;
      //加入send文件夹
      if (StringUtils.isNotEmpty(machine.getProgSendDir())) {
         dir = StringUtils.removeEnd(StringUtils.removeEnd(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);
@@ -90,7 +105,8 @@
      //加入rec文件夹
      if (StringUtils.isNotEmpty(machine.getProgReceiveDir())) {
         dir = StringUtils.removeEnd(StringUtils.removeEnd(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);
@@ -102,7 +118,8 @@
      //加入temp文件夹
      if (StringUtils.isNotEmpty(machine.getProgTempDir())) {
         dir = StringUtils.removeEnd(StringUtils.removeEnd(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);
@@ -113,6 +130,15 @@
      }
   }
   /**
    * 翻译共享文件夹路径到 标准网络路径,去掉末尾路径分割不
    * @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);
   }