package com.ruoyi.airline.controller; import com.ruoyi.airline.api.domain.AirlineAreaGroupDetailVO; import com.ruoyi.airline.api.domain.AirlineAreaGroupVO; import com.ruoyi.airline.api.domain.AirlineAreaVO; import com.ruoyi.airline.controller.convert.AirlineAreaControllerConvert; import com.ruoyi.airline.controller.convert.AirlineAreaGroupControllerConvert; import com.ruoyi.airline.controller.convert.AirlineAreaGroupDetailControllerConvert; import com.ruoyi.airline.service.api.IAirlineAreaGroupService; import com.ruoyi.airline.service.dto.AirlineAreaDTO; import com.ruoyi.airline.service.dto.AirlineAreaGroupDTO; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.security.utils.SecurityUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 空域分组 * * @author 拓恒 */ @RestController @RequestMapping("/areaGroup") @Tag(name = "空域分组管理") public class AirlineAreaGroupController extends BaseController { private static final Logger log = LoggerFactory.getLogger(AirlineAreaGroupController.class); @Autowired private IAirlineAreaGroupService iAirlineAreaGroupService; /** * 获取空域分组列表,根据用户Id查询分组 * * @param airlineAreaGroupVO 查询条件 */ @GetMapping() @Operation(summary = "获取所有的空域分组") public TableDataInfo index(AirlineAreaGroupVO airlineAreaGroupVO) { startPage(); airlineAreaGroupVO.setUserId(SecurityUtils.getUserId()); AirlineAreaGroupDTO dto = AirlineAreaGroupControllerConvert.to(airlineAreaGroupVO); List list = iAirlineAreaGroupService.selectGroupList(dto); List result = AirlineAreaGroupControllerConvert.toApiDomainList(list); return getDataTable(result); } /** * 新增分组 */ @PostMapping @Operation(summary = "新增分组") public AjaxResult add(@Validated @RequestBody AirlineAreaGroupVO group) { group.setUserId(SecurityUtils.getUserId()); group.setCreateBy(SecurityUtils.getUserId().toString()); group.setUpdateBy(SecurityUtils.getUserId().toString()); AirlineAreaGroupDTO dto = AirlineAreaGroupControllerConvert.to(group); if (iAirlineAreaGroupService.checkGroupNameUnique(dto)) { return error("新增分组'" + group.getGroupName() + "'失败,分组名称已存在"); } return toAjax(iAirlineAreaGroupService.insertGroup(dto)); } /** * 修改分组 */ @PutMapping @Operation(summary = "修改分组") public AjaxResult edit(@Validated @RequestBody AirlineAreaGroupVO group) { group.setUserId(SecurityUtils.getUserId()); group.setUpdateBy(SecurityUtils.getUserId().toString()); AirlineAreaGroupDTO dto = AirlineAreaGroupControllerConvert.to(group); if (iAirlineAreaGroupService.checkGroupNameUnique(dto)) { return error("修改分组'" + group.getGroupName() + "'失败,分组名称已存在"); } return toAjax(iAirlineAreaGroupService.updateGroup(dto)); } /** * 删除分组,前端校验分组下是否有空域弹出确认删除提示,如果确认会将分组及空域一起删除。 */ @DeleteMapping("/delete/{groupId}") @Operation(summary = "删除分组") public AjaxResult removeByQueryParam(@PathVariable Long groupId) { return toAjax(iAirlineAreaGroupService.deletegroupById(SecurityUtils.getUserId(), groupId)); } /** * 按照空域分组查询所有的空域信息(包含坐标点信息) * * @param groupId 分组ID * @return 空域分组详情 */ @GetMapping("/airspaceList/{groupId}") @Operation(summary = "按照空域分组查询所有的空域信息") public AjaxResult selectAirspaceListByGroupId(@PathVariable Long groupId) { AirlineAreaGroupDTO dto = iAirlineAreaGroupService.selectAirspaceListByGroupId(SecurityUtils.getUserId(), groupId); // 使用转换类进行转换 AirlineAreaGroupDetailVO result = AirlineAreaGroupDetailControllerConvert.from(dto); return success(result); } /** * 修改空域信息(包含坐标点信息) * * @param area 空域信息 * @return 修改结果 */ @PutMapping("/updateArea") @Operation(summary = "修改空域信息") public AjaxResult updateAreaWithPoints(@Validated @RequestBody AirlineAreaVO area) { // 设置更新人 area.setUpdateBy(SecurityUtils.getUserId().toString()); // 使用转换类进行转换 AirlineAreaDTO dto = AirlineAreaControllerConvert.to(area); return toAjax(iAirlineAreaGroupService.updateAreaWithPoints(dto)); } /** * 在指定分组下新增空域(包含坐标点信息) * * @param groupId 分组ID * @param area 空域信息 * @return 新增结果 */ @PostMapping("/addArea/{groupId}") @Operation(summary = "在指定分组下新增空域") public AjaxResult addAreaWithGroup(@PathVariable Long groupId, @Validated @RequestBody AirlineAreaVO area) { // 设置创建人和更新人 area.setCreateBy(SecurityUtils.getUserId().toString()); area.setUpdateBy(SecurityUtils.getUserId().toString()); // 使用转换类进行转换 AirlineAreaDTO dto = AirlineAreaControllerConvert.to(area); return toAjax(iAirlineAreaGroupService.insertAreaWithGroup(groupId, dto)); } /** * 删除空域(软删除) * * @param areaId 空域ID * @return 删除结果 */ @DeleteMapping("/deleteArea/{areaId}") @Operation(summary = "删除空域") public AjaxResult deleteArea(@PathVariable Long areaId) { return toAjax(iAirlineAreaGroupService.deleteArea(areaId)); } /** * 批量移动空域到新分组 * * @param areaIds 空域ID列表 * @param groupId 原分组ID * @param newGroupId 新分组ID * @return 移动结果 */ @PostMapping("/move/{groupId}/{newGroupId}") @Operation(summary = "批量移动空域到新分组") public AjaxResult batchMove(@RequestBody List areaIds, @PathVariable("groupId") Long groupId, @PathVariable("newGroupId") Long newGroupId) { if (groupId == null) { return error("原分组ID不能为空"); } if (newGroupId == null) { return error("新分组ID不能为空"); } if (areaIds == null || areaIds.isEmpty()) { return error("没有需要移动的空域"); } int result = iAirlineAreaGroupService.batchMoveAreaToNewGroup(areaIds, groupId, newGroupId); if (result > 0) { return success("移动成功,共移动 " + result + " 个空域"); } return error("移动失败"); } /** * 根据用户ID查询空域列表,支持名称模糊查询 * * @param area 查询条件 * @return 空域列表 */ @GetMapping("/areaList") @Operation(summary = "根据用户ID查询空域列表") public AjaxResult selectAreaListByUserId(AirlineAreaVO area) { // 设置用户ID area.setCreateBy(SecurityUtils.getUserId().toString()); // 转换为DTO AirlineAreaDTO dto = AirlineAreaControllerConvert.to(area); // 调用服务层方法 List list = iAirlineAreaGroupService.selectAreaListByUserId(dto); // 转换为VO List result = AirlineAreaControllerConvert.fromList(list); return success(result); } }