From 06466a4e45ece870d84de0db799d23e5ed0fb845 Mon Sep 17 00:00:00 2001 From: tangzh Date: Sun, 13 Jul 2025 10:14:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BusDeviceServiceImpl.java | 12 ++++ .../impl/WebSocketSdcpServiceImpl.java | 56 +++++++++++-------- .../service/impl/WebSocketVueServiceImpl.java | 3 +- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/BusDeviceServiceImpl.java b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/BusDeviceServiceImpl.java index 5bfc61f..e10862d 100644 --- a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/BusDeviceServiceImpl.java +++ b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/BusDeviceServiceImpl.java @@ -56,6 +56,8 @@ public class BusDeviceServiceImpl extends ServiceImpl ids) { busDeviceMapper.deleteBatchIds(ids); + // 刷新设备 + webSocketVueService.refreshDeviceList(); } @Override diff --git a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketSdcpServiceImpl.java b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketSdcpServiceImpl.java index d427bb1..16f80b1 100644 --- a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketSdcpServiceImpl.java +++ b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketSdcpServiceImpl.java @@ -39,7 +39,7 @@ public class WebSocketSdcpServiceImpl extends WebSocketService { this.channel = WebSocketConfig.TOPIC_PREFIX; log.info("SDCP服务端 连接成功:channel={}", channel); clients.put(channel, this); - openDeviceStatus(); + openDeviceStatus(null); } /** * 连接关闭调用的方法 @@ -94,33 +94,43 @@ public class WebSocketSdcpServiceImpl extends WebSocketService { sendVueMessage(JSON.toJSONString(new SocketMsg(new HashMap<>() , remark, MsgEnum.CLOSE)), null, null); } - // 初始状态刷新消息(Cmd:0) 指令 - private void openDeviceStatus() { + public void openDeviceStatus(String thisDeviceSn) { log.info(">>> 初始化设备状态"); - WebSocketService socket = getSocket(WebSocketConfig.TOPIC_PREFIX); - for (String deviceSn : deviceList) { - long currentTimeLong = System.currentTimeMillis(); - Map dataParam = new HashMap<>(); - dataParam.put("UserId", socket.session.getId()); - WebSocketReqData data = new WebSocketReqData(); - data.setCmd(0); - data.setData(dataParam); - data.setRequestID(currentTimeLong + ""); - data.setMainboardID(deviceSn); - data.setTimeStamp(currentTimeLong); - data.setFrom(0); - WebSocketReqDTO reqDTO = new WebSocketReqDTO(); - reqDTO.setTopic(WebSocketConfig.TOPIC_PREFIX + "/" + MethodEnum.request.name() + "/" + deviceSn); - reqDTO.setData(data); - String message = JSON.toJSONString(reqDTO); - try { - log.info("发送【初始化】指令:channel={},message={}", channel, message); - socket.session.getBasicRemote().sendText(message); - } catch (IOException e) { throw new RuntimeException(e); } + if (StringUtils.isEmpty(thisDeviceSn)) { + for (String deviceSn : deviceList) { + pushDeviceStatus(deviceSn); + } + } else { + pushDeviceStatus(thisDeviceSn); } log.info("<<< 初始化设备"); } + // 初始状态刷新消息(Cmd:0) 指令 + private void pushDeviceStatus(String deviceSn) { + WebSocketService socket = getSocket(WebSocketConfig.TOPIC_PREFIX); + long currentTimeLong = System.currentTimeMillis(); + Map dataParam = new HashMap<>(); + dataParam.put("UserId", socket.session.getId()); + WebSocketReqData data = new WebSocketReqData(); + data.setCmd(0); + data.setData(dataParam); + data.setRequestID(currentTimeLong + ""); + data.setMainboardID(deviceSn); + data.setTimeStamp(currentTimeLong); + data.setFrom(0); + WebSocketReqDTO reqDTO = new WebSocketReqDTO(); + reqDTO.setTopic(WebSocketConfig.TOPIC_PREFIX + "/" + MethodEnum.request.name() + "/" + deviceSn); + reqDTO.setData(data); + String message = JSON.toJSONString(reqDTO); + try { + log.info("发送【初始化】指令:channel={},message={}", channel, message); + socket.session.getBasicRemote().sendText(message); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + // 处理二进制图片 private void byteImgDataHandle(String message) { Map dataMap = Arrays.stream(message.split("&")) diff --git a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketVueServiceImpl.java b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketVueServiceImpl.java index c505b7c..aca9976 100644 --- a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketVueServiceImpl.java +++ b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/WebSocketVueServiceImpl.java @@ -35,7 +35,8 @@ public class WebSocketVueServiceImpl extends WebSocketService { log.info("<<< 设备初始化"); } - @Scheduled(fixedRate = 60000) + // 每30秒刷新设备 + @Scheduled(fixedRate = 30000) public void refreshDeviceList() { deviceList = new ArrayList<>(); List devices = myDeviceService.queryAll(new BusDeviceQueryCriteria());