| | |
| | | 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.ParamConstants; |
| | | 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(ParamConstants.NETWORK_TYPE_KEY); |
| | | String networkType = networkTypeR.getData() == null ? ParamConstants.NETWORK_TYPE_SHEMI : networkTypeR.getData(); |
| | | if (networkType.equals(ParamConstants.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); |
| | | } |
| | | |
| | | |
| | | } |