fix: 修复根据EsId删除更新当地主表异常

This commit is contained in:
云龙 王 2024-12-04 10:12:11 +08:00
parent ac5028587f
commit ae011fb8fb

View File

@ -175,6 +175,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
{ {
List<int> orderIds; List<int> orderIds;
List<TrackDetailsIndex> tracks; List<TrackDetailsIndex> tracks;
List<TrackDetailsIndex> deleteTracks;
if (@event.EsIds != null && @event.EsIds.Any()) //根据明确的esid进行删除 if (@event.EsIds != null && @event.EsIds.Any()) //根据明确的esid进行删除
{ {
tracks = await _trackDetailsEsRepository.GetDataByIds(@event.EsIds); tracks = await _trackDetailsEsRepository.GetDataByIds(@event.EsIds);
@ -196,6 +197,8 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
await _trackDetailsEsRepository.DeleteTrackByIdAsync(item.Id, item.IndexName); await _trackDetailsEsRepository.DeleteTrackByIdAsync(item.Id, item.IndexName);
} }
//已经删除的轨迹
deleteTracks = tracks;
//清理已经删除过的esid //清理已经删除过的esid
@event.EsIds = Array.Empty<string>(); @event.EsIds = Array.Empty<string>();
} }
@ -207,7 +210,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
//构建标识符集合 //构建标识符集合
var ids = @event.TrackIdentifiers.Select(x => $"{x.TrackCode}{x.TrackTime}").ToList(); var ids = @event.TrackIdentifiers.Select(x => $"{x.TrackCode}{x.TrackTime}").ToList();
//根据标识符选出要删除的轨迹明细 //根据标识符选出要删除的轨迹明细
var deleteTracks = tracks.Where(x => ids.Contains($"{x.TrackCode}{x.TrackTime}")).ToList(); deleteTracks = tracks.Where(x => ids.Contains($"{x.TrackCode}{x.TrackTime}")).ToList();
if (deleteTracks.Count == 0) return deleteTracks; if (deleteTracks.Count == 0) return deleteTracks;
@ -218,10 +221,10 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
//从被删除轨迹寻找订单id,稍后会更新订单主表 //从被删除轨迹寻找订单id,稍后会更新订单主表
orderIds = deleteTracks.Select(m => m.OrderId).Distinct().ToList(); orderIds = deleteTracks.Select(m => m.OrderId).Distinct().ToList();
//排除掉已经删除的轨迹
tracks = tracks.Except(deleteTracks).ToList();
} }
//排除掉已经删除的轨迹
tracks = tracks.Except(deleteTracks).ToList();
var orders = await _orderRepository.GetListAsync(x => orderIds.Contains(x.Id), var orders = await _orderRepository.GetListAsync(x => orderIds.Contains(x.Id),
x => new OrderEntity x => new OrderEntity
@ -240,7 +243,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
foreach (var order in orders) foreach (var order in orders)
{ {
//找到最新的轨迹数据 //找到最新的轨迹数据
var track = tracks?.OrderByDescending(x=>x.TrackTime) var track = tracks?.OrderByDescending(x => x.TrackTime)
.FirstOrDefault(x => x.OrderId == order.Id); .FirstOrDefault(x => x.OrderId == order.Id);
// 删除全部轨迹导致的重置行为 // 删除全部轨迹导致的重置行为
@ -271,7 +274,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
OrderId = order.Id, OrderId = order.Id,
OrderNo = order.OrderNo, OrderNo = order.OrderNo,
OptionType = OrderOperationType.删除轨迹.ToString(), OptionType = OrderOperationType.删除轨迹.ToString(),
Content = tracks?.Where(m => m.OrderId == order.Id).ToList().ToJson(), Content = deleteTracks?.Where(m => m.OrderId == order.Id).ToList().ToJson(),
CreateUserId = @event.OperationManId, CreateUserId = @event.OperationManId,
CreateUserName = @event.OperationMan ?? "", CreateUserName = @event.OperationMan ?? "",
CreateTime = DateTime.Now CreateTime = DateTime.Now
@ -290,6 +293,6 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
x.DestinationTimeZone x.DestinationTimeZone
}); });
return tracks; return deleteTracks;
} }
} }