package org.springblade.mdm.machineback.filewatch;
|
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springblade.core.oss.OssTemplate;
|
import org.springblade.core.oss.model.BladeFile;
|
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.FileInputStream;
|
import java.io.IOException;
|
import java.nio.file.Path;
|
|
@Slf4j
|
public class MachineFileBackListener implements FileWatcherService.FileChangeListener{
|
private final MachineBackFileService machineBackFileService;
|
private final NcProgramService ncProgramService;
|
private final OssTemplate ossTemplate;
|
public MachineFileBackListener(MachineBackFileService backService, NcProgramService aNcProgramService,OssTemplate aOssTemplate) {
|
this.machineBackFileService = backService;
|
this.ncProgramService = aNcProgramService;
|
this.ossTemplate = aOssTemplate;
|
}
|
@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());
|
|
//更新程序的文件地址
|
try(FileInputStream fins = new FileInputStream(filePath.toFile());){
|
BladeFile bfile = ossTemplate.putFile(programName, fins);
|
backFile.setOssName(bfile.getName());
|
}
|
|
|
machineBackFileService.save(backFile);
|
}else{
|
log.warn("文件传输中,后续再操作{}",filePath);
|
}
|
} catch (IOException e) {
|
log.error("回传文件操作IO错误",e);
|
throw new RuntimeException(e);
|
} catch (InterruptedException e) {
|
log.error("sleep出错",e);
|
} catch (Exception e) {
|
log.error("机床回传文件处理异常",e);
|
}
|
}
|
|
@Override
|
public void onFileDeleted(Path filePath) {
|
log.info("文件删除{}",filePath);
|
}
|
}
|