#位置信息增加当前设备任务执行情况

This commit is contained in:
2026-09-11 09:29:06 +08:00
parent 985f501e76
commit cfd2906b71
8 changed files with 76 additions and 21 deletions

View File

@@ -0,0 +1,24 @@
package com.maibu.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 设备回调状态
*
* @author bill
*/
@Getter
@AllArgsConstructor
public enum DeviceStatusEnum {
offline("0", "离线"),
idle("1", "空闲中"),
working("2", "工作中"),
charging("3", "充电中"),
error("4", "故障");
String code;
String message;
}

View File

@@ -24,6 +24,7 @@ import com.maibu.core.host.HostTaskStatusDTO;
import com.maibu.core.host.HostVehicleRelTimeDTO;
import com.maibu.core.host.LocationMessage;
import com.maibu.core.redis.RedisCache;
import com.maibu.enums.DeviceStatusEnum;
import com.maibu.memory.DeviceSessionManager;
import com.maibu.memory.GlobalMemory;
import com.maibu.memory.SiteMemory;
@@ -128,7 +129,7 @@ public class HostMessageHandler implements CustomMqttMessageHandler {
log.debug("【位置数据】deviceId={}, payload={}", deviceId, payload);
HostLocationRelTimeDTO locationRelTimeDTO = JsonUtils.parseObject(payload, HostLocationRelTimeDTO.class);
if (locationRelTimeDTO != null) {
WebStatusMessageDTO dto = createWebDeviceLocationMessage(locationRelTimeDTO);
WebStatusMessageDTO dto = createWebDeviceLocationMessage(locationRelTimeDTO, deviceId);
List<NettyDevice> controlMasters = deviceSessionManager
.getAllSlaveControl(deviceId);
if (!CollectionUtils.isEmpty(controlMasters)) {
@@ -154,11 +155,12 @@ public class HostMessageHandler implements CustomMqttMessageHandler {
}
} catch (Exception e) {
log.error("位置消息解析失败: deviceId={}, payload={}, error={}", deviceId, payload, e.getMessage());
log.error("位置消息解析失败: deviceId={}, payload={}, error={}", deviceId, payload, e);
}
}
public WebStatusMessageDTO createWebDeviceLocationMessage(HostLocationRelTimeDTO locationRelTimeDTO) {
public WebStatusMessageDTO createWebDeviceLocationMessage(HostLocationRelTimeDTO locationRelTimeDTO,
String deviceId) {
WebStatusMessageDTO webStatusMessageDTO = new WebStatusMessageDTO();
List<DeviceStatusDetail> transferData = new ArrayList<>();
DeviceStatusDetail lat = new DeviceStatusDetail();
@@ -192,6 +194,27 @@ public class HostMessageHandler implements CustomMqttMessageHandler {
altitude.setUnit("");
transferData.add(altitude);
DeviceStatusDetail status = new DeviceStatusDetail();
status.setName("status");
NettyDevice nettyDevice = deviceSessionManager.getDevice(deviceId);
// todo error故障
if (nettyDevice != null) {
if (nettyDevice.getOnlineStatus() == 0) {
status.setValue(DeviceStatusEnum.offline.getCode());
} else {
if (nettyDevice.getTask() != null && nettyDevice.getTask().isTaskAccepted()) {
status.setValue(DeviceStatusEnum.working.getCode());
} else {
status.setValue(DeviceStatusEnum.idle.getCode());
}
}
} else {
status.setValue(DeviceStatusEnum.offline.getCode());
}
status.setUnit("");
transferData.add(status);
webStatusMessageDTO.setData(transferData);
webStatusMessageDTO.setType(MesType.locationInfo);
return webStatusMessageDTO;
@@ -440,7 +463,6 @@ public class HostMessageHandler implements CustomMqttMessageHandler {
return null;
}
@Override
public void onConnectionLost(String deviceKey, Throwable cause) {
log.warn("主机监控连接断开: deviceKey={}, reason={}", deviceKey, cause.getMessage());