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