From 1bf1116a788cbc53797c084eaca320ca8ca16562 Mon Sep 17 00:00:00 2001 From: denglihong2007 <2639367181@qq.com> Date: Fri, 14 Mar 2025 00:40:29 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E6=9D=A1?= =?UTF-8?q?=E7=9B=AE=E6=98=BE=E7=A4=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CRSim/ViewModels/Windows/ScreenViewModel.cs | 28 +++++++++++++---- .../Stations/Ankang/ExitScreenViewModel.cs | 31 +++++++++++++++++++ .../ChengduMetro/PlatformScreenViewModel.cs | 4 +-- .../Hanzhong/PlatformScreenViewModel.cs | 19 +++++++++++- .../Tianjin/PlatformScreenViewModel.cs | 19 +++++++++++- 5 files changed, 91 insertions(+), 10 deletions(-) diff --git a/CRSim/ViewModels/Windows/ScreenViewModel.cs b/CRSim/ViewModels/Windows/ScreenViewModel.cs index 7a75270..0039243 100644 --- a/CRSim/ViewModels/Windows/ScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/ScreenViewModel.cs @@ -44,8 +44,24 @@ namespace CRSim.ViewModels { if (CurrentPageIndex==0) { - List itemsToRemove = [.. TrainInfo.Where(info => (info.DepartureTime??info.ArrivalTime).Value.Subtract(_settings.StopDisplayUntilDepartureDuration) < _timeService.GetDateTimeNow())]; - + List itemsToRemove = []; + foreach(TrainInfo trainInfo in TrainInfo) + { + if (trainInfo.DepartureTime == null) + { + if (trainInfo.ArrivalTime.Value.Add(_settings.StopDisplayFromArrivalDuration) < _timeService.GetDateTimeNow()) + { + itemsToRemove.Add(trainInfo); + } + } + else + { + if (trainInfo.DepartureTime.Value.Subtract(_settings.StopDisplayUntilDepartureDuration) < _timeService.GetDateTimeNow()) + { + itemsToRemove.Add(trainInfo); + } + } + } foreach (var item in itemsToRemove) { TrainInfo.Remove(item); @@ -81,10 +97,10 @@ namespace CRSim.ViewModels TrainNumber = trainNumber.Number, Terminal = trainNumber.Terminal, Origin = trainNumber.Origin, - ArrivalTime = trainNumber.ArrivalTime == null ? null : trainNumber.ArrivalTime, - DepartureTime = trainNumber.DepartureTime == null ? null : trainNumber.DepartureTime, + ArrivalTime = trainNumber.ArrivalTime == null ? null : (trainNumber.ArrivalTime.Value > _timeService.GetDateTimeNow() ? trainNumber.ArrivalTime.Value : trainNumber.ArrivalTime.Value.AddDays(1)), + DepartureTime = trainNumber.DepartureTime == null ? null : (trainNumber.DepartureTime.Value > _timeService.GetDateTimeNow() ? trainNumber.DepartureTime.Value : trainNumber.DepartureTime.Value.AddDays(1)), TicketChecks = trainNumber.TicketChecks, - WaitingArea = station.WaitingAreas.Where(x => x.TicketChecks.Intersect(trainNumber.TicketChecks).ToList().Count!=0).FirstOrDefault().Name, + WaitingArea = trainNumber.StationType==StationType.Arrival ? "" : station.WaitingAreas.Where(x => x.TicketChecks.Intersect(trainNumber.TicketChecks).ToList().Count!=0).FirstOrDefault().Name, Platform = trainNumber.Platform, Length =trainNumber.Length, Landmark = trainNumber.Landmark, @@ -92,7 +108,7 @@ namespace CRSim.ViewModels }); } } - TrainInfo = [.. TrainInfo.OrderBy(x => x.DepartureTime)]; + TrainInfo = [.. TrainInfo.OrderBy(x => x.DepartureTime??x.ArrivalTime)]; RefreshData(null, null); _dataLoaded.SetResult(true); } diff --git a/CRSim/ViewModels/Windows/Stations/Ankang/ExitScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Ankang/ExitScreenViewModel.cs index c10fd74..61b7399 100644 --- a/CRSim/ViewModels/Windows/Stations/Ankang/ExitScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/Ankang/ExitScreenViewModel.cs @@ -2,11 +2,13 @@ { public class ExitScreenViewModel : ScreenViewModel { + private ITimeService _timeService; public ObservableCollection LeftScreen { get; private set; } = []; public ObservableCollection RightScreen { get; private set; } = []; public ExitScreenViewModel(ITimeService timeService, ISettingsService settingsService) : base(timeService, settingsService) { + _timeService = timeService; Text = $"西安局集团公司推出西铁行APP站车服务产品,欢迎体验使用。"; ItemsPerPage = 7; PageCount = 1; @@ -51,5 +53,34 @@ CurrentPageIndex = CurrentPageIndex + 1 >= Math.Min(_settings.MaxPages, pageCount) ? 0 : CurrentPageIndex + 1; }); } + public override void RefreshData(object? sender, EventArgs e) + { + if (CurrentPageIndex == 0) + { + List itemsToRemove = []; + foreach (TrainInfo trainInfo in TrainInfo) + { + if (trainInfo.DepartureTime == null) + { + if (trainInfo.ArrivalTime.Value.Add(_settings.StopDisplayFromArrivalDuration) < _timeService.GetDateTimeNow()) + { + itemsToRemove.Add(trainInfo); + } + } + else + { + if (trainInfo.DepartureTime.Value < _timeService.GetDateTimeNow()) + { + itemsToRemove.Add(trainInfo); + } + } + } + foreach (var item in itemsToRemove) + { + TrainInfo.Remove(item); + } + } + } + } } diff --git a/CRSim/ViewModels/Windows/Stations/ChengduMetro/PlatformScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/ChengduMetro/PlatformScreenViewModel.cs index a83c2c4..b3e73c8 100644 --- a/CRSim/ViewModels/Windows/Stations/ChengduMetro/PlatformScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/ChengduMetro/PlatformScreenViewModel.cs @@ -28,8 +28,8 @@ { TrainNumber = trainNumber.Number, Terminal = trainNumber.Terminal, - ArrivalTime = trainNumber.ArrivalTime == null ? null : trainNumber.DepartureTime.Value < _timeService.GetDateTimeNow() ? trainNumber.ArrivalTime.Value.AddDays(1) : trainNumber.ArrivalTime.Value, - DepartureTime = trainNumber.DepartureTime.Value < _timeService.GetDateTimeNow() ? trainNumber.DepartureTime.Value.AddDays(1) : trainNumber.DepartureTime.Value, + ArrivalTime = trainNumber.ArrivalTime == null ? null : (trainNumber.ArrivalTime.Value > _timeService.GetDateTimeNow() ? trainNumber.ArrivalTime.Value : trainNumber.ArrivalTime.Value.AddDays(1)), + DepartureTime = trainNumber.DepartureTime == null ? null : (trainNumber.DepartureTime.Value > _timeService.GetDateTimeNow() ? trainNumber.DepartureTime.Value : trainNumber.DepartureTime.Value.AddDays(1)), State = TimeSpan.Zero }); } diff --git a/CRSim/ViewModels/Windows/Stations/Hanzhong/PlatformScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Hanzhong/PlatformScreenViewModel.cs index 49e97b0..1e68027 100644 --- a/CRSim/ViewModels/Windows/Stations/Hanzhong/PlatformScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/Hanzhong/PlatformScreenViewModel.cs @@ -30,7 +30,24 @@ { if (CurrentPageIndex == 0) { - List itemsToRemove = [.. TrainInfo.Where(info => info.DepartureTime < _timeService.GetDateTimeNow())]; + List itemsToRemove = []; + foreach (TrainInfo trainInfo in TrainInfo) + { + if (trainInfo.DepartureTime == null) + { + if (trainInfo.ArrivalTime.Value.Add(_settings.StopDisplayFromArrivalDuration) < _timeService.GetDateTimeNow()) + { + itemsToRemove.Add(trainInfo); + } + } + else + { + if (trainInfo.DepartureTime.Value < _timeService.GetDateTimeNow()) + { + itemsToRemove.Add(trainInfo); + } + } + } foreach (var item in itemsToRemove) { TrainInfo.Remove(item); diff --git a/CRSim/ViewModels/Windows/Stations/Tianjin/PlatformScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Tianjin/PlatformScreenViewModel.cs index 19958ca..4026431 100644 --- a/CRSim/ViewModels/Windows/Stations/Tianjin/PlatformScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/Tianjin/PlatformScreenViewModel.cs @@ -30,7 +30,24 @@ { if (CurrentPageIndex == 0) { - List itemsToRemove = [.. TrainInfo.Where(info => info.DepartureTime < _timeService.GetDateTimeNow())]; + List itemsToRemove = []; + foreach (TrainInfo trainInfo in TrainInfo) + { + if (trainInfo.DepartureTime == null) + { + if (trainInfo.ArrivalTime.Value.Add(_settings.StopDisplayFromArrivalDuration) < _timeService.GetDateTimeNow()) + { + itemsToRemove.Add(trainInfo); + } + } + else + { + if (trainInfo.DepartureTime.Value < _timeService.GetDateTimeNow()) + { + itemsToRemove.Add(trainInfo); + } + } + } foreach (var item in itemsToRemove) { TrainInfo.Remove(item);