package com.ld.igds.timer; import com.ld.igds.data.ConfigData; import com.ld.igds.log.dto.LogData; import com.ld.igds.log.service.LogOperationService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.time.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.File; import java.util.Date; /** * 定时清除文件及操作日志 * @author chen */ @Slf4j @Component(FileScheduled.BEAN_ID) public class FileScheduled { public static final String BEAN_ID = "basic.fileScheduled"; @Autowired private ConfigData configData; @Autowired private LogOperationService logOperationService; /** * 每天凌晨2点定时清理 */ @Scheduled(cron = "0 0 2 * * ?") public void scheduled(){ doClear(); } public void doClear(){ // 清除出入库一年之前的截图文件 String path = configData.getFilePath() + "INOUT/"; Date date = DateUtils.addYears(new Date(), -1); delFile(path,date); //清除一年之前的系统配置附件 path = configData.getFilePath() + "COMMON/"; delFile(path,date); //清除一年之前的临时文件 path = configData.getFilePath() + "TEMP/"; delFile(path,date); //清除一月之前的操作日志信息 date = DateUtils.addMonths(new Date(),-1); delOperationLog(date); } /** * 清除文件 * @param path * @param date */ public void delFile(String path, Date date){ File file = new File(path); File[] files = file.listFiles(); if (files != null && files.length > 0) { Date time = null; //遍历目录下文件 for (File file1 : files) { if (file1.isFile()) { //文件时,比较时间进行文件删除 time = new Date(file1.lastModified()); if (time.before(date)) { FileUtils.deleteQuietly(file1); } } else { //文件夹时,比较时间直接调用FileUtils工具类删除文件夹 time = new Date(file1.lastModified()); if (time.before(date)) { FileUtils.deleteQuietly(file1); } } } } } /** * 清除操作日志 * @param date */ public void delOperationLog(Date date){ log.info("===========清除操作日志==========="); LogData logData = new LogData(); logData.setOperateTime(date); logOperationService.delOperationLog(logData); } }