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());