package org.springblade.mdm.config;
|
|
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.context.annotation.Bean;
|
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 ISysClient sysClient;
|
private final DynamicDirectoryWatcher directoryWatcher;
|
private final MachineBackFileService machineBackFileService;
|
private final NcProgramService ncProgramService;
|
private final OssTemplate ossTemplate;
|
//private final FileWatcherService.FileChangeListener listener;
|
@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)) {
|
initMachineDirMonitor();
|
}
|
}
|
|
/**
|
* 初始化监控目录
|
*/
|
void initMachineDirMonitor() {
|
boolean locked = directorLockService.acquireLock();
|
if (!locked) {
|
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);
|
}
|
|
}
|
});
|
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);
|
}
|
|
|
}
|