From e9259b8045a2f6a68c04107ca265889776c8b6fb Mon Sep 17 00:00:00 2001 From: tangwenkang <2720983602@qq.com> Date: Sun, 3 Dec 2023 14:11:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E6=97=B6=E8=BD=A8=E8=BF=B92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/service/impl/CarServiceImpl.java | 29 ++++-- .../server/websocket/WebSocketServer.java | 90 ------------------- 2 files changed, 21 insertions(+), 98 deletions(-) delete mode 100644 vehicle-history-server/src/main/java/com/dragon/vehicle/history/server/websocket/WebSocketServer.java diff --git a/vehicle-history-server/src/main/java/com/dragon/vehicle/history/server/service/impl/CarServiceImpl.java b/vehicle-history-server/src/main/java/com/dragon/vehicle/history/server/service/impl/CarServiceImpl.java index cf31c2b..a33e091 100644 --- a/vehicle-history-server/src/main/java/com/dragon/vehicle/history/server/service/impl/CarServiceImpl.java +++ b/vehicle-history-server/src/main/java/com/dragon/vehicle/history/server/service/impl/CarServiceImpl.java @@ -1,6 +1,5 @@ package com.dragon.vehicle.history.server.service.impl; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dragon.common.core.domain.PageResult; @@ -18,14 +17,14 @@ import com.dragon.vehicle.history.server.mapper.FenceMapper; import com.dragon.vehicle.history.server.service.CarService; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.log4j.Log4j2; -import org.springframework.amqp.core.Message; -import org.springframework.amqp.rabbit.annotation.Queue; -import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ZSetOperations; import org.springframework.stereotype.Service; -import com.rabbitmq.client.Channel; import java.util.List; +import java.util.Objects; +import java.util.Set; /** * @author Wenkang Tang @@ -43,6 +42,8 @@ public class CarServiceImpl implements CarService { private FenceMapper fenceMapper; @Autowired private RedisService redisService; + @Autowired + private RedisTemplate redisTemplate; /** * 车辆信息列表 @@ -156,8 +157,20 @@ public class CarServiceImpl implements CarService { */ @Override public Result listRealTime(String vin) { - Object cacheObject = redisService.getCacheObject("runtimeTraceEvent:"+vin); - VehicleData vehicleData = JSONObject.parseObject(cacheObject.toString(), VehicleData.class); - return Result.success(vehicleData); + // 获取当前时间戳 + long currentTimestamp = System.currentTimeMillis(); + + // 设置score的范围为负无穷到当前时间戳,获取最新的数据 + Set> vehicleData = redisTemplate.opsForZSet().reverseRangeByScoreWithScores("vehicleData", Double.NEGATIVE_INFINITY, currentTimestamp, 0, 1); + + // 检查是否有数据 + if (vehicleData != null && !vehicleData.isEmpty()) { + // 获取最新的数据 + ZSetOperations.TypedTuple latestData = vehicleData.iterator().next(); + VehicleData latestVehicleData = VehicleData.getBuild(Objects.requireNonNull(latestData.getValue())); + + return Result.success(latestVehicleData); + } + return null; } } diff --git a/vehicle-history-server/src/main/java/com/dragon/vehicle/history/server/websocket/WebSocketServer.java b/vehicle-history-server/src/main/java/com/dragon/vehicle/history/server/websocket/WebSocketServer.java deleted file mode 100644 index 5bb1efc..0000000 --- a/vehicle-history-server/src/main/java/com/dragon/vehicle/history/server/websocket/WebSocketServer.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.dragon.vehicle.history.server.websocket; - -import lombok.extern.log4j.Log4j2; -import org.springframework.stereotype.Service; - -import javax.websocket.*; -import javax.websocket.server.ServerEndpoint; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.concurrent.CopyOnWriteArraySet; -import java.util.concurrent.atomic.AtomicInteger; - -/** - * @author Wenkang Tang - * @date 2023/12/1 20:51 - * @description - */ -@ServerEndpoint("/ws") -@Service -@Log4j2 -public class WebSocketServer { - //连接计数器 - private static final AtomicInteger ONLINE_COUNT = new AtomicInteger(0); - //存放每个客户端对应的Session对象 - private static final CopyOnWriteArraySet SOCKET_SERVERS =new CopyOnWriteArraySet(); - - /** - * 连接建立成功调用的方法 - * @param session - */ - @OnOpen - public void onOpen(Session session){ - SOCKET_SERVERS.add(this); - int countSum = ONLINE_COUNT.incrementAndGet(); - log.info("有链接加入,当前连接数为:{}",countSum); - } - - /** - * 连接关闭调用的方法 - */ - @OnClose - public void onClose(){ - SOCKET_SERVERS.remove(this); - int countSum = ONLINE_COUNT.decrementAndGet(); - log.info("有链接关闭,当前连接数为:{}",countSum); - } - - /** - * 收到客户端消息后调用的方法 - * @param message 客户端发送过来的消息 - * @param session - */ - @OnMessage - public void onMessage(String message,Session session){ - log.info("收到客户端消息:{}",message); - sendMessage(session,"服务端接收到消息,消息内容为:{}"+message); - } - - /** - * 发生错误调用的方法 - * @param session - * @param error - */ - @OnError - public void onError(Session session,Throwable error){ - log.error("发生错误:{},Session ID:{}",error.getMessage(),session.getId()); - error.printStackTrace(); - } - - /** - * 发送消息 - * @param session - * @param message - */ - public static void sendMessage(Session session, String message){ - while (session.isOpen()){ - Date date = new Date(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - try { - session.getBasicRemote().sendText(message); - log.info("客户端开始发送数据"); - log.info("发送时间为:"+simpleDateFormat.format(date)); - } catch (IOException e) { - log.error("发送消息出现错误:{}",e.getMessage()); - e.printStackTrace(); - } - } - } -}