Browse Source

Merge branch 'SupplyChainOptimization'

liangku_skuoptimazation
shanji 2 years ago
parent
commit
caee51da19
  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]
public IList<PurchaseSchemeResponse> GetPurchaseSchemeList([FromBody] QuerySchemeRequest querySchemeRequest)
{
querySchemeRequest.IncludePurchaserStatisticsInfo = 1;
return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest);
}

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

@ -600,10 +600,10 @@ namespace BBWYB.Server.Business
SkuId = x
}));
}
var update = fsql.Update<Purchaser>(purchaserId)
.Set(p => p.PurchasedCount + 1)
.SetIf(newSkuRelationCount > 0, p => p.PurchasedSkuCount + newSkuRelationCount);
updatePurchaserList.Add(update);
//var update = fsql.Update<Purchaser>(purchaserId)
// .Set(p => p.PurchasedCount + 1)
// .SetIf(newSkuRelationCount > 0, p => p.PurchasedSkuCount + newSkuRelationCount);
//updatePurchaserList.Add(update);
}
}
@ -777,11 +777,11 @@ namespace BBWYB.Server.Business
foreach (var update in updateOrderSkuCostList)
update.ExecuteAffrows();
}
if (updatePurchaserList.Count() > 0)
{
foreach (var update in updatePurchaserList)
update.ExecuteAffrows();
}
//if (updatePurchaserList.Count() > 0)
//{
// foreach (var update in updatePurchaserList)
// update.ExecuteAffrows();
//}
});
//#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 recentDate = DateTime.Now.Date.AddDays(-30);
var purchaseSchemeProductList = fsql.Select<PurchaseSchemeProduct, Purchaser>()
.InnerJoin((psp, p) => psp.PurchaserId == p.Id)
.Where((psp, p) => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId))
.ToList((psp, p) => new PurchaseSchemeProductResponse
{
CreateTime = psp.CreateTime,
Id = psp.Id,
ProductId = psp.ProductId,
PurchaseProductId = psp.PurchaseProductId,
PurchaseUrl = psp.PurchaseUrl,
SkuId = psp.SkuId,
SkuPurchaseSchemeId = psp.SkuPurchaseSchemeId,
PurchaserId = p.Id,
PurchaserId2 = p.Id2,
PurchaserLocation = p.Location,
PurchaserName = p.Name,
PurchasePlatform = p.Platform,
PurchaserMemberId = p.MemberId,
PurchaserPurchasedCount = p.PurchasedCount,
PurchaserPurchasedSkuCount = p.PurchasedSkuCount,
});
//var purchaseSchemeProductList = fsql.Select<PurchaseSchemeProduct, Purchaser>()
// .InnerJoin((psp, p) => psp.PurchaserId == p.Id)
// .Where((psp, p) => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId))
// .ToList((psp, p) => new PurchaseSchemeProductResponse
// {
// CreateTime = psp.CreateTime,
// Id = psp.Id,
// ProductId = psp.ProductId,
// PurchaseProductId = psp.PurchaseProductId,
// PurchaseUrl = psp.PurchaseUrl,
// SkuId = psp.SkuId,
// SkuPurchaseSchemeId = psp.SkuPurchaseSchemeId,
// PurchaserId = p.Id,
// PurchaserId2 = p.Id2,
// PurchaserLocation = p.Location,
// PurchaserName = p.Name,
// PurchasePlatform = p.Platform,
// PurchaserMemberId = p.MemberId
// //PurchaserPurchasedCount = p.PurchasedCount,
// //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))
.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)
{
@ -771,6 +816,18 @@ namespace BBWYB.Server.Business
psk.PurchaseProductId == schemeProduct.PurchaseProductId);
if (schemeProductSkuList.Count() > 0)
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))
{
scheme.PurchaserList.Add(new Purchaser()
{
Id = schemeProduct.PurchaserId,
Id2 = schemeProduct.PurchaserId2,
Location = schemeProduct.PurchaserLocation,
Name = schemeProduct.PurchaserName,
Platform = schemeProduct.PurchasePlatform,
MemberId = schemeProduct.PurchaserMemberId,
PurchasedCount = schemeProduct.PurchaserPurchasedCount,
PurchasedSkuCount = schemeProduct.PurchaserPurchasedSkuCount
});
var purchaser = dbPurchaserList.FirstOrDefault(p => p.Id == schemeProduct.PurchaserId);
if (purchaser != null)
scheme.PurchaserList.Add(purchaser);
}
}
#endregion

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

@ -160,18 +160,15 @@ namespace BBWYB.Server.Business
#endregion
#region 订单数
var currentOpiList = poList.Where(x => x.PurchaserId == purchaser.Id).ToList();
purchaser.PurchaseOrderCount = currentOpiList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.Count ?? 0;
purchaser.PurchasedCount = poList.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;
purchaser.PurchaseAmount = purchaseAmountList.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;
purchaser.LastPurchaseTime = recentPurchaseTimeList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.CreateTime;
#endregion
#region 主营类目/标签

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

@ -49,17 +49,7 @@ namespace BBWYB.Server.Model.Db
[Column(MapType = typeof(int?))]
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>
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 List<Purchaser> PurchaserList { get; set; }
public List<PurchaserResponse> PurchaserList { get; set; }
public PurchaseSchemeResponse()
{
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>
/// 绑定SPU数
/// </summary>
public long? BindingSpuCount { get; set; }
public int? BindingSpuCount { get; set; }
/// <summary>
/// 采购SPU数
/// </summary>
public long? PurchasedSpuCount { get; set; }
public int? PurchasedSpuCount { get; set; }
/// <summary>
/// 绑定SKU数
/// </summary>
public long? BindingSkuCount { get; set; }
public int? BindingSkuCount { get; set; }
/// <summary>
/// 采购SKU数
/// </summary>
public long? PurchasedSkuCount { get; set; }
public int? PurchasedSkuCount { get; set; } = 0;
/// <summary>
/// 采购订单数
/// 采购次数/采购订单数
/// </summary>
public long? PurchaseOrderCount { get; set; }
public int? PurchasedCount { get; set; } = 0;
/// <summary>
/// 采购金额

Loading…
Cancel
Save