This commit is contained in:
孙小云 2026-01-31 13:17:42 +08:00
parent 5797fa6c76
commit a2476df5bf
1 changed files with 39 additions and 9 deletions

View File

@ -15,6 +15,8 @@ import com.ruoyi.device.service.dto.AircraftDetailDTO;
import com.ruoyi.device.service.dto.DockDTO; import com.ruoyi.device.service.dto.DockDTO;
import com.ruoyi.device.service.dto.DockDetailDTO; import com.ruoyi.device.service.dto.DockDetailDTO;
import com.ruoyi.device.service.dto.PayloadDTO; import com.ruoyi.device.service.dto.PayloadDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -34,6 +36,8 @@ import java.util.stream.Collectors;
@RequestMapping("/statistics") @RequestMapping("/statistics")
public class StaticsController extends BaseController public class StaticsController extends BaseController
{ {
private static final Logger log = LoggerFactory.getLogger(StaticsController.class);
@Autowired @Autowired
private IDockService dockService; private IDockService dockService;
@ -96,11 +100,13 @@ public class StaticsController extends BaseController
} }
private StatisticsVO buildDjiStatisticsVO (){ private StatisticsVO buildDjiStatisticsVO (){
StatisticsVO vo = new StatisticsVO(); log.info("========== 开始统计DJI设备信息 ==========");
StatisticsVO vo = new StatisticsVO();
// 获取所有机场 // 获取所有机场
List<DockDTO> docks = dockService.selectDockList(new DockDTO()); List<DockDTO> docks = dockService.selectDockList(new DockDTO());
vo.setDockCount(docks != null ? docks.size() : 0); vo.setDockCount(docks != null ? docks.size() : 0);
log.info("机场总数: {}", vo.getDockCount());
// 批量获取机场详情 - 优化从N次查询减少到1次批量查询 // 批量获取机场详情 - 优化从N次查询减少到1次批量查询
Map<Long, DockDetailDTO> dockDetailsMap = null; Map<Long, DockDetailDTO> dockDetailsMap = null;
@ -118,18 +124,24 @@ public class StaticsController extends BaseController
int offlineCount = 0; int offlineCount = 0;
if (docks != null && dockDetailsMap != null) { if (docks != null && dockDetailsMap != null) {
log.info("---------- 开始统计机场状态 ----------");
for (DockDTO dock : docks) { for (DockDTO dock : docks) {
DockDetailDTO dockDetail = dockDetailsMap.get(dock.getDockId()); DockDetailDTO dockDetail = dockDetailsMap.get(dock.getDockId());
if (dockDetail != null && dockDetail.getDockStatus() != null) { if (dockDetail != null && dockDetail.getDockStatus() != null) {
String status = dockDetail.getDockStatus(); String status = dockDetail.getDockStatus();
if (DockStatusEnum.IDLE.getCode().equals(status)) { log.info("机场[ID:{}, Name:{}] 状态: {}", dock.getDockId(), dock.getDockName(), status);
if (DockStatusEnum.IDLE.getCode().equalsIgnoreCase(status)) {
idleCount++; idleCount++;
} else if (DockStatusEnum.WORKING.getCode().equals(status)) { log.debug(" -> 匹配到IDLE状态");
} else if (DockStatusEnum.WORKING.getCode().equalsIgnoreCase(status)) {
workingCount++; workingCount++;
} else if (DockStatusEnum.Debugging.getCode().equals(status)) { log.info(" -> 匹配到WORKING状态 (任务中)");
} else if (DockStatusEnum.Debugging.getCode().equalsIgnoreCase(status)) {
debuggingCount++; debuggingCount++;
log.debug(" -> 匹配到Debugging状态");
} else { } else {
offlineCount++; offlineCount++;
log.debug(" -> 其他状态,归类为离线");
} }
} }
} }
@ -140,9 +152,12 @@ public class StaticsController extends BaseController
vo.setDebuggingDockCount(debuggingCount); vo.setDebuggingDockCount(debuggingCount);
vo.setOfflineDockCount(offlineCount); vo.setOfflineDockCount(offlineCount);
log.info("机场状态统计结果 -> 空闲:{}, 任务中:{}, 调试:{}, 离线:{}", idleCount, workingCount, debuggingCount, offlineCount);
// 获取所有无人机 // 获取所有无人机
List<AircraftDTO> aircrafts = aircraftService.selectAircraftList(new AircraftDTO()); List<AircraftDTO> aircrafts = aircraftService.selectAircraftList(new AircraftDTO());
vo.setAircraftCount(aircrafts != null ? aircrafts.size() : 0); vo.setAircraftCount(aircrafts != null ? aircrafts.size() : 0);
log.info("无人机总数: {}", vo.getAircraftCount());
// 批量获取无人机详情 - 优化从N次查询减少到1次批量查询 // 批量获取无人机详情 - 优化从N次查询减少到1次批量查询
Map<Long, AircraftDetailDTO> aircraftDetailsMap = null; Map<Long, AircraftDetailDTO> aircraftDetailsMap = null;
@ -161,22 +176,30 @@ public class StaticsController extends BaseController
int offlineAircraftCount = 0; int offlineAircraftCount = 0;
if (aircrafts != null && aircraftDetailsMap != null) { if (aircrafts != null && aircraftDetailsMap != null) {
log.info("---------- 开始统计无人机状态 ----------");
for (AircraftDTO aircraft : aircrafts) { for (AircraftDTO aircraft : aircrafts) {
AircraftDetailDTO aircraftDetail = aircraftDetailsMap.get(aircraft.getAircraftId()); AircraftDetailDTO aircraftDetail = aircraftDetailsMap.get(aircraft.getAircraftId());
if (aircraftDetail != null && aircraftDetail.getAircraftStatus() != null) { if (aircraftDetail != null && aircraftDetail.getAircraftStatus() != null) {
String status = aircraftDetail.getAircraftStatus(); String status = aircraftDetail.getAircraftStatus();
if (AircraftStatusEnum.POWER_ON_IN_CABIN.getCode().equals(status)) { log.info("无人机[ID:{}, Name:{}] 状态: {}", aircraft.getAircraftId(), aircraft.getAircraftName(), status);
if (AircraftStatusEnum.POWER_ON_IN_CABIN.getCode().equalsIgnoreCase(status)) {
powerOnInCabinCount++; powerOnInCabinCount++;
} else if (AircraftStatusEnum.POWER_OFF_IN_CABIN.getCode().equals(status)) { log.debug(" -> 匹配到舱内开机状态");
} else if (AircraftStatusEnum.POWER_OFF_IN_CABIN.getCode().equalsIgnoreCase(status)) {
powerOffInCabinCount++; powerOffInCabinCount++;
} else if (AircraftStatusEnum.IN_MISSION.getCode().equals(status)) { log.debug(" -> 匹配到舱内关机状态");
} else if (AircraftStatusEnum.IN_MISSION.getCode().equalsIgnoreCase(status)) {
inMissionCount++; inMissionCount++;
} else if (AircraftStatusEnum.DEBUGGING.getCode().equals(status)) { log.info(" -> 匹配到IN_MISSION状态 (任务中)");
} else if (AircraftStatusEnum.DEBUGGING.getCode().equalsIgnoreCase(status)) {
debuggingAircraftCount++; debuggingAircraftCount++;
} else if (AircraftStatusEnum.OFFLINE.getCode().equals(status)) { log.debug(" -> 匹配到调试状态");
} else if (AircraftStatusEnum.OFFLINE.getCode().equalsIgnoreCase(status)) {
offlineAircraftCount++; offlineAircraftCount++;
log.debug(" -> 匹配到离线状态");
} else { } else {
offlineAircraftCount++; offlineAircraftCount++;
log.debug(" -> 其他状态,归类为离线");
} }
} }
} }
@ -188,6 +211,9 @@ public class StaticsController extends BaseController
vo.setDebuggingAircraftCount(debuggingAircraftCount); vo.setDebuggingAircraftCount(debuggingAircraftCount);
vo.setOfflineAircraftCount(offlineAircraftCount); vo.setOfflineAircraftCount(offlineAircraftCount);
log.info("无人机状态统计结果 -> 舱内开机:{}, 舱内关机:{}, 任务中:{}, 调试:{}, 离线:{}",
powerOnInCabinCount, powerOffInCabinCount, inMissionCount, debuggingAircraftCount, offlineAircraftCount);
// 获取所有挂载 // 获取所有挂载
List<PayloadDTO> payloads = payloadService.selectPayloadList(new PayloadDTO()); List<PayloadDTO> payloads = payloadService.selectPayloadList(new PayloadDTO());
vo.setPayloadCount(payloads != null ? payloads.size() : 0); vo.setPayloadCount(payloads != null ? payloads.size() : 0);
@ -195,6 +221,10 @@ public class StaticsController extends BaseController
// 统计离线挂载数量暂时设置为0因为挂载状态需要从实时数据获取 // 统计离线挂载数量暂时设置为0因为挂载状态需要从实时数据获取
vo.setOfflinePayloadCount(0); vo.setOfflinePayloadCount(0);
log.info("========== DJI设备统计完成 ==========");
log.info("最终统计结果: 机场总数={}, 任务中机场={}, 无人机总数={}, 任务中无人机={}",
vo.getDockCount(), vo.getWorkingDockCount(), vo.getAircraftCount(), vo.getInMissionCount());
return vo; return vo;
} }
} }