修复统计错误bug

This commit is contained in:
chfei committed 2026-10-08 18:55:51 +08:00
1 parent 04d9e37123
commit 87e13e6544
1 file changed
+21 -8
@@ -182,14 +182,17 @@ public class ShopRevenueStatisticsService : ITransientDependency
orderShopIds.Add(shopId);
}
if (orderShopIds.Count == 0) return result;
if (startTime == endTime)
{
endTime = startTime.Date.AddDays(1).AddSeconds(-1);
}
int startStamp = TimeUtils.DateTimeToTimestampSeconds(startTime);
int endStamp = TimeUtils.DateTimeToTimestampSeconds(endTime) + 1; // 结束时间含当天/当秒
int endStamp = TimeUtils.DateTimeToTimestampSeconds(endTime);
var orders = LoadOrders(startStamp, endStamp, orderShopIds);
if (orders.Count == 0) return result;
// 加载买手订单(直拍和中转仓都要查),并回填商铺订单的退款金额
LoadBuyerOrder(orders, true);
LoadBuyerOrder(orders);
FillRefunds(orders);
foreach (var order in orders)
@@ -451,7 +454,7 @@ public class ShopRevenueStatisticsService : ITransientDependency
{
var query = _freeSql.Select<WeiOrderEntity, WeiOrderItemEntity>()
.InnerJoin((a, b) => a.OrderId == b.OrderId)
.Where((a, b) => a.CreateTime >= startStamp && a.CreateTime < endStamp)
.Where((a, b) => a.CreateTime >= startStamp && a.CreateTime <= endStamp)
.Where((a, b) => a.Status > 10);
if (shopIds != null && shopIds.Count > 0)
@@ -513,14 +516,14 @@ public class ShopRevenueStatisticsService : ITransientDependency
/// true:按订单的采购类型区分直拍 / 中转仓,两张买手表都能查到(查询明细用)
/// false:沿用历史口径,按 OutAmount 是否为 0 判断(统计任务保持原行为不变)
/// </param>
private void LoadBuyerOrder(List<OrderInfo> orders, bool byPurchaseType = false)
private void LoadBuyerOrder(List<OrderInfo> orders)
{
var result = new List<BuyerOrderInfo>();
//查询中转仓购买表
var outWarehouseOrderIds = orders
.Where(a => byPurchaseType ? a.PurchaseType == PurchaseType.FromWarehouse : a.OutAmount == 0)
.Where(a => a.PurchaseType == PurchaseType.FromWarehouse)
.Select(a => a.OrderId).Distinct().ToList();
if (outWarehouseOrderIds.Count > 0)
{
@@ -546,7 +549,7 @@ public class ShopRevenueStatisticsService : ITransientDependency
//查询直拍表
var outDirectOrderIds = orders
.Where(a => byPurchaseType ? a.PurchaseType == PurchaseType.DirectPurchase : a.OutAmount > 0)
.Where(a => a.PurchaseType == PurchaseType.DirectPurchase)
.Select(a => a.OrderId).Distinct().ToList();
foreach (string[] batch in Batch(outDirectOrderIds, BatchSize))
{
@@ -596,7 +599,7 @@ public class ShopRevenueStatisticsService : ITransientDependency
SkuId = a.WxSkuId,
OutOrderSn = a.OrderSn,
OutAmount = a.OrderAmount ?? 0,
RefundAmount = a.RefundAmount ?? 0,
RefundAmount = a.RefundAmount ?? (a.OrderAmount ?? 0),
RefundStatusText = a.StatusText
}));
}
@@ -621,6 +624,13 @@ public class ShopRevenueStatisticsService : ITransientDependency
}
}
//移除未购买的订单
for (int i = orders.Count - 1; i >= 0; i--)
{
if (orders[i].BuyerOrders.Count == 0)
orders.RemoveAt(i);
}
}
/// <summary>回填商铺订单的退款信息</summary>
@@ -732,7 +742,10 @@ public class ShopRevenueStatisticsService : ITransientDependency
var outOrderGroups = buyerOrders
.GroupBy(b => b.OutOrderSn)
.ToList();
if (buyerOrders.Any(a => a.OutOrderSn == "261007-181907044681346"))
{
}
long done = 0, pending = 0, rejected = 0;
long totalPurchase = 0;