修复统计 table列表 总金额计算 多出了退款金额

This commit is contained in:
chfei committed 2026-08-10 09:54:00 +08:00
1 parent 543eb2f3fc
commit 88d75ff914
1 file changed
+13 -7
@@ -105,10 +105,14 @@ namespace _29WxOrderWpf.Ctrls.Statistics.Services
{
return row.BuyerRefundStatus == "退款成功";
}
private static List<ShopRevenueStatisticsRow> GetPaymentOrderList(IEnumerable<ShopRevenueStatisticsRow> rows)
{
return (rows ?? new List<ShopRevenueStatisticsRow>()).Where(a => a.OutAmount > 0).ToList(); //买手付钱后的订单数量
}
/// <summary>汇总卡片</summary>
public static ShopRevenueSummary GetSummary(IEnumerable<ShopRevenueStatisticsRow> rows)
{
var list = (rows ?? new List<ShopRevenueStatisticsRow>()).Where(a => a.OutAmount > 0).ToList(); //买手付钱后的订单数量
var list = GetPaymentOrderList(rows); //买手付钱后的订单数量
var valid = list.Where(IsValidOrder).ToList();
var refunded = list.Where(IsRefunded).ToList();
@@ -149,7 +153,8 @@ namespace _29WxOrderWpf.Ctrls.Statistics.Services
/// <summary>销售趋势(按天,缺失日期补 0,仅统计有效订单)</summary>
public static List<RevenueTrendPoint> GetSalesTrend(IEnumerable<ShopRevenueStatisticsRow> rows, DateTime startDate, DateTime endDate)
{
var list = (rows ?? new List<ShopRevenueStatisticsRow>()).Where(IsValidOrder).ToList();
var list = GetPaymentOrderList(rows);
list = list.Where(IsValidOrder).ToList();
var map = list
.GroupBy(r => r.CreateTime.Date)
.ToDictionary(
@@ -175,7 +180,8 @@ namespace _29WxOrderWpf.Ctrls.Statistics.Services
/// <summary>店铺销售占比(饼图,仅统计有效订单)</summary>
public static List<ShopSalesProportionItem> GetShopSalesProportion(IEnumerable<ShopRevenueStatisticsRow> rows)
{
var list = (rows ?? new List<ShopRevenueStatisticsRow>()).Where(IsValidOrder).ToList();
var list = GetPaymentOrderList(rows);
list = list.Where(IsValidOrder).ToList();
decimal total = list.Sum(r => (decimal)(r.OrderPrice)) / 100m;
return list
@@ -193,7 +199,7 @@ namespace _29WxOrderWpf.Ctrls.Statistics.Services
/// <summary>店铺统计表格</summary>
public static List<ShopStatisticsItem> GetShopStatistics(IEnumerable<ShopRevenueStatisticsRow> rows)
{
var list = (rows ?? new List<ShopRevenueStatisticsRow>()).Where(a => a.OutAmount > 0).ToList(); //买手付钱后的订单
var list = GetPaymentOrderList(rows); //买手付钱后的订单
return list
.GroupBy(r => r.ShopName)
@@ -201,7 +207,7 @@ namespace _29WxOrderWpf.Ctrls.Statistics.Services
{
var valid = g.Where(IsValidOrder).ToList();
var refunded = g.Where(IsRefunded).ToList();
decimal salesAmount = g.Sum(r => (decimal)(r.OrderPrice)) / 100m; //与 GetSummary 一致:含已退款订单的销售额
decimal salesAmount = valid.Sum(r => (decimal)(r.OrderPrice)) / 100m; //与 GetSummary 一致:不含已退款订单的销售额
int orderCount = valid.Select(r => r.OrderId).Distinct().Count();
decimal profit = valid.Concat(refunded).Sum(r => (decimal)(r.Profit)) / 100m; //与 GetSummary 一致:有效+退款订单利润
decimal purchaseAmount = valid.Sum(r => (decimal)(r.OutAmount)) / 100m; //与 GetSummary 一致:买手付款金额(采购金额)
@@ -238,7 +244,7 @@ namespace _29WxOrderWpf.Ctrls.Statistics.Services
{
var valid = g.Where(IsValidOrder).ToList();
var refunded = g.Where(IsRefunded).ToList();
decimal salesAmount = g.Sum(r => (decimal)(r.OrderPrice)) / 100m; //与 GetSummary 一致:含已退款订单的销售额
decimal salesAmount = valid.Sum(r => (decimal)(r.OrderPrice)) / 100m; //与 GetSummary 一致:不含已退款订单的销售额
decimal profit = valid.Concat(refunded).Sum(r => (decimal)(r.Profit)) / 100m; //与 GetSummary 一致:有效+退款订单利润
decimal purchaseAmount = valid.Sum(r => (decimal)(r.OutAmount)) / 100m; //与 GetSummary 一致:买手付款金额(采购金额)
int orderCount = valid.Select(r => r.OrderId).Distinct().Count();
@@ -358,7 +364,7 @@ namespace _29WxOrderWpf.Ctrls.Statistics.Services
/// 查询时按天命中:未命中的天合并成连续段一次请求,返回后按天拆分写入;
/// 前台选某一个或某多个店铺时,按所选店铺(ShopName)过滤,复用同一批时间数据。
/// </summary>
private readonly Dictionary<string, CacheEntry> _rowCache =
private static readonly Dictionary<string, CacheEntry> _rowCache =
new Dictionary<string, CacheEntry>();
private readonly object _cacheLock = new object();