a-tuoheng-device/src/main/java/com/ruoyi/device/controller/StaticsController.java

254 lines
9.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.ruoyi.device.controller;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.device.api.domain.StatisticsVO;
import com.ruoyi.device.api.enums.AircraftStatusEnum;
import com.ruoyi.device.api.enums.DockStatusEnum;
import com.ruoyi.device.api.enums.PayloadStatusEnum;
import com.ruoyi.device.service.api.IAircraftService;
import com.ruoyi.device.service.api.IBufferDeviceService;
import com.ruoyi.device.service.api.IDockService;
import com.ruoyi.device.service.api.IPayloadService;
import com.ruoyi.device.service.dto.AircraftDTO;
import com.ruoyi.device.service.dto.AircraftDetailDTO;
import com.ruoyi.device.service.dto.DockDTO;
import com.ruoyi.device.service.dto.DockDetailDTO;
import com.ruoyi.device.service.dto.PayloadDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 统计Controller
*
* @author ruoyi
* @date 2026-01-23
*/
@RestController
@RequestMapping("/statistics")
public class StaticsController extends BaseController
{
@Autowired
private IDockService dockService;
@Autowired
private IAircraftService aircraftService;
@Autowired
private IPayloadService payloadService;
@Autowired
private IBufferDeviceService bufferDeviceService;
/**
* 获取系统统计信息
*
* @return 统计信息
*/
@GetMapping
public R<StatisticsVO> getStatistics()
{
StatisticsVO vo = new StatisticsVO();
// 获取所有机场
List<DockDTO> 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<AircraftDTO> 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++;
} else {
offlineAircraftCount++;
}
}
}
}
vo.setPowerOnInCabinCount(powerOnInCabinCount);
vo.setPowerOffInCabinCount(powerOffInCabinCount);
vo.setInMissionCount(inMissionCount);
vo.setDebuggingAircraftCount(debuggingAircraftCount);
vo.setOfflineAircraftCount(offlineAircraftCount);
// 获取所有挂载
List<PayloadDTO> payloads = payloadService.selectPayloadList(new PayloadDTO());
vo.setPayloadCount(payloads != null ? payloads.size() : 0);
// 统计离线挂载数量暂时设置为0因为挂载状态需要从实时数据获取
vo.setOfflinePayloadCount(0);
return R.ok(vo);
}
@GetMapping("/dji")
public R<StatisticsVO> getDjiStatistics()
{
StatisticsVO vo = new StatisticsVO();
// 获取所有机场
List<DockDTO> 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<AircraftDTO> 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++;
} else {
offlineAircraftCount++;
}
}
}
}
vo.setPowerOnInCabinCount(powerOnInCabinCount);
vo.setPowerOffInCabinCount(powerOffInCabinCount);
vo.setInMissionCount(inMissionCount);
vo.setDebuggingAircraftCount(debuggingAircraftCount);
vo.setOfflineAircraftCount(offlineAircraftCount);
// 获取所有挂载
List<PayloadDTO> payloads = payloadService.selectPayloadList(new PayloadDTO());
vo.setPayloadCount(payloads != null ? payloads.size() : 0);
// 统计离线挂载数量暂时设置为0因为挂载状态需要从实时数据获取
vo.setOfflinePayloadCount(0);
return R.ok(vo);
}
@GetMapping("/th")
public R<StatisticsVO> 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);
}
}