feat(): 优化缓存结构,新增实时数据开关接口

dev
面包骑士 2024-10-10 14:30:03 +08:00
parent 033c0aa512
commit ace9b38f5a
7 changed files with 77 additions and 22 deletions

View File

@ -21,7 +21,8 @@ public enum CacheNameEnums {
FAULT("fault", "故障"),
FENCE("fence", "围栏"),
WARMING("warming", "预警"),
REALTIME("realTime", "实时信息");
REALTIME("realTime", "实时信息"),
START("start", "状态表示");
private final String code;
private final String info;

View File

@ -1,6 +1,7 @@
package com.muyu.data.processing.utils;
package com.muyu.common.caffeine.utils;
import com.github.yulichang.toolkit.SpringContentUtils;
import com.muyu.common.caffeine.enums.CacheNameEnums;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.cache.Cache;
@ -34,6 +35,24 @@ public class CacheUtils {
return cache;
}
/**
* -
* @param cacheName
* @return
*/
public void delCache(String cacheName) {
getCache(cacheName).invalidate();
log.info("缓存清除成功:分区-{}", cacheName);
}
/**
* -
* @param key
*/
public void delCacheValueAll(String key) {
CacheNameEnums.getCodes().forEach(cacheName -> delCacheValue(cacheName, key));
}
/**
*
* @param cacheName
@ -76,4 +95,17 @@ public class CacheUtils {
public <T> T getCacheValue(String cacheName, String key, Class<T> type) {
return getCache(cacheName).get(key, type);
}
/**
*
* @param cacheName
* @param key
*/
public void delCacheValue(String cacheName, String key) {
getCache(cacheName).retrieve(key);
}
}

View File

@ -1,10 +1,12 @@
package com.muyu.data.processing.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.common.rabbit.config.RabbitmqConfig;
import com.muyu.data.processing.service.DataProcessingService;
import javax.annotation.Resource;
import lombok.NonNull;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.web.bind.annotation.*;
import lombok.extern.slf4j.Slf4j;
@ -33,4 +35,15 @@ public class DataProcessingController {
rabbitTemplate.convertAndSend(RabbitmqConfig.EXCHANGE_TOPICS_INFORM, "inform.email", vin);
log.info("发送消息成功:{}",vin);
}
/**
*
* @param vin vin
* @param status
* @return
*/
@GetMapping("/carRealTimeStatus")
public Result<String> carRealTimeStatus(@RequestParam("vin") @NonNull String vin, @RequestParam("status") @NonNull Boolean status) {
return Result.success(service.carRealTimeStatus(vin, status));
}
}

View File

@ -1,12 +1,6 @@
package com.muyu.data.processing.service;
import com.muyu.data.processing.domain.BasicData;
import com.muyu.data.processing.domain.CarData;
import java.util.HashMap;
import java.util.List;
/**
*
*
@ -19,4 +13,12 @@ import java.util.List;
public interface DataProcessingService{
/**
*
*
* @param vin vin
* @param status
* @return
*/
String carRealTimeStatus(String vin, Boolean status);
}

View File

@ -3,9 +3,9 @@ package com.muyu.data.processing.service.impl;
import javax.annotation.Resource;
import com.muyu.common.caffeine.enums.CacheNameEnums;
import com.muyu.common.caffeine.utils.CacheUtils;
import org.apache.iotdb.session.pool.SessionPool;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import com.muyu.data.processing.mapper.DataProcessingMapper;
@ -29,9 +29,23 @@ public class DataProcessingServiceImpl implements DataProcessingService {
@Resource
private SessionPool sessionPool;
@Resource
private CacheManager cacheManager;
private CacheUtils cacheUtils;
/**
*
*
* @param vin vin
* @param status
* @return
*/
@Override
public String carRealTimeStatus(String vin, Boolean status) {
if (status){
cacheUtils.setCacheValue(CacheNameEnums.REALTIME.getCode(), vin, "Y");
}else {
cacheUtils.delCacheValue(CacheNameEnums.REALTIME.getCode(), vin);
}
return "实时数据状态更改成功,当前状态: " + status;
}
}

View File

@ -1,13 +1,8 @@
package com.muyu.data.processing.strategy;
import com.github.yulichang.toolkit.SpringContentUtils;
import com.muyu.data.processing.utils.CacheUtils;
import jakarta.annotation.PostConstruct;
import com.muyu.common.caffeine.utils.CacheUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.CacheManager;
import org.springframework.stereotype.Component;
import java.util.Objects;
/**
*
* @Author:

View File

@ -41,10 +41,8 @@ public class BasicStrategy extends abstractStrategyRouter<HashMap<String, BasicD
log.info("开始执行基础校验节点。。。");
basicDataMap.put(CacheNameEnums.STORAGE.getCode(), null);
CacheNameEnums.getCodes().forEach(code-> {
// 通过VIN码获取所有事件的缓存信息
Object cacheValue = cacheUtils.getCacheValue(code, basicDataMap.get("VIN").getKey());
// 如果缓存信息不为空,则说明车辆需要处理该事件
if (ObjectUtils.isNotEmpty(cacheValue)){
if (ObjectUtils.isNotEmpty(cacheUtils.hasKey(code, basicDataMap.get("VIN").getKey()))){
basicDataMap.put(code, null);
}
});