diff --git a/src/TrackCenter.Application/Services/TrackOrders/TrackOrderService.cs b/src/TrackCenter.Application/Services/TrackOrders/TrackOrderService.cs index 31f9e43c..f9c05bb0 100644 --- a/src/TrackCenter.Application/Services/TrackOrders/TrackOrderService.cs +++ b/src/TrackCenter.Application/Services/TrackOrders/TrackOrderService.cs @@ -222,10 +222,11 @@ public class TrackOrderService : ApplicationServiceBase foreach (var item in trackDetails) { - //时间和时区任意一个为空则使用创建时间做为排序参照值 - var timeTick = ToUnixTimestamp(Math.Abs(item.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1 - ? item.CreateTime - : item.TrackTime); + // 时区缺失(99999)时仍优先用真实发生时间 TrackTime;仅当 TrackTime 无效才回退 CreateTime。 + // 旧逻辑在时区缺失时一律用 CreateTime,同批写入会导致时间轴全部显示成同一时刻。 + var invalidTrackTime = item.TrackTime <= GlobalConst.MinDateTime; + var timeSource = invalidTrackTime ? item.CreateTime : item.TrackTime; + var timeTick = ToUnixTimestamp(timeSource); res.Add(new GetDetailTimelineOutput() { IsHighlight = false,