package com.ruoyi.quartz.task; import com.ruoyi.device.hiksdk.util.minio.MinioUtils; 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.*; /** * @ClassName: MinioDeleteTask * @Description: * @Author: Administrator * @Date: 2023年01月14日 8:15 * @Version: 1.0 **/ @Component("MinioTask") @Slf4j(topic = "minio") public class MinioTask { public void delHistoryTask(Integer saveDays) { log.info("执行历史数据删除"); //遍历存储 try { List buckets=new ArrayList<>(); buckets.add("pic"); buckets.add("record"); for (String name:buckets) { Iterable> listObjectsPic = MinioUtils.getObjectsByBucket(name); for (Result result : listObjectsPic) { Item item = result.get(); log.info(item.objectName() + "创建时间:" + item.lastModified()); 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 nowTime = fmt.format(calendar.getTime()); log.info("objectTime : " + objectTime); log.info("nowTime : " + nowTime); if (objectTime.compareTo(nowTime) < 0) { log.info("objectTime 时间在 nowTime 之前"); boolean b = MinioUtils.removeObject(name, item.objectName()); if(b) { log.info("删除过期数据:"+ item.objectName()+"---"+item.lastModified()); } } } } } catch (Exception ex) { log.error("minio历史数据删除异常:" + ex.getMessage()); } } }