2026-01-20 13:20:39 +08:00
|
|
|
|
package com.ruoyi.device.controller;
|
|
|
|
|
|
|
|
|
|
|
|
import com.ruoyi.common.core.domain.R;
|
|
|
|
|
|
import com.ruoyi.common.core.web.controller.BaseController;
|
|
|
|
|
|
import com.ruoyi.common.security.annotation.InnerAuth;
|
|
|
|
|
|
import com.ruoyi.device.api.domain.DockDetailVO;
|
2026-01-22 09:54:34 +08:00
|
|
|
|
import com.ruoyi.device.api.domain.DockUpdateRequest;
|
2026-01-20 13:20:39 +08:00
|
|
|
|
import com.ruoyi.device.api.domain.DockVO;
|
2026-01-22 20:05:40 +08:00
|
|
|
|
import com.ruoyi.device.api.domain.DockWithGPSVO;
|
|
|
|
|
|
import com.ruoyi.device.controller.convert.DockWithGPSVOConvert;
|
2026-01-20 13:20:39 +08:00
|
|
|
|
import com.ruoyi.device.service.api.IDockService;
|
2026-02-04 16:20:50 +08:00
|
|
|
|
import com.ruoyi.device.service.impl.BufferDeviceImpl;
|
|
|
|
|
|
import com.ruoyi.device.service.impl.TuohengBufferDeviceImpl;
|
2026-01-20 15:48:23 +08:00
|
|
|
|
import com.ruoyi.device.service.dto.DockDetailDTO;
|
2026-01-20 16:09:06 +08:00
|
|
|
|
import com.ruoyi.device.service.dto.DockDTO;
|
2026-02-04 16:20:50 +08:00
|
|
|
|
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;
|
2026-01-21 13:18:33 +08:00
|
|
|
|
import com.ruoyi.device.controller.convert.DockVOConvert;
|
2026-01-21 17:14:29 +08:00
|
|
|
|
import org.springframework.beans.BeanUtils;
|
2026-01-20 13:20:39 +08:00
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
2026-01-22 10:57:50 +08:00
|
|
|
|
import java.util.ArrayList;
|
2026-01-20 13:20:39 +08:00
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 机场Controller
|
|
|
|
|
|
*
|
|
|
|
|
|
* @author ruoyi
|
|
|
|
|
|
* @date 2026-01-20
|
|
|
|
|
|
*/
|
|
|
|
|
|
@RestController
|
|
|
|
|
|
@RequestMapping("/dock")
|
|
|
|
|
|
public class DockController extends BaseController
|
|
|
|
|
|
{
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
private IDockService dockService;
|
|
|
|
|
|
|
2026-01-20 15:48:23 +08:00
|
|
|
|
@Autowired
|
2026-02-04 16:20:50 +08:00
|
|
|
|
private BufferDeviceImpl bufferDeviceService;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
private TuohengBufferDeviceImpl tuohengBufferDeviceService;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
private IDockDomain dockDomain;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
private IDeviceDomain deviceDomain;
|
2026-01-20 15:48:23 +08:00
|
|
|
|
|
2026-01-20 13:20:39 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 搜索机场
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param dockStatus 机场状态
|
|
|
|
|
|
* @param dockId 机场ID
|
|
|
|
|
|
* @return 机场列表
|
|
|
|
|
|
*/
|
2026-01-21 17:14:29 +08:00
|
|
|
|
//@InnerAuth
|
2026-01-20 13:20:39 +08:00
|
|
|
|
@GetMapping("/search")
|
|
|
|
|
|
public R<List<DockVO>> searchDocks(@RequestParam(required = false) String dockStatus, @RequestParam(required = false) Long dockId)
|
|
|
|
|
|
{
|
2026-01-20 16:09:06 +08:00
|
|
|
|
List<DockDTO> dtoList = dockService.searchDocks(dockStatus, dockId);
|
2026-01-21 13:18:33 +08:00
|
|
|
|
List<DockVO> voList = DockVOConvert.fromList(dtoList);
|
2026-01-20 16:09:06 +08:00
|
|
|
|
return R.ok(voList);
|
2026-01-20 13:20:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查看机场详情
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param dockId 机场ID
|
|
|
|
|
|
* @return 机场详情
|
|
|
|
|
|
*/
|
2026-01-21 17:14:29 +08:00
|
|
|
|
//@InnerAuth
|
2026-01-20 13:20:39 +08:00
|
|
|
|
@GetMapping("/detail/{dockId}")
|
|
|
|
|
|
public R<DockDetailVO> getDockDetail(@PathVariable("dockId") Long dockId)
|
|
|
|
|
|
{
|
2026-02-04 16:20:50 +08:00
|
|
|
|
DockDetailDTO dockDetailDTO = getDockDetailByManufacturer(dockId);
|
2026-01-30 14:51:35 +08:00
|
|
|
|
if (dockDetailDTO == null) {
|
|
|
|
|
|
return R.fail("机场不存在: dockId=" + dockId);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-21 17:14:29 +08:00
|
|
|
|
DockDetailVO result = new DockDetailVO();
|
|
|
|
|
|
BeanUtils.copyProperties(dockDetailDTO, result);
|
|
|
|
|
|
return R.ok(result);
|
2026-01-20 13:20:39 +08:00
|
|
|
|
}
|
2026-01-22 09:54:34 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 修改机场名称和地址
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param request 机场更新请求
|
|
|
|
|
|
* @return 结果
|
|
|
|
|
|
*/
|
|
|
|
|
|
//@InnerAuth
|
|
|
|
|
|
@PostMapping("/update")
|
|
|
|
|
|
public R<Void> updateDock(@RequestBody DockUpdateRequest request)
|
|
|
|
|
|
{
|
|
|
|
|
|
DockDTO dto = new DockDTO();
|
|
|
|
|
|
dto.setDockId(request.getDockId());
|
|
|
|
|
|
dto.setDockName(request.getDockName());
|
|
|
|
|
|
dto.setDockLocation(request.getDockLocation());
|
|
|
|
|
|
dockService.updateDock(dto);
|
|
|
|
|
|
return R.ok();
|
|
|
|
|
|
}
|
2026-01-22 10:57:50 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 查看所有机场
|
|
|
|
|
|
*
|
|
|
|
|
|
* @return 机场列表
|
|
|
|
|
|
*/
|
|
|
|
|
|
//@InnerAuth
|
|
|
|
|
|
@GetMapping("/list")
|
2026-01-22 20:05:40 +08:00
|
|
|
|
public R<List<DockWithGPSVO>> getAllDocks()
|
2026-01-22 10:57:50 +08:00
|
|
|
|
{
|
|
|
|
|
|
List<DockDTO> dockDTOs = dockService.selectDockList(new DockDTO());
|
|
|
|
|
|
List<DockDetailDTO> dtoList = new ArrayList<>();
|
|
|
|
|
|
for (DockDTO dockDTO : dockDTOs) {
|
2026-02-04 16:20:50 +08:00
|
|
|
|
DockDetailDTO dockDetailDTO = getDockDetailByManufacturer(dockDTO.getDockId());
|
|
|
|
|
|
if (dockDetailDTO != null) {
|
|
|
|
|
|
dtoList.add(dockDetailDTO);
|
|
|
|
|
|
}
|
2026-01-22 10:57:50 +08:00
|
|
|
|
}
|
2026-01-22 20:05:40 +08:00
|
|
|
|
return R.ok(DockWithGPSVOConvert.fromList(dtoList));
|
2026-01-22 10:57:50 +08:00
|
|
|
|
}
|
2026-02-04 16:20:50 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 根据机场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);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-01-20 13:20:39 +08:00
|
|
|
|
}
|