package org.springblade.mdm.task; import org.springblade.core.tool.utils.FileUtil; import org.springblade.mdm.basesetting.machine.MachineService; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.gkw.programnode.entity.MachineFile; import org.springblade.mdm.gkw.programnode.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.attribute.BasicFileAttributes; import java.nio.file.attribute.FileTime; import java.util.Date; import java.util.List; @Component @EnableScheduling public class MachineFileScanTask { @Autowired private MachineFileService machineFileService; @Autowired private MachineService machineService; // 每5秒执行一次 @Scheduled(fixedRate = 1000000) //@Scheduled(cron = "0 1 0 * * ?") // 每天上午0点1分执行 public void executeEvery5Seconds() { System.out.println("定时任务执行: " + System.currentTimeMillis()); } public void scanMachineFile() { List machines = machineService.lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).list(); for (Machine machine : machines) { scanReceiveDir(machine); } } public void scanReceiveDir(Machine machine){ List files = FileUtil.list(machine.getProgReceiveDir()); for(File f : files){ MachineFile mf = new MachineFile(); mf.setName(f.getName()); mf.setDirType(MachineFile.DIR_TYPE_REC); mf.setMachineCode(machine.getCode()); try { Path filePath = Paths.get(f.getPath()); BasicFileAttributes attrs = Files.readAttributes( filePath, BasicFileAttributes.class ); FileTime creationTime = attrs.creationTime(); Date creationDate = new Date(creationTime.toMillis()); mf.setFileCreateTime(creationDate); FileTime modifyTime =attrs.lastModifiedTime(); mf.setFileModifyDate(new Date(modifyTime.toMillis())); System.out.println("文件创建时间: " + creationDate); } catch (IOException e) { e.printStackTrace(); } machineFileService.save(mf); } } }