opt:轨迹upsert剪枝

This commit is contained in:
李鹏军 2024-04-16 15:28:29 +08:00
parent 2b678c2eb4
commit ba5bf24931

View File

@ -39,10 +39,11 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
return; return;
} }
await HandleTrackAsync(@event); var canNextOrderIds = new List<int>();
await HandleTrackAsync(@event, canNextOrderIds);
// 根据订单关联关系异步向下刷(异步) // 根据订单关联关系异步向下刷(异步)
var linkedOrders = await _orderRepository.GetLinkedOrdersAsync(orderIds); var linkedOrders = await _orderRepository.GetLinkedOrdersAsync(canNextOrderIds.ToArray());
foreach (var order in @event.OrderIdentifiers) foreach (var order in @event.OrderIdentifiers)
{ {
// 理论上小包在这不会分组 // 理论上小包在这不会分组
@ -88,7 +89,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
} }
} }
private async Task HandleTrackAsync(TrackUpsertEvent @event) private async Task HandleTrackAsync(TrackUpsertEvent @event, List<int> canNextOrderIds)
{ {
var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray(); var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray();
var tracks = await _trackDetailsRepository.GetListAsync(orderIds, @event.TrackCode); var tracks = await _trackDetailsRepository.GetListAsync(orderIds, @event.TrackCode);
@ -101,8 +102,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
if (@event.IsAdd != null) if (@event.IsAdd != null)
{ {
if (track == null && !@event.IsAdd!.Value) return; // 不存在不让改 if (track == null && !@event.IsAdd!.Value) continue; // 不存在不让改
if (track != null && @event.IsAdd!.Value) return; // 存在不让创建 if (track != null && @event.IsAdd!.Value) continue; // 存在不让创建
} }
if (track == default) if (track == default)
@ -167,6 +168,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
}; };
await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent); await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent);
canNextOrderIds.Add(order.OrderId);
} }
var firstTrack = insertTracks.FirstOrDefault(); var firstTrack = insertTracks.FirstOrDefault();