feat(kds): 添加菜单ID和名称字段以支持订单详情展示
- 在KdsDTO及其嵌套类中新增menuId和menuName字段 - 引入MenuServiceRpcClient用于获取菜单信息- 在订单处理逻辑中集成菜单数据查询与映射 - 更新订单详情构建过程以包含菜单相关信息 - 为避免空指针异常增加空值检查机制 - 使用Function.identity()优化代码可读性
Showing
2 changed files
with
21 additions
and
0 deletions
| ... | @@ -38,6 +38,8 @@ public class KdsDTO { | ... | @@ -38,6 +38,8 @@ public class KdsDTO { |
| 38 | private ClientDto client; | 38 | private ClientDto client; |
| 39 | private ClientDto stall; | 39 | private ClientDto stall; |
| 40 | private CustomerDetailDto customer; | 40 | private CustomerDetailDto customer; |
| 41 | + private Integer menuId; | ||
| 42 | + private String menuName; | ||
| 41 | } | 43 | } |
| 42 | 44 | ||
| 43 | @Data | 45 | @Data |
| ... | @@ -87,6 +89,8 @@ public class KdsDTO { | ... | @@ -87,6 +89,8 @@ public class KdsDTO { |
| 87 | private ClientDto client; | 89 | private ClientDto client; |
| 88 | private CustomerDetailDto customer; | 90 | private CustomerDetailDto customer; |
| 89 | private List<KdsOrderLocationDetailDto> orderDetailList; | 91 | private List<KdsOrderLocationDetailDto> orderDetailList; |
| 92 | + private Integer menuId; | ||
| 93 | + private String menuName; | ||
| 90 | } | 94 | } |
| 91 | 95 | ||
| 92 | @Data | 96 | @Data | ... | ... |
| ... | @@ -6,6 +6,7 @@ import com.infoloop.tianting.clientcustomerorderservice.ServeStatusEnum; | ... | @@ -6,6 +6,7 @@ import com.infoloop.tianting.clientcustomerorderservice.ServeStatusEnum; |
| 6 | import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderDetailRpcResponse; | 6 | import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderDetailRpcResponse; |
| 7 | import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse; | 7 | import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse; |
| 8 | import com.infoloop.tianting.context.LoginContextHolder; | 8 | import com.infoloop.tianting.context.LoginContextHolder; |
| 9 | +import com.infoloop.tianting.menuservice.SingleMenuRpcResponse; | ||
| 9 | import com.infoloop.tianting.model.dto.ClientInventoryDbDTO.ClientDto; | 10 | import com.infoloop.tianting.model.dto.ClientInventoryDbDTO.ClientDto; |
| 10 | import com.infoloop.tianting.model.dto.KdsDTO; | 11 | import com.infoloop.tianting.model.dto.KdsDTO; |
| 11 | import com.infoloop.tianting.model.dto.KdsDTO.KdsMealDetailDto; | 12 | import com.infoloop.tianting.model.dto.KdsDTO.KdsMealDetailDto; |
| ... | @@ -23,6 +24,7 @@ import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient; | ... | @@ -23,6 +24,7 @@ import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient; |
| 23 | import com.infoloop.tianting.service.client.ClientInventoryServiceRpcClient; | 24 | import com.infoloop.tianting.service.client.ClientInventoryServiceRpcClient; |
| 24 | import com.infoloop.tianting.service.client.EnterpriseResourceServiceRpcClient; | 25 | import com.infoloop.tianting.service.client.EnterpriseResourceServiceRpcClient; |
| 25 | import com.infoloop.tianting.service.client.MealServiceRpcClient; | 26 | import com.infoloop.tianting.service.client.MealServiceRpcClient; |
| 27 | +import com.infoloop.tianting.service.client.MenuServiceRpcClient; | ||
| 26 | import com.infoloop.tianting.service.client.OrderServiceRpcClient; | 28 | import com.infoloop.tianting.service.client.OrderServiceRpcClient; |
| 27 | import com.infoloop.tianting.service.client.SkuServiceRpcClient; | 29 | import com.infoloop.tianting.service.client.SkuServiceRpcClient; |
| 28 | import com.infoloop.tianting.service.client.WOperatorServiceRpcClient; | 30 | import com.infoloop.tianting.service.client.WOperatorServiceRpcClient; |
| ... | @@ -36,6 +38,7 @@ import java.time.LocalDate; | ... | @@ -36,6 +38,7 @@ import java.time.LocalDate; |
| 36 | import java.time.LocalDateTime; | 38 | import java.time.LocalDateTime; |
| 37 | import java.util.ArrayList; | 39 | import java.util.ArrayList; |
| 38 | import java.util.List; | 40 | import java.util.List; |
| 41 | +import java.util.function.Function; | ||
| 39 | import java.util.stream.Collectors; | 42 | import java.util.stream.Collectors; |
| 40 | 43 | ||
| 41 | @Slf4j | 44 | @Slf4j |
| ... | @@ -50,6 +53,7 @@ public class KdsServiceImpl implements KdsService { | ... | @@ -50,6 +53,7 @@ public class KdsServiceImpl implements KdsService { |
| 50 | private final SkuServiceRpcClient skuServiceRpcClient; | 53 | private final SkuServiceRpcClient skuServiceRpcClient; |
| 51 | private final ClientInventoryServiceRpcClient clientInventoryServiceRpcClient; | 54 | private final ClientInventoryServiceRpcClient clientInventoryServiceRpcClient; |
| 52 | private final ClientCustomerServiceRpcClient clientCustomerServiceRpcClient; | 55 | private final ClientCustomerServiceRpcClient clientCustomerServiceRpcClient; |
| 56 | + private final MenuServiceRpcClient menuServiceRpcClient; | ||
| 53 | 57 | ||
| 54 | @Override | 58 | @Override |
| 55 | public List<KdsOrderSkuDto> getOrderDetailBySku(KdsOrderSkuQueryDto queryDto) { | 59 | public List<KdsOrderSkuDto> getOrderDetailBySku(KdsOrderSkuQueryDto queryDto) { |
| ... | @@ -119,6 +123,9 @@ public class KdsServiceImpl implements KdsService { | ... | @@ -119,6 +123,9 @@ public class KdsServiceImpl implements KdsService { |
| 119 | .collect(Collectors.toList()); | 123 | .collect(Collectors.toList()); |
| 120 | final var skus = skuServiceRpcClient.getDishSkusByIds(skuIds).getResponseList(); | 124 | final var skus = skuServiceRpcClient.getDishSkusByIds(skuIds).getResponseList(); |
| 121 | 125 | ||
| 126 | + final var menuIds = orderList.stream().map(SingleClientCustomerOrderRpcResponse::getMenuId).distinct().toList(); | ||
| 127 | + final var menuMap = menuServiceRpcClient.getMenusByIds(operator.getEnterpriseId(), menuIds).getResponsesList().stream().collect(Collectors.toMap(SingleMenuRpcResponse::getId, Function.identity())); | ||
| 128 | + | ||
| 122 | List<KdsOrderSkuDto> kdsOrderSkuList = new ArrayList<>(); | 129 | List<KdsOrderSkuDto> kdsOrderSkuList = new ArrayList<>(); |
| 123 | for (Integer menuDetailId : menuDetailIds) { | 130 | for (Integer menuDetailId : menuDetailIds) { |
| 124 | // 找出该menuDetailId 的所有orderDetail | 131 | // 找出该menuDetailId 的所有orderDetail |
| ... | @@ -171,6 +178,8 @@ public class KdsServiceImpl implements KdsService { | ... | @@ -171,6 +178,8 @@ public class KdsServiceImpl implements KdsService { |
| 171 | .remark(order.get().getRemark()) | 178 | .remark(order.get().getRemark()) |
| 172 | .orderId(order.get().getId()) | 179 | .orderId(order.get().getId()) |
| 173 | .roomNo(order.get().getSyncRoomNo().isEmpty() ? order.get().getRoomNo() : order.get().getSyncRoomNo()) | 180 | .roomNo(order.get().getSyncRoomNo().isEmpty() ? order.get().getRoomNo() : order.get().getSyncRoomNo()) |
| 181 | + .menuId(order.get().getMenuId()) | ||
| 182 | + .menuName(menuMap.get(order.get().getMenuId()) == null ? "" : menuMap.get(order.get().getMenuId()).getName()) | ||
| 174 | .tableCode(order.get().getTableCode()) | 183 | .tableCode(order.get().getTableCode()) |
| 175 | .customerNotice(CustomerNotice.builder() | 184 | .customerNotice(CustomerNotice.builder() |
| 176 | .doctors(order.get().getCustomerNoticeJson().getDoctorsList()) | 185 | .doctors(order.get().getCustomerNoticeJson().getDoctorsList()) |
| ... | @@ -342,6 +351,12 @@ public class KdsServiceImpl implements KdsService { | ... | @@ -342,6 +351,12 @@ public class KdsServiceImpl implements KdsService { |
| 342 | final var filteredOrderDetailList = orderDetailList.stream() | 351 | final var filteredOrderDetailList = orderDetailList.stream() |
| 343 | .filter(od -> od.getMealId() == queryDto.getMealId() && od.getServeStatus() != ServeStatusEnum.SERVE_REJECT) | 352 | .filter(od -> od.getMealId() == queryDto.getMealId() && od.getServeStatus() != ServeStatusEnum.SERVE_REJECT) |
| 344 | .collect(Collectors.toList()); | 353 | .collect(Collectors.toList()); |
| 354 | + | ||
| 355 | + | ||
| 356 | + final var menuIds = orderList.stream().map(SingleClientCustomerOrderRpcResponse::getMenuId).distinct().toList(); | ||
| 357 | + final var menuMap = menuServiceRpcClient.getMenusByIds(operator.getEnterpriseId(), menuIds).getResponsesList().stream().collect(Collectors.toMap(SingleMenuRpcResponse::getId, Function.identity())); | ||
| 358 | + | ||
| 359 | + | ||
| 345 | List<KdsOrderLocationDto> kdsOrderLocationList = new ArrayList<>(); | 360 | List<KdsOrderLocationDto> kdsOrderLocationList = new ArrayList<>(); |
| 346 | 361 | ||
| 347 | for (SingleClientCustomerOrderRpcResponse order : orderList) { | 362 | for (SingleClientCustomerOrderRpcResponse order : orderList) { |
| ... | @@ -401,6 +416,8 @@ public class KdsServiceImpl implements KdsService { | ... | @@ -401,6 +416,8 @@ public class KdsServiceImpl implements KdsService { |
| 401 | .orderId(order.getId()) | 416 | .orderId(order.getId()) |
| 402 | .roomNo(order.getSyncRoomNo().isEmpty() ? order.getRoomNo() : order.getSyncRoomNo()) | 417 | .roomNo(order.getSyncRoomNo().isEmpty() ? order.getRoomNo() : order.getSyncRoomNo()) |
| 403 | .tableCode(order.getTableCode()) | 418 | .tableCode(order.getTableCode()) |
| 419 | + .menuId(order.getMenuId()) | ||
| 420 | + .menuName(menuMap.get(order.getMenuId()) == null ? "" : menuMap.get(order.getMenuId()).getName()) | ||
| 404 | .customerNotice(CustomerNotice.builder() | 421 | .customerNotice(CustomerNotice.builder() |
| 405 | .doctors(order.getCustomerNoticeJson().getDoctorsList()) | 422 | .doctors(order.getCustomerNoticeJson().getDoctorsList()) |
| 406 | .avoids(order.getCustomerNoticeJson().getAvoidsList()) | 423 | .avoids(order.getCustomerNoticeJson().getAvoidsList()) | ... | ... |
-
Please register or login to post a comment