yangys
2025-09-18 a3048fa6fa72fa3cc5da2c43c59bd000e00c9599
blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
@@ -1,25 +1,18 @@
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 {
@@ -27,51 +20,26 @@
   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);
      }
   }
}