package org.springblade.mdm.machineback.filewatch; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springblade.mdm.machineback.entity.MachineBackFile; import org.springblade.mdm.machineback.service.MachineBackFileService; import org.springblade.mdm.program.entity.NcProgram; import org.springblade.mdm.program.service.NcProgramService; import java.io.IOException; import java.nio.file.Path; @Slf4j public class MachineFileBackListener implements FileWatcherService.FileChangeListener{ private final MachineBackFileService machineBackFileService; private final NcProgramService ncProgramService; public MachineFileBackListener(MachineBackFileService backService, NcProgramService aNcProgramService) { this.machineBackFileService = backService; this.ncProgramService = aNcProgramService; } @Override public void onFileCreated(Path filePath) { log.info("文件创建{}",filePath); } @Override public void onFileModified(Path filePath) { //文件修改 try { if(FileLockChecker.isFileComplete(filePath)){ log.info("文件传输完成{}",filePath); MachineBackFile backFile = new MachineBackFile(); String programName = filePath.getFileName().toFile().getName(); NcProgram prog = ncProgramService.getByName(programName); if(prog == null){ log.warn("更新的文件无法匹配到数控程序,{}",filePath); return; } backFile.setNcProgramId(prog.getId()); machineBackFileService.save(backFile); }else{ log.warn("文件传输中,后续再操作{}",filePath); } } catch (IOException e) { log.error("回传文件操作IO错误",e); throw new RuntimeException(e); } catch (InterruptedException e) { log.error("sleep出错"); } catch (Exception e) { log.error("机床回传文件处理异常",e); } } @Override public void onFileDeleted(Path filePath) { log.info("文件删除{}",filePath); } }