Browse Source

采购方案增加最近30天统计

yijia
shanji 2 years ago
parent
commit
443e4badcd
  1. 17
      BBWYB.Common/Extensions/ConverterExtensions.cs
  2. 35
      BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

17
BBWYB.Common/Extensions/ConverterExtensions.cs

@ -0,0 +1,17 @@
namespace BBWYB.Common.Extensions
{
public static class ConverterExtensions
{
public static long? ToInt64(this object? o)
{
try
{
return Convert.ToInt64(o);
}
catch
{
return null;
}
}
}
}

35
BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

@ -16,6 +16,8 @@ namespace BBWYB.Server.Business
private PurchaseProductAPIService purchaseProductAPIService; private PurchaseProductAPIService purchaseProductAPIService;
private RestApiService restApiService; private RestApiService restApiService;
private IList<Enums.OrderState?> invalidOrderStateList;
public PurchaseSchemeBusiness(IFreeSql fsql, public PurchaseSchemeBusiness(IFreeSql fsql,
NLogManager nLogManager, NLogManager nLogManager,
IIdGenerator idGenerator, IIdGenerator idGenerator,
@ -24,6 +26,7 @@ namespace BBWYB.Server.Business
{ {
this.purchaseProductAPIService = purchaseProductAPIService; this.purchaseProductAPIService = purchaseProductAPIService;
this.restApiService = restApiService; this.restApiService = restApiService;
this.invalidOrderStateList = new List<Enums.OrderState?>() { Enums.OrderState., Enums.OrderState. };
} }
private void ExtractNewPurchaser<T>(IList<T> purchaserSchemeList, IList<Purchaser> addPurchaserList) where T : InputPurchaseSchemeRequest private void ExtractNewPurchaser<T>(IList<T> purchaserSchemeList, IList<Purchaser> addPurchaserList) where T : InputPurchaseSchemeRequest
@ -645,6 +648,9 @@ namespace BBWYB.Server.Business
if (purchaseSchemeList.Count > 0) if (purchaseSchemeList.Count > 0)
{ {
var purchaseSchemeIdList = purchaseSchemeList.Select(p => p.Id).ToList(); var purchaseSchemeIdList = purchaseSchemeList.Select(p => p.Id).ToList();
var spuIdList = purchaseSchemeList.Select(ps => ps.ProductId).Distinct().ToList();
var skuIdList = purchaseSchemeList.Select(ps => ps.SkuId).Distinct().ToList();
var recentDate = DateTime.Now.Date.AddDays(-30);
var purchaseSchemeProductList = fsql.Select<PurchaseSchemeProduct, Purchaser>() var purchaseSchemeProductList = fsql.Select<PurchaseSchemeProduct, Purchaser>()
.InnerJoin((psp, p) => psp.PurchaserId == p.Id) .InnerJoin((psp, p) => psp.PurchaserId == p.Id)
@ -671,6 +677,30 @@ namespace BBWYB.Server.Business
var purchaseSchemeProductSkuList = fsql.Select<PurchaseSchemeProductSku>().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) var purchaseSchemeProductSkuList = fsql.Select<PurchaseSchemeProductSku>().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId))
.ToList().Map<List<PurchaseSchemeProductSkuResponse>>(); .ToList().Map<List<PurchaseSchemeProductSkuResponse>>();
var recent30daySpuItemCountGroups = fsql.Select<OrderSku, Order>()
.LeftJoin((osku, o) => osku.OrderId == o.Id)
.Where((osku, o) => spuIdList.Contains(osku.ProductId) &&
!invalidOrderStateList.Contains(o.OrderState) &&
o.StartTime >= recentDate)
.GroupBy((osku, o) => osku.ProductId)
.ToList(g => new
{
ProductId = g.Key,
ItemTotal = g.Sum(g.Value.Item1.ItemTotal)
});
var recent30daySkuItemCountGroups = fsql.Select<OrderSku, Order>()
.LeftJoin((osku, o) => osku.OrderId == o.Id)
.Where((osku, o) => skuIdList.Contains(osku.SkuId) &&
!invalidOrderStateList.Contains(o.OrderState) &&
o.StartTime >= recentDate)
.GroupBy((osku, o) => osku.SkuId)
.ToList(g => new
{
SkuId = g.Key,
ItemTotal = g.Sum(g.Value.Item1.ItemTotal)
});
foreach (var scheme in purchaseSchemeList) foreach (var scheme in purchaseSchemeList)
{ {
var schemeProductList = purchaseSchemeProductList.Where(ps => ps.SkuPurchaseSchemeId == scheme.Id); var schemeProductList = purchaseSchemeProductList.Where(ps => ps.SkuPurchaseSchemeId == scheme.Id);
@ -747,6 +777,11 @@ namespace BBWYB.Server.Business
} }
} }
#endregion #endregion
#region 近30天spu/sku销量
scheme.Recent30DaySpuItemCount = Convert.ToInt64(recent30daySpuItemCountGroups.FirstOrDefault(x => x.ProductId == scheme.ProductId)?.ItemTotal ?? 0);
scheme.Recent30DaySkuItemCount = Convert.ToInt64(recent30daySkuItemCountGroups.FirstOrDefault(x => x.SkuId == scheme.SkuId)?.ItemTotal ?? 0);
#endregion
} }
} }
return purchaseSchemeList; return purchaseSchemeList;

Loading…
Cancel
Save