This commit is contained in:
孙小云 2026-01-29 09:21:19 +08:00
parent 32de6a11a8
commit ed1489092b
1 changed files with 25 additions and 8 deletions

View File

@ -115,7 +115,7 @@ public class BufferDeviceImpl implements IBufferDeviceService
} }
AircraftDetailDTO aircraftDetailDTO = getChangeAbleAirDetailDTO(airDevice.getIotDeviceId()); AircraftDetailDTO aircraftDetailDTO = getChangeAbleAirDetailDTO(airDevice.getIotDeviceId(), device.getIotDeviceId());
/** /**
* 设置无人机状态 * 设置无人机状态
*/ */
@ -147,8 +147,21 @@ public class BufferDeviceImpl implements IBufferDeviceService
Device device = deviceDomain.selectDeviceByDeviceId(aircraft.getDeviceId()); Device device = deviceDomain.selectDeviceByDeviceId(aircraft.getDeviceId());
log.info("selectDeviceByDeviceId {}",JSON.toJSONString(device)); log.info("selectDeviceByDeviceId {}",JSON.toJSONString(device));
// 查找无人机关联的机场
List<DockAircraft> dockAircrafts = dockAircraftDomain.selectDockAircraftByAircraftId(aircraftId);
String dockDeviceIotId = null;
if (!CollectionUtils.isEmpty(dockAircrafts)) {
DockAircraft dockAircraft = dockAircrafts.get(0);
Dock dock = dockDomain.selectDockByDockId(dockAircraft.getDockId());
if (dock != null) {
Device dockDevice = deviceDomain.selectDeviceByDeviceId(dock.getDeviceId());
if (dockDevice != null) {
dockDeviceIotId = dockDevice.getIotDeviceId();
}
}
}
AircraftDetailDTO dto = getChangeAbleAirDetailDTO(device.getIotDeviceId()); AircraftDetailDTO dto = getChangeAbleAirDetailDTO(device.getIotDeviceId(), dockDeviceIotId);
dto.setAircraftId(aircraft.getAircraftId()); dto.setAircraftId(aircraft.getAircraftId());
dto.setAircraftName(aircraft.getAircraftName()); dto.setAircraftName(aircraft.getAircraftName());
dto.setSnNumber(device.getDeviceSn()); dto.setSnNumber(device.getDeviceSn());
@ -472,12 +485,16 @@ public class BufferDeviceImpl implements IBufferDeviceService
} }
} }
private AircraftDetailDTO getChangeAbleAirDetailDTO(String deviceIotId) private AircraftDetailDTO getChangeAbleAirDetailDTO(String aircraftDeviceIotId, String dockDeviceIotId)
{ {
AircraftDetailDTO dto = new AircraftDetailDTO(); AircraftDetailDTO dto = new AircraftDetailDTO();
AttributeMap attributeMap = thingsBoardDomain.getPredefinedDeviceAttributes(deviceIotId); AttributeMap attributeMap = thingsBoardDomain.getPredefinedDeviceAttributes(aircraftDeviceIotId);
TelemetryMap telemetryMap = thingsBoardDomain.getPredefinedDeviceTelemetry(deviceIotId); TelemetryMap telemetryMap = thingsBoardDomain.getPredefinedDeviceTelemetry(aircraftDeviceIotId);
AttributeMap attributeDockMap = thingsBoardDomain.getPredefinedDeviceAttributes(dockDeviceIotId);
TelemetryMap telemetryDockMap = thingsBoardDomain.getPredefinedDeviceTelemetry(dockDeviceIotId);
//设置aircraftStatus //设置aircraftStatus
// drone_in_dock 表示是否在舱外 // drone_in_dock 表示是否在舱外
@ -486,7 +503,7 @@ public class BufferDeviceImpl implements IBufferDeviceService
// 任务中 调试, 这两个状态用机场的, 暂时不要用离线状态 // 任务中 调试, 这两个状态用机场的, 暂时不要用离线状态
// //
String aircraftStatus = determineAircraftStatus(attributeMap, telemetryMap); String aircraftStatus = determineAircraftStatus(attributeMap, telemetryDockMap);
dto.setAircraftStatus(aircraftStatus); dto.setAircraftStatus(aircraftStatus);
// TelemetryMap 中获取 total_flight_sorties 赋予 missionCount // TelemetryMap 中获取 total_flight_sorties 赋予 missionCount
@ -524,8 +541,8 @@ public class BufferDeviceImpl implements IBufferDeviceService
/** /**
* 根据设备属性和遥测数据确定无人机状态 * 根据设备属性和遥测数据确定无人机状态
* *
* @param attributeMap 设备属性映射 * @param attributeMap 无人机 属性映射
* @param telemetryMap 设备遥测数据映射 * @param telemetryMap 机场 遥测数据映射
* @return 无人机状态字符串 * @return 无人机状态字符串
*/ */
private String determineAircraftStatus(AttributeMap attributeMap, TelemetryMap telemetryMap) { private String determineAircraftStatus(AttributeMap attributeMap, TelemetryMap telemetryMap) {