fix: 修复通过EsId删除轨迹订单主表回退更新失败

This commit is contained in:
云龙 王 2024-12-04 17:08:59 +08:00
parent ae011fb8fb
commit 42afc3d5a1

View File

@ -178,27 +178,28 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
List<TrackDetailsIndex> deleteTracks; 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); deleteTracks = await _trackDetailsEsRepository.GetDataByIds(@event.EsIds);
orderIds = tracks.Select(m => m.OrderId).Distinct().ToList(); orderIds = deleteTracks.Select(m => m.OrderId).Distinct().ToList();
@event.OrderIds = orderIds.ToArray(); @event.OrderIds = orderIds.ToArray();
@event.TrackIdentifiers = tracks.Select(x => new TrackIdentifierDto @event.TrackIdentifiers = deleteTracks.Select(x => new TrackIdentifierDto
{ {
TrackCode = x.TrackCode, TrackCode = x.TrackCode,
TrackTime = x.TrackTime TrackTime = x.TrackTime
}).ToList(); }).ToList();
// 外部api获取的轨迹不允许删除 // 外部api获取的轨迹不允许删除
if (tracks.Any(m => m.Source == TrackSourceEnum.ExternalServiceProvide.GetHashCode())) if (deleteTracks.Any(m => m.Source == TrackSourceEnum.ExternalServiceProvide.GetHashCode()))
return tracks; 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); await _trackDetailsEsRepository.DeleteTrackByIdAsync(item.Id, item.IndexName);
} }
//已经删除的轨迹
deleteTracks = tracks;
//清理已经删除过的esid //清理已经删除过的esid
@event.EsIds = Array.Empty<string>(); @event.EsIds = Array.Empty<string>();
} }
@ -208,9 +209,9 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds); 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; if (deleteTracks.Count == 0) return deleteTracks;