diff --git a/src/main/java/com/ruoyi/device/controller/StaticsController.java b/src/main/java/com/ruoyi/device/controller/StaticsController.java index 18de2cc..73e0e25 100644 --- a/src/main/java/com/ruoyi/device/controller/StaticsController.java +++ b/src/main/java/com/ruoyi/device/controller/StaticsController.java @@ -133,4 +133,118 @@ public class StaticsController extends BaseController return R.ok(vo); } + + + @GetMapping("/dji") + public R getDjiStatistics() + { + StatisticsVO vo = new StatisticsVO(); + + // 获取所有机场 + List docks = dockService.selectDockList(new DockDTO()); + vo.setDockCount(docks != null ? docks.size() : 0); + + // 统计各状态机场数量 + int idleCount = 0; + int workingCount = 0; + int debuggingCount = 0; + int offlineCount = 0; + + if (docks != null) { + for (DockDTO dock : docks) { + DockDetailDTO dockDetail = bufferDeviceService.getDockDetailById(dock.getDockId()); + if (dockDetail != null && dockDetail.getDockStatus() != null) { + String status = dockDetail.getDockStatus(); + if (DockStatusEnum.IDLE.getCode().equals(status)) { + idleCount++; + } else if (DockStatusEnum.WORKING.getCode().equals(status)) { + workingCount++; + } else if (DockStatusEnum.Debugging.getCode().equals(status)) { + debuggingCount++; + } else { + offlineCount++; + } + } + } + } + + vo.setIdleDockCount(idleCount); + vo.setWorkingDockCount(workingCount); + vo.setDebuggingDockCount(debuggingCount); + vo.setOfflineDockCount(offlineCount); + + // 获取所有无人机 + List aircrafts = aircraftService.selectAircraftList(new AircraftDTO()); + vo.setAircraftCount(aircrafts != null ? aircrafts.size() : 0); + + // 统计各状态无人机数量 + int powerOnInCabinCount = 0; + int powerOffInCabinCount = 0; + int inMissionCount = 0; + int debuggingAircraftCount = 0; + int offlineAircraftCount = 0; + + if (aircrafts != null) { + for (AircraftDTO aircraft : aircrafts) { + AircraftDetailDTO aircraftDetail = bufferDeviceService.getAircraftDetailById(aircraft.getAircraftId()); + if (aircraftDetail != null && aircraftDetail.getAircraftStatus() != null) { + String status = aircraftDetail.getAircraftStatus(); + if (AircraftStatusEnum.POWER_ON_IN_CABIN.getCode().equals(status)) { + powerOnInCabinCount++; + } else if (AircraftStatusEnum.POWER_OFF_IN_CABIN.getCode().equals(status)) { + powerOffInCabinCount++; + } else if (AircraftStatusEnum.IN_MISSION.getCode().equals(status)) { + inMissionCount++; + } else if (AircraftStatusEnum.DEBUGGING.getCode().equals(status)) { + debuggingAircraftCount++; + } else if (AircraftStatusEnum.OFFLINE.getCode().equals(status)) { + offlineAircraftCount++; + } + } + } + } + + vo.setPowerOnInCabinCount(powerOnInCabinCount); + vo.setPowerOffInCabinCount(powerOffInCabinCount); + vo.setInMissionCount(inMissionCount); + vo.setDebuggingAircraftCount(debuggingAircraftCount); + vo.setOfflineAircraftCount(offlineAircraftCount); + + // 获取所有挂载 + List payloads = payloadService.selectPayloadList(new PayloadDTO()); + vo.setPayloadCount(payloads != null ? payloads.size() : 0); + + // 统计离线挂载数量(暂时设置为0,因为挂载状态需要从实时数据获取) + vo.setOfflinePayloadCount(0); + + return R.ok(vo); + } + + + @GetMapping("/th") + public R getThStatistics() + { + StatisticsVO vo = new StatisticsVO(); + + // 机场统计 + vo.setDockCount(0); + vo.setIdleDockCount(0); + vo.setWorkingDockCount(0); + vo.setDebuggingDockCount(0); + vo.setOfflineDockCount(0); + + // 无人机统计 + vo.setAircraftCount(0); + vo.setPowerOnInCabinCount(0); + vo.setPowerOffInCabinCount(0); + vo.setInMissionCount(0); + vo.setDebuggingAircraftCount(0); + vo.setOfflineAircraftCount(0); + + // 挂载统计 + vo.setPayloadCount(0); + vo.setOfflinePayloadCount(0); + + return R.ok(vo); + } } \ No newline at end of file