package org.jeecg.modules.dnc.listener;
|
import org.apache.commons.io.monitor.FileAlterationListener;
|
import org.apache.commons.io.monitor.FileAlterationObserver;
|
import org.jeecg.common.util.FileUtil;
|
import org.jeecg.modules.dnc.service.IDocInfoService;
|
import org.jeecg.modules.dnc.utils.file.FileUtilS;
|
import org.jeecg.modules.message.enums.DeployEnum;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Component;
|
|
import java.io.File;
|
import java.util.Objects;
|
|
@Component
|
public class FileListener implements FileAlterationListener {
|
private static final Logger log = LoggerFactory.getLogger(FileListener.class);
|
|
@Value("${deploy.deployType}")
|
private String deployType; //工控网/涉密网部署 0为工控网 1为涉密网
|
|
@Autowired
|
private IDocInfoService docInfoService; // 文档服务
|
|
@Override
|
public void onStart(FileAlterationObserver observer) {
|
// log.info("开始监听目录: {}", observer.getDirectory().getAbsolutePath());
|
}
|
|
@Override
|
public void onDirectoryCreate(File directory) {
|
log.info("[目录创建]: {}", directory.getAbsolutePath());
|
}
|
|
@Override
|
public void onDirectoryChange(File directory) {
|
log.info("[目录修改]: {}", directory.getAbsolutePath());
|
}
|
|
@Override
|
public void onDirectoryDelete(File directory) {
|
log.info("[目录删除]: {}", directory.getAbsolutePath());
|
}
|
|
@Override
|
public void onFileCreate(File file) {
|
String filePath = file.getAbsolutePath();
|
log.info("[新建]: {}", filePath);
|
if (DeployEnum.GW.getCode().equals(deployType)) {
|
//工控网解析涉密网传过来的NC文件与nc文件进行解析
|
if (filePath.startsWith("D:\\hy_test\\ncFile")) {
|
handleIndustrialDocFile(file);
|
}
|
}else {
|
//涉密网解析工控网传过来的NC文件与nc文件进行解析(程序回传)
|
if (filePath.startsWith("D:\\hy_test\\ncFile")) {
|
handleSecretDocFile(file);
|
}
|
}
|
}
|
@Override
|
public void onFileChange(File file) {
|
log.info("[修改]: {}", file.getAbsolutePath());
|
}
|
|
@Override
|
public void onFileDelete(File file) {
|
log.info("[删除]: {}", file.getAbsolutePath());
|
}
|
|
@Override
|
public void onStop(FileAlterationObserver observer) {
|
// log.info("结束监听目录: {}", observer.getDirectory().getAbsolutePath());
|
}
|
|
/**
|
* 工控网解析涉密网传过来的NC文件与nc文件进行解析
|
* @param file
|
*/
|
private void handleIndustrialDocFile(File file) {
|
log.info("工控网解析涉密网传过来的NC文件与nc文件进行解析: {}", file.getAbsolutePath());
|
try {
|
if (Objects.equals(FileUtil.getFileSuffix(file.getName()), "nc")) {
|
boolean success = docInfoService.addDocInfoAnalysisGwNcService(file.getAbsolutePath(), file);
|
if (success) {
|
FileUtilS.copyFileRec(file.getAbsolutePath());
|
FileUtilS.fileRecDelete(file.getAbsolutePath());
|
}
|
}else if (Objects.equals(FileUtil.getFileSuffix(file.getName()), "txt")) {
|
//todo 是否解析工作流操作
|
|
}
|
} catch (Exception e) {
|
log.error("工控网解析涉密网传过来的NC文件与nc文件进行解析: {}", e.getMessage());
|
}
|
}
|
|
/**
|
* 涉密网解析工控网传过来的NC文件与nc文件进行解析(程序回传)
|
* @param file
|
*/
|
private void handleSecretDocFile(File file) {
|
log.info("涉密网解析工控网传过来的NC文件与nc文件进行解析: {}", file.getAbsolutePath());
|
try {
|
boolean b= docInfoService.addDocInfoAnalysisSmwNcService(file.getAbsolutePath(), file);
|
|
}catch (Exception e) {
|
log.error("涉密网解析工控网传过来的NC文件与nc文件进行解析: {}", e.getMessage());
|
}
|
}
|
|
|
}
|