zhuyifan

feat(kds): 添加菜单ID和名称字段以支持订单详情展示

- 在KdsDTO及其嵌套类中新增menuId和menuName字段
- 引入MenuServiceRpcClient用于获取菜单信息- 在订单处理逻辑中集成菜单数据查询与映射
- 更新订单详情构建过程以包含菜单相关信息
- 为避免空指针异常增加空值检查机制
- 使用Function.identity()优化代码可读性
...@@ -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())
......