package org.springblade.mdm.task;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.springblade.mdm.basesetting.machine.entity.Machine;
|
import org.springblade.mdm.basesetting.machine.service.MachineService;
|
import org.springblade.mdm.commons.service.ParamService;
|
import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
|
import org.springblade.mdm.machinefile.entity.FileSendRecord;
|
import org.springblade.mdm.machinefile.entity.MachineFile;
|
import org.springblade.mdm.machinefile.service.FileSendRecordService;
|
import org.springblade.mdm.machinefile.service.MachineFileService;
|
import org.springblade.mdm.machinefile.service.ReceiveFileCheckService;
|
import org.springblade.mdm.utils.FileContentUtil;
|
import org.springblade.mdm.utils.ProgramFileNameParser;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.nio.file.Files;
|
import java.nio.file.Path;
|
import java.nio.file.Paths;
|
import java.nio.file.StandardCopyOption;
|
import java.time.LocalDateTime;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Optional;
|
import java.util.stream.Collectors;
|
|
/**
|
* 机床回传rec文件夹内文件异常检查
|
*/
|
@Slf4j
|
@Component
|
@EnableScheduling
|
public class ReceiveDirCheckTask {
|
@Autowired
|
private MachineFileService machineFileService;
|
@Autowired
|
private MachineService machineService;
|
@Autowired
|
private ParamService paramService;
|
@Autowired
|
private ReceiveFileCheckService receiveFileCheckService;
|
|
// 每5秒执行一次
|
//@Scheduled(fixedRate = 1000000)
|
//@Scheduled(cron = "0 1 0 * * ?") // 每天上午0点1分执行
|
//@Scheduled(cron = "0 */3 * * * ?")
|
//@Scheduled(cron = "0 15 19 * * ?") //test
|
//@Scheduled(cron = "${task.cron.machine_file_scan}")
|
@Scheduled(cron = "${task.cron.machine_rec_check:0 */11 * * * ?}")
|
public void execute() {
|
String networkType = paramService.getParamValue(ParamService.NETWORK_TYPE,ParamService.NETWORK_TYPE_SHEMI);
|
|
if(!ParamService.NETWORK_TYPE_SHEMI.equals(networkType)){
|
//非涉密网,才扫描目录文件
|
log.info("reccheckfile start");
|
checkFiles();
|
|
log.info("reccheckfile end");
|
}
|
|
}
|
|
/**
|
* 扫描数据库记录,超时则移动文件
|
*/
|
public void checkFiles() {
|
List<Machine> machines = machineService.getEnableMachines();
|
|
for (Machine machine : machines) {
|
|
List<MachineFile> recFiles = this.machineFileService.lambdaQuery()
|
.eq(MachineFile::getDirType,MachineFile.DIR_TYPE_REC)
|
.eq(MachineFile::getMachineCode,machine.getCode()).list();
|
|
for(MachineFile machineFile : recFiles){
|
try {
|
receiveFileCheckService.check(machineFile, recFiles,machine);
|
}catch(Exception e){
|
log.error("检查rec文件失败:{}",machineFile.getName(),e);
|
}
|
}
|
|
}
|
|
}
|
|
|
}
|