From e761efb8505a9eefbb7c459d83aecaefdb31b580 Mon Sep 17 00:00:00 2001 From: gyb Date: Mon, 16 Mar 2026 11:47:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E6=8E=A5=E5=8F=A3=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AirlineMarkerController.java | 11 ++-- ...ineMarkerGroupDetailControllerConvert.java | 58 +++++++++++++++++++ .../api/IAirlineMarkerGroupInfoService.java | 7 ++- .../AirlineMarkerGroupInfoServiceConvert.java | 2 - .../service/dto/AirlineAreaGroupDTO.java | 2 + .../dto/AirlineMarkerGroupInfoDTO.java | 8 +-- .../AirlineMarkerGroupInfoServiceImpl.java | 27 ++++++--- 7 files changed, 94 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/ruoyi/airline/controller/convert/AirlineMarkerGroupDetailControllerConvert.java diff --git a/src/main/java/com/ruoyi/airline/controller/AirlineMarkerController.java b/src/main/java/com/ruoyi/airline/controller/AirlineMarkerController.java index e90d418..b019ece 100644 --- a/src/main/java/com/ruoyi/airline/controller/AirlineMarkerController.java +++ b/src/main/java/com/ruoyi/airline/controller/AirlineMarkerController.java @@ -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 dto = iAirlineMarkerGroupInfoService.selectMarkersByGroupId(groupId); - List result = AirlineMarkerControllerConvert.fromList(dto); + AirlineMarkerGroupInfoDTO dto = iAirlineMarkerGroupInfoService.selectMarkersByGroupId(groupId); + // 使用转换类进行转换 + AirlineMarkerGroupDetailVO result = AirlineMarkerGroupDetailControllerConvert.from(dto); return success(result); } diff --git a/src/main/java/com/ruoyi/airline/controller/convert/AirlineMarkerGroupDetailControllerConvert.java b/src/main/java/com/ruoyi/airline/controller/convert/AirlineMarkerGroupDetailControllerConvert.java new file mode 100644 index 0000000..98a3919 --- /dev/null +++ b/src/main/java/com/ruoyi/airline/controller/convert/AirlineMarkerGroupDetailControllerConvert.java @@ -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 +{ + 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; + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/airline/service/api/IAirlineMarkerGroupInfoService.java b/src/main/java/com/ruoyi/airline/service/api/IAirlineMarkerGroupInfoService.java index b842343..57816b4 100644 --- a/src/main/java/com/ruoyi/airline/service/api/IAirlineMarkerGroupInfoService.java +++ b/src/main/java/com/ruoyi/airline/service/api/IAirlineMarkerGroupInfoService.java @@ -18,7 +18,12 @@ public interface IAirlineMarkerGroupInfoService { int batchDeleteMarker(List markerIds); - List selectMarkersByGroupId(Long groupId); + /** + * 根据分组ID查询标注列表 + * @param groupId 分组ID + * @return 标注分组详情 + */ + AirlineMarkerGroupInfoDTO selectMarkersByGroupId(Long groupId); /** * 获取用户下所有可用标注 diff --git a/src/main/java/com/ruoyi/airline/service/convert/AirlineMarkerGroupInfoServiceConvert.java b/src/main/java/com/ruoyi/airline/service/convert/AirlineMarkerGroupInfoServiceConvert.java index f3723a5..24a37a7 100644 --- a/src/main/java/com/ruoyi/airline/service/convert/AirlineMarkerGroupInfoServiceConvert.java +++ b/src/main/java/com/ruoyi/airline/service/convert/AirlineMarkerGroupInfoServiceConvert.java @@ -49,7 +49,6 @@ public class AirlineMarkerGroupInfoServiceConvert extends BaseConvert groupInfos; + + /** * 空域数量 */ diff --git a/src/main/java/com/ruoyi/airline/service/dto/AirlineMarkerGroupInfoDTO.java b/src/main/java/com/ruoyi/airline/service/dto/AirlineMarkerGroupInfoDTO.java index 6e6989a..60043cb 100644 --- a/src/main/java/com/ruoyi/airline/service/dto/AirlineMarkerGroupInfoDTO.java +++ b/src/main/java/com/ruoyi/airline/service/dto/AirlineMarkerGroupInfoDTO.java @@ -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 groupInfos; @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append("id", getId()) .append("groupId", getGroupId()) - .append("markerId", getMarkerId()) .toString(); } } diff --git a/src/main/java/com/ruoyi/airline/service/impl/AirlineMarkerGroupInfoServiceImpl.java b/src/main/java/com/ruoyi/airline/service/impl/AirlineMarkerGroupInfoServiceImpl.java index c74d62c..0b57d28 100644 --- a/src/main/java/com/ruoyi/airline/service/impl/AirlineMarkerGroupInfoServiceImpl.java +++ b/src/main/java/com/ruoyi/airline/service/impl/AirlineMarkerGroupInfoServiceImpl.java @@ -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 selectMarkersByGroupId(Long groupId) { + public AirlineMarkerGroupInfoDTO selectMarkersByGroupId(Long groupId) { + AirlineMarkerGroupInfoDTO dto = new AirlineMarkerGroupInfoDTO(); + dto.setGroupId(groupId); + // 先获取该分组下的所有标注ID - List markerIds = iAirlineMarkerGroupInfoDomain.selectMarkerIdsByGroupId(groupId); - if (markerIds == null || markerIds.isEmpty()) { - return List.of(); + AirlineMarkerGroupInfo airlineMarkerGroupInfo = new AirlineMarkerGroupInfo(); + airlineMarkerGroupInfo.setGroupId(groupId); + List airlineMarkerGroupInfos= iAirlineMarkerGroupInfoDomain.selectMarkerGroupInfoList(airlineMarkerGroupInfo); + List markerIds = airlineMarkerGroupInfos.stream().map(AirlineMarkerGroupInfo::getMarkerId).toList(); + + if (markerIds != null && !markerIds.isEmpty()) { + // 根据ID列表查询标注详情 + List markers = iAirlineMarkerDomain.selectMarkerListByIds(markerIds); + if (markers != null && !markers.isEmpty()) { + List markerDTOs = AirlineMarkerServiceConvert.fromList(markers); + dto.setGroupInfos(markerDTOs); + } } - // 根据ID列表查询标注详情 - List markers = iAirlineMarkerDomain.selectMarkerListByIds(markerIds); - // 转换为DTO并返回 - return AirlineMarkerServiceConvert.fromList(markers); + + return dto; } @Override