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.DockVO; import com.ruoyi.device.api.domain.GroupCreateRequest; import com.ruoyi.device.api.domain.GroupVO; import com.ruoyi.device.api.domain.SwitchDockGroupRequest; import com.ruoyi.device.controller.convert.DockVOConvert; 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.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; /** * 分组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) { GroupDTO dto = new GroupDTO(); dto.setGroupName(request.getGroupName()); Long groupId = groupService.createGroup(dto); return R.ok(groupId); } /** * 删除分组 * * @param groupId 分组ID * @return 结果 */ //@InnerAuth @DeleteMapping("/delete/{groupId}") public R deleteGroup(@PathVariable("groupId") Long groupId) { groupService.deleteGroup(groupId); return R.ok(); } /** * 切换机场所在的分组 * * @param request 切换分组请求 * @return 结果 */ @PostMapping("/switch") public R switchDockGroup(@RequestBody SwitchDockGroupRequest request) { groupService.switchDockGroup(request.getDockId(), 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(DockVOConvert.fromDockDetailDTOList(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); } }