feat(settlement): 支持换菜操作的价格调整
- 新增对换菜订单操作记录的处理逻辑 - 构建换菜前后的订单详情映射关系 - 在结算中正确应用换菜后的价格信息 - 完善换菜场景下的订单分类统计逻辑 - 确保换菜操作能准确反映在结算明细中
Showing
1 changed file
with
8 additions
and
1 deletions
| ... | @@ -869,6 +869,12 @@ public class SettlementServiceImpl implements SettlementService { | ... | @@ -869,6 +869,12 @@ public class SettlementServiceImpl implements SettlementService { |
| 869 | }).stream()) | 869 | }).stream()) |
| 870 | .collect(Collectors.toMap(OrderDetailBO::getId, Function.identity(), (a, b) -> a)); | 870 | .collect(Collectors.toMap(OrderDetailBO::getId, Function.identity(), (a, b) -> a)); |
| 871 | 871 | ||
| 872 | + Map<Integer, OrderDetailBO> replaceAdjustDetailMap = orderOperationRecords.stream() | ||
| 873 | + .filter(e -> e.getType() == OrderOperationType.REPLACE_DISHES) | ||
| 874 | + .flatMap(e -> JsonUtil.readJsonAs(e.getAdjustOrderDetailJson(), new TypeReference<List<OrderDetailBO>>() { | ||
| 875 | + }).stream()) | ||
| 876 | + .collect(Collectors.toMap(OrderDetailBO::getId, Function.identity(), (a, b) -> a)); | ||
| 877 | + | ||
| 872 | for (SingleClientCustomerOrderDetailRpcResponse orderDetail : orderDetails) { | 878 | for (SingleClientCustomerOrderDetailRpcResponse orderDetail : orderDetails) { |
| 873 | // 1. 先处理加餐 | 879 | // 1. 先处理加餐 |
| 874 | if (addOriginalDetailMap.containsKey(orderDetail.getId()) | 880 | if (addOriginalDetailMap.containsKey(orderDetail.getId()) |
| ... | @@ -886,11 +892,12 @@ public class SettlementServiceImpl implements SettlementService { | ... | @@ -886,11 +892,12 @@ public class SettlementServiceImpl implements SettlementService { |
| 886 | if (replaceOriginalDetailMap.containsKey(orderDetail.getId()) | 892 | if (replaceOriginalDetailMap.containsKey(orderDetail.getId()) |
| 887 | && !Objects.equals(replaceOriginalDetailMap.get(orderDetail.getId()).getSkuId(), orderDetail.getSkuId())) { | 893 | && !Objects.equals(replaceOriginalDetailMap.get(orderDetail.getId()).getSkuId(), orderDetail.getSkuId())) { |
| 888 | final var orderDetailBO = replaceOriginalDetailMap.get(orderDetail.getId()); | 894 | final var orderDetailBO = replaceOriginalDetailMap.get(orderDetail.getId()); |
| 895 | + final var orderDetailAdjustBO = replaceAdjustDetailMap.get(orderDetail.getId()); | ||
| 889 | SettlementDTO.SettlementOrderDetail beforeChange = buildSettlementOrderDetail( | 896 | SettlementDTO.SettlementOrderDetail beforeChange = buildSettlementOrderDetail( |
| 890 | order, orderDetail.getMenuDetailId(), orderDetailBO.getSkuId(), orderDetailBO.getCount(), orderDetailBO.getPrice(), "换菜前", menuName, customerName, hisCustomerNo, menuDetailMap, mealMap, skuMap); | 897 | order, orderDetail.getMenuDetailId(), orderDetailBO.getSkuId(), orderDetailBO.getCount(), orderDetailBO.getPrice(), "换菜前", menuName, customerName, hisCustomerNo, menuDetailMap, mealMap, skuMap); |
| 891 | classifyOrders.add(beforeChange); | 898 | classifyOrders.add(beforeChange); |
| 892 | SettlementDTO.SettlementOrderDetail afterChange = buildSettlementOrderDetail( | 899 | SettlementDTO.SettlementOrderDetail afterChange = buildSettlementOrderDetail( |
| 893 | - order, orderDetail.getMenuDetailId(), orderDetail.getSkuId(), orderDetail.getCount(), orderDetail.getPrice(), "换菜后", menuName, customerName, hisCustomerNo, menuDetailMap, mealMap, skuMap); | 900 | + order, orderDetail.getMenuDetailId(), orderDetail.getSkuId(), orderDetail.getCount(), orderDetailAdjustBO.getPrice(), "换菜后", menuName, customerName, hisCustomerNo, menuDetailMap, mealMap, skuMap); |
| 894 | classifyOrders.add(afterChange); | 901 | classifyOrders.add(afterChange); |
| 895 | } | 902 | } |
| 896 | 903 | ... | ... |
-
Please register or login to post a comment