option:暂时容忍FBA修改时区只通过时间来匹配轨迹
This commit is contained in:
parent
1d854ba16d
commit
be4723569f
@ -295,14 +295,29 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
||||
// tips:如果没传时区则使用+8兜底进行过滤
|
||||
var timezone = Math.Abs(@event.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 0.01f ? 8.0f : @event.TrackTimeZone;
|
||||
|
||||
// 根据时间过滤
|
||||
existTracks = @event.IsAdd
|
||||
? existTracks.Where(x => x.GetUtc0TrackTime() == (@event.NewTrackTime ?? @event.TrackTime).Subtract(TimeSpan.FromHours(timezone))).ToList()
|
||||
: existTracks.Where(x =>
|
||||
x.GetUtc0TrackTime() == @event.TrackTime.Subtract(TimeSpan.FromHours(timezone))
|
||||
// 修改了时间,要校验修改后的时间是否存在
|
||||
|| (@event.NewTrackTime != null && x.GetUtc0TrackTime() == @event.NewTrackTime.Value.Subtract(TimeSpan.FromHours(timezone)))
|
||||
).ToList();
|
||||
// todo-remove:为了照顾FBA老逻辑,暂时特殊处理一下
|
||||
var trackFirst = tracks.First();
|
||||
if (trackFirst.SubSystemId == 9517)
|
||||
{
|
||||
existTracks = @event.IsAdd
|
||||
? tracks.Where(x => x.TrackTime == (@event.NewTrackTime ?? @event.TrackTime)).ToList()
|
||||
: tracks.Where(x =>
|
||||
x.TrackTime == @event.TrackTime
|
||||
// 修改了时间,要校验修改后的时间是否存在
|
||||
|| (@event.NewTrackTime != null && x.TrackTime == @event.NewTrackTime)
|
||||
).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
// 根据时间过滤
|
||||
existTracks = @event.IsAdd
|
||||
? existTracks.Where(x => x.GetUtc0TrackTime() == (@event.NewTrackTime ?? @event.TrackTime).Subtract(TimeSpan.FromHours(timezone))).ToList()
|
||||
: existTracks.Where(x =>
|
||||
x.GetUtc0TrackTime() == @event.TrackTime.Subtract(TimeSpan.FromHours(timezone))
|
||||
// 修改了时间,要校验修改后的时间是否存在
|
||||
|| (@event.NewTrackTime != null && x.GetUtc0TrackTime() == @event.NewTrackTime.Value.Subtract(TimeSpan.FromHours(timezone)))
|
||||
).ToList();
|
||||
}
|
||||
|
||||
// 根据扩展信息过滤
|
||||
existTracks = @event.IsAdd
|
||||
|
||||
@ -620,13 +620,32 @@ public partial class TrackService : ApplicationService, ITrackService
|
||||
// 如果不允许重复,则直接返回
|
||||
if (!isRepeatable) return tracks;
|
||||
|
||||
tracks = isAdd
|
||||
? tracks.Where(x => x.GetUtc0TrackTime() == (newTrackTime ?? trackTime).Subtract(TimeSpan.FromHours(trackTimezone))).ToList()
|
||||
: tracks.Where(x =>
|
||||
x.GetUtc0TrackTime() == trackTime.Subtract(TimeSpan.FromHours(trackTimezone))
|
||||
// 修改了时间,要校验修改后的时间是否存在
|
||||
|| (newTrackTime != null && x.GetUtc0TrackTime() == newTrackTime.Value.Subtract(TimeSpan.FromHours(trackTimezone)))
|
||||
).ToList();
|
||||
// 没有任何轨迹,也直接返回
|
||||
if (tracks.Count == 0)
|
||||
return tracks;
|
||||
|
||||
// todo-remove:为了照顾FBA老逻辑,暂时特殊处理一下
|
||||
var trackFirst = tracks.First();
|
||||
if (trackFirst.SubSystemId == 9517)
|
||||
{
|
||||
tracks = isAdd
|
||||
? tracks.Where(x => x.TrackTime == (newTrackTime ?? trackTime)).ToList()
|
||||
: tracks.Where(x =>
|
||||
x.TrackTime == trackTime
|
||||
// 修改了时间,要校验修改后的时间是否存在
|
||||
|| (newTrackTime != null && x.TrackTime == newTrackTime)
|
||||
).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
tracks = isAdd
|
||||
? tracks.Where(x => x.GetUtc0TrackTime() == (newTrackTime ?? trackTime).Subtract(TimeSpan.FromHours(trackTimezone))).ToList()
|
||||
: tracks.Where(x =>
|
||||
x.GetUtc0TrackTime() == trackTime.Subtract(TimeSpan.FromHours(trackTimezone))
|
||||
// 修改了时间,要校验修改后的时间是否存在
|
||||
|| (newTrackTime != null && x.GetUtc0TrackTime() == newTrackTime.Value.Subtract(TimeSpan.FromHours(trackTimezone)))
|
||||
).ToList();
|
||||
}
|
||||
|
||||
return isAdd
|
||||
? tracks.Where(x => x.Extra == (newExtra ?? extra)).ToList()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user