Merge pull request 'fix: GetDetailTimeline 时区缺失时优先用 TrackTime,避免时间轴显示同一 CreateTime' (#6) from test into master
All checks were successful
Build and Deploy / deploy (push) Successful in 1m12s

Reviewed-on: #6
This commit is contained in:
zzh 2026-10-20 15:20:35 +08:00
commit 65368e7c16

View File

@ -222,16 +222,17 @@ public class TrackOrderService : ApplicationServiceBase
foreach (var item in trackDetails) foreach (var item in trackDetails)
{ {
//时间和时区任意一个为空则使用创建时间做为排序参照值 // 时区缺失(99999)时仍优先用真实发生时间 TrackTime;仅当 TrackTime 无效才回退 CreateTime。
var timeTick = ToUnixTimestamp(Math.Abs(item.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1 // 旧逻辑在时区缺失时一律用 CreateTime,同批写入会导致时间轴全部显示成同一时刻。
? item.CreateTime var invalidTrackTime = item.TrackTime <= GlobalConst.MinDateTime;
: item.TrackTime); var timeSource = invalidTrackTime ? item.CreateTime : item.TrackTime;
var timeTick = ToUnixTimestamp(timeSource);
res.Add(new GetDetailTimelineOutput() res.Add(new GetDetailTimelineOutput()
{ {
IsHighlight = false, IsHighlight = false,
IsShowHover = true, IsShowHover = true,
Remark = item.Remarks == null || item.Remarks == "--" ? "" : item.Remarks, Remark = item.Remarks == null || item.Remarks == "--" ? "" : item.Remarks,
TrackTimeZone = $"GMT{(item.TrackTimeZone >= 0 ? "+" : "-")}{GetTimeZoneStr(item.TrackTimeZone)}", TrackTimeZone = DateTimeHelper.ConvertFloatToTimeZone(item.TrackTimeZone),
TrackTime = timeTick, TrackTime = timeTick,
TrackPlace = item.TrackPlace, TrackPlace = item.TrackPlace,
EnContent = item.TrackEnContent, EnContent = item.TrackEnContent,
@ -269,19 +270,6 @@ public class TrackOrderService : ApplicationServiceBase
return (long) (time - sTime).TotalMilliseconds; 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";
}
}
/// <summary> /// <summary>
/// 根据轨迹id删除单条轨迹 /// 根据轨迹id删除单条轨迹
/// </summary> /// </summary>