|
@ -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(); |
|
|
}); |
|
|
}); |
|
|