diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs index 4e90f379..ce81abd6 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs @@ -104,6 +104,35 @@ public partial class TrackService : ApplicationService, ITrackService .Where(x => x.TrackTime == input.TrackTime) .ToList(); + //当为更新操作时发现更新的数目为0进行重试操作 + if (!input.IsAdd && tracks.Count == 0) + { + var curRetryCount = 0; + var success = false; + while (!success && curRetryCount < GlobalConst.MaxUpdateTrackRetryCount) + { + try + { + tracks = (await _trackDetailsEsRepository.GetListAsync(new[] { order.Id }, input.TrackCode, true)) + .Where(x => x.TrackTime == input.TrackTime) + .ToList(); + if (tracks.Count > 0) + success = true; + await Task.Delay(300); + } + finally + { + curRetryCount++; + } + } + + if (tracks.Count == 0) + { + throw new BusinessException(message: $"订单:{input.OrderNo},轨迹代码:{input.TrackCode}没有要更新的记录"); + } + } + + //更新轨迹,同一时间存在多条轨迹记录,理由:不清晰到底要修改哪一条或是全部修改 if (!input.IsAdd && tracks.Count > 1) { @@ -366,6 +395,34 @@ public partial class TrackService : ApplicationService, ITrackService .Where(x => x.TrackTime == input.TrackTime) .ToList(); + //当为更新操作时发现更新的数目为0进行重试操作 + if (!input.IsAdd && tracks.Count == 0) + { + var curRetryCount = 0; + var success = false; + while (!success && curRetryCount < GlobalConst.MaxUpdateTrackRetryCount) + { + try + { + tracks = (await _trackDetailsEsRepository.GetListAsync(new[] { order.Id }, input.TrackCode, true)) + .Where(x => x.TrackTime == input.TrackTime) + .ToList(); + if (tracks.Count > 0) + success = true; + await Task.Delay(300); + } + finally + { + curRetryCount++; + } + } + + if (tracks.Count == 0) + { + throw new BusinessException(message: $"订单:[{string.Join(",", input.OrderNos)}],轨迹代码:{input.TrackCode}没有要更新的记录"); + } + } + //更新轨迹,同一时间存在多条轨迹记录,理由:不清晰到底要修改哪一条或是全部修改 if (!input.IsAdd && tracks.Count > 1) {