diff --git a/src/TrackCenter.Application/Services/TrackOrders/TrackOrderService.cs b/src/TrackCenter.Application/Services/TrackOrders/TrackOrderService.cs index cb2b2dc2..f9c05bb0 100644 --- a/src/TrackCenter.Application/Services/TrackOrders/TrackOrderService.cs +++ b/src/TrackCenter.Application/Services/TrackOrders/TrackOrderService.cs @@ -222,16 +222,17 @@ 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, IsShowHover = true, Remark = item.Remarks == null || item.Remarks == "--" ? "" : item.Remarks, - TrackTimeZone = $"GMT{(item.TrackTimeZone >= 0 ? "+" : "-")}{GetTimeZoneStr(item.TrackTimeZone)}", + TrackTimeZone = DateTimeHelper.ConvertFloatToTimeZone(item.TrackTimeZone), TrackTime = timeTick, TrackPlace = item.TrackPlace, EnContent = item.TrackEnContent, @@ -269,19 +270,6 @@ public class TrackOrderService : ApplicationServiceBase return (long) (time - sTime).TotalMilliseconds; } - private static string GetTimeZoneStr(float timeZone) - { - var time = timeZone.ToString().Split('.'); - if (time.Length > 1 && time[1] != "0") //如果时区有小数点 - { - return time[0] + ":30"; - } - else - { - return time[0] + ":00"; - } - } - /// /// 根据轨迹id删除单条轨迹 ///