Browse Source

辖区路段添加redis缓存

develop
xiepufeng 11 months ago
parent
commit
74ebaaac03
  1. 5
      zc-business/src/main/java/com/zc/business/constant/RedisKeyConstants.java
  2. 2
      zc-business/src/main/java/com/zc/business/message/device/handler/DeviceMessageHandler.java
  3. 15
      zc-business/src/main/java/com/zc/business/service/DcTrafficSectionDataService.java
  4. 25
      zc-business/src/main/java/com/zc/business/service/DcTrafficStatisticsService.java
  5. 59
      zc-business/src/main/java/com/zc/business/service/impl/DcRoadSectionServiceImpl.java
  6. 21
      zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java

5
zc-business/src/main/java/com/zc/business/constant/RedisKeyConstants.java

@ -10,4 +10,9 @@ public class RedisKeyConstants
* 设备
*/
public static final String DC_DEVICES = "dc:devices";
/**
* 路段
*/
public static final String DC_ROAD_SECTION = "dc:roadSection";
}

2
zc-business/src/main/java/com/zc/business/message/device/handler/DeviceMessageHandler.java

@ -52,7 +52,7 @@ public class DeviceMessageHandler {
private RedisCache redisCache;
@Resource
private DcTrafficSectionDataService dcTrafficSectionDataService;
private DcTrafficStatisticsService dcTrafficSectionDataService;
@Autowired
private IDcMeteorologicalDetectorDataService meteorologicalDetectorDataService;

15
zc-business/src/main/java/com/zc/business/service/DcTrafficSectionDataService.java

@ -1,15 +0,0 @@
package com.zc.business.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zc.business.domain.DcTrafficSectionData;
public interface DcTrafficSectionDataService extends IService<DcTrafficSectionData> {
/**
* 处理实时接收到的一类交流站设备消息并将其转换为交通断面统计数据对象并缓存
*
* @param msg 设备发送的JSON格式实时消息
*/
void processRealtimeOneStopMessage(JSONObject msg);
}

25
zc-business/src/main/java/com/zc/business/service/DcTrafficStatisticsService.java

@ -0,0 +1,25 @@
package com.zc.business.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zc.business.domain.DcTrafficMetricsData;
import com.zc.business.domain.DcTrafficSectionData;
public interface DcTrafficStatisticsService extends IService<DcTrafficSectionData> {
/**
* 处理实时接收到的一类交流站设备消息并将其转换为交通断面统计数据对象并缓存
*
* @param msg 设备发送的JSON格式实时消息
*/
void processRealtimeOneStopMessage(JSONObject msg);
/**
* 获取当前交通特征指数
*
* @param direction 交通方向例如1代表菏泽方向3济南方向
* @param roadSectionId 路段ID
* @return 当前交通特征指数
*/
DcTrafficMetricsData currentTrafficMetrics(Byte direction, Long roadSectionId);
}

59
zc-business/src/main/java/com/zc/business/service/impl/DcRoadSectionServiceImpl.java

@ -5,7 +5,10 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.zc.business.constant.RedisKeyConstants;
import com.zc.business.domain.DcDevice;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -14,6 +17,9 @@ import com.zc.business.domain.DcRoadSection;
import com.zc.business.service.IDcRoadSectionService;
import org.w3c.dom.CDATASection;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
/**
* 辖区路段Service业务层处理
*
@ -26,6 +32,34 @@ public class DcRoadSectionServiceImpl implements IDcRoadSectionService
@Autowired
private DcRoadSectionMapper dcRoadSectionMapper;
@Resource
private RedisCache redisCache;
@PostConstruct
public void init() {
/*
添加数据到 redis 缓存
*/
updateRedisCache();
}
/**
* 添加数据到 redis 缓存
*/
public void updateRedisCache() {
// 获取全部设备列表数据
List<DcRoadSection> dcRoadSections = dcRoadSectionMapper.selectDcRoadSectionList(null);
if (dcRoadSections == null || dcRoadSections.isEmpty()) {
return;
}
// 清楚 redis 缓存数据
redisCache.deleteObject(RedisKeyConstants.DC_ROAD_SECTION);
// 添加 redis 缓存数据
dcRoadSections.forEach(val -> redisCache.setCacheMapValue(RedisKeyConstants.DC_ROAD_SECTION, val.getId(), val));
}
/**
* 查询辖区路段
*
@ -108,7 +142,12 @@ public class DcRoadSectionServiceImpl implements IDcRoadSectionService
public int insertDcRoadSection(DcRoadSection dcRoadSection)
{
dcRoadSection.setCreateTime(DateUtils.getNowDate());
return dcRoadSectionMapper.insertDcRoadSection(dcRoadSection);
int result = dcRoadSectionMapper.insertDcRoadSection(dcRoadSection);
if (result > 0) {
updateRedisCache();
}
return result;
}
/**
@ -121,7 +160,11 @@ public class DcRoadSectionServiceImpl implements IDcRoadSectionService
public int updateDcRoadSection(DcRoadSection dcRoadSection)
{
dcRoadSection.setUpdateTime(DateUtils.getNowDate());
return dcRoadSectionMapper.updateDcRoadSection(dcRoadSection);
int result = dcRoadSectionMapper.updateDcRoadSection(dcRoadSection);
if (result > 0) {
updateRedisCache();
}
return result;
}
/**
@ -133,7 +176,11 @@ public class DcRoadSectionServiceImpl implements IDcRoadSectionService
@Override
public int deleteDcRoadSectionByIds(Long[] ids)
{
return dcRoadSectionMapper.deleteDcRoadSectionByIds(ids);
int result = dcRoadSectionMapper.deleteDcRoadSectionByIds(ids);
if (result > 0) {
updateRedisCache();
}
return result;
}
/**
@ -145,7 +192,11 @@ public class DcRoadSectionServiceImpl implements IDcRoadSectionService
@Override
public int deleteDcRoadSectionById(Long id)
{
return dcRoadSectionMapper.deleteDcRoadSectionById(id);
int result = dcRoadSectionMapper.deleteDcRoadSectionById(id);
if (result > 0) {
updateRedisCache();
}
return result;
}
//查询路线id与名称
@Override

21
zc-business/src/main/java/com/zc/business/service/impl/DcTrafficSectionDataServiceImpl.java → zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java

@ -10,11 +10,12 @@ import com.zc.business.constant.RedisKeyConstants;
import com.zc.business.constant.StatisticalRecoveryOffsetTime;
import com.zc.business.controller.DcDeviceController;
import com.zc.business.domain.DcDevice;
import com.zc.business.domain.DcTrafficMetricsData;
import com.zc.business.domain.DcTrafficSectionData;
import com.zc.business.enums.*;
import com.zc.business.statistics.cache.*;
import com.zc.business.mapper.DcTrafficSectionDataMapper;
import com.zc.business.service.DcTrafficSectionDataService;
import com.zc.business.service.DcTrafficStatisticsService;
import com.zc.business.statistics.handler.RealtimeTrafficStatistics;
import com.zc.common.core.httpclient.exception.HttpException;
import org.slf4j.Logger;
@ -34,9 +35,9 @@ import java.util.function.Consumer;
* @author xiepufeng
*/
@Service
public class DcTrafficSectionDataServiceImpl
public class DcTrafficStatisticsServiceImpl
extends ServiceImpl<DcTrafficSectionDataMapper, DcTrafficSectionData>
implements DcTrafficSectionDataService {
implements DcTrafficStatisticsService {
// 日志记录器
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@ -79,6 +80,20 @@ public class DcTrafficSectionDataServiceImpl
}
}
/**
* 获取当前交通特征指数
*
* @param direction 交通方向例如1代表菏泽方向3济南方向
* @param roadSectionId 路段ID
* @return 当前交通特征指数
*/
@Override
public DcTrafficMetricsData currentTrafficMetrics(Byte direction, Long roadSectionId) {
DcTrafficMetricsData dcTrafficMetricsData = new DcTrafficMetricsData();
return dcTrafficMetricsData;
}
/**
* 定义每小时第20分钟执行的任务用于清除过期缓存数据并将缓存中的数据整合后保存至数据库
*/
Loading…
Cancel
Save