package com.gkhy.testFourierSpecialGasMonitor.schedule;
|
|
import com.alibaba.fastjson.JSON;
|
import com.gkhy.testFourierSpecialGasMonitor.entity.GasConcentration;
|
import com.gkhy.testFourierSpecialGasMonitor.service.DataReceiveService;
|
import org.redisson.api.RBucket;
|
import org.redisson.api.RedissonClient;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.concurrent.TimeUnit;
|
|
/**
|
* @author Mr.huang
|
* @decription
|
* @date 2023/8/7 15:30
|
*/
|
@Component
|
public class GasConcentrationAutoCreateKeySchedule {
|
|
@Autowired
|
private RedissonClient redissonClient;
|
|
@Autowired
|
private DataReceiveService dataReceiveService;
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
private static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
private static String gasConcentrationCachePrefix = "huatai:gas_concentration_cache_";
|
|
@Scheduled(cron = "0 0 0 * * ?") // 每天凌晨执行
|
@Async(value = "SocketTaskExecutor")
|
public void createRedisKey() {
|
LocalDateTime time = LocalDateTime.now();
|
String cacheName = time.format(formatter);
|
List<GasConcentration> gasConcentrations = new ArrayList<>();
|
String jsonString = JSON.toJSONString(gasConcentrations);
|
RBucket<String> bucket = redissonClient.getBucket(gasConcentrationCachePrefix+cacheName);
|
if (!bucket.isExists()) {
|
bucket.set(jsonString, 25, TimeUnit.HOURS);
|
}
|
//try {
|
// TimeUnit.SECONDS.sleep(3);
|
//} catch (InterruptedException e) {
|
// logger.info("自动清除历史气体对照表缓存key失败");
|
//}
|
//清除前一天的缓存
|
//LocalDateTime yesterday = LocalDateTime.now().minusDays(1);
|
//String yesterdayCache = yesterday.format(formatter);
|
//RBucket<String> yesterdayBucket = redissonClient.getBucket(gasConcentrationCachePrefix+yesterdayCache);
|
//if (yesterdayBucket.isExists()) {
|
// yesterdayBucket.delete();
|
//}
|
}
|
}
|