package com.ruoyi.quartz.task;
|
|
import com.ruoyi.alarm.global.domain.GuidePriorityQueue;
|
import com.ruoyi.alarm.global.domain.GuideTask;
|
import com.ruoyi.utils.minio.MinioUtil;
|
import io.minio.Result;
|
import io.minio.messages.Item;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import java.text.SimpleDateFormat;
|
import java.time.ZoneId;
|
import java.time.format.DateTimeFormatter;
|
import java.util.*;
|
import java.util.concurrent.PriorityBlockingQueue;
|
|
/**
|
* @ClassName: MinioDeleteTask
|
* @Description:
|
* @Author: Administrator
|
* @Date: 2023年01月14日 8:15
|
* @Version: 1.0
|
**/
|
@Component("MinioTask")
|
@Slf4j
|
public class CleanTask {
|
|
public void delHistoryTask(Integer saveDays) {
|
log.debug("执行历史数据删除");
|
//遍历存储
|
try {
|
List<String> buckets = new ArrayList<>();
|
buckets.add("pic");
|
buckets.add("record");
|
for (String name : buckets) {
|
Iterable<Result<Item>> listObjectsPic = MinioUtil.getObjectsByBucket(name);
|
for (Result<Item> result : listObjectsPic) {
|
Item item = result.get();
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("Asia/Shanghai"));
|
String objectTime = item.lastModified().format(formatter);
|
|
Date now = new Date();
|
// 把日期往前增加一天,整数往后推,负数往前移动
|
Calendar calendar = new GregorianCalendar();
|
calendar.setTime(now);
|
calendar.add(Calendar.DATE, saveDays);
|
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String expireTime = fmt.format(calendar.getTime());
|
|
if (objectTime.compareTo(expireTime) < 0) {
|
log.debug("objectTime : " + objectTime);
|
log.debug("expireTime : " + expireTime);
|
log.debug("objectTime 时间在 expireTime 之前,执行删除");
|
boolean b = MinioUtil.removeObject(name, item.objectName());
|
if (b) {
|
log.debug("成功删除过期数据:" + item.objectName() + "---" + item.lastModified());
|
}
|
}
|
}
|
}
|
} catch (Exception ex) {
|
log.error("minio历史数据删除异常:" + ex.getMessage());
|
}
|
}
|
|
/**
|
* 定时清空引导队列
|
* 刘苏义
|
* 2023/7/1 10:41
|
*/
|
public void clearGuideQueue() {
|
try {
|
log.info("定时清理引导队列");
|
for (PriorityBlockingQueue<GuideTask> guideQueue : GuidePriorityQueue.cameraQueueMap.values()) {
|
guideQueue.clear();
|
}
|
} catch (Exception ex) {
|
log.error("定时清空引导队列:" + ex.getMessage());
|
}
|
}
|
}
|