205 lines
7.9 KiB
Java
205 lines
7.9 KiB
Java
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());
|
||
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<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(@ModelAttribute 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);
|
||
}
|
||
}
|