From 1d2636f641d7d5b0246d4e1200310d97cf817ff1 Mon Sep 17 00:00:00 2001 From: rqian <1206436827@qq.com> Date: Tue, 22 Sep 2026 13:50:19 +0800 Subject: [PATCH] =?UTF-8?q?#=E4=BC=98=E5=8C=96=E8=AE=BE=E5=A4=87=E4=B8=8B?= =?UTF-8?q?=E7=BA=BF=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/maibu/memory/SiteMemory.java | 5 +++- .../com/maibu/mqtt/HostMessageHandler.java | 21 ++++++++++----- .../com/maibu/service/DeviceTaskService.java | 4 +-- .../maibu/service/DeviceThreadService.java | 27 +++++++++---------- 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/maibu-common/src/main/java/com/maibu/memory/SiteMemory.java b/maibu-common/src/main/java/com/maibu/memory/SiteMemory.java index 4044ea8..1653f11 100644 --- a/maibu-common/src/main/java/com/maibu/memory/SiteMemory.java +++ b/maibu-common/src/main/java/com/maibu/memory/SiteMemory.java @@ -63,10 +63,13 @@ public class SiteMemory { return deviceMapPushMap; } - public void saveMaPushDTO(String deviceId, DeviceMapPushDTO dto) { + public void saveMapPushDTO(String deviceId, DeviceMapPushDTO dto) { deviceMapPushMap.put(deviceId, dto); } + public void removeMapPushDTO(String deviceId) { + deviceMapPushMap.remove(deviceId); + } public void saveRunStatistics(DeviceRunStatistics deviceRunStatistics) { if (deviceRunStatistics != null && !StringUtils.isEmpty(deviceRunStatistics.getDeviceId())) { diff --git a/maibu-common/src/main/java/com/maibu/mqtt/HostMessageHandler.java b/maibu-common/src/main/java/com/maibu/mqtt/HostMessageHandler.java index 8a8ae8c..15054f6 100644 --- a/maibu-common/src/main/java/com/maibu/mqtt/HostMessageHandler.java +++ b/maibu-common/src/main/java/com/maibu/mqtt/HostMessageHandler.java @@ -162,14 +162,20 @@ public class HostMessageHandler implements CustomMqttMessageHandler { } public WebStatusMessageDTO createWebDeviceLocationMessage(HostLocationRelTimeDTO locationRelTimeDTO, - String deviceId) { + String deviceId) { WebStatusMessageDTO webStatusMessageDTO = new WebStatusMessageDTO(); List transferData = new ArrayList<>(); + + DeviceStatusDetail d = new DeviceStatusDetail(); + d.setName("deviceId"); + d.setValue(deviceId); + d.setUnit(""); + transferData.add(d); + DeviceStatusDetail lat = new DeviceStatusDetail(); lat.setName("latitude"); lat.setValue(String.valueOf(locationRelTimeDTO.getData().getLatitude())); lat.setUnit(""); - transferData.add(lat); DeviceStatusDetail lng = new DeviceStatusDetail(); @@ -228,15 +234,15 @@ public class HostMessageHandler implements CustomMqttMessageHandler { DeviceMapPushDTO dto = new DeviceMapPushDTO(); dto.setA(Double.parseDouble(altitude.getValue())); dto.setId(deviceId); -// dto.setB(); -// dto.setHa(); + // dto.setB(); + // dto.setHa(); dto.setF(fix_status.getValue()); dto.setS(status.getValue()); dto.setLat(Double.parseDouble(lat.getValue())); dto.setLng(Double.parseDouble(lng.getValue())); dto.setT(nettyDevice.getCurrentTaskId()); dto.setY(Double.parseDouble(yaw.getValue())); - siteMemory.saveMaPushDTO(deviceId, dto); + siteMemory.saveMapPushDTO(deviceId, dto); } } @@ -377,9 +383,10 @@ public class HostMessageHandler implements CustomMqttMessageHandler { } } } - //todo 推送实时位置和状态消息到外部 + // todo 推送实时位置和状态消息到外部 try { - GlobalMemory.customMqttDeviceMonitor.publish(mqttClientId, String.format(MqttTopic.DEVICE_TASK_STATUS_TOPIC, taskId), + GlobalMemory.customMqttDeviceMonitor.publish(mqttClientId, + String.format(MqttTopic.DEVICE_TASK_STATUS_TOPIC, taskId), JsonUtils.toJsonString(sendDto)); } catch (MqttException e) { // TODO Auto-generated catch block diff --git a/maibu-netty-server/src/main/java/com/maibu/service/DeviceTaskService.java b/maibu-netty-server/src/main/java/com/maibu/service/DeviceTaskService.java index eb11eec..86a643f 100644 --- a/maibu-netty-server/src/main/java/com/maibu/service/DeviceTaskService.java +++ b/maibu-netty-server/src/main/java/com/maibu/service/DeviceTaskService.java @@ -453,9 +453,9 @@ public class DeviceTaskService { x.setTaskStausTranslate(taskStaus.getDescription()); }); list.sort( - Comparator.comparing(DevicePlanTask::getFinishTime, + Comparator.comparing(DevicePlanTask::getCreateTime, Comparator.nullsLast(Comparator.reverseOrder())) - .thenComparing(DevicePlanTask::getCreateTime, + .thenComparing(DevicePlanTask::getFinishTime, Comparator.nullsLast(Comparator.reverseOrder()))); return list; } diff --git a/maibu-netty-server/src/main/java/com/maibu/service/DeviceThreadService.java b/maibu-netty-server/src/main/java/com/maibu/service/DeviceThreadService.java index 11d63e0..1b41cf1 100644 --- a/maibu-netty-server/src/main/java/com/maibu/service/DeviceThreadService.java +++ b/maibu-netty-server/src/main/java/com/maibu/service/DeviceThreadService.java @@ -223,7 +223,7 @@ public class DeviceThreadService { } public List compareErrorStandard(Long siteId, Long orgId, DeviceRunningStatusHistory history, - List standards) { + List standards) { if (history == null || CollectionUtils.isEmpty(standards)) return null; List list = new ArrayList<>(); @@ -343,6 +343,8 @@ public class DeviceThreadService { } deviceRunStatisticsMapper.saveOrUpdate(deviceRunStatistics); } + // todo 删除实时消息推送里面的数据 + siteMemory.removeMapPushDTO(deviceId); } sessionManager.removeDevice(deviceId); @@ -393,7 +395,6 @@ public class DeviceThreadService { }, 0, 500, TimeUnit.MILLISECONDS); } - /** * 监控心跳 */ @@ -404,18 +405,16 @@ public class DeviceThreadService { if (!CollectionUtils.isEmpty(list)) { list.forEach(x -> { Map map = x.getAllDeviceMapPush(); - if (!CollectionUtils.isEmpty(map)) { - List pushList = new ArrayList<>(map.values()); - WebMapMessageDTO dto = new WebMapMessageDTO(); - dto.setData(pushList); - dto.setType(MesType.mapPush); - try { - websocketMesDispather.mapMessageDispather(x.getSiteId(), JsonUtils.toJsonString(pushList)); - } catch (Exception e) { - log.error("实时地图数据websocket推送失败: siteId={}, error={}", x.getSiteId(), - e.getMessage(), e); - } - + List pushList = new ArrayList<>(map.values()); + WebMapMessageDTO dto = new WebMapMessageDTO(); + dto.setData(pushList); + dto.setType(MesType.mapPush); + try { + websocketMesDispather.mapMessageDispather(x.getSiteId(), + JsonUtils.toJsonString(dto)); + } catch (Exception e) { + log.error("实时地图数据websocket推送失败: siteId={}, error={}", x.getSiteId(), + e.getMessage(), e); } }); }