diff --git a/src/Oms.Application/Services/Orders/OrderService.cs b/src/Oms.Application/Services/Orders/OrderService.cs index 9f6dd5a..b8d113a 100644 --- a/src/Oms.Application/Services/Orders/OrderService.cs +++ b/src/Oms.Application/Services/Orders/OrderService.cs @@ -108,7 +108,10 @@ public partial class OrderService : ApplicationService StringComparer.OrdinalIgnoreCase); var output = new OrderStatusCountsOutput { - Total = rows.Sum(x => x.Count), + // 「全部」不含已删除;已删除单独走 deleted Tab + Total = rows + .Where(x => !string.Equals(x.Status, OrderStatusCodes.Deleted, StringComparison.OrdinalIgnoreCase)) + .Sum(x => x.Count), Counts = counts, HandleCounts = handleCounts }; @@ -441,6 +444,7 @@ public partial class OrderService : ApplicationService throw new BusinessException("仅草稿或已预报订单可删除"); } + // 业务删除:只改 OrderStatus=deleted,不做 IsDeleted 软删,否则「已删除」Tab 因全局软删过滤永远查不到。 order.OrderStatus = OrderStatusCodes.Deleted; if (order.IsPaid > 0 && order.CustomerId.HasValue) { @@ -460,7 +464,6 @@ public partial class OrderService : ApplicationService } await OrderRepository.UpdateAsync(order); - await OrderRepository.DeleteAsync(order); } /// diff --git a/src/Oms.SqlSugarCore/Orders/OrderRepository.cs b/src/Oms.SqlSugarCore/Orders/OrderRepository.cs index 9819fbd..90288bc 100644 --- a/src/Oms.SqlSugarCore/Orders/OrderRepository.cs +++ b/src/Oms.SqlSugarCore/Orders/OrderRepository.cs @@ -48,8 +48,18 @@ public class OrderRepository : OmsSqlSugarRepository, IOrderRepository, I } var status = filter.Status?.Trim(); - if (!string.IsNullOrWhiteSpace(status) - && !string.Equals(status, "all", StringComparison.OrdinalIgnoreCase)) + var isDeletedTab = string.Equals(status, OrderStatusCodes.Deleted, StringComparison.OrdinalIgnoreCase); + if (isDeletedTab) + { + // 历史删除曾同时软删(IsDeleted=true),需清过滤才能在「已删除」看到 + query = query.ClearFilter().Where(x => x.OrderStatus == OrderStatusCodes.Deleted); + } + else if (string.Equals(status, "all", StringComparison.OrdinalIgnoreCase)) + { + // 列表「全部」不含已删除;status 为空时留给 status-counts 聚合(需含 deleted 桶) + query = query.Where(x => x.OrderStatus != OrderStatusCodes.Deleted); + } + else if (!string.IsNullOrWhiteSpace(status)) { query = query.Where(x => x.OrderStatus == status); } @@ -1352,7 +1362,12 @@ public class OrderRepository : OmsSqlSugarRepository, IOrderRepository, I CancellationToken cancellationToken = default) { var db = await GetDbContextAsync(cancellationToken); - var query = ApplyListFilter(db.Queryable(), filter); + // 含历史「状态=deleted 且已软删」的单据,保证已删除 Tab 角标可见 + var query = ApplyListFilter( + db.Queryable() + .ClearFilter() + .Where(x => !x.IsDeleted || x.OrderStatus == OrderStatusCodes.Deleted), + filter); return await query .GroupBy(x => x.OrderStatus)