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;
|
2026-01-22 20:04:09 +08:00
|
|
|
import com.ruoyi.device.api.domain.*;
|
2026-01-21 13:18:33 +08:00
|
|
|
import com.ruoyi.device.controller.convert.DockVOConvert;
|
2026-01-22 20:04:09 +08:00
|
|
|
import com.ruoyi.device.controller.convert.DockWithGPSVOConvert;
|
2026-01-21 14:04:29 +08:00
|
|
|
import com.ruoyi.device.controller.convert.GroupVOConvert;
|
2026-01-20 17:05:25 +08:00
|
|
|
import com.ruoyi.device.service.api.IBufferDeviceService;
|
2026-01-20 13:20:39 +08:00
|
|
|
import com.ruoyi.device.service.api.IGroupService;
|
2026-01-20 17:05:25 +08:00
|
|
|
import com.ruoyi.device.service.dto.DockDetailDTO;
|
|
|
|
|
import com.ruoyi.device.service.dto.DockGroupDTO;
|
2026-01-20 13:20:39 +08:00
|
|
|
import com.ruoyi.device.service.dto.GroupDTO;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
2026-01-24 17:23:44 +08:00
|
|
|
import org.springframework.util.CollectionUtils;
|
2026-01-20 13:20:39 +08:00
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
2026-01-20 17:05:25 +08:00
|
|
|
import java.util.ArrayList;
|
2026-01-20 13:20:39 +08:00
|
|
|
import java.util.List;
|
2026-01-24 17:23:44 +08:00
|
|
|
import java.util.Objects;
|
2026-01-20 13:20:39 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 分组Controller
|
|
|
|
|
*
|
|
|
|
|
* @author ruoyi
|
|
|
|
|
* @date 2026-01-20
|
|
|
|
|
*/
|
|
|
|
|
@RestController
|
|
|
|
|
@RequestMapping("/group")
|
|
|
|
|
public class GroupController extends BaseController
|
|
|
|
|
{
|
|
|
|
|
@Autowired
|
|
|
|
|
private IGroupService groupService;
|
2026-01-20 17:05:25 +08:00
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IBufferDeviceService bufferDeviceService;
|
2026-01-20 13:20:39 +08:00
|
|
|
/**
|
|
|
|
|
* 创建分组
|
|
|
|
|
*
|
2026-01-20 13:45:42 +08:00
|
|
|
* @param request 分组创建请求
|
2026-01-20 13:20:39 +08:00
|
|
|
* @return 分组ID
|
|
|
|
|
*/
|
2026-01-20 14:07:45 +08:00
|
|
|
//@InnerAuth
|
2026-01-20 13:20:39 +08:00
|
|
|
@PostMapping("/create")
|
2026-01-20 13:45:42 +08:00
|
|
|
public R<Long> createGroup(@RequestBody GroupCreateRequest request)
|
2026-01-20 13:20:39 +08:00
|
|
|
{
|
2026-01-24 15:23:43 +08:00
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
GroupDTO dto = new GroupDTO();
|
|
|
|
|
dto.setGroupName(request.getGroupName());
|
|
|
|
|
Long groupId = groupService.createGroup(dto);
|
|
|
|
|
return R.ok(groupId);
|
|
|
|
|
}
|
|
|
|
|
catch (RuntimeException e)
|
|
|
|
|
{
|
|
|
|
|
return R.fail("新增分组'" + request.getGroupName() + "'失败,分组名称已存在");
|
|
|
|
|
}
|
2026-01-20 13:20:39 +08:00
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 删除分组
|
|
|
|
|
*
|
|
|
|
|
* @param groupId 分组ID
|
|
|
|
|
* @return 结果
|
|
|
|
|
*/
|
2026-01-20 14:13:29 +08:00
|
|
|
//@InnerAuth
|
2026-01-20 13:20:39 +08:00
|
|
|
@DeleteMapping("/delete/{groupId}")
|
|
|
|
|
public R<Void> deleteGroup(@PathVariable("groupId") Long groupId)
|
|
|
|
|
{
|
|
|
|
|
groupService.deleteGroup(groupId);
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-22 09:40:03 +08:00
|
|
|
/**
|
|
|
|
|
* 修改分组名称
|
|
|
|
|
*
|
|
|
|
|
* @param request 分组更新请求
|
|
|
|
|
* @return 结果
|
|
|
|
|
*/
|
|
|
|
|
//@InnerAuth
|
|
|
|
|
@PostMapping("/update")
|
|
|
|
|
public R<Void> updateGroup(@RequestBody GroupUpdateRequest request)
|
|
|
|
|
{
|
2026-01-24 15:23:43 +08:00
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
GroupDTO dto = new GroupDTO();
|
|
|
|
|
dto.setGroupId(request.getGroupId());
|
|
|
|
|
dto.setGroupName(request.getGroupName());
|
|
|
|
|
groupService.updateGroup(dto);
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
catch (RuntimeException e)
|
|
|
|
|
{
|
|
|
|
|
return R.fail("修改分组'" + request.getGroupName() + "'失败,分组名称已存在");
|
|
|
|
|
}
|
2026-01-22 09:40:03 +08:00
|
|
|
}
|
|
|
|
|
|
2026-01-20 13:20:39 +08:00
|
|
|
/**
|
|
|
|
|
* 切换机场所在的分组
|
|
|
|
|
*
|
2026-01-20 14:20:08 +08:00
|
|
|
* @param request 切换分组请求
|
2026-01-20 13:20:39 +08:00
|
|
|
* @return 结果
|
|
|
|
|
*/
|
2026-01-20 14:20:08 +08:00
|
|
|
@PostMapping("/switch")
|
|
|
|
|
public R<Void> switchDockGroup(@RequestBody SwitchDockGroupRequest request)
|
2026-01-20 13:20:39 +08:00
|
|
|
{
|
2026-01-26 09:02:11 +08:00
|
|
|
|
2026-01-24 17:23:44 +08:00
|
|
|
if(!CollectionUtils.isEmpty(request.getDockIds())){
|
|
|
|
|
for (Long dockId : request.getDockIds()) {
|
|
|
|
|
groupService.switchDockGroup(dockId, request.getGroupId());
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-01-20 13:20:39 +08:00
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查看分组下的机场
|
|
|
|
|
*
|
|
|
|
|
* @param groupId 分组ID
|
|
|
|
|
* @return 机场列表
|
|
|
|
|
*/
|
2026-01-20 14:13:29 +08:00
|
|
|
//@InnerAuth
|
2026-01-20 13:20:39 +08:00
|
|
|
@GetMapping("/docks/{groupId}")
|
2026-01-22 20:04:09 +08:00
|
|
|
public R<List<DockWithGPSVO>> getDocksByGroupId(@PathVariable("groupId") Long groupId)
|
2026-01-20 13:20:39 +08:00
|
|
|
{
|
2026-01-21 14:08:21 +08:00
|
|
|
logger.info("getDocksByGroupId {}", groupId);
|
2026-01-20 17:05:25 +08:00
|
|
|
List<DockGroupDTO> groupDTOS = groupService.getDocksByGroupId(groupId);
|
|
|
|
|
List<DockDetailDTO> dtoList = new ArrayList<>();
|
|
|
|
|
for (DockGroupDTO dockGroupDTO : groupDTOS) {
|
|
|
|
|
DockDetailDTO dockDetailDTO = bufferDeviceService.getDockDetailById(dockGroupDTO.getDockId());
|
|
|
|
|
dtoList.add(dockDetailDTO);
|
|
|
|
|
}
|
2026-01-21 13:18:33 +08:00
|
|
|
|
2026-01-22 20:04:09 +08:00
|
|
|
return R.ok(DockWithGPSVOConvert.fromList(dtoList));
|
2026-01-20 13:20:39 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查看所有分组
|
|
|
|
|
*
|
|
|
|
|
* @return 分组ID列表
|
|
|
|
|
*/
|
2026-01-20 14:13:29 +08:00
|
|
|
//@InnerAuth
|
2026-01-20 13:20:39 +08:00
|
|
|
@GetMapping("/list")
|
2026-01-21 14:04:29 +08:00
|
|
|
public R<List<GroupVO>> getAllGroupIds()
|
2026-01-20 13:20:39 +08:00
|
|
|
{
|
2026-01-22 09:29:48 +08:00
|
|
|
List<GroupDTO> groupDTOs = groupService.getAllGroupIds();
|
|
|
|
|
// Calculate aircraft count for each group
|
|
|
|
|
|
|
|
|
|
List<GroupVO> groupVOS = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
for(GroupDTO groupDTO : groupDTOs){
|
|
|
|
|
GroupVO groupVO = GroupVOConvert.from(groupDTO);
|
|
|
|
|
List<DockGroupDTO> dockGroupDTOs = groupService.getDocksByGroupId(groupDTO.getGroupId());
|
|
|
|
|
groupVO.setDockCount(dockGroupDTOs.size());
|
|
|
|
|
groupVOS.add(groupVO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return R.ok(groupVOS);
|
2026-01-20 13:20:39 +08:00
|
|
|
}
|
|
|
|
|
}
|