更新批处理队列项获取方法,默认筛选状态为“全部”

This commit is contained in:
tian 2026-01-26 11:27:49 +08:00
parent c117e0d0c3
commit de55d7ea1b
6 changed files with 23 additions and 25 deletions

View File

@ -355,7 +355,7 @@ namespace NavisworksTransport.Core
/// 获取队列列表
/// </summary>
public async Task<List<BatchQueueItem>> GetQueueItemsAsync(
BatchQueueStatus? statusFilter = null,
BatchQueueStatus statusFilter = BatchQueueStatus.All,
int limit = 50,
int offset = 0)
{

View File

@ -46,6 +46,7 @@ namespace NavisworksTransport.Core.Models
/// </summary>
public enum BatchQueueStatus
{
All, // 全部(用于筛选)
Pending, // 等待执行
Running, // 正在执行
Completed, // 已完成

View File

@ -1696,7 +1696,7 @@ namespace NavisworksTransport
/// <summary>
/// 获取批处理队列项列表
/// </summary>
public async Task<List<BatchQueueItem>> GetBatchQueueItemsAsync(BatchQueueStatus? statusFilter = null, int limit = 50, int offset = 0)
public async Task<List<BatchQueueItem>> 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<string>();
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())

View File

@ -16,6 +16,8 @@ namespace NavisworksTransport.UI.WPF.Converters
{
switch (status)
{
case BatchQueueStatus.All:
return "全部";
case BatchQueueStatus.Pending:
return "待处理";
case BatchQueueStatus.Running:

View File

@ -11,9 +11,9 @@ namespace NavisworksTransport.UI.WPF.Converters
/// <summary>
/// 获取所有队列状态(包括"全部"选项)
/// </summary>
public static List<BatchQueueStatus?> AllStatuses => new List<BatchQueueStatus?>
public static List<BatchQueueStatus> AllStatuses => new List<BatchQueueStatus>
{
null, // 表示"全部"
BatchQueueStatus.All, // 表示"全部"
BatchQueueStatus.Pending,
BatchQueueStatus.Running,
BatchQueueStatus.Completed,

View File

@ -27,7 +27,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
private ObservableCollection<BatchQueueItem> _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
/// <summary>
/// 状态筛选器
/// </summary>
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));