2026-02-25 15:16:28 +08:00
|
|
|
|
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<AirlineAreaGroupDTO> list = iAirlineAreaGroupService.selectGroupList(dto);
|
|
|
|
|
|
List<AirlineAreaGroupVO> result = AirlineAreaGroupControllerConvert.toApiDomainList(list);
|
|
|
|
|
|
return getDataTable(result);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 新增分组
|
|
|
|
|
|
*/
|
|
|
|
|
|
@PostMapping
|
|
|
|
|
|
@Operation(summary = "新增分组")
|
|
|
|
|
|
public AjaxResult add(@Validated @RequestBody AirlineAreaGroupVO group) {
|
|
|
|
|
|
group.setUserId(SecurityUtils.getUserId());
|
2026-02-26 15:29:13 +08:00
|
|
|
|
group.setCreateBy(SecurityUtils.getUserId().toString());
|
|
|
|
|
|
group.setUpdateBy(SecurityUtils.getUserId().toString());
|
2026-02-25 15:16:28 +08:00
|
|
|
|
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());
|
2026-02-26 15:29:13 +08:00
|
|
|
|
group.setUpdateBy(SecurityUtils.getUserId().toString());
|
2026-02-25 15:16:28 +08:00
|
|
|
|
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) {
|
2026-02-26 15:29:13 +08:00
|
|
|
|
// 设置更新人
|
|
|
|
|
|
area.setUpdateBy(SecurityUtils.getUserId().toString());
|
2026-02-25 15:16:28 +08:00
|
|
|
|
// 使用转换类进行转换
|
|
|
|
|
|
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) {
|
2026-02-26 15:29:13 +08:00
|
|
|
|
// 设置创建人和更新人
|
|
|
|
|
|
area.setCreateBy(SecurityUtils.getUserId().toString());
|
|
|
|
|
|
area.setUpdateBy(SecurityUtils.getUserId().toString());
|
2026-02-25 15:16:28 +08:00
|
|
|
|
// 使用转换类进行转换
|
|
|
|
|
|
AirlineAreaDTO dto = AirlineAreaControllerConvert.to(area);
|
|
|
|
|
|
return toAjax(iAirlineAreaGroupService.insertAreaWithGroup(groupId, dto));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-25 17:05:39 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 删除空域(软删除)
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param areaId 空域ID
|
|
|
|
|
|
* @return 删除结果
|
|
|
|
|
|
*/
|
|
|
|
|
|
@DeleteMapping("/deleteArea/{areaId}")
|
|
|
|
|
|
@Operation(summary = "删除空域")
|
|
|
|
|
|
public AjaxResult deleteArea(@PathVariable Long areaId) {
|
|
|
|
|
|
return toAjax(iAirlineAreaGroupService.deleteArea(areaId));
|
|
|
|
|
|
}
|
2026-02-26 15:29:13 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 批量移动空域到新分组
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param areaIds 空域ID列表
|
|
|
|
|
|
* @param groupId 原分组ID
|
|
|
|
|
|
* @param newGroupId 新分组ID
|
|
|
|
|
|
* @return 移动结果
|
|
|
|
|
|
*/
|
|
|
|
|
|
@PostMapping("/move/{groupId}/{newGroupId}")
|
|
|
|
|
|
@Operation(summary = "批量移动空域到新分组")
|
|
|
|
|
|
public AjaxResult batchMove(@RequestBody List<Long> 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<AirlineAreaDTO> list = iAirlineAreaGroupService.selectAreaListByUserId(dto);
|
|
|
|
|
|
// 转换为VO
|
|
|
|
|
|
List<AirlineAreaVO> result = AirlineAreaControllerConvert.fromList(list);
|
|
|
|
|
|
return success(result);
|
|
|
|
|
|
}
|
2026-02-25 15:16:28 +08:00
|
|
|
|
}
|