diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs index 3d9885fd..e9db1cfa 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs @@ -178,27 +178,28 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe List deleteTracks; if (@event.EsIds != null && @event.EsIds.Any()) //根据明确的esid进行删除 { - tracks = await _trackDetailsEsRepository.GetDataByIds(@event.EsIds); - orderIds = tracks.Select(m => m.OrderId).Distinct().ToList(); + deleteTracks = await _trackDetailsEsRepository.GetDataByIds(@event.EsIds); + orderIds = deleteTracks.Select(m => m.OrderId).Distinct().ToList(); @event.OrderIds = orderIds.ToArray(); - @event.TrackIdentifiers = tracks.Select(x => new TrackIdentifierDto + @event.TrackIdentifiers = deleteTracks.Select(x => new TrackIdentifierDto { TrackCode = x.TrackCode, TrackTime = x.TrackTime }).ToList(); // 外部api获取的轨迹不允许删除 - if (tracks.Any(m => m.Source == TrackSourceEnum.ExternalServiceProvide.GetHashCode())) - return tracks; + if (deleteTracks.Any(m => m.Source == TrackSourceEnum.ExternalServiceProvide.GetHashCode())) + return deleteTracks; + + //查出订单下的所有轨迹,以供后面回退使用 + tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds); // 删除轨迹 - foreach (var item in tracks) + foreach (var item in deleteTracks) { await _trackDetailsEsRepository.DeleteTrackByIdAsync(item.Id, item.IndexName); } - //已经删除的轨迹 - deleteTracks = tracks; //清理已经删除过的esid @event.EsIds = Array.Empty(); } @@ -208,9 +209,9 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds); //构建标识符集合 - var ids = @event.TrackIdentifiers.Select(x => $"{x.TrackCode}{x.TrackTime}").ToList(); + var ids = @event.TrackIdentifiers.Select(x => $"{x.TrackCode}{x.TrackTime:G}").ToList(); //根据标识符选出要删除的轨迹明细 - deleteTracks = tracks.Where(x => ids.Contains($"{x.TrackCode}{x.TrackTime}")).ToList(); + deleteTracks = tracks.Where(x => ids.Contains($"{x.TrackCode}{x.TrackTime:G}")).ToList(); if (deleteTracks.Count == 0) return deleteTracks;