feat:增加批量移动接口,优化查询接口逻辑

This commit is contained in:
gyb 2026-03-16 11:47:46 +08:00
parent 7c77837cf5
commit e761efb850
7 changed files with 94 additions and 21 deletions

View File

@ -1,18 +1,18 @@
package com.ruoyi.airline.controller;
import com.ruoyi.airline.api.domain.AirlineMarkerGroupDetailVO;
import com.ruoyi.airline.api.domain.AirlineMarkerVO;
import com.ruoyi.airline.controller.convert.AirlineMarkerControllerConvert;
import com.ruoyi.airline.controller.convert.AirlineMarkerGroupDetailControllerConvert;
import com.ruoyi.airline.service.api.IAirlineMarkerGroupInfoService;
import com.ruoyi.airline.service.api.IAirlineMarkerService;
import com.ruoyi.airline.service.dto.AirlineMarkerDTO;
import com.ruoyi.airline.service.dto.AirlineMarkerGroupInfoDTO;
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.*;
@ -122,8 +122,9 @@ public class AirlineMarkerController extends BaseController {
@GetMapping("/{groupId}")
@Operation(summary = "按照空域分组查询所有的标准信息")
public AjaxResult getInfo(@PathVariable Long groupId) {
List<AirlineMarkerDTO> dto = iAirlineMarkerGroupInfoService.selectMarkersByGroupId(groupId);
List<AirlineMarkerVO> result = AirlineMarkerControllerConvert.fromList(dto);
AirlineMarkerGroupInfoDTO dto = iAirlineMarkerGroupInfoService.selectMarkersByGroupId(groupId);
// 使用转换类进行转换
AirlineMarkerGroupDetailVO result = AirlineMarkerGroupDetailControllerConvert.from(dto);
return success(result);
}

View File

@ -0,0 +1,58 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.airline.api.domain.AirlineMarkerGroupDetailVO;
import com.ruoyi.airline.service.dto.AirlineMarkerGroupInfoDTO;
import com.ruoyi.common.core.utils.BaseConvert;
/**
* 标注分组详情Controller转换类
* 用于API VO和Service DTO之间的转换
*
* @author 拓恒
*/
public class AirlineMarkerGroupDetailControllerConvert extends BaseConvert<AirlineMarkerGroupInfoDTO, AirlineMarkerGroupDetailVO>
{
private static final AirlineMarkerGroupDetailControllerConvert INSTANCE = new AirlineMarkerGroupDetailControllerConvert();
private AirlineMarkerGroupDetailControllerConvert() {
super(AirlineMarkerGroupInfoDTO.class, AirlineMarkerGroupDetailVO.class);
}
public static AirlineMarkerGroupDetailVO from(AirlineMarkerGroupInfoDTO dto) {
return INSTANCE.innerFrom(dto);
}
public static AirlineMarkerGroupInfoDTO to(AirlineMarkerGroupDetailVO vo) {
return INSTANCE.innerTo(vo);
}
@Override
protected AirlineMarkerGroupDetailVO innerFrom(AirlineMarkerGroupInfoDTO dto) {
if (dto == null) {
return null;
}
AirlineMarkerGroupDetailVO vo = new AirlineMarkerGroupDetailVO();
vo.setGroupId(dto.getGroupId());
if (dto.getGroupInfos() != null) {
vo.setAirspaceList(dto.getGroupInfos().stream()
.map(AirlineMarkerControllerConvert::from)
.collect(java.util.stream.Collectors.toList()));
}
return vo;
}
@Override
protected AirlineMarkerGroupInfoDTO innerTo(AirlineMarkerGroupDetailVO vo) {
if (vo == null) {
return null;
}
AirlineMarkerGroupInfoDTO dto = new AirlineMarkerGroupInfoDTO();
dto.setGroupId(vo.getGroupId());
if (vo.getAirspaceList() != null) {
dto.setGroupInfos(vo.getAirspaceList().stream()
.map(AirlineMarkerControllerConvert::to)
.collect(java.util.stream.Collectors.toList()));
}
return dto;
}
}

View File

@ -18,7 +18,12 @@ public interface IAirlineMarkerGroupInfoService {
int batchDeleteMarker(List<Long> markerIds);
List<AirlineMarkerDTO> selectMarkersByGroupId(Long groupId);
/**
* 根据分组ID查询标注列表
* @param groupId 分组ID
* @return 标注分组详情
*/
AirlineMarkerGroupInfoDTO selectMarkersByGroupId(Long groupId);
/**
* 获取用户下所有可用标注

View File

@ -49,7 +49,6 @@ public class AirlineMarkerGroupInfoServiceConvert extends BaseConvert<AirlineMar
AirlineMarkerGroupInfoDTO dto = new AirlineMarkerGroupInfoDTO();
dto.setId(model.getId());
dto.setGroupId(model.getGroupId());
dto.setMarkerId(model.getMarkerId());
dto.setCreateBy(model.getCreateBy());
dto.setCreateTime(model.getCreateTime());
dto.setUpdateBy(model.getUpdateBy());
@ -65,7 +64,6 @@ public class AirlineMarkerGroupInfoServiceConvert extends BaseConvert<AirlineMar
AirlineMarkerGroupInfo model = new AirlineMarkerGroupInfo();
model.setId(dto.getId());
model.setGroupId(dto.getGroupId());
model.setMarkerId(dto.getMarkerId());
model.setCreateBy(dto.getCreateBy());
model.setCreateTime(dto.getCreateTime());
model.setUpdateBy(dto.getUpdateBy());

View File

@ -36,6 +36,8 @@ public class AirlineAreaGroupDTO extends BaseEntity {
*/
private List<AirlineAreaDTO> groupInfos;
/**
* 空域数量
*/

View File

@ -6,6 +6,8 @@ import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.List;
/**
* 标注分组明细表 airline_marker_group_info
*
@ -24,17 +26,13 @@ public class AirlineMarkerGroupInfoDTO extends BaseEntity {
*/
private Long groupId;
/**
* 标注id
*/
private Long markerId;
private List<AirlineMarkerDTO> groupInfos;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("groupId", getGroupId())
.append("markerId", getMarkerId())
.toString();
}
}

View File

@ -7,6 +7,7 @@ import com.ruoyi.airline.domain.model.AirlineMarkerGroupInfo;
import com.ruoyi.airline.service.api.IAirlineMarkerGroupInfoService;
import com.ruoyi.airline.service.convert.AirlineMarkerServiceConvert;
import com.ruoyi.airline.service.dto.AirlineMarkerDTO;
import com.ruoyi.airline.service.dto.AirlineMarkerGroupInfoDTO;
import com.ruoyi.common.security.utils.SecurityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -97,16 +98,26 @@ public class AirlineMarkerGroupInfoServiceImpl implements IAirlineMarkerGroupInf
}
@Override
public List<AirlineMarkerDTO> selectMarkersByGroupId(Long groupId) {
public AirlineMarkerGroupInfoDTO selectMarkersByGroupId(Long groupId) {
AirlineMarkerGroupInfoDTO dto = new AirlineMarkerGroupInfoDTO();
dto.setGroupId(groupId);
// 先获取该分组下的所有标注ID
List<Long> markerIds = iAirlineMarkerGroupInfoDomain.selectMarkerIdsByGroupId(groupId);
if (markerIds == null || markerIds.isEmpty()) {
return List.of();
AirlineMarkerGroupInfo airlineMarkerGroupInfo = new AirlineMarkerGroupInfo();
airlineMarkerGroupInfo.setGroupId(groupId);
List<AirlineMarkerGroupInfo> airlineMarkerGroupInfos= iAirlineMarkerGroupInfoDomain.selectMarkerGroupInfoList(airlineMarkerGroupInfo);
List<Long> markerIds = airlineMarkerGroupInfos.stream().map(AirlineMarkerGroupInfo::getMarkerId).toList();
if (markerIds != null && !markerIds.isEmpty()) {
// 根据ID列表查询标注详情
List<AirlineMarker> markers = iAirlineMarkerDomain.selectMarkerListByIds(markerIds);
if (markers != null && !markers.isEmpty()) {
List<AirlineMarkerDTO> markerDTOs = AirlineMarkerServiceConvert.fromList(markers);
dto.setGroupInfos(markerDTOs);
}
}
// 根据ID列表查询标注详情
List<AirlineMarker> markers = iAirlineMarkerDomain.selectMarkerListByIds(markerIds);
// 转换为DTO并返回
return AirlineMarkerServiceConvert.fromList(markers);
return dto;
}
@Override