yangys
2025-08-30 86c8efdb19a2f4be79a947650ef62ed79382011b
blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
@@ -3,93 +3,22 @@
import jakarta.annotation.PostConstruct;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.tool.api.R;
import org.springblade.mdm.basesetting.machine.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.stereotype.Component;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@AllArgsConstructor
@Component
public class InitBean {
   private final DirectorLockService directorLockService;
   private final MachineService machineService;
   private final FileWatcherService fileWatcherService;
   private final DynamicDirectoryWatcher directoryWatcher;
   private final MachineBackFileService machineBackFileService;
   private final NcProgramService ncProgramService;
   private final OssTemplate ossTemplate;
   private final ISysClient sysClient;
   //private final FileWatcherService.FileChangeListener listener;
   @PostConstruct
   public void init() {
      log.info("应用启动时执行初始化操作 @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)) {
         initMachineDirMonitor();
      }
   }
   /**
    * 初始化机床监控目录
    */
   void initMachineDirMonitor() {
      boolean locked = directorLockService.acquireLock();
      if (!locked) {
         log.info("回传接收目录已经被其他部署点位锁定,直接返回");
         return;
      }
      List<Machine> machineList = machineService.lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).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);
            }
         }
      });
      for (String dir : monitorDirList) {
         Path dirPath = Paths.get(dir);
         try {
            if(!dirPath.toFile().exists()) {
               dirPath.toFile().mkdirs();
            }
            directoryWatcher.addDirectory(dirPath,getListener());
         } catch (Exception e) {
            log.error("添加监控目录异常",e);
         }
      }
   }
   FileWatcherService.FileChangeListener getListener() {
      return new MachineFileBackListener(machineBackFileService,ncProgramService,ossTemplate);
   }
}