|
@@ -639,9 +639,11 @@ public class FlashDeliveryApplicationService {
|
|
|
QueryWrapper<FlashDeliveryOrder> query = riderOrdersQuery(riderId, riderVehicleType, selectedTab,
|
|
QueryWrapper<FlashDeliveryOrder> query = riderOrdersQuery(riderId, riderVehicleType, selectedTab,
|
|
|
effectiveLongitude, effectiveLatitude, true, acceptedPayTypes);
|
|
effectiveLongitude, effectiveLatitude, true, acceptedPayTypes);
|
|
|
IPage<FlashDeliveryOrder> orders = orderMapper.selectPage(page(pageNum, pageSize), query);
|
|
IPage<FlashDeliveryOrder> orders = orderMapper.selectPage(page(pageNum, pageSize), query);
|
|
|
|
|
+ Map<Long, List<FlashDeliveryOrderStop>> stopRows = stopRowsFor(orders.getRecords());
|
|
|
FlashDeliveryRiderOrderPageView result = new FlashDeliveryRiderOrderPageView();
|
|
FlashDeliveryRiderOrderPageView result = new FlashDeliveryRiderOrderPageView();
|
|
|
result.setRecords(orders.getRecords().stream()
|
|
result.setRecords(orders.getRecords().stream()
|
|
|
- .map(order -> riderOrderListView(riderId, order, effectiveLongitude, effectiveLatitude)).toList());
|
|
|
|
|
|
|
+ .map(order -> riderOrderListView(riderId, order, effectiveLongitude, effectiveLatitude,
|
|
|
|
|
+ stopRows.get(order.getId()))).toList());
|
|
|
result.setTotal(orders.getTotal());
|
|
result.setTotal(orders.getTotal());
|
|
|
result.setCurrent(orders.getCurrent());
|
|
result.setCurrent(orders.getCurrent());
|
|
|
result.setSize(orders.getSize());
|
|
result.setSize(orders.getSize());
|
|
@@ -1598,8 +1600,20 @@ public class FlashDeliveryApplicationService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/** 订单实体转骑手端任务卡片,可附带骑手到取件点的直线距离。 */
|
|
/** 订单实体转骑手端任务卡片,可附带骑手到取件点的直线距离。 */
|
|
|
|
|
+ /** 列表页一次 IN 批量取回 v2 多站点单的站点,避免逐单 N+1;单点单卡片不需要逐站展示。 */
|
|
|
|
|
+ private Map<Long, List<FlashDeliveryOrderStop>> stopRowsFor(List<FlashDeliveryOrder> records) {
|
|
|
|
|
+ List<Long> orderIds = records.stream()
|
|
|
|
|
+ .filter(order -> order.getDeliveryStopCount() != null)
|
|
|
|
|
+ .map(FlashDeliveryOrder::getId).toList();
|
|
|
|
|
+ if (orderIds.isEmpty()) return Map.of();
|
|
|
|
|
+ return stopMapper.selectList(new QueryWrapper<FlashDeliveryOrderStop>()
|
|
|
|
|
+ .in("order_id", orderIds).orderByAsc("stop_order", "id")).stream()
|
|
|
|
|
+ .collect(java.util.stream.Collectors.groupingBy(FlashDeliveryOrderStop::getOrderId));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private FlashDeliveryRiderOrderListView riderOrderListView(Long riderId, FlashDeliveryOrder order,
|
|
private FlashDeliveryRiderOrderListView riderOrderListView(Long riderId, FlashDeliveryOrder order,
|
|
|
- BigDecimal longitude, BigDecimal latitude) {
|
|
|
|
|
|
|
+ BigDecimal longitude, BigDecimal latitude,
|
|
|
|
|
+ List<FlashDeliveryOrderStop> stopRows) {
|
|
|
FlashDeliveryRiderOrderListView view = new FlashDeliveryRiderOrderListView();
|
|
FlashDeliveryRiderOrderListView view = new FlashDeliveryRiderOrderListView();
|
|
|
view.setId(order.getId());
|
|
view.setId(order.getId());
|
|
|
view.setOrderNo(order.getOrderNo());
|
|
view.setOrderNo(order.getOrderNo());
|
|
@@ -1639,6 +1653,10 @@ public class FlashDeliveryApplicationService {
|
|
|
view.setCreateTime(order.getCreateTime());
|
|
view.setCreateTime(order.getCreateTime());
|
|
|
// 备注仅对中单骑手本人可见;newTask 待抢卡片保持脱敏为空。
|
|
// 备注仅对中单骑手本人可见;newTask 待抢卡片保持脱敏为空。
|
|
|
view.setUserNote(Objects.equals(riderId, order.getRiderId()) ? order.getUserNote() : null);
|
|
view.setUserNote(Objects.equals(riderId, order.getRiderId()) ? order.getUserNote() : null);
|
|
|
|
|
+ // v2 多站点单卡片逐站展示取送地址与状态;与详情同口径脱敏联系人、电话、坐标和凭证。
|
|
|
|
|
+ if (order.getDeliveryStopCount() != null && stopRows != null && !stopRows.isEmpty()) {
|
|
|
|
|
+ view.setStops(stopViews(stopRows, false, List.of()));
|
|
|
|
|
+ }
|
|
|
return view;
|
|
return view;
|
|
|
}
|
|
}
|
|
|
|
|
|