master
tangwenkang 2023-12-04 18:47:49 +08:00
parent 2949e64416
commit 03cbd4ea4c
4 changed files with 32 additions and 15 deletions

View File

@ -101,4 +101,15 @@ public class CarController {
public Result<VehicleData> listRealTime(@RequestParam String vin){
return carService.listRealTime(vin);
}
/**
*
* @param vin
* @return
*/
@PostMapping("/removeRealTime")
public Result removeRealTime(@RequestParam String vin){
return carService.removeRealTime(vin);
}
}

View File

@ -54,4 +54,5 @@ public class HistoricalTrackController {
public Result<List<VehicleData>> carRecord(@RequestBody HistoryReq historyReq){
return Result.success(historicalTrackService.carRecord(historyReq));
}
}

View File

@ -69,4 +69,11 @@ public interface CarService {
* @return
*/
Result<VehicleData> listRealTime(String vin);
/**
*
* @param vin
* @return
*/
Result removeRealTime(String vin);
}

View File

@ -144,7 +144,6 @@ public class CarServiceImpl implements CarService {
@Override
public Result realTime(String vin) {
List<String> cacheList = redisService.getCacheList("event_"+vin);//根据vin查询出车辆的事件列表
redisService.deleteObject("event_"+vin);
cacheList.add("runtimeTraceEvent");//添加实时轨迹事件
redisService.setCacheList("event_"+vin,cacheList);//将事件列表存入redis
return Result.success("添加事件成功!");
@ -157,20 +156,19 @@ public class CarServiceImpl implements CarService {
*/
@Override
public Result<VehicleData> listRealTime(String vin) {
// 获取当前时间戳
long currentTimestamp = System.currentTimeMillis();
// 设置score的范围为负无穷到当前时间戳获取最新的数据
Set<ZSetOperations.TypedTuple<String>> vehicleData = redisTemplate.opsForZSet().reverseRangeByScoreWithScores("runtimeTraceEvent:"+vin, Double.NEGATIVE_INFINITY, currentTimestamp, 0, 1);
// 检查是否有数据
if (vehicleData != null && !vehicleData.isEmpty()) {
// 获取最新的数据
ZSetOperations.TypedTuple<String> latestData = vehicleData.iterator().next();
VehicleData latestVehicleData = VehicleData.getBuild(Objects.requireNonNull(latestData.getValue()));
return Result.success(latestVehicleData);
}
return null;
}
/**
*
* @param vin
* @return
*/
@Override
public Result removeRealTime(String vin) {
List<String> cacheList = redisService.getCacheList("event_" + vin);
cacheList.remove("runtimeTraceEvent");
redisService.setCacheList("event_"+vin,cacheList);
return Result.success("移除事件成功!");
}
}