Merge pull request 'fix: 应收应付「仅当前生效阶段」列表金额为 0' (#9) from test into master
All checks were successful
Build and Deploy / deploy (push) Successful in 1m45s

Reviewed-on: #9
This commit is contained in:
zzh 2026-10-15 20:13:36 +08:00
commit d6da655dae

View File

@ -1215,12 +1215,14 @@ public class OrderRepository : OmsSqlSugarRepository<Order>, IOrderRepository, I
return feeQuery; return feeQuery;
} }
// SqlSugar:在同一 ISugarQueryable 上 Select 后再 Where/ToPageList,会沿用投影列,
// 导致 Amount/Currency 等未选字段落成默认值(金额全 0、币种空)。候选查询与最终查询拆开。
var candidates = await feeQuery var candidates = await feeQuery
.Select(f => new { f.Id, f.OrderId, f.Type, f.CostItem, f.ChargingStage }) .Select(f => new { f.Id, f.OrderId, f.Type, f.CostItem, f.ChargingStage })
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
if (candidates.Count == 0) if (candidates.Count == 0)
{ {
return feeQuery.Where(_ => false); return db.Queryable<OrderFee>().Where(_ => false);
} }
var winningIds = candidates var winningIds = candidates
@ -1232,7 +1234,9 @@ public class OrderRepository : OmsSqlSugarRepository<Order>, IOrderRepository, I
.Id) .Id)
.ToArray(); .ToArray();
return feeQuery.Where(f => winningIds.Contains(f.Id)); return db.Queryable<OrderFee>()
.Where(fee => !fee.IsDeleted)
.Where(f => winningIds.Contains(f.Id));
} }
private static int GetChargingStageRank(string? stage) => private static int GetChargingStageRank(string? stage) =>