package com.ruoyi.airline.controller; import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.ruoyi.airline.api.domain.AirlineFileGroupInfoVO; import com.ruoyi.airline.controller.convert.AirlineFileGroupInfoControllerConvert; import com.ruoyi.airline.service.api.IAirlineFileGroupInfoService; import com.ruoyi.airline.service.api.IAirlineFileService; import com.ruoyi.airline.service.dto.AirlineFileDTO; import com.ruoyi.airline.service.dto.AirlineFileGroupInfoDTO; import com.ruoyi.common.core.exception.base.BaseException; 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 io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.List; /** * 航线分组 * * @author 拓恒 */ @RestController @RequestMapping("/fileGroupInfo") @Tag(name = "分组航线管理") public class AirlineFileGroupInfoController extends BaseController { @Autowired private IAirlineFileGroupInfoService iAirlineFileGroupInfoService; @Autowired private IAirlineFileService iAirlineFileService; /** * 获取航线文件分组列表,根据用户Id查询分组 * * @param groupId 分组ID * @return */ // @RequiresPermissions("airline:groupInfo:list") @GetMapping("/{groupId}") @Operation(summary = "编辑航线文件内容,生产航点新文件") public TableDataInfo selectGroupInfoListById(@PathVariable("groupId") Long groupId) { startPage(); List list = iAirlineFileGroupInfoService.selectGroupInfoListById(groupId); // List result = AirlineFileGroupInfoControllerConvert.fromList(list); return getDataTable(list); } /** * 获取航线文件分组列表,根据用户Id查询分组(使用查询参数) * * @param groupId 分组ID * @return */ // @RequiresPermissions("airline:groupInfo:list") @GetMapping @Operation(summary = "编辑航线文件内容,生产航点新文件") public TableDataInfo selectGroupInfoListByQueryId(@RequestParam("groupId") Long groupId) { startPage(); List list = iAirlineFileGroupInfoService.selectGroupInfoListById(groupId); List result = AirlineFileGroupInfoControllerConvert.toApiDomainList(list); return getDataTable(result); } /** * kmz航线文件,并转换成waypoint上传 ,仅仅返航URL *

* kmz类似zip,一般情况下内部包含kml和wpml两个文件 * * @param file */ @PostMapping("/parseAndUpload/{groupId}") @Operation(summary = " kmz航线文件,并转换成waypoint上传 ,仅仅返航URL") public AjaxResult parseAndUpload(@RequestParam("file") MultipartFile file, @PathVariable("groupId") Long groupId) throws BaseException { AirlineFileDTO dto = iAirlineFileService.parseAndUplload(file, groupId); AirlineFileGroupInfoDTO infoDTO = new AirlineFileGroupInfoDTO(); infoDTO.setGroupId(groupId); infoDTO.setAirlineFileDTO(dto); return success(iAirlineFileGroupInfoService.save(infoDTO)); } /** * 在当前分组下添加初始航线(空的航线) * * @param vo 实体对象 * @return */ @PostMapping() @Operation(summary = "在当前分组下添加初始航线,必须上传分组ID") public AjaxResult add(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException { if (vo.getGroupId() == null) { throw new BaseException("分组ID不能为空"); } AirlineFileGroupInfoDTO dto = AirlineFileGroupInfoControllerConvert.to(vo); Long result = iAirlineFileGroupInfoService.save(dto); if (result > 0) { return success(result); } throw new BaseException("新增失败"); } /*** * 删除分组详情 * @param vo * @return * @throws BaseException */ @DeleteMapping("/delete") @Operation(summary = "在当前分组下添加初始航线,必须上传分组ID") public AjaxResult delete(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException { if (vo.getGroupId() == null) { throw new BaseException("分组ID不能为空"); } AirlineFileGroupInfoDTO dto = AirlineFileGroupInfoControllerConvert.to(vo); Long result = iAirlineFileGroupInfoService.deleteGroupInfo(dto); if (result > 0) { return success(result); } throw new BaseException("删除失败"); } /*** * 批量删除分组详情 * @param airLineIds * @return * @throws BaseException */ @DeleteMapping("/batchDelete/{groupId}") @Operation(summary = "批量删除分组详情") public AjaxResult delete(@RequestBody List airLineIds, @PathVariable("groupId") Long groupId) throws BaseException { if (groupId == null) { throw new BaseException("分组ID不能为空"); } if (CollectionUtils.isEmpty(airLineIds)) { throw new BaseException("没有需要删除的航线"); } Long result = iAirlineFileGroupInfoService.deleteGroupInfoBatch(airLineIds, groupId); if (result > 0) { return success(result); } throw new BaseException("删除失败"); } /*** * 移动分组详情到新分组 * @param vo * @param groupId * @return * @throws BaseException */ @PostMapping("/move/{groupId}") @Operation(summary = "移动分组详情到新分组") public AjaxResult move(@RequestBody AirlineFileGroupInfoVO vo, @PathVariable("groupId") Long groupId) throws BaseException { AirlineFileGroupInfoDTO dto = AirlineFileGroupInfoControllerConvert.to(vo); Long result = iAirlineFileGroupInfoService.moveGroupInfo( dto, groupId ); if (result > 0) { return success(result); } throw new BaseException("移动失败"); } @PostMapping("/move/{groupId}/{newGroupId}") @Operation(summary = "批量移动分组详情到新分组") public AjaxResult batchMove(@RequestBody List airlines, @PathVariable("groupId") Long groupId, @PathVariable("newGroupId") Long newGroupId) throws BaseException { if (groupId == null) { throw new BaseException("原分组ID不能为空"); } if (newGroupId == null) { throw new BaseException("新分组ID不能为空"); } if (CollectionUtils.isEmpty(airlines)) { throw new BaseException("没有需要移动的航线"); } Long result = iAirlineFileGroupInfoService.batchMoveGroupInfo( airlines, groupId, newGroupId ); if (result > 0) { return success(result); } throw new BaseException("移动失败"); } }