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));