From de55d7ea1bd41a72b48dca86811a1335e9279eb8 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Mon, 26 Jan 2026 11:27:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=89=B9=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=98=9F=E5=88=97=E9=A1=B9=E8=8E=B7=E5=8F=96=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E9=BB=98=E8=AE=A4=E7=AD=9B=E9=80=89=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E4=B8=BA=E2=80=9C=E5=85=A8=E9=83=A8=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Core/BatchQueueManager.cs | 2 +- src/Core/Models/BatchQueueItem.cs | 1 + src/Core/PathDatabase.cs | 21 ++++++++++--------- .../Converters/BatchQueueStatusConverter.cs | 2 ++ .../WPF/Converters/BatchQueueStatusHelper.cs | 4 ++-- .../BatchTaskManagementViewModel.cs | 18 ++++++---------- 6 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/Core/BatchQueueManager.cs b/src/Core/BatchQueueManager.cs index a0b8279..75cb028 100644 --- a/src/Core/BatchQueueManager.cs +++ b/src/Core/BatchQueueManager.cs @@ -355,7 +355,7 @@ namespace NavisworksTransport.Core /// 获取队列列表 /// public async Task> GetQueueItemsAsync( - BatchQueueStatus? statusFilter = null, + BatchQueueStatus statusFilter = BatchQueueStatus.All, int limit = 50, int offset = 0) { diff --git a/src/Core/Models/BatchQueueItem.cs b/src/Core/Models/BatchQueueItem.cs index 4cffe99..3b4473b 100644 --- a/src/Core/Models/BatchQueueItem.cs +++ b/src/Core/Models/BatchQueueItem.cs @@ -46,6 +46,7 @@ namespace NavisworksTransport.Core.Models /// public enum BatchQueueStatus { + All, // 全部(用于筛选) Pending, // 等待执行 Running, // 正在执行 Completed, // 已完成 diff --git a/src/Core/PathDatabase.cs b/src/Core/PathDatabase.cs index cdcfdc3..1ecc2ed 100644 --- a/src/Core/PathDatabase.cs +++ b/src/Core/PathDatabase.cs @@ -1696,7 +1696,7 @@ namespace NavisworksTransport /// /// 获取批处理队列项列表 /// - public async Task> GetBatchQueueItemsAsync(BatchQueueStatus? statusFilter = null, int limit = 50, int offset = 0) + public async Task> GetBatchQueueItemsAsync(BatchQueueStatus statusFilter = BatchQueueStatus.All, int limit = 50, int offset = 0) { return await Task.Run(() => { @@ -1711,34 +1711,35 @@ namespace NavisworksTransport ClashDetectiveTestName, CollisionCount FROM BatchQueueItems"; var conditions = new List(); - - if (statusFilter.HasValue) + + // 只有当 statusFilter 不是 All 时才添加筛选条件 + if (statusFilter != BatchQueueStatus.All) { conditions.Add("Status = @Status"); - cmd.Parameters.AddWithValue("@Status", statusFilter.Value.ToString()); + cmd.Parameters.AddWithValue("@Status", statusFilter.ToString()); } - + if (conditions.Count > 0) { sql += " WHERE " + string.Join(" AND ", conditions); } - + sql += " ORDER BY CreatedTime DESC"; - + if (limit > 0) { sql += " LIMIT @Limit"; cmd.Parameters.AddWithValue("@Limit", limit); } - + if (offset > 0) { sql += " OFFSET @Offset"; cmd.Parameters.AddWithValue("@Offset", offset); } - + cmd.CommandText = sql; - + using (var reader = cmd.ExecuteReader()) { while (reader.Read()) diff --git a/src/UI/WPF/Converters/BatchQueueStatusConverter.cs b/src/UI/WPF/Converters/BatchQueueStatusConverter.cs index 7b84b46..1a7ce00 100644 --- a/src/UI/WPF/Converters/BatchQueueStatusConverter.cs +++ b/src/UI/WPF/Converters/BatchQueueStatusConverter.cs @@ -16,6 +16,8 @@ namespace NavisworksTransport.UI.WPF.Converters { switch (status) { + case BatchQueueStatus.All: + return "全部"; case BatchQueueStatus.Pending: return "待处理"; case BatchQueueStatus.Running: diff --git a/src/UI/WPF/Converters/BatchQueueStatusHelper.cs b/src/UI/WPF/Converters/BatchQueueStatusHelper.cs index d20e085..5f72a8e 100644 --- a/src/UI/WPF/Converters/BatchQueueStatusHelper.cs +++ b/src/UI/WPF/Converters/BatchQueueStatusHelper.cs @@ -11,9 +11,9 @@ namespace NavisworksTransport.UI.WPF.Converters /// /// 获取所有队列状态(包括"全部"选项) /// - public static List AllStatuses => new List + public static List AllStatuses => new List { - null, // 表示"全部" + BatchQueueStatus.All, // 表示"全部" BatchQueueStatus.Pending, BatchQueueStatus.Running, BatchQueueStatus.Completed, diff --git a/src/UI/WPF/ViewModels/BatchTaskManagementViewModel.cs b/src/UI/WPF/ViewModels/BatchTaskManagementViewModel.cs index 50dc6bb..fed7a75 100644 --- a/src/UI/WPF/ViewModels/BatchTaskManagementViewModel.cs +++ b/src/UI/WPF/ViewModels/BatchTaskManagementViewModel.cs @@ -27,7 +27,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels private ObservableCollection _queueItems; private BatchQueueItem _selectedItem; - private BatchQueueStatus? _statusFilter; + private BatchQueueStatus _statusFilter = BatchQueueStatus.All; private string _progressText; private bool _isExecuting; @@ -56,7 +56,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels /// /// 状态筛选器 /// - public BatchQueueStatus? StatusFilter + public BatchQueueStatus StatusFilter { get => _statusFilter; set @@ -214,18 +214,12 @@ namespace NavisworksTransport.UI.WPF.ViewModels } var items = await database.GetBatchQueueItemsAsync(statusFilter: StatusFilter, limit: 1000); - - // 应用筛选 - if (StatusFilter.HasValue) - { - items = items.Where(item => item.Status == StatusFilter.Value).ToList(); - } - + // 按创建时间倒序 items = items.OrderByDescending(item => item.CreatedTime).ToList(); - + LogManager.Info($"[BatchQueueManagement] 加载队列列表完成,共 {items.Count} 项"); - + await _uiStateManager.ExecuteUIUpdateAsync(() => { QueueItems.Clear(); @@ -233,7 +227,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels { QueueItems.Add(item); } - + // 通知属性变化以更新按钮状态 OnPropertyChanged(nameof(HasPendingItems)); OnPropertyChanged(nameof(CanExecuteQueue));