Browse Source

1

liangku_skuoptimazation
shanji 2 years ago
parent
commit
d81fcd14a6
  1. 1
      BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
  2. 18
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  3. 113
      BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
  4. 9
      BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs
  5. 10
      BBWYB.Server.Model/Db/Purchaser/Purchaser.cs
  6. 5
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
  7. 4
      BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs
  8. 12
      BBWYB.Server.Model/Dto/Response/Purchaser/PurchaserResponse.cs

1
BBWYB.Server.API/Controllers/PurchaseSchemeController.cs

@ -44,6 +44,7 @@ namespace BBWYB.Server.API.Controllers
[HttpPost] [HttpPost]
public IList<PurchaseSchemeResponse> GetPurchaseSchemeList([FromBody] QuerySchemeRequest querySchemeRequest) public IList<PurchaseSchemeResponse> GetPurchaseSchemeList([FromBody] QuerySchemeRequest querySchemeRequest)
{ {
querySchemeRequest.IncludePurchaserStatisticsInfo = 1;
return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest); return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest);
} }

18
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -600,10 +600,10 @@ namespace BBWYB.Server.Business
SkuId = x SkuId = x
})); }));
} }
var update = fsql.Update<Purchaser>(purchaserId) //var update = fsql.Update<Purchaser>(purchaserId)
.Set(p => p.PurchasedCount + 1) // .Set(p => p.PurchasedCount + 1)
.SetIf(newSkuRelationCount > 0, p => p.PurchasedSkuCount + newSkuRelationCount); // .SetIf(newSkuRelationCount > 0, p => p.PurchasedSkuCount + newSkuRelationCount);
updatePurchaserList.Add(update); //updatePurchaserList.Add(update);
} }
} }
@ -777,11 +777,11 @@ namespace BBWYB.Server.Business
foreach (var update in updateOrderSkuCostList) foreach (var update in updateOrderSkuCostList)
update.ExecuteAffrows(); update.ExecuteAffrows();
} }
if (updatePurchaserList.Count() > 0) //if (updatePurchaserList.Count() > 0)
{ //{
foreach (var update in updatePurchaserList) // foreach (var update in updatePurchaserList)
update.ExecuteAffrows(); // update.ExecuteAffrows();
} //}
}); });
//#region 更新采购方案最新价格 //#region 更新采购方案最新价格

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

@ -678,27 +678,30 @@ namespace BBWYB.Server.Business
var skuIdList = purchaseSchemeList.Select(ps => ps.SkuId).Distinct().ToList(); var skuIdList = purchaseSchemeList.Select(ps => ps.SkuId).Distinct().ToList();
var recentDate = DateTime.Now.Date.AddDays(-30); 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)
.Where((psp, p) => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)) // .Where((psp, p) => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId))
.ToList((psp, p) => new PurchaseSchemeProductResponse // .ToList((psp, p) => new PurchaseSchemeProductResponse
{ // {
CreateTime = psp.CreateTime, // CreateTime = psp.CreateTime,
Id = psp.Id, // Id = psp.Id,
ProductId = psp.ProductId, // ProductId = psp.ProductId,
PurchaseProductId = psp.PurchaseProductId, // PurchaseProductId = psp.PurchaseProductId,
PurchaseUrl = psp.PurchaseUrl, // PurchaseUrl = psp.PurchaseUrl,
SkuId = psp.SkuId, // SkuId = psp.SkuId,
SkuPurchaseSchemeId = psp.SkuPurchaseSchemeId, // SkuPurchaseSchemeId = psp.SkuPurchaseSchemeId,
PurchaserId = p.Id, // PurchaserId = p.Id,
PurchaserId2 = p.Id2, // PurchaserId2 = p.Id2,
PurchaserLocation = p.Location, // PurchaserLocation = p.Location,
PurchaserName = p.Name, // PurchaserName = p.Name,
PurchasePlatform = p.Platform, // PurchasePlatform = p.Platform,
PurchaserMemberId = p.MemberId, // PurchaserMemberId = p.MemberId
PurchaserPurchasedCount = p.PurchasedCount, // //PurchaserPurchasedCount = p.PurchasedCount,
PurchaserPurchasedSkuCount = p.PurchasedSkuCount, // //PurchaserPurchasedSkuCount = p.PurchasedSkuCount,
}); // });
var purchaseSchemeProductList = fsql.Select<PurchaseSchemeProduct>()
.Where(psp => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId))
.ToList<PurchaseSchemeProductResponse>();
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>>();
@ -758,6 +761,48 @@ namespace BBWYB.Server.Business
} }
} }
List<string> purchaserIdList = purchaseSchemeProductList.Select(x => x.PurchaserId).Distinct().ToList();
var dbPurchaserList = fsql.Select<Purchaser>(purchaserIdList).ToList<PurchaserResponse>();
if (request.IncludePurchaserStatisticsInfo == 1)
{
#region 查询SKU采购数
var purchasedSkuList = 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 })
.ToList(g => new
{
g.Key.PurchaserId,
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
foreach (var purchaser in dbPurchaserList)
{
purchaser.PurchasedSkuCount = purchasedSkuList.Where(x => x.PurchaserId == purchaser.Id)
.Select(x => x.SkuId)
.Distinct()
.Count();
purchaser.PurchasedCount = poList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.Count ?? 0;
}
}
foreach (var scheme in purchaseSchemeList) foreach (var scheme in purchaseSchemeList)
{ {
@ -771,6 +816,18 @@ namespace BBWYB.Server.Business
psk.PurchaseProductId == schemeProduct.PurchaseProductId); psk.PurchaseProductId == schemeProduct.PurchaseProductId);
if (schemeProductSkuList.Count() > 0) if (schemeProductSkuList.Count() > 0)
schemeProduct.PurchaseSchemeProductSkuList.AddRange(schemeProductSkuList); schemeProduct.PurchaseSchemeProductSkuList.AddRange(schemeProductSkuList);
var purchaser = dbPurchaserList.FirstOrDefault(p => p.Id == schemeProduct.PurchaserId);
if (purchaser != null)
{
schemeProduct.PurchaserId = purchaser.Id;
schemeProduct.PurchaserId2 = purchaser.Id2;
schemeProduct.PurchaserLocation = purchaser.Location;
schemeProduct.PurchaserMemberId = purchaser.MemberId;
schemeProduct.PurchaserName = purchaser.Name;
schemeProduct.PurchaserPurchasedCount = purchaser.PurchasedCount;
schemeProduct.PurchaserPurchasedSkuCount = purchaser.PurchasedSkuCount;
}
} }
} }
@ -779,17 +836,9 @@ namespace BBWYB.Server.Business
{ {
if (!scheme.PurchaserList.Any(p => p.Id == schemeProduct.PurchaserId)) if (!scheme.PurchaserList.Any(p => p.Id == schemeProduct.PurchaserId))
{ {
scheme.PurchaserList.Add(new Purchaser() var purchaser = dbPurchaserList.FirstOrDefault(p => p.Id == schemeProduct.PurchaserId);
{ if (purchaser != null)
Id = schemeProduct.PurchaserId, scheme.PurchaserList.Add(purchaser);
Id2 = schemeProduct.PurchaserId2,
Location = schemeProduct.PurchaserLocation,
Name = schemeProduct.PurchaserName,
Platform = schemeProduct.PurchasePlatform,
MemberId = schemeProduct.PurchaserMemberId,
PurchasedCount = schemeProduct.PurchaserPurchasedCount,
PurchasedSkuCount = schemeProduct.PurchaserPurchasedSkuCount
});
} }
} }
#endregion #endregion

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

@ -160,18 +160,15 @@ namespace BBWYB.Server.Business
#endregion #endregion
#region 订单数 #region 订单数
var currentOpiList = poList.Where(x => x.PurchaserId == purchaser.Id).ToList(); purchaser.PurchasedCount = poList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.Count ?? 0;
purchaser.PurchaseOrderCount = currentOpiList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.Count ?? 0;
#endregion #endregion
#region 采购金额 #region 采购金额
var currentOpiAmountList = purchaseAmountList.Where(x => x.PurchaserId == purchaser.Id).ToList(); purchaser.PurchaseAmount = purchaseAmountList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.PurchaseAmount ?? 0;
purchaser.PurchaseAmount = currentOpiAmountList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.PurchaseAmount ?? 0;
#endregion #endregion
#region 最近采购时间 #region 最近采购时间
var currentRecentPurchaseTimeList = recentPurchaseTimeList.Where(x => x.PurchaserId == purchaser.Id).ToList(); purchaser.LastPurchaseTime = recentPurchaseTimeList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.CreateTime;
purchaser.LastPurchaseTime = currentRecentPurchaseTimeList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.CreateTime;
#endregion #endregion
#region 主营类目/标签 #region 主营类目/标签

10
BBWYB.Server.Model/Db/Purchaser/Purchaser.cs

@ -49,17 +49,7 @@ namespace BBWYB.Server.Model.Db
[Column(MapType = typeof(int?))] [Column(MapType = typeof(int?))]
public Enums.Platform? Platform { get; set; } public Enums.Platform? Platform { get; set; }
/// <summary>
/// 采购次数
/// </summary>
[Column(DbType = "int")]
public int? PurchasedCount { get; set; } = 0;
/// <summary>
/// 采购过的Sku数
/// </summary>
[Column(DbType = "int")]
public int? PurchasedSkuCount { get; set; } = 0;
} }

5
BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs

@ -52,5 +52,10 @@ namespace BBWYB.Server.Model.Dto
/// </summary> /// </summary>
public int? IncludeSkuStatisticsInfo { get; set; } public int? IncludeSkuStatisticsInfo { get; set; }
/// <summary>
/// 是否包含采购商统计信息 (采购次数/采购SKU数)
/// </summary>
public int? IncludePurchaserStatisticsInfo { get; set; };
} }
} }

4
BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs

@ -34,12 +34,12 @@ namespace BBWYB.Server.Model.Dto
public new List<PurchaseSchemeProductResponse> PurchaseSchemeProductList { get; set; } public new List<PurchaseSchemeProductResponse> PurchaseSchemeProductList { get; set; }
public List<Purchaser> PurchaserList { get; set; } public List<PurchaserResponse> PurchaserList { get; set; }
public PurchaseSchemeResponse() public PurchaseSchemeResponse()
{ {
PurchaseSchemeProductList = new List<PurchaseSchemeProductResponse>(); PurchaseSchemeProductList = new List<PurchaseSchemeProductResponse>();
PurchaserList = new List<Purchaser>(); PurchaserList = new List<PurchaserResponse>();
} }
} }
} }

12
BBWYB.Server.Model/Dto/Response/Purchaser/PurchaserResponse.cs

@ -17,27 +17,27 @@ namespace BBWYB.Server.Model.Dto
/// <summary> /// <summary>
/// 绑定SPU数 /// 绑定SPU数
/// </summary> /// </summary>
public long? BindingSpuCount { get; set; } public int? BindingSpuCount { get; set; }
/// <summary> /// <summary>
/// 采购SPU数 /// 采购SPU数
/// </summary> /// </summary>
public long? PurchasedSpuCount { get; set; } public int? PurchasedSpuCount { get; set; }
/// <summary> /// <summary>
/// 绑定SKU数 /// 绑定SKU数
/// </summary> /// </summary>
public long? BindingSkuCount { get; set; } public int? BindingSkuCount { get; set; }
/// <summary> /// <summary>
/// 采购SKU数 /// 采购SKU数
/// </summary> /// </summary>
public long? PurchasedSkuCount { get; set; } public int? PurchasedSkuCount { get; set; } = 0;
/// <summary> /// <summary>
/// 采购订单数 /// 采购次数/采购订单数
/// </summary> /// </summary>
public long? PurchaseOrderCount { get; set; } public int? PurchasedCount { get; set; } = 0;
/// <summary> /// <summary>
/// 采购金额 /// 采购金额

Loading…
Cancel
Save