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);
|
}
|
|
}
|