diff --git a/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs index d82d899..25b2c62 100644 --- a/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs @@ -82,7 +82,7 @@ namespace BBWYB.Server.Business var shopId = productSkuList.FirstOrDefault()?.ShopId; var productIdList = productSkuList.Select(ps => ps.ProductId).Distinct().ToList(); var productList = fsql.Select(productIdList).ToList(); - var spuTotalInfoList = fsql.Select().Where(spi => productIdList.Contains(spi.ProductId)).ToList(); + var dbSpuTotalInfoList = fsql.Select().Where(spi => productIdList.Contains(spi.ProductId)).ToList(); #endregion @@ -109,12 +109,20 @@ namespace BBWYB.Server.Business List insertSkuOptimizationTaskList = new List(); List insertSpuOptimizationBargainTeamTaskList = new List(); List insertSpuOptimizationCompetitiveTenderTaskList = new List(); + List insertTimeLimitTaskList = new List(); #endregion var belongShop = venderBusiness.GetShopList(request.ShopId).FirstOrDefault(); if (belongShop == null) throw new BusinessException("店铺不存在"); + var bargainTeamList = venderBusiness.GetYiJiaGroup(); //获取议价组 + var bargainTeamIdList = bargainTeamList.Select(t => t.Id).ToList(); + var waitToCompetitiveTenderSchemeList = fsql.Select() + .Where(ps => bargainTeamIdList.Contains(ps.BelongBargainTeamId) && + productIdList.Contains(ps.ProductId)) + .ToList(); //需要参与竞标采购方案 + foreach (var productId in productIdList) { #region 验证 @@ -146,10 +154,11 @@ namespace BBWYB.Server.Business if (!mappingQT_JDSKUDictionary.ContainsKey(ps.Id)) mappingQT_JDSKUDictionary.TryAdd(ps.Id, jdsku); } + var jdskus = mappingQT_JDSKUDictionary.Values.ToList(); + var qtskus = mappingQT_JDSKUDictionary.Keys.ToList(); #endregion #region 读取JDSKU预估金额 - var jdskus = mappingQT_JDSKUDictionary.Values.ToList(); var jdskuRecentCostList = fsqlManager.BBWYCfsql.Select(jdskus).ToList(); #endregion @@ -232,7 +241,7 @@ namespace BBWYB.Server.Business #region 创建采购方案竞标任务 var waitJoinSchemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.BelongBargainTeamId == department.Id && - skuIdList.Contains(ps.SkuId)) + qtskus.Contains(ps.SkuId)) .ToList(); if (waitJoinSchemeList.Count() > 0) { @@ -257,7 +266,7 @@ namespace BBWYB.Server.Business { //判断sku是否首次采购 - var isFirst = !dbSpuTotalSaleInfoList.Any(s => s.ProductId == spuGroup.Key); + var isFirst = !dbSpuTotalInfoList.Any(s => s.ProductId == productId); 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(() => { + if (insertSpuOptimizationTaskList.Count() > 0) + fsql.Insert(insertSpuOptimizationTaskList).ExecuteAffrows(); if (insertSkuOptimizationTaskList.Count() > 0) fsql.Insert(insertSkuOptimizationTaskList).ExecuteAffrows(); - if (insertSkuOptimizationChildTaskList.Count() > 0) - fsql.Insert(insertSkuOptimizationChildTaskList).ExecuteAffrows(); + if (insertSpuOptimizationBargainTeamTaskList.Count() > 0) + fsql.Insert(insertSpuOptimizationBargainTeamTaskList).ExecuteAffrows(); + if (insertSpuOptimizationCompetitiveTenderTaskList.Count() > 0) + fsql.Insert(insertSpuOptimizationCompetitiveTenderTaskList).ExecuteAffrows(); if (insertTimeLimitTaskList.Count() > 0) fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); });