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 buckets = new ArrayList<>(); buckets.add("pic"); buckets.add("record"); for (String name : buckets) { Iterable> listObjectsPic = MinioUtil.getObjectsByBucket(name); for (Result 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 guideQueue : GuidePriorityQueue.cameraQueueMap.values()) { guideQueue.clear(); } } catch (Exception ex) { log.error("定时清空引导队列:" + ex.getMessage()); } } }