Browse Source

完善采购商列表查询

liangku_skuoptimazation
shanji 2 years ago
parent
commit
3a424c3168
  1. 143
      BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs
  2. 2
      BBWYB.Server.Model/Dto/Request/Purchaser/QueryPurchaserRequest.cs

143
BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs

@ -51,6 +51,149 @@ namespace BBWYB.Server.Business
.Page(request.PageIndex, request.PageSize)
.Count(out var count)
.ToList<PurchaserResponse>();
var purchaserIdList = purchaserList.Select(p => p.Id).ToList();
#region 查询SPU绑定数/SKU绑定数
var bindList = fsql.Select<PurchaseSchemeProduct, PurchaseScheme>()
.InnerJoin((psp, psc) => psp.SkuPurchaseSchemeId == psc.Id)
.Where((psp, psc) => psc.ShopId == request.ShopId && purchaserIdList.Contains(psp.PurchaserId))
.GroupBy((psp, psc) => new { psp.PurchaserId, psp.ProductId, psp.SkuId })
.ToList(g => new
{
g.Key.PurchaserId,
g.Key.ProductId,
g.Key.SkuId
});
#endregion
#region 查询SPU采购数/SKU采购数
var purchasedList = fsql.Select<SkuHistoryPurchaserRelation, ProductSku>()
.InnerJoin((spr, ps) => spr.SkuId == ps.Id)
.Where((spr, ps) => ps.ShopId == request.ShopId && purchaserIdList.Contains(spr.PurchaserId))
.GroupBy((spr, ps) => new { spr.PurchaserId, spr.SkuId, ps.ProductId })
.ToList(g => new
{
g.Key.PurchaserId,
g.Key.ProductId,
g.Key.SkuId
});
#endregion
#region 查询订单数
var poList = fsql.Select<OrderPurchaseInfo, Order>()
.InnerJoin((opi, o) => opi.OrderId == o.Id)
.Where((opi, o) => opi.ShopId == request.ShopId &&
opi.IsEnabled == true &&
o.OrderState != Enums.OrderState. &&
purchaserIdList.Contains(opi.PurchaserId))
.GroupBy((opi, o) => opi.PurchaserId)
.ToList(g => new
{
PurchaserId = g.Key,
Count = g.Count()
});
#endregion
#region 查询采购金额
var purchaseAmountList = fsql.Select<OrderCostDetail, Order, OrderPurchaseRelationInfo, OrderPurchaseInfo>()
.InnerJoin((ocd, o, ori, opi) => ocd.OrderId == o.Id)
.InnerJoin((ocd, o, ori, opi) => ocd.OrderId == ori.OrderId && ocd.SkuId == ori.BelongSkuId)
.InnerJoin((ocd, o, ori, opi) => ori.OrderId == opi.OrderId)
.Where((ocd, o, ori, opi) => o.ShopId == request.ShopId &&
o.OrderState != Enums.OrderState. &&
ocd.IsEnabled == true &&
opi.IsEnabled == true &&
purchaserIdList.Contains(opi.PurchaserId))
.GroupBy((ocd, o, ori, opi) => opi.PurchaserId)
.ToList(g => new
{
PurchaserId = g.Key,
PurchaseAmount = g.Sum(g.Value.Item1.SkuAmount) + g.Sum(g.Value.Item1.PurchaseFreight)
});
#endregion
#region 查询最近采购时间
var recentPurchaseTimeList = fsql.Select<OrderPurchaseInfo, Order>()
.InnerJoin((opi1, o) => o.OrderState != Enums.OrderState.)
.Where((opi1, o) => opi1.ShopId == request.ShopId &&
purchaserIdList.Contains(opi1.PurchaserId) &&
opi1.IsEnabled == true)
.GroupBy((opi1, o) => opi1.PurchaserId)
.WithTempQuery(g => new { MaxId = g.Max(g.Value.Item1.Id) })
.From<OrderPurchaseInfo>()
.InnerJoin((opi1, opi2) => opi1.MaxId == opi2.Id)
.ToList((opi1, opi2) => new
{
opi2.PurchaserId,
opi2.CreateTime
});
#endregion
#region 查询标签/主营类目
var purchaserExtendInfoList = fsql.Select<PurchaserExtendedInfo, Purchaser_ExtendedInfo_Relation>()
.InnerJoin((pei, per) => pei.Id == per.ExtendedInfoId)
.Where((pei, per) => purchaserIdList.Contains(per.PurchaserId))
.ToList((pei, per) => new
{
pei.Id,
pei.Name,
pei.Type,
per.PurchaserId
});
#endregion
foreach (var purchaser in purchaserList)
{
#region SPU绑定数/SKU绑定数
var currentBindList = bindList.Where(x => x.PurchaserId == purchaser.Id).ToList();
purchaser.BindingSpuCount = currentBindList.Select(x => x.ProductId).Distinct().Count();
purchaser.BindingSkuCount = currentBindList.Select(x => x.SkuId).Count();
#endregion
#region SPU采购数/SKU采购数
var currentPurchasedList = purchasedList.Where(x => x.PurchaserId == purchaser.Id).ToList();
purchaser.PurchasedSpuCount = currentPurchasedList.Select(x => x.ProductId).Distinct().Count();
purchaser.PurchasedSkuCount = currentPurchasedList.Select(x => x.SkuId).Count();
#endregion
#region 订单数
var currentOpiList = poList.Where(x => x.PurchaserId == purchaser.Id).ToList();
purchaser.PurchaseOrderCount = currentOpiList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.Count ?? 0;
#endregion
#region 采购金额
var currentOpiAmountList = purchaseAmountList.Where(x => x.PurchaserId == purchaser.Id).ToList();
purchaser.PurchaseAmount = currentOpiAmountList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.PurchaseAmount ?? 0;
#endregion
#region 最近采购时间
var currentRecentPurchaseTimeList = recentPurchaseTimeList.Where(x => x.PurchaserId == purchaser.Id).ToList();
purchaser.LastPurchaseTime = currentRecentPurchaseTimeList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.CreateTime;
#endregion
#region 主营类目/标签
var currentExtendInfoList = purchaserExtendInfoList.Where(x => x.PurchaserId == purchaser.Id).ToList();
purchaser.CategoryList = currentExtendInfoList.Where(x => x.Type == Enums.PurchaserBasicInfoType.)
.Select(x => new PurchaserExtendedInfoResponse()
{
Id = x.Id,
Name = x.Name,
Type = x.Type
}).ToList();
purchaser.TagList = currentExtendInfoList.Where(x => x.Type == Enums.PurchaserBasicInfoType.)
.Select(x => new PurchaserExtendedInfoResponse()
{
Id = x.Id,
Name = x.Name,
Type = x.Type
}).ToList();
#endregion
}
return new ListResponse<PurchaserResponse>()
{
Items = purchaserList,

2
BBWYB.Server.Model/Dto/Request/Purchaser/QueryPurchaserRequest.cs

@ -2,6 +2,8 @@
{
public class QueryPurchaserRequest
{
public long ShopId { get; set; }
public string Spu { get; set; }
public string Sku { get; set; }

Loading…
Cancel
Save