代码重构
This commit is contained in:
parent
dcc4835180
commit
bad9e733bc
|
|
@ -7,14 +7,9 @@ import com.ruoyi.device.api.domain.AircraftDetailVO;
|
||||||
import com.ruoyi.device.api.domain.AircraftUpdateRequest;
|
import com.ruoyi.device.api.domain.AircraftUpdateRequest;
|
||||||
import com.ruoyi.device.controller.convert.AircraftDetailVOConvert;
|
import com.ruoyi.device.controller.convert.AircraftDetailVOConvert;
|
||||||
import com.ruoyi.device.service.api.IAircraftService;
|
import com.ruoyi.device.service.api.IAircraftService;
|
||||||
import com.ruoyi.device.service.impl.BufferDeviceImpl;
|
import com.ruoyi.device.service.impl.DefaultBufferDeviceImpl;
|
||||||
import com.ruoyi.device.service.impl.TuohengBufferDeviceImpl;
|
|
||||||
import com.ruoyi.device.service.dto.AircraftDetailDTO;
|
import com.ruoyi.device.service.dto.AircraftDetailDTO;
|
||||||
import com.ruoyi.device.service.dto.AircraftDTO;
|
import com.ruoyi.device.service.dto.AircraftDTO;
|
||||||
import com.ruoyi.device.domain.api.IAircraftDomain;
|
|
||||||
import com.ruoyi.device.domain.api.IDeviceDomain;
|
|
||||||
import com.ruoyi.device.domain.model.Aircraft;
|
|
||||||
import com.ruoyi.device.domain.model.Device;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
|
@ -32,16 +27,7 @@ public class AircraftController extends BaseController
|
||||||
private IAircraftService aircraftService;
|
private IAircraftService aircraftService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BufferDeviceImpl bufferDeviceService;
|
private DefaultBufferDeviceImpl bufferDeviceService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private TuohengBufferDeviceImpl tuohengBufferDeviceService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IAircraftDomain aircraftDomain;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IDeviceDomain deviceDomain;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查看无人机详情
|
* 查看无人机详情
|
||||||
|
|
@ -53,7 +39,7 @@ public class AircraftController extends BaseController
|
||||||
@GetMapping("/detail/{aircraftId}")
|
@GetMapping("/detail/{aircraftId}")
|
||||||
public R<AircraftDetailVO> getAircraftDetail(@PathVariable("aircraftId") Long aircraftId)
|
public R<AircraftDetailVO> getAircraftDetail(@PathVariable("aircraftId") Long aircraftId)
|
||||||
{
|
{
|
||||||
AircraftDetailDTO dto = getAircraftDetailByManufacturer(aircraftId);
|
AircraftDetailDTO dto = bufferDeviceService.getAircraftDetailById(aircraftId);
|
||||||
AircraftDetailVO vo = AircraftDetailVOConvert.from(dto);
|
AircraftDetailVO vo = AircraftDetailVOConvert.from(dto);
|
||||||
return R.ok(vo);
|
return R.ok(vo);
|
||||||
}
|
}
|
||||||
|
|
@ -74,37 +60,4 @@ public class AircraftController extends BaseController
|
||||||
aircraftService.updateAircraft(dto);
|
aircraftService.updateAircraft(dto);
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据无人机ID获取无人机详情(自动选择大疆或拓恒服务)
|
|
||||||
*
|
|
||||||
* @param aircraftId 无人机ID
|
|
||||||
* @return 无人机详情DTO
|
|
||||||
*/
|
|
||||||
private AircraftDetailDTO getAircraftDetailByManufacturer(Long aircraftId) {
|
|
||||||
// 查询无人机信息
|
|
||||||
Aircraft aircraft = aircraftDomain.selectAircraftByAircraftId(aircraftId);
|
|
||||||
if (aircraft == null) {
|
|
||||||
logger.warn("无人机不存在: aircraftId={}", aircraftId);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询设备信息,获取厂商
|
|
||||||
Device device = deviceDomain.selectDeviceByDeviceId(aircraft.getDeviceId());
|
|
||||||
if (device == null) {
|
|
||||||
logger.warn("无人机对应的设备不存在: deviceId={}", aircraft.getDeviceId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 根据厂商选择对应的服务
|
|
||||||
String manufacturer = device.getDeviceManufacturer();
|
|
||||||
if ("tuoheng".equals(manufacturer)) {
|
|
||||||
logger.debug("使用拓恒服务获取无人机详情: aircraftId={}", aircraftId);
|
|
||||||
return tuohengBufferDeviceService.getAircraftDetailById(aircraftId);
|
|
||||||
} else {
|
|
||||||
logger.debug("使用大疆服务获取无人机详情: aircraftId={}, manufacturer={}",
|
|
||||||
aircraftId, manufacturer);
|
|
||||||
return bufferDeviceService.getAircraftDetailById(aircraftId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,14 +9,9 @@ import com.ruoyi.device.api.domain.DockVO;
|
||||||
import com.ruoyi.device.api.domain.DockWithGPSVO;
|
import com.ruoyi.device.api.domain.DockWithGPSVO;
|
||||||
import com.ruoyi.device.controller.convert.DockWithGPSVOConvert;
|
import com.ruoyi.device.controller.convert.DockWithGPSVOConvert;
|
||||||
import com.ruoyi.device.service.api.IDockService;
|
import com.ruoyi.device.service.api.IDockService;
|
||||||
import com.ruoyi.device.service.impl.BufferDeviceImpl;
|
import com.ruoyi.device.service.impl.DefaultBufferDeviceImpl;
|
||||||
import com.ruoyi.device.service.impl.TuohengBufferDeviceImpl;
|
|
||||||
import com.ruoyi.device.service.dto.DockDetailDTO;
|
import com.ruoyi.device.service.dto.DockDetailDTO;
|
||||||
import com.ruoyi.device.service.dto.DockDTO;
|
import com.ruoyi.device.service.dto.DockDTO;
|
||||||
import com.ruoyi.device.domain.api.IDockDomain;
|
|
||||||
import com.ruoyi.device.domain.api.IDeviceDomain;
|
|
||||||
import com.ruoyi.device.domain.model.Dock;
|
|
||||||
import com.ruoyi.device.domain.model.Device;
|
|
||||||
import com.ruoyi.device.controller.convert.DockVOConvert;
|
import com.ruoyi.device.controller.convert.DockVOConvert;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -39,16 +34,7 @@ public class DockController extends BaseController
|
||||||
private IDockService dockService;
|
private IDockService dockService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BufferDeviceImpl bufferDeviceService;
|
private DefaultBufferDeviceImpl bufferDeviceService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private TuohengBufferDeviceImpl tuohengBufferDeviceService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IDockDomain dockDomain;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IDeviceDomain deviceDomain;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 搜索机场
|
* 搜索机场
|
||||||
|
|
@ -76,7 +62,7 @@ public class DockController extends BaseController
|
||||||
@GetMapping("/detail/{dockId}")
|
@GetMapping("/detail/{dockId}")
|
||||||
public R<DockDetailVO> getDockDetail(@PathVariable("dockId") Long dockId)
|
public R<DockDetailVO> getDockDetail(@PathVariable("dockId") Long dockId)
|
||||||
{
|
{
|
||||||
DockDetailDTO dockDetailDTO = getDockDetailByManufacturer(dockId);
|
DockDetailDTO dockDetailDTO = bufferDeviceService.getDockDetailById(dockId);
|
||||||
if (dockDetailDTO == null) {
|
if (dockDetailDTO == null) {
|
||||||
return R.fail("机场不存在: dockId=" + dockId);
|
return R.fail("机场不存在: dockId=" + dockId);
|
||||||
}
|
}
|
||||||
|
|
@ -116,44 +102,11 @@ public class DockController extends BaseController
|
||||||
List<DockDTO> dockDTOs = dockService.selectDockList(new DockDTO());
|
List<DockDTO> dockDTOs = dockService.selectDockList(new DockDTO());
|
||||||
List<DockDetailDTO> dtoList = new ArrayList<>();
|
List<DockDetailDTO> dtoList = new ArrayList<>();
|
||||||
for (DockDTO dockDTO : dockDTOs) {
|
for (DockDTO dockDTO : dockDTOs) {
|
||||||
DockDetailDTO dockDetailDTO = getDockDetailByManufacturer(dockDTO.getDockId());
|
DockDetailDTO dockDetailDTO = bufferDeviceService.getDockDetailById(dockDTO.getDockId());
|
||||||
if (dockDetailDTO != null) {
|
if (dockDetailDTO != null) {
|
||||||
dtoList.add(dockDetailDTO);
|
dtoList.add(dockDetailDTO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return R.ok(DockWithGPSVOConvert.fromList(dtoList));
|
return R.ok(DockWithGPSVOConvert.fromList(dtoList));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据机场ID获取机场详情(自动选择大疆或拓恒服务)
|
|
||||||
*
|
|
||||||
* @param dockId 机场ID
|
|
||||||
* @return 机场详情DTO
|
|
||||||
*/
|
|
||||||
private DockDetailDTO getDockDetailByManufacturer(Long dockId) {
|
|
||||||
// 查询机场信息
|
|
||||||
Dock dock = dockDomain.selectDockByDockId(dockId);
|
|
||||||
if (dock == null) {
|
|
||||||
logger.warn("机场不存在: dockId={}", dockId);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询设备信息,获取厂商
|
|
||||||
Device device = deviceDomain.selectDeviceByDeviceId(dock.getDeviceId());
|
|
||||||
if (device == null) {
|
|
||||||
logger.warn("机场对应的设备不存在: deviceId={}", dock.getDeviceId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 根据厂商选择对应的服务
|
|
||||||
String manufacturer = device.getDeviceManufacturer();
|
|
||||||
if ("tuoheng".equals(manufacturer)) {
|
|
||||||
logger.debug("使用拓恒服务获取机场详情: dockId={}", dockId);
|
|
||||||
return tuohengBufferDeviceService.getDockDetailById(dockId);
|
|
||||||
} else {
|
|
||||||
logger.debug("使用大疆服务获取机场详情: dockId={}, manufacturer={}",
|
|
||||||
dockId, manufacturer);
|
|
||||||
return bufferDeviceService.getDockDetailById(dockId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,8 @@ import com.ruoyi.device.controller.convert.DockWithGPSVOConvert;
|
||||||
import com.ruoyi.device.controller.convert.GroupVOConvert;
|
import com.ruoyi.device.controller.convert.GroupVOConvert;
|
||||||
import com.ruoyi.device.domain.api.IDockDomain;
|
import com.ruoyi.device.domain.api.IDockDomain;
|
||||||
import com.ruoyi.device.domain.model.Dock;
|
import com.ruoyi.device.domain.model.Dock;
|
||||||
import com.ruoyi.device.service.impl.BufferDeviceImpl;
|
import com.ruoyi.device.service.impl.DefaultBufferDeviceImpl;
|
||||||
import com.ruoyi.device.service.impl.TuohengBufferDeviceImpl;
|
|
||||||
import com.ruoyi.device.service.api.IGroupService;
|
import com.ruoyi.device.service.api.IGroupService;
|
||||||
import com.ruoyi.device.domain.api.IDeviceDomain;
|
|
||||||
import com.ruoyi.device.domain.model.Device;
|
|
||||||
import com.ruoyi.device.service.dto.DockDetailDTO;
|
import com.ruoyi.device.service.dto.DockDetailDTO;
|
||||||
import com.ruoyi.device.service.dto.DockGroupDTO;
|
import com.ruoyi.device.service.dto.DockGroupDTO;
|
||||||
import com.ruoyi.device.service.dto.GroupDTO;
|
import com.ruoyi.device.service.dto.GroupDTO;
|
||||||
|
|
@ -36,16 +33,10 @@ public class GroupController extends BaseController
|
||||||
private IGroupService groupService;
|
private IGroupService groupService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BufferDeviceImpl bufferDeviceService;
|
private DefaultBufferDeviceImpl bufferDeviceService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private TuohengBufferDeviceImpl tuohengBufferDeviceService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IDockDomain dockDomain;
|
private IDockDomain dockDomain;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IDeviceDomain deviceDomain;
|
|
||||||
/**
|
/**
|
||||||
* 创建分组
|
* 创建分组
|
||||||
*
|
*
|
||||||
|
|
@ -145,7 +136,7 @@ public class GroupController extends BaseController
|
||||||
if (allDocks != null) {
|
if (allDocks != null) {
|
||||||
for (Dock dock : allDocks) {
|
for (Dock dock : allDocks) {
|
||||||
if (dock.getLastActiveTime() != null) {
|
if (dock.getLastActiveTime() != null) {
|
||||||
DockDetailDTO dockDetailDTO = getDockDetailByManufacturer(dock.getDockId());
|
DockDetailDTO dockDetailDTO = bufferDeviceService.getDockDetailById(dock.getDockId());
|
||||||
if (dockDetailDTO != null) {
|
if (dockDetailDTO != null) {
|
||||||
dockDetailDTO.setLastActiveTime(dock.getLastActiveTime());
|
dockDetailDTO.setLastActiveTime(dock.getLastActiveTime());
|
||||||
dtoList.add(dockDetailDTO);
|
dtoList.add(dockDetailDTO);
|
||||||
|
|
@ -160,7 +151,7 @@ public class GroupController extends BaseController
|
||||||
List<DockGroupDTO> groupDTOS = groupService.getDocksByGroupId(groupId);
|
List<DockGroupDTO> groupDTOS = groupService.getDocksByGroupId(groupId);
|
||||||
List<DockDetailDTO> dtoList = new ArrayList<>();
|
List<DockDetailDTO> dtoList = new ArrayList<>();
|
||||||
for (DockGroupDTO dockGroupDTO : groupDTOS) {
|
for (DockGroupDTO dockGroupDTO : groupDTOS) {
|
||||||
DockDetailDTO dockDetailDTO = getDockDetailByManufacturer(dockGroupDTO.getDockId());
|
DockDetailDTO dockDetailDTO = bufferDeviceService.getDockDetailById(dockGroupDTO.getDockId());
|
||||||
if (dockDetailDTO != null) {
|
if (dockDetailDTO != null) {
|
||||||
dtoList.add(dockDetailDTO);
|
dtoList.add(dockDetailDTO);
|
||||||
}
|
}
|
||||||
|
|
@ -213,36 +204,4 @@ public class GroupController extends BaseController
|
||||||
|
|
||||||
return R.ok(groupVOS);
|
return R.ok(groupVOS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据机场ID获取机场详情(自动选择大疆或拓恒服务)
|
|
||||||
*
|
|
||||||
* @param dockId 机场ID
|
|
||||||
* @return 机场详情DTO
|
|
||||||
*/
|
|
||||||
private DockDetailDTO getDockDetailByManufacturer(Long dockId) {
|
|
||||||
// 查询机场信息
|
|
||||||
Dock dock = dockDomain.selectDockByDockId(dockId);
|
|
||||||
if (dock == null) {
|
|
||||||
logger.warn("机场不存在: dockId={}", dockId);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询设备信息,获取厂商
|
|
||||||
Device device = deviceDomain.selectDeviceByDeviceId(dock.getDeviceId());
|
|
||||||
if (device == null) {
|
|
||||||
logger.warn("机场对应的设备不存在: deviceId={}", dock.getDeviceId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 根据厂商选择对应的服务
|
|
||||||
String manufacturer = device.getDeviceManufacturer();
|
|
||||||
if ("tuoheng".equals(manufacturer)) {
|
|
||||||
logger.debug("使用拓恒服务获取机场详情: dockId={}", dockId);
|
|
||||||
return tuohengBufferDeviceService.getDockDetailById(dockId);
|
|
||||||
} else {
|
|
||||||
logger.debug("使用大疆服务获取机场详情: dockId={}, manufacturer={}", dockId, manufacturer);
|
|
||||||
return bufferDeviceService.getDockDetailById(dockId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import com.ruoyi.device.api.enums.AircraftStatusEnum;
|
||||||
import com.ruoyi.device.api.enums.DockStatusEnum;
|
import com.ruoyi.device.api.enums.DockStatusEnum;
|
||||||
import com.ruoyi.device.api.enums.PayloadStatusEnum;
|
import com.ruoyi.device.api.enums.PayloadStatusEnum;
|
||||||
import com.ruoyi.device.service.api.IAircraftService;
|
import com.ruoyi.device.service.api.IAircraftService;
|
||||||
import com.ruoyi.device.service.impl.BufferDeviceImpl;
|
import com.ruoyi.device.service.impl.DaJiangBufferDeviceImpl;
|
||||||
import com.ruoyi.device.service.impl.TuohengBufferDeviceImpl;
|
import com.ruoyi.device.service.impl.TuohengBufferDeviceImpl;
|
||||||
import com.ruoyi.device.service.api.IDockService;
|
import com.ruoyi.device.service.api.IDockService;
|
||||||
import com.ruoyi.device.domain.api.IDeviceDomain;
|
import com.ruoyi.device.domain.api.IDeviceDomain;
|
||||||
|
|
@ -51,7 +51,7 @@ public class StaticsController extends BaseController
|
||||||
private IPayloadService payloadService;
|
private IPayloadService payloadService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BufferDeviceImpl bufferDeviceService;
|
private DaJiangBufferDeviceImpl daJiangBufferDeviceService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TuohengBufferDeviceImpl tuohengBufferDeviceService;
|
private TuohengBufferDeviceImpl tuohengBufferDeviceService;
|
||||||
|
|
@ -137,7 +137,7 @@ public class StaticsController extends BaseController
|
||||||
List<Long> dockIds = docks.stream()
|
List<Long> dockIds = docks.stream()
|
||||||
.map(DockDTO::getDockId)
|
.map(DockDTO::getDockId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
dockDetailsMap = bufferDeviceService.getDockDetailsByIds(dockIds);
|
dockDetailsMap = daJiangBufferDeviceService.getDockDetailsByIds(dockIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 统计各状态机场数量
|
// 统计各状态机场数量
|
||||||
|
|
@ -188,7 +188,7 @@ public class StaticsController extends BaseController
|
||||||
List<Long> aircraftIds = aircrafts.stream()
|
List<Long> aircraftIds = aircrafts.stream()
|
||||||
.map(AircraftDTO::getAircraftId)
|
.map(AircraftDTO::getAircraftId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
aircraftDetailsMap = bufferDeviceService.getAircraftDetailsByIds(aircraftIds);
|
aircraftDetailsMap = daJiangBufferDeviceService.getAircraftDetailsByIds(aircraftIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 统计各状态无人机数量
|
// 统计各状态无人机数量
|
||||||
|
|
|
||||||
|
|
@ -33,15 +33,15 @@ import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备缓冲服务实现
|
* 大疆设备缓冲服务实现
|
||||||
* 整合数据库数据和ThingsBoard数据
|
* 整合数据库数据和ThingsBoard数据
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
* @date 2026-01-20
|
* @date 2026-01-20
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service("daJiangBufferDeviceService")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class BufferDeviceImpl implements IBufferDeviceService
|
public class DaJiangBufferDeviceImpl implements IBufferDeviceService
|
||||||
{
|
{
|
||||||
@Autowired
|
@Autowired
|
||||||
private IDockDomain dockDomain;
|
private IDockDomain dockDomain;
|
||||||
|
|
@ -0,0 +1,158 @@
|
||||||
|
package com.ruoyi.device.service.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.device.domain.api.IAircraftDomain;
|
||||||
|
import com.ruoyi.device.domain.api.IDeviceDomain;
|
||||||
|
import com.ruoyi.device.domain.api.IDockDomain;
|
||||||
|
import com.ruoyi.device.domain.model.Aircraft;
|
||||||
|
import com.ruoyi.device.domain.model.Device;
|
||||||
|
import com.ruoyi.device.domain.model.Dock;
|
||||||
|
import com.ruoyi.device.service.api.IBufferDeviceService;
|
||||||
|
import com.ruoyi.device.service.dto.AircraftDetailDTO;
|
||||||
|
import com.ruoyi.device.service.dto.DockDetailDTO;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认设备缓冲服务实现
|
||||||
|
* 根据设备厂商自动路由到对应的服务实现
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2026-02-04
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Primary
|
||||||
|
@Slf4j
|
||||||
|
public class DefaultBufferDeviceImpl implements IBufferDeviceService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("daJiangBufferDeviceService")
|
||||||
|
private IBufferDeviceService daJiangBufferDeviceService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("tuohengBufferDeviceService")
|
||||||
|
private IBufferDeviceService tuohengBufferDeviceService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IDockDomain dockDomain;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IDeviceDomain deviceDomain;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IAircraftDomain aircraftDomain;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DockDetailDTO getDockDetailById(Long dockId) {
|
||||||
|
log.debug("DefaultBufferDeviceImpl.getDockDetailById: dockId={}", dockId);
|
||||||
|
|
||||||
|
// 查询机场信息
|
||||||
|
Dock dock = dockDomain.selectDockByDockId(dockId);
|
||||||
|
if (dock == null) {
|
||||||
|
log.warn("机场不存在: dockId={}", dockId);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备信息,获取厂商
|
||||||
|
Device device = deviceDomain.selectDeviceByDeviceId(dock.getDeviceId());
|
||||||
|
if (device == null) {
|
||||||
|
log.warn("机场对应的设备不存在: deviceId={}", dock.getDeviceId());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据厂商选择对应的服务
|
||||||
|
String manufacturer = device.getDeviceManufacturer();
|
||||||
|
if ("tuoheng".equals(manufacturer)) {
|
||||||
|
log.debug("路由到拓恒服务: dockId={}", dockId);
|
||||||
|
return tuohengBufferDeviceService.getDockDetailById(dockId);
|
||||||
|
} else {
|
||||||
|
log.debug("路由到大疆服务: dockId={}, manufacturer={}", dockId, manufacturer);
|
||||||
|
return daJiangBufferDeviceService.getDockDetailById(dockId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AircraftDetailDTO getAircraftDetailById(Long aircraftId) {
|
||||||
|
log.debug("DefaultBufferDeviceImpl.getAircraftDetailById: aircraftId={}", aircraftId);
|
||||||
|
|
||||||
|
// 查询无人机信息
|
||||||
|
Aircraft aircraft = aircraftDomain.selectAircraftByAircraftId(aircraftId);
|
||||||
|
if (aircraft == null) {
|
||||||
|
log.warn("无人机不存在: aircraftId={}", aircraftId);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询设备信息,获取厂商
|
||||||
|
Device device = deviceDomain.selectDeviceByDeviceId(aircraft.getDeviceId());
|
||||||
|
if (device == null) {
|
||||||
|
log.warn("无人机对应的设备不存在: deviceId={}", aircraft.getDeviceId());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据厂商选择对应的服务
|
||||||
|
String manufacturer = device.getDeviceManufacturer();
|
||||||
|
if ("tuoheng".equals(manufacturer)) {
|
||||||
|
log.debug("路由到拓恒服务: aircraftId={}", aircraftId);
|
||||||
|
return tuohengBufferDeviceService.getAircraftDetailById(aircraftId);
|
||||||
|
} else {
|
||||||
|
log.debug("路由到大疆服务: aircraftId={}, manufacturer={}", aircraftId, manufacturer);
|
||||||
|
return daJiangBufferDeviceService.getAircraftDetailById(aircraftId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Long, DockDetailDTO> getDockDetailsByIds(List<Long> dockIds) {
|
||||||
|
log.debug("DefaultBufferDeviceImpl.getDockDetailsByIds: dockIds.size={}",
|
||||||
|
dockIds != null ? dockIds.size() : 0);
|
||||||
|
|
||||||
|
if (dockIds == null || dockIds.isEmpty()) {
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<Long, DockDetailDTO> resultMap = new HashMap<>(dockIds.size());
|
||||||
|
|
||||||
|
for (Long dockId : dockIds) {
|
||||||
|
try {
|
||||||
|
DockDetailDTO dto = getDockDetailById(dockId);
|
||||||
|
if (dto != null) {
|
||||||
|
resultMap.put(dockId, dto);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("获取机场详情失败, dockId: {}", dockId, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Long, AircraftDetailDTO> getAircraftDetailsByIds(List<Long> aircraftIds) {
|
||||||
|
log.debug("DefaultBufferDeviceImpl.getAircraftDetailsByIds: aircraftIds.size={}",
|
||||||
|
aircraftIds != null ? aircraftIds.size() : 0);
|
||||||
|
|
||||||
|
if (aircraftIds == null || aircraftIds.isEmpty()) {
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<Long, AircraftDetailDTO> resultMap = new HashMap<>(aircraftIds.size());
|
||||||
|
|
||||||
|
for (Long aircraftId : aircraftIds) {
|
||||||
|
try {
|
||||||
|
AircraftDetailDTO dto = getAircraftDetailById(aircraftId);
|
||||||
|
if (dto != null) {
|
||||||
|
resultMap.put(aircraftId, dto);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("获取无人机详情失败, aircraftId: {}", aircraftId, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -24,7 +24,7 @@ import java.util.Map;
|
||||||
* 专门处理拓恒设备的数据整合
|
* 专门处理拓恒设备的数据整合
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
* @date 2026-02-04
|
* @date 2026-02-04Ï
|
||||||
*/
|
*/
|
||||||
@Service("tuohengBufferDeviceService")
|
@Service("tuohengBufferDeviceService")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.ruoyi.device.websocket;
|
package com.ruoyi.device.websocket;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.ruoyi.device.service.api.IBufferDeviceService;
|
import com.ruoyi.device.service.impl.DefaultBufferDeviceImpl;
|
||||||
import com.ruoyi.device.service.dto.DockDetailDTO;
|
import com.ruoyi.device.service.dto.DockDetailDTO;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
@ -60,7 +60,7 @@ public class StatisticsWebSocket {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBufferDeviceService bufferDeviceService;
|
private DefaultBufferDeviceImpl bufferDeviceService;
|
||||||
|
|
||||||
|
|
||||||
public void broadcast(String dockerId) {
|
public void broadcast(String dockerId) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue