Browse Source

良库预警通知

liangku_skuoptimazation
shanji 1 year ago
parent
commit
4c6aacd875
  1. 108
      BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs

108
BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs

@ -82,7 +82,7 @@ namespace BBWYB.Server.Business
var shopId = productSkuList.FirstOrDefault()?.ShopId; var shopId = productSkuList.FirstOrDefault()?.ShopId;
var productIdList = productSkuList.Select(ps => ps.ProductId).Distinct().ToList(); var productIdList = productSkuList.Select(ps => ps.ProductId).Distinct().ToList();
var productList = fsql.Select<Product>(productIdList).ToList(); var productList = fsql.Select<Product>(productIdList).ToList();
var spuTotalInfoList = fsql.Select<SpuTotalSaleInfo>().Where(spi => productIdList.Contains(spi.ProductId)).ToList(); var dbSpuTotalInfoList = fsql.Select<SpuTotalSaleInfo>().Where(spi => productIdList.Contains(spi.ProductId)).ToList();
#endregion #endregion
@ -109,12 +109,20 @@ namespace BBWYB.Server.Business
List<SkuOptimizationTask> insertSkuOptimizationTaskList = new List<SkuOptimizationTask>(); List<SkuOptimizationTask> insertSkuOptimizationTaskList = new List<SkuOptimizationTask>();
List<SpuOptimizationBargainTeamTask> insertSpuOptimizationBargainTeamTaskList = new List<SpuOptimizationBargainTeamTask>(); List<SpuOptimizationBargainTeamTask> insertSpuOptimizationBargainTeamTaskList = new List<SpuOptimizationBargainTeamTask>();
List<SpuOptimizationCompetitiveTenderTask> insertSpuOptimizationCompetitiveTenderTaskList = new List<SpuOptimizationCompetitiveTenderTask>(); List<SpuOptimizationCompetitiveTenderTask> insertSpuOptimizationCompetitiveTenderTaskList = new List<SpuOptimizationCompetitiveTenderTask>();
List<TimeLimitTask> insertTimeLimitTaskList = new List<TimeLimitTask>();
#endregion #endregion
var belongShop = venderBusiness.GetShopList(request.ShopId).FirstOrDefault(); var belongShop = venderBusiness.GetShopList(request.ShopId).FirstOrDefault();
if (belongShop == null) if (belongShop == null)
throw new BusinessException("店铺不存在"); throw new BusinessException("店铺不存在");
var bargainTeamList = venderBusiness.GetYiJiaGroup(); //获取议价组
var bargainTeamIdList = bargainTeamList.Select(t => t.Id).ToList();
var waitToCompetitiveTenderSchemeList = fsql.Select<PurchaseScheme>()
.Where(ps => bargainTeamIdList.Contains(ps.BelongBargainTeamId) &&
productIdList.Contains(ps.ProductId))
.ToList(); //需要参与竞标采购方案
foreach (var productId in productIdList) foreach (var productId in productIdList)
{ {
#region 验证 #region 验证
@ -146,10 +154,11 @@ namespace BBWYB.Server.Business
if (!mappingQT_JDSKUDictionary.ContainsKey(ps.Id)) if (!mappingQT_JDSKUDictionary.ContainsKey(ps.Id))
mappingQT_JDSKUDictionary.TryAdd(ps.Id, jdsku); mappingQT_JDSKUDictionary.TryAdd(ps.Id, jdsku);
} }
var jdskus = mappingQT_JDSKUDictionary.Values.ToList();
var qtskus = mappingQT_JDSKUDictionary.Keys.ToList();
#endregion #endregion
#region 读取JDSKU预估金额 #region 读取JDSKU预估金额
var jdskus = mappingQT_JDSKUDictionary.Values.ToList();
var jdskuRecentCostList = fsqlManager.BBWYCfsql.Select<SkuRecentCost>(jdskus).ToList(); var jdskuRecentCostList = fsqlManager.BBWYCfsql.Select<SkuRecentCost>(jdskus).ToList();
#endregion #endregion
@ -232,7 +241,7 @@ namespace BBWYB.Server.Business
#region 创建采购方案竞标任务 #region 创建采购方案竞标任务
var waitJoinSchemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.BelongBargainTeamId == department.Id && var waitJoinSchemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.BelongBargainTeamId == department.Id &&
skuIdList.Contains(ps.SkuId)) qtskus.Contains(ps.SkuId))
.ToList(); .ToList();
if (waitJoinSchemeList.Count() > 0) if (waitJoinSchemeList.Count() > 0)
{ {
@ -257,7 +266,7 @@ namespace BBWYB.Server.Business
{ {
//判断sku是否首次采购 //判断sku是否首次采购
var isFirst = !dbSpuTotalSaleInfoList.Any(s => s.ProductId == spuGroup.Key); var isFirst = !dbSpuTotalInfoList.Any(s => s.ProductId == productId);
insertTimeLimitTaskList.Add(new TimeLimitTask() insertTimeLimitTaskList.Add(new TimeLimitTask()
{ {
@ -278,96 +287,17 @@ namespace BBWYB.Server.Business
} }
foreach (var reqItem in request.Items)
{
var qtsku = jdqtskuList.FirstOrDefault(x => x.SkuId == reqItem.Sku);
if (qtsku == null)
continue;
var qtskuId = qtsku.PurchaseSkuIds; //拳探skuId
if (dbSkuOptimizationTaskList.Any(s => s.SkuId == qtskuId)) //过滤未结束的sku
continue;
var productSku = productSkuList.FirstOrDefault(ps => ps.Id == qtskuId);
if (productSku == null)
continue;
var spuTotalInfo = spuTotalInfoList.FirstOrDefault(psi => psi.ProductId == productSku.ProductId); //spu销量
if (spuTotalInfo == null)
continue;
var reason = GetOptimizationReason(spuTotalInfo); //过滤不需要优化的spu
if (reason == null)
continue;
var skuOptimizationHistory = dbSkuOptimizationHistoryList.FirstOrDefault(h => h.SkuId == qtskuId);
#region 创建待议价任务
var skuOptimizationTask = new SkuOptimizationTask()
{
Id = idGenerator.NewLong(),
BelongShopName = belongShop.ShopName,
ShopId = productSku.ShopId,
CompletionTime = null,
CreateTime = DateTime.Now,
IsOptimizationCompleted = false,
IsPurchasementCompleted = false,
JDSkuId = reqItem.Sku,
PreItemCount = reqItem.PreItemCount,
ProductId = productSku.ProductId,
SafeWarningRemainingDay = reqItem.SafeWarningRemainingDay,
SkuId = qtskuId,
TriggerOptimizationReason = reason,
LastOptimizationRatio = skuOptimizationHistory?.OptimizationRatio ?? 0M,
LastPurchasePrice = skuOptimizationHistory?.CurrentPurchasePrice,
PrePurchasedAmount = (skuOptimizationHistory?.CurrentPurchasePrice ?? 0M) * reqItem.PreItemCount,
LastOptimizationTime = skuOptimizationHistory?.CreateTime
};
#endregion
#region 创建待优化子任务
{
var yijiagroups = venderBusiness.GetYiJiaGroup();
foreach (var department in yijiagroups)
{
var skuOptimizationChildTask = new SkuOptimizationChildTask()
{
Id = idGenerator.NewLong(),
BelongTeamId = department.Id,
BelongTeamName = department.DepartmentName,
CompletionTime = null,
IsOptimizationCompleted = false,
OptimizationTaskId = skuOptimizationTask.Id
};
insertSkuOptimizationChildTaskList.Add(skuOptimizationChildTask);
}
}
#endregion
#region 创建待优化限时任务
insertTimeLimitTaskList.Add(new TimeLimitTask()
{
Id = idGenerator.NewLong(),
CreateTme = DateTime.Now,
//ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1),
ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType., DateTime.Now.AddDays(reason == Enums.TriggerOptimizationReason. ? 1 : 0)),
//OrderId = o.OrderId,
//OrderSn = o.OrderSn,
ShopId = productSku.ShopId,
SkuId = qtskuId,
TaskType = Enums.TimeLimitTaskType.,
TaskId = skuOptimizationTask.Id,
Remark = reason.ToString()
});
#endregion
}
fsql.Transaction(() => fsql.Transaction(() =>
{ {
if (insertSpuOptimizationTaskList.Count() > 0)
fsql.Insert(insertSpuOptimizationTaskList).ExecuteAffrows();
if (insertSkuOptimizationTaskList.Count() > 0) if (insertSkuOptimizationTaskList.Count() > 0)
fsql.Insert(insertSkuOptimizationTaskList).ExecuteAffrows(); fsql.Insert(insertSkuOptimizationTaskList).ExecuteAffrows();
if (insertSkuOptimizationChildTaskList.Count() > 0) if (insertSpuOptimizationBargainTeamTaskList.Count() > 0)
fsql.Insert(insertSkuOptimizationChildTaskList).ExecuteAffrows(); fsql.Insert(insertSpuOptimizationBargainTeamTaskList).ExecuteAffrows();
if (insertSpuOptimizationCompetitiveTenderTaskList.Count() > 0)
fsql.Insert(insertSpuOptimizationCompetitiveTenderTaskList).ExecuteAffrows();
if (insertTimeLimitTaskList.Count() > 0) if (insertTimeLimitTaskList.Count() > 0)
fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows();
}); });

Loading…
Cancel
Save