| | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.mdm.basesetting.machine.MachineService; |
| | | import org.springblade.mdm.basesetting.machine.service.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.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.context.annotation.Bean; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.nio.file.Path; |
| | |
| | | @Component |
| | | public class InitBean { |
| | | private final DirectorLockService directorLockService; |
| | | private final MachineService machineService; |
| | | private final FileWatcherService fileWatcherService; |
| | | private final ISysClient sysClient; |
| | | private final DynamicDirectoryWatcher directoryWatcher; |
| | | private final MachineBackFileService machineBackFileService; |
| | | private final NcProgramService ncProgramService; |
| | | //private final FileWatcherService.FileChangeListener listener; |
| | | private final MachineService machineService; |
| | | private final MachineFileService machineFileService; |
| | | private final ParamService paramService; |
| | | private final ProgramAnnotationService annotationService; |
| | | private final MachineFileScanService machineFileScanService; |
| | | private final ISysClient sysClient; |
| | | private final TaskDispatchService taskDispatchService; |
| | | @PostConstruct |
| | | public void init() { |
| | | System.out.println("应用启动时执行初始化操作 @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)) { |
| | | log.info("应用启动时执行初始化操作 @PostConstruct"); |
| | | String networkType = paramService.networkType(); |
| | | if(!ParamService.NETWORK_TYPE_SHEMI.equals(networkType)) { |
| | | machineFileScanService.scanMachineFile();//启动执行一次扫描 |
| | | //工控网才启动文件监控 |
| | | log.info("工控网启动文件监控"); |
| | | initMachineDirMonitor(); |
| | | }else{ |
| | | |
| | | //涉密网 |
| | | taskDispatchService.resetDrawingNos(); |
| | | } |
| | | } |
| | | |
| | |
| | | log.info("回传接收目录已经被其他部署点位锁定,直接返回"); |
| | | return; |
| | | } |
| | | List<Machine> machineList = machineService.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); |
| | | } |
| | | |
| | | } |
| | | List<Machine> machineList = machineService.getEnableMachines();; |
| | | List<WatchInfo> monitorInfoList = new ArrayList<>(); |
| | | machineList.forEach(m -> { |
| | | addToWatchDirList(monitorInfoList,m); |
| | | }); |
| | | for (String dir : monitorDirList) { |
| | | Path dirPath = Paths.get(dir); |
| | | for (WatchInfo info : monitorInfoList) { |
| | | Path dirPath = Paths.get(info.getPath()); |
| | | try { |
| | | if(!dirPath.toFile().exists()) { |
| | | dirPath.toFile().mkdirs(); |
| | | } |
| | | directoryWatcher.addDirectory(dirPath,getListener()); |
| | | directoryWatcher.addDirectory(dirPath,getListener(info)); |
| | | } catch (Exception e) { |
| | | log.error("添加监控目录异常",e); |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | void addToWatchDirList(List<WatchInfo> monitorDirList,Machine machine){ |
| | | String dir; |
| | | //加入send文件夹 |
| | | if (StringUtils.isNotEmpty(machine.getProgSendDir())) { |
| | | dir = StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgSendDir(), "/"), "\\"); |
| | | WatchInfo watchInfo = new WatchInfo(); |
| | | watchInfo.setMachine(machine); |
| | | watchInfo.setDirType(MachineFile.DIR_TYPE_SEND); |
| | | watchInfo.setPath(dir); |
| | | if (!monitorDirList.contains(watchInfo)) { |
| | | monitorDirList.add(watchInfo); |
| | | } |
| | | } |
| | | |
| | | FileWatcherService.FileChangeListener getListener() { |
| | | return new MachineFileBackListener(machineBackFileService,ncProgramService); |
| | | //加入rec文件夹 |
| | | if (StringUtils.isNotEmpty(machine.getProgReceiveDir())) { |
| | | dir = StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgReceiveDir(), "/"), "\\"); |
| | | WatchInfo watchInfo = new WatchInfo(); |
| | | watchInfo.setMachine(machine); |
| | | watchInfo.setDirType(MachineFile.DIR_TYPE_REC); |
| | | watchInfo.setPath(dir); |
| | | if (!monitorDirList.contains(watchInfo)) { |
| | | monitorDirList.add(watchInfo); |
| | | } |
| | | } |
| | | |
| | | //加入temp文件夹 |
| | | if (StringUtils.isNotEmpty(machine.getProgTempDir())) { |
| | | dir = StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgTempDir(), "/"), "\\"); |
| | | WatchInfo watchInfo = new WatchInfo(); |
| | | watchInfo.setMachine(machine); |
| | | watchInfo.setDirType(MachineFile.DIR_TYPE_TEMP); |
| | | watchInfo.setPath(dir); |
| | | if (!monitorDirList.contains(watchInfo)) { |
| | | monitorDirList.add(watchInfo); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | FileWatcherService.FileChangeListener getListener(WatchInfo info) { |
| | | return new MachineFileChangeListener(machineFileService,annotationService,info); |
| | | } |
| | | } |