| | |
| | | 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 lombok.extern.slf4j.Slf4j; |
| | | import org.springblade.mdm.basesetting.machine.service.MachineService; |
| | | import org.springblade.mdm.commons.service.ParamService; |
| | | import org.springblade.mdm.machinefile.service.MachineFileScanService; |
| | | import org.springblade.mdm.machinefile.service.MachineFileService; |
| | | import org.springblade.mdm.program.service.ProgramAnnotationService; |
| | | 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; |
| | | |
| | | @Slf4j |
| | | @Component |
| | | @EnableScheduling |
| | | public class MachineFileScanTask { |
| | |
| | | private MachineFileService machineFileService; |
| | | @Autowired |
| | | private MachineService machineService; |
| | | @Autowired |
| | | private ParamService paramService; |
| | | @Autowired |
| | | private ProgramAnnotationService programAnnotationService; |
| | | @Autowired |
| | | private MachineFileScanService machineFileScanService; |
| | | // 每5秒执行一次 |
| | | @Scheduled(fixedRate = 1000000) |
| | | //@Scheduled(fixedRate = 1000000) |
| | | //@Scheduled(cron = "0 1 0 * * ?") // 每天上午0点1分执行 |
| | | public void executeEvery5Seconds() { |
| | | System.out.println("定时任务执行: " + System.currentTimeMillis()); |
| | | } |
| | | //@Scheduled(cron = "0 */5 * * * ?") |
| | | //@Scheduled(cron = "0 15 19 * * ?") //test |
| | | @Scheduled(cron = "${task.cron.machine_file_scan:0 1 0 * * ?}") |
| | | public void execute() { |
| | | String networkType = paramService.getParamValue(ParamService.NETWORK_TYPE,ParamService.NETWORK_TYPE_SHEMI); |
| | | |
| | | |
| | | public void scanMachineFile() { |
| | | List<Machine> machines = machineService.lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).list(); |
| | | for (Machine machine : machines) { |
| | | scanReceiveDir(machine); |
| | | if(!ParamService.NETWORK_TYPE_SHEMI.equals(networkType)){ |
| | | //非涉密网,才扫描目录文件 |
| | | machineFileScanService.scanMachineFile(); |
| | | } |
| | | |
| | | } |
| | | |
| | | public void scanReceiveDir(Machine machine){ |
| | | List<File> 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); |
| | | } |
| | | } |
| | | |
| | | } |