From b063f86688a2982e1ce4f9f4ead52206e018f571 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 5 Mar 2024 15:22:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=8F=E8=94=BDSKU=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=92=8C=E4=BC=98=E5=8C=96=E5=8E=86=E5=8F=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 114 +++---- .../Sync/OrderSyncBusiness.cs | 300 +++++++++--------- 2 files changed, 199 insertions(+), 215 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 1e0a784..bbeacb0 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -684,65 +684,65 @@ namespace BBWYB.Server.Business } #endregion - #region 创建优化历史 - { - //本批次在线采购的订单sku集合 - var allBelongSkuIdList = request.CargoParamGroupList.SelectMany(cg => cg.CargoParamList.Select(c => c.BelongSkuId)).Distinct().ToList(); - //var optimizationSkuIdList = orderSkus.Where(osku => osku.IsOptimizationCompleted == 1 && allBelongSkuIdList.Contains(osku.SkuId)) - // .Select(osku => osku.SkuId) - // .ToList(); - - var optimizationTaskList = fsql.Select() - .Where(s => allBelongSkuIdList.Contains(s.SkuId) && - s.IsOptimizationCompleted == true && - s.IsPurchasementCompleted == false) - .ToList(); - - var optimizationSkuIdList = optimizationTaskList.Select(s => s.SkuId).Distinct().ToList(); - if (optimizationSkuIdList.Count() > 0) - { - //优化历史 - var optimizationHistoryList = fsql.Select() - .Where(s1 => s1.ShopId == request.ShopId && optimizationSkuIdList.Contains(s1.SkuId)) - .GroupBy(s1 => s1.SkuId) - .WithTempQuery(g => new { MaxId = g.Max(g.Value.Id) }) - .From() - .InnerJoin((s1, s2) => s1.MaxId == s2.Id) - .ToList((s1, s2) => s2); - - - foreach (var optimizationSkuId in optimizationSkuIdList) - { - var orderSkuCost = allOrderSkuCostList.FirstOrDefault(x => x.SkuId == optimizationSkuId); - if (orderSkuCost == null) - continue; - var orderSku = orderSkus.FirstOrDefault(x => x.SkuId == optimizationSkuId); - var lastHistory = optimizationHistoryList.FirstOrDefault(x => x.SkuId == optimizationSkuId); + //#region 创建优化历史 + //{ + // //本批次在线采购的订单sku集合 + // var allBelongSkuIdList = request.CargoParamGroupList.SelectMany(cg => cg.CargoParamList.Select(c => c.BelongSkuId)).Distinct().ToList(); + // //var optimizationSkuIdList = orderSkus.Where(osku => osku.IsOptimizationCompleted == 1 && allBelongSkuIdList.Contains(osku.SkuId)) + // // .Select(osku => osku.SkuId) + // // .ToList(); + + // var optimizationTaskList = fsql.Select() + // .Where(s => allBelongSkuIdList.Contains(s.SkuId) && + // s.IsOptimizationCompleted == true && + // s.IsPurchasementCompleted == false) + // .ToList(); + + // var optimizationSkuIdList = optimizationTaskList.Select(s => s.SkuId).Distinct().ToList(); + // if (optimizationSkuIdList.Count() > 0) + // { + // //优化历史 + // var optimizationHistoryList = fsql.Select() + // .Where(s1 => s1.ShopId == request.ShopId && optimizationSkuIdList.Contains(s1.SkuId)) + // .GroupBy(s1 => s1.SkuId) + // .WithTempQuery(g => new { MaxId = g.Max(g.Value.Id) }) + // .From() + // .InnerJoin((s1, s2) => s1.MaxId == s2.Id) + // .ToList((s1, s2) => s2); - var currentPurchasePrice = orderSkuCost.SkuAmount / orderSku.ItemTotal; - var ratio = (lastHistory?.LastPurchasePrice ?? 0) == 0 ? 0 : 1 - currentPurchasePrice / lastHistory.LastPurchasePrice; - var newOptimizationHistory = new SkuOptimizationHistory() - { - Id = idGenerator.NewLong(), - CreateTime = DateTime.Now, - CurrentPurchasePrice = orderSkuCost.SkuAmount / orderSku.ItemTotal, - ProductId = orderSku.ProductId, - ShopId = request.ShopId, - SkuId = optimizationSkuId, - LastPurchasePrice = lastHistory?.LastPurchasePrice ?? 0, - OptimizationRatio = ratio, - TriggerOptimizationReason = orderSku.TriggerOptimizationReason - }; - insertSkuOptimizationHistoryList.Add(newOptimizationHistory); - - var skuOptimizationTask = optimizationTaskList.FirstOrDefault(x => x.SkuId == optimizationSkuId); - if (skuOptimizationTask != null) - updateSkuOptimizationPurhcasementByIdList.Add(skuOptimizationTask.Id); - } - } - } - #endregion + // foreach (var optimizationSkuId in optimizationSkuIdList) + // { + // var orderSkuCost = allOrderSkuCostList.FirstOrDefault(x => x.SkuId == optimizationSkuId); + // if (orderSkuCost == null) + // continue; + // var orderSku = orderSkus.FirstOrDefault(x => x.SkuId == optimizationSkuId); + // var lastHistory = optimizationHistoryList.FirstOrDefault(x => x.SkuId == optimizationSkuId); + + // var currentPurchasePrice = orderSkuCost.SkuAmount / orderSku.ItemTotal; + // var ratio = (lastHistory?.LastPurchasePrice ?? 0) == 0 ? 0 : 1 - currentPurchasePrice / lastHistory.LastPurchasePrice; + + // var newOptimizationHistory = new SkuOptimizationHistory() + // { + // Id = idGenerator.NewLong(), + // CreateTime = DateTime.Now, + // CurrentPurchasePrice = orderSkuCost.SkuAmount / orderSku.ItemTotal, + // ProductId = orderSku.ProductId, + // ShopId = request.ShopId, + // SkuId = optimizationSkuId, + // LastPurchasePrice = lastHistory?.LastPurchasePrice ?? 0, + // OptimizationRatio = ratio, + // TriggerOptimizationReason = orderSku.TriggerOptimizationReason + // }; + // insertSkuOptimizationHistoryList.Add(newOptimizationHistory); + + // var skuOptimizationTask = optimizationTaskList.FirstOrDefault(x => x.SkuId == optimizationSkuId); + // if (skuOptimizationTask != null) + // updateSkuOptimizationPurhcasementByIdList.Add(skuOptimizationTask.Id); + // } + // } + //} + //#endregion fsql.Transaction(() => { diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index d8cb736..fb6521f 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -383,142 +383,142 @@ namespace BBWYB.Server.Business.Sync } #endregion - #region 检查待议价任务 - { - if (waitToCheckSkuSaleOrderList.Count() > 0) - { - var skuIdList = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList.Select(osku => osku.SkuId)).Distinct().ToList(); - - //没有完成首次采购的spu - var noFisrstPurchasedSpuList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList) - .Where(s => s.IsFirstPurchaseCompleted == false) - .Select(s => s.ProductId) - .ToList(); - - //查询已存在未结束的优化任务 - var dbSkuOptimizationTaskList = fsql.Select() - .Where(t => t.ShopId == shopId && - t.IsOptimizationCompleted == false && - skuIdList.Contains(t.SkuId)) - .ToList(); - - - if (noFisrstPurchasedSpuList.Count() > 0) - { - var bargainTeamList = venderBusiness.GetYiJiaGroup(); //获取议价组 - var bargainTeamIdList = bargainTeamList.Select(t => t.Id).ToList(); - var waitToCompetitiveTenderSchemeList = fsql.Select() - .Where(ps => bargainTeamIdList.Contains(ps.BelongBargainTeamId) && - skuIdList.Contains(ps.SkuId)) - .ToList(); //需要参与竞标采购方案 - - foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList) - { - foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList) - { - if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) && - !dbSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId) && - !insertSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId)) - { - #region 解析来源店铺数据 - JArray belongSkus = null; - string sourceShopName = string.Empty; - if (!string.IsNullOrEmpty(waitCheckOrder.Extended)) - { - try - { - var jobject = JObject.Parse(waitCheckOrder.Extended); - //dbOrder.SourceSku = jobject.Value("SourceSku"); - sourceShopName = jobject.Value("SourceShopName"); - - if (jobject.ContainsKey("BelongSkus")) - belongSkus = jobject["BelongSkus"] as JArray; - - } - catch (Exception ex) - { - - } - } - #endregion - - #region 创建待优化任务 - var skuOptimizationTask = new SkuOptimizationTask() - { - Id = idGenerator.NewLong(), - PreItemCount = 0, - PrePurchasedAmount = 0, - IsOptimizationCompleted = false, - IsPurchasementCompleted = false, - CreateTime = DateTime.Now, - SafeWarningRemainingDay = 0, - TriggerOptimizationReason = Enums.TriggerOptimizationReason.首次采购, - SkuId = waitCheckOrderSku.SkuId, - ShopId = shopId, - ProductId = waitCheckOrderSku.ProductId, - BelongShopName = sourceShopName, - CompletionTime = null, - JDSkuId = belongSkus?.FirstOrDefault(j => j.Value("SkuId") == waitCheckOrderSku.SkuId)?.Value("BelongSkuId") ?? string.Empty, - LastOptimizationRatio = 0, - LastPurchasePrice = 0, - LastOptimizationTime = null - }; - - insertSkuOptimizationTaskList.Add(skuOptimizationTask); - #endregion - - #region 创建待优化子任务 - { - foreach (var department in bargainTeamList) - { - var skuOptimizationChildTask = new SkuOptimizationChildTask() - { - Id = idGenerator.NewLong(), - BelongTeamId = department.Id, - BelongTeamName = department.DepartmentName, - CompletionTime = null, - IsOptimizationCompleted = false, - OptimizationTaskId = skuOptimizationTask.Id - }; - insertSkuOptimizationChildTaskList.Add(skuOptimizationChildTask); - - #region 创建竞标任务 - var schemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.SkuId == waitCheckOrderSku.SkuId && - ps.BelongBargainTeamId == department.Id) - .ToList(); - - #endregion - } - } - #endregion - - #region 创建待优化限时任务 - - //判断sku是否首次采购 - var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == waitCheckOrderSku.SkuId); - - 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(isFirst ? 1 : 0)), - //OrderId = o.OrderId, - //OrderSn = o.OrderSn, - ShopId = shopId, - SkuId = waitCheckOrderSku.SkuId, - TaskType = Enums.TimeLimitTaskType.待议价任务, - TaskId = skuOptimizationTask.Id, - Remark = "首次采购限时任务" - }); - #endregion - } - } - } - } - } - } - #endregion + //#region 检查待议价任务 + //{ + // if (waitToCheckSkuSaleOrderList.Count() > 0) + // { + // var skuIdList = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList.Select(osku => osku.SkuId)).Distinct().ToList(); + + // //没有完成首次采购的spu + // var noFisrstPurchasedSpuList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList) + // .Where(s => s.IsFirstPurchaseCompleted == false) + // .Select(s => s.ProductId) + // .ToList(); + + // //查询已存在未结束的优化任务 + // var dbSkuOptimizationTaskList = fsql.Select() + // .Where(t => t.ShopId == shopId && + // t.IsOptimizationCompleted == false && + // skuIdList.Contains(t.SkuId)) + // .ToList(); + + + // if (noFisrstPurchasedSpuList.Count() > 0) + // { + // var bargainTeamList = venderBusiness.GetYiJiaGroup(); //获取议价组 + // var bargainTeamIdList = bargainTeamList.Select(t => t.Id).ToList(); + // var waitToCompetitiveTenderSchemeList = fsql.Select() + // .Where(ps => bargainTeamIdList.Contains(ps.BelongBargainTeamId) && + // skuIdList.Contains(ps.SkuId)) + // .ToList(); //需要参与竞标采购方案 + + // foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList) + // { + // foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList) + // { + // if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) && + // !dbSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId) && + // !insertSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId)) + // { + // #region 解析来源店铺数据 + // JArray belongSkus = null; + // string sourceShopName = string.Empty; + // if (!string.IsNullOrEmpty(waitCheckOrder.Extended)) + // { + // try + // { + // var jobject = JObject.Parse(waitCheckOrder.Extended); + // //dbOrder.SourceSku = jobject.Value("SourceSku"); + // sourceShopName = jobject.Value("SourceShopName"); + + // if (jobject.ContainsKey("BelongSkus")) + // belongSkus = jobject["BelongSkus"] as JArray; + + // } + // catch (Exception ex) + // { + + // } + // } + // #endregion + + // #region 创建待优化任务 + // var skuOptimizationTask = new SkuOptimizationTask() + // { + // Id = idGenerator.NewLong(), + // PreItemCount = 0, + // PrePurchasedAmount = 0, + // IsOptimizationCompleted = false, + // IsPurchasementCompleted = false, + // CreateTime = DateTime.Now, + // SafeWarningRemainingDay = 0, + // TriggerOptimizationReason = Enums.TriggerOptimizationReason.首次采购, + // SkuId = waitCheckOrderSku.SkuId, + // ShopId = shopId, + // ProductId = waitCheckOrderSku.ProductId, + // BelongShopName = sourceShopName, + // CompletionTime = null, + // JDSkuId = belongSkus?.FirstOrDefault(j => j.Value("SkuId") == waitCheckOrderSku.SkuId)?.Value("BelongSkuId") ?? string.Empty, + // LastOptimizationRatio = 0, + // LastPurchasePrice = 0, + // LastOptimizationTime = null + // }; + + // insertSkuOptimizationTaskList.Add(skuOptimizationTask); + // #endregion + + // #region 创建待优化子任务 + // { + // foreach (var department in bargainTeamList) + // { + // var skuOptimizationChildTask = new SkuOptimizationChildTask() + // { + // Id = idGenerator.NewLong(), + // BelongTeamId = department.Id, + // BelongTeamName = department.DepartmentName, + // CompletionTime = null, + // IsOptimizationCompleted = false, + // OptimizationTaskId = skuOptimizationTask.Id + // }; + // insertSkuOptimizationChildTaskList.Add(skuOptimizationChildTask); + + // #region 创建竞标任务 + // var schemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.SkuId == waitCheckOrderSku.SkuId && + // ps.BelongBargainTeamId == department.Id) + // .ToList(); + + // #endregion + // } + // } + // #endregion + + // #region 创建待优化限时任务 + + // //判断sku是否首次采购 + // var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == waitCheckOrderSku.SkuId); + + // 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(isFirst ? 1 : 0)), + // //OrderId = o.OrderId, + // //OrderSn = o.OrderSn, + // ShopId = shopId, + // SkuId = waitCheckOrderSku.SkuId, + // TaskType = Enums.TimeLimitTaskType.待议价任务, + // TaskId = skuOptimizationTask.Id, + // Remark = "首次采购限时任务" + // }); + // #endregion + // } + // } + // } + // } + // } + //} + //#endregion #region 检查限时采购任务 CheckPurchaseTimeLimitTask(shopId, qtOrderList.Items, dbPurchaseTimeLimitTaskList, insertTimeLimitTaskList); @@ -538,14 +538,14 @@ namespace BBWYB.Server.Business.Sync if (insertTimeLimitTaskList.Count() > 0) fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows(); - if (insertSkuOptimizationTaskList.Count() > 0) - fsql.Insert(insertSkuOptimizationTaskList).ExecuteAffrows(); + //if (insertSkuOptimizationTaskList.Count() > 0) + // fsql.Insert(insertSkuOptimizationTaskList).ExecuteAffrows(); - if (insertSkuOptimizationChildTaskList.Count() > 0) - fsql.Insert(insertSkuOptimizationChildTaskList).ExecuteAffrows(); + //if (insertSkuOptimizationChildTaskList.Count() > 0) + // fsql.Insert(insertSkuOptimizationChildTaskList).ExecuteAffrows(); - if (insertCompetitiveTenderList.Count() > 0) - fsql.Insert(insertCompetitiveTenderList).ExecuteAffrows(); + //if (insertCompetitiveTenderList.Count() > 0) + // fsql.Insert(insertCompetitiveTenderList).ExecuteAffrows(); if (updateOrderList.Count() > 0) foreach (var update in updateOrderList) @@ -574,22 +574,6 @@ namespace BBWYB.Server.Business.Sync .ExecuteAffrows(); } - //if (updateOrderSkuIdList_OptimizationFlag.Count() > 0) - // fsql.Update(updateOrderSkuIdList_OptimizationFlag).Set(osku => osku.IsNeedOptimization, 1).ExecuteAffrows(); - //if (updateOSkuOptimizationFlagByReasonGroups.Keys.Count() > 0) - //{ - // foreach (var triggerOptimizationReason in updateOSkuOptimizationFlagByReasonGroups.Keys) - // { - // var updateOSkuListOptimizationFlagList = updateOSkuOptimizationFlagByReasonGroups[triggerOptimizationReason]; - // if (updateOSkuListOptimizationFlagList != null && updateOSkuListOptimizationFlagList.Count > 0) - // { - // fsql.Update(updateOSkuListOptimizationFlagList).Set(osku => osku.IsNeedOptimization, 1) - // .Set(osku => osku.TriggerOptimizationReason, triggerOptimizationReason) - // .ExecuteAffrows(); - // } - // } - //} - foreach (var key in deductionSkuCountDictionary.Keys) fsql.Update(key).Set(s => s.ItemCount - deductionSkuCountDictionary[key]).ExecuteAffrows(); foreach (var key in deductionSpuCountDictionary.Keys)