Browse Source

业绩统计按店分组

qianyi
shanji 3 years ago
parent
commit
a8e1556f8a
  1. 13
      BBWY.Server.API/Controllers/StatisticsController.cs
  2. 46
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs

13
BBWY.Server.API/Controllers/StatisticsController.cs

@ -17,7 +17,7 @@ namespace BBWY.Server.API.Controllers
}
/// <summary>
/// 今日业绩统计
/// 业绩统计
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
@ -27,6 +27,17 @@ namespace BBWY.Server.API.Controllers
return statisticsBusiness.GetOrderAchievementStatistics(request);
}
/// <summary>
/// 业绩统计(按店分组)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public IList<OrderAchievementResponse> GetOrderAchievementStatisticsList([FromBody] AllShopOrderAchievementRequest request)
{
return statisticsBusiness.GetOrderAchievementStatisticsList(request);
}
/// <summary>
/// 星象SPU查询统计
/// </summary>

46
BBWY.Server.Business/Statistics/StatisticsBusiness.cs

@ -55,9 +55,51 @@ namespace BBWY.Server.Business
return response;
}
public IList<OrderAchievementResponse> GetOrderAchievementStatistics(AllShopOrderAchievementRequest request)
public IList<OrderAchievementResponse> GetOrderAchievementStatisticsList(AllShopOrderAchievementRequest request)
{
return null;
request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1);
var responseList = fsql.Select<Order, OrderCost>().LeftJoin((o, oc) => o.Id == oc.OrderId)
.Where((o, oc) => o.OrderState != null &&
!invalidOrderStateList.Contains(o.OrderState.Value) && //排除待付款和取消
o.StartTime >= request.StartTime &&
o.StartTime <= request.EndTime)
.GroupBy((o, oc) => o.ShopId)
.ToList((g) => new OrderAchievementResponse()
{
ShopId = g.Key,
OrderCount = g.Count(g.Value.Item1.Id),
Profit = g.Sum(g.Value.Item2.Profit),
SaleAmount = g.Sum(g.Value.Item1.OrderPayment),
DeliveryExpressFreight = g.Sum(g.Value.Item2.DeliveryExpressFreight),
PlatformCommissionAmount = g.Sum(g.Value.Item2.PlatformCommissionAmount),
PurchaseAmount = g.Sum(g.Value.Item2.PurchaseAmount)
});
var mdsShops = freeSqlMultiDBManager.MDSfsql.Select<Shops>().Where(s => !string.IsNullOrEmpty(s.ShopId)).ToList();
var mdsShopIds = mdsShops.Select(s => s.Id);
var advCosts = freeSqlMultiDBManager.JDXXfsql.Select<Shopsdetail>().Where(s => mdsShopIds.Contains(s.ShopsId) &&
s.CreateTime >= request.StartTime &&
s.CreateTime <= request.EndTime)
.GroupBy(s => s.ShopsId)
.ToList(g => new
{
ShopId = g.Key,
AdvCost = g.Sum(g.Value.ExpressCost + g.Value.ShotgunCost)
});
foreach (var response in responseList)
{
string shopId = response.ShopId.ToString();
var mdsShop = mdsShops.FirstOrDefault(s => s.ShopId == shopId);
if (mdsShop == null)
continue;
var advCostResponse = advCosts.FirstOrDefault(a => a.ShopId == mdsShop.Id);
if (advCostResponse == null)
continue;
response.AdvCost = advCostResponse.AdvCost;
response.Profit -= advCostResponse.AdvCost;
}
return responseList;
}
private void XingXiangCumulative(IList<XingXiangItemResponse> detailList, string spuId, bool isSD, decimal profit, decimal sdProductAmount, decimal sdCost)

Loading…
Cancel
Save