package com.ycl.task;
|
|
import com.ycl.config.PlatformConfig;
|
import com.ycl.system.service.ISysConfigService;
|
import com.ycl.utils.DictUtils;
|
import com.ycl.utils.StringUtils;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import java.io.File;
|
import java.time.LocalDate;
|
import java.time.format.DateTimeFormatter;
|
|
@Slf4j
|
@RequiredArgsConstructor
|
@Component("DeleteWorkOrderImgTask")
|
public class DeleteWorkOrderImgTask {
|
private final ISysConfigService configService;
|
|
public void delWorkOrderImg() {
|
String basePath = PlatformConfig.getUploadPath() + "/profile";
|
log.info("开始删除工单照片");
|
log.info("删除路径:{}",basePath);
|
//字典查询需要删除时间在几个月前的照片
|
String dictLabel = configService.selectConfigByKey("del.workorder.time");
|
log.info("清理时间:{}月",dictLabel);
|
if (StringUtils.isEmpty(dictLabel)) {
|
log.error("未设置删除时间范围");
|
return;
|
}
|
//获得当前时间
|
LocalDate nowDate = LocalDate.now();
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
//计算 ? 月前的日期 ? 用字典存入系统中
|
LocalDate sixMonthAgo = nowDate.minusMonths(Long.parseLong("6"));
|
//读取服务器中的文件夹名
|
File directory = new File(basePath);
|
//检测路径存在 并且是一个目录
|
if (directory.exists() && directory.isDirectory()) {
|
File[] files = directory.listFiles();
|
if (files != null) {
|
for (File file : files) {
|
//检测是否为目录 格式 一般为yyyy-MM-dd
|
if(file.isDirectory()){
|
String fileName = file.getName();
|
try {
|
LocalDate fileNameDate = LocalDate.parse(fileName, formatter);
|
if (fileNameDate.isBefore(sixMonthAgo)) {
|
deleteDirectory(file);
|
}
|
}catch (Exception e){
|
// 如果解析失败(例如,文件夹名不是日期格式),可以记录日志或忽略
|
log.error("Skipping directory with invalid date format:{} ", fileName);
|
}
|
}
|
}
|
}
|
}
|
log.info("删除完毕");
|
}
|
// 递归删除目录及其内容
|
public static void deleteDirectory(File directoryToBeDeleted) {
|
File[] allContents = directoryToBeDeleted.listFiles();
|
if (allContents != null) {
|
for (File file : allContents) {
|
// deleteDirectory(file);
|
log.error("打印文件名:{}",file.getName());
|
}
|
}
|
// directoryToBeDeleted.delete();
|
log.error("打印目录名:{}", directoryToBeDeleted.getName());
|
}
|
|
|
}
|