From fef409a4ce18c366bd686b9c67f9befc513d1fdf Mon Sep 17 00:00:00 2001 From: zzh <1368735060@qq.com> Date: Mon, 26 Oct 2026 18:35:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=A0=E9=99=A4=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=8F=AA=E6=94=B9=E7=8A=B6=E6=80=81=EF=BC=8C=E5=B7=B2=E5=88=A0?= =?UTF-8?q?=E9=99=A4=20Tab=20=E5=8F=AF=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../Services/Orders/OrderService.cs | 7 +++++-- .../Orders/OrderRepository.cs | 21 ++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) 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)