diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index a38e8ff..35f0749 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -384,142 +384,167 @@ 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 spuIdList = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList.Select(osku => osku.ProductId)).Distinct().ToList(); + + //没有完成首次采购的spu + var noFisrstPurchasedSpuList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList) + .Where(s => s.IsFirstPurchaseCompleted == false) + .Select(s => s.ProductId) + .ToList(); + + //查询已存在未结束的优化任务 + var dbSpuOptimizationTaskList = fsql.Select() + .Where(t => t.ShopId == shopId && + t.IsOptimizationCompleted == false && + spuIdList.Contains(t.ProductId)) + .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) && + spuIdList.Contains(ps.ProductId)) + .ToList(); //需要参与竞标采购方案 + + + var waitToCheckOrderSpuGroups = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList).GroupBy(osku => osku.ProductId); + foreach (var spuGroup in waitToCheckOrderSpuGroups) + { + if (noFisrstPurchasedSpuList.Contains(spuGroup.Key) && + !dbSpuOptimizationTaskList.Any(t => t.ProductId == spuGroup.Key) && + !insertSpuOptimizationTaskList.Any(t => t.ProductId == spuGroup.Key)) + { + var includeSpuOrderList = waitToCheckSkuSaleOrderList.Where(o => o.OrderSkuList.Any(osku => osku.ProductId == spuGroup.Key)); + + var sourceShopName = string.Empty; + //京东sku-拳探sku下单关系映射表 + var mappingQT_JDSKUDictionary = new Dictionary(); + + #region 解析来源店铺数据 + foreach (var waitCheckOrder in includeSpuOrderList) + { + if (!string.IsNullOrEmpty(waitCheckOrder.Extended)) + { + try + { + var jobject = JObject.Parse(waitCheckOrder.Extended); + sourceShopName = jobject.Value("SourceShopName"); + + if (jobject.ContainsKey("BelongSkus")) + { + var jbelongSkus = jobject["BelongSkus"] as JArray; + foreach (var j in jbelongSkus) + { + var skuId = j.Value("SkuId"); + var belongSkuId = j.Value("BelongSkuId"); + if (!mappingQT_JDSKUDictionary.ContainsKey(skuId)) + mappingQT_JDSKUDictionary.TryAdd(skuId, belongSkuId); + } + } + } + catch (Exception ex) + { + + } + } + } + #endregion + } + } + + foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList) + { + + foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList) + { + if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) && + !dbSpuOptimizationTaskList.Any(t => t.ProductId == waitCheckOrderSku.ProductId) && + !insertSpuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId)) + { + #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); diff --git a/BBWYB.Server.Model/Db/SpuOptimization/Skuoptimizationtask.cs b/BBWYB.Server.Model/Db/SpuOptimization/Skuoptimizationtask.cs index dc53051..cd940c4 100644 --- a/BBWYB.Server.Model/Db/SpuOptimization/Skuoptimizationtask.cs +++ b/BBWYB.Server.Model/Db/SpuOptimization/Skuoptimizationtask.cs @@ -38,7 +38,7 @@ namespace BBWYB.Server.Model.Db public int? PreSkuCount { get; set; } [Column(StringLength = 50)] - public string QTSkuId { get; set; } + public string SkuId { get; set; } /// /// Spu优化任务Id;Spu优化任务Id diff --git a/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs b/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs index 41f971a..162a0b3 100644 --- a/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs +++ b/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs @@ -46,7 +46,10 @@ namespace BBWYB.Server.Model.Db public bool? IsOptimizationCompleted { get; set; } [Column(StringLength = 50)] - public string JDSpuId { get; set; } + public string ProductId { get; set; } + + [Column(StringLength = 255)] + public string ProductTitle { get; set; } /// /// 上次优化时间;上次优化时间