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.machinefile.entity.MachineFile; import org.springblade.mdm.machinefile.service.MachineFileService; 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 java.io.File; import java.io.IOException; 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.List; /** * 机床回传文件夹rec,目录文件超过机床设定的时间移动到temp文件夹 */ @Slf4j @Component @EnableScheduling public class ReceiveDirMoveService { @Autowired private MachineFileService machineFileService; @Autowired private MachineService machineService; /** * 扫描数据库记录,超时则移动文件 */ public void moveValidateFiles() { List machines = machineService.getEnableMachines(); LocalDateTime now = LocalDateTime.now(); for (Machine machine : machines) { //LocalDateTime earlyTime = now.minusHours(remainHours); List pendingFiles = this.machineFileService.lambdaQuery() .eq(MachineFile::getDirType,MachineFile.DIR_TYPE_REC) .eq(MachineFile::getExceptionType,MachineFile.EXCEPTION_OK) .eq(MachineFile::getMachineCode,machine.getCode()).list(); for(MachineFile overTimeFile : pendingFiles){ try { moveFileToTemp(overTimeFile, machine); }catch(Exception e){ log.error("移动rec文件失败:{}",overTimeFile.getName(),e); } } } } /** * 文件移动到temp * @param overTimeFile */ private void moveFileToTemp(MachineFile overTimeFile,Machine machine) throws IOException { String srcFilepath = MachineFileService.getBasePath(machine,overTimeFile.getDirType())+ File.separator+overTimeFile.getName(); Path source = Paths.get(srcFilepath); if(!source.toFile().exists()){ return; } String targetFilepath = MachineFileService.getBasePath(machine,MachineFile.DIR_TYPE_TEMP)+ File.separator+overTimeFile.getName(); Path target = Paths.get(targetFilepath); Path targetDir = target.getParent(); if (targetDir != null && !Files.exists(targetDir)) { Files.createDirectories(targetDir); } // 使用 REPLACE_EXISTING 选项来覆盖已存在的文件 Files.move(source, target, StandardCopyOption.REPLACE_EXISTING); } }