diff --git a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs index 5d3b92e..e4778a2 100644 --- a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs @@ -503,8 +503,7 @@ namespace BBWYB.Server.Business var allBargainTeamCompetitiveTenderSchemeIdList = allBargainTeamCompetitiveTenderTaskList.Select(ct => ct.SchemeId).ToList(); var allBargainTeamPurchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest() { - BargainTeamIdList = new List() { uInfo.user.DepartmentId }, - SkuIdList = skuIdList, + SchemeIdList = allBargainTeamCompetitiveTenderSchemeIdList, IncludePurchaseSkuBasicInfo = 0 }); var victoryCompetitiveTenderTaskList = VictoryPlanSelection(allBargainTeamCompetitiveTenderTaskList, allBargainTeamPurchaseSchemeList); @@ -691,7 +690,86 @@ namespace BBWYB.Server.Business /// public void TimeLimitTaskTimeOutCallBack(long taskId) { + try + { + var spuOptimizationTask = fsql.Select(taskId).ToOne(); + if (spuOptimizationTask == null) + throw new BusinessException($"待优化任务{taskId}不存在"); + if (spuOptimizationTask.IsOptimizationCompleted == true) + throw new BusinessException("待优化任务已完成"); + + IUpdate updateSpuTask = null; + IUpdate updateSpuSaleInfo = null; + IUpdate updateCompetitiveTenderTask = null; + + var spuOptimizationBargainTeamTaskList = fsql.Select() + .Where(sbt => sbt.SpuOptimizationTaskId == taskId) + .ToList(); + + if (spuOptimizationBargainTeamTaskList.Any(sc => sc.IsOptimizationCompleted == true)) + { + //任意一个议价组完成任务,该优化任务视为完成 + + var compleptionBargainTeamIdList = spuOptimizationBargainTeamTaskList.Where(sbt => sbt.IsOptimizationCompleted == true) + .Select(sbt => sbt.BelongTeamId) + .Distinct() + .ToList(); + + //已完成议价任务的竞标任务 + var compleptionBargainTeamCompetitiveTenderTaskList = fsql.Select() + .Where(ct => ct.SpuOptimizationTaskId == taskId && + compleptionBargainTeamIdList.Contains(ct.BargainTeamId)) + .ToList(); + + #region 更新spu销量表 + var spuSaleInfo = fsql.Select(spuOptimizationTask.ProductId).ToOne(); + if (spuSaleInfo == null) + + throw new BusinessException($"未找到spu{spuOptimizationTask.ProductId}销量"); + + updateSpuSaleInfo = fsql.Update(spuOptimizationTask.ProductId) + .SetIf(spuSaleInfo.IsFirstPurchaseCompleted == false, s => s.IsFirstPurchaseCompleted, true) + .SetIf(spuSaleInfo.IsFirstPurchaseCompleted == false, s => s.FirstPurchaseCompletedItemCount == s.ItemCount) + .SetIf(spuSaleInfo.IsFirstPurchaseCompleted == true && + spuSaleInfo.IsFirstOptimizationCompleted == false, s => s.IsFirstOptimizationCompleted, true) + .SetIf(spuSaleInfo.IsFirstPurchaseCompleted == true && + spuSaleInfo.IsFirstOptimizationCompleted == false, s => s.FirstOptimizationCompletedItemCount == s.ItemCount) + .Set(s => s.LastOptimizationItemCount == s.ItemCount) + .Set(s => s.LastOptimizationTime, DateTime.Now) + .Set(s => s.UpdateTime, DateTime.Now); + #endregion + + #region 更新待优化任务 + updateSpuTask = fsql.Update(spuOptimizationTask.Id) + .Set(t => t.IsOptimizationCompleted, true) + .Set(t => t.CompletionTime, DateTime.Now); + #endregion + + #region 评选竞标结果 + var compleptionBargainTeamPurchaseSchemeIdList = compleptionBargainTeamCompetitiveTenderTaskList.Select(ct => ct.SchemeId).ToList(); + var compleptionBargainTeamPurchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest() + { + SchemeIdList = compleptionBargainTeamPurchaseSchemeIdList, + IncludePurchaseSkuBasicInfo = 0 + }); + var victoryCompetitiveTenderTaskList = VictoryPlanSelection(compleptionBargainTeamCompetitiveTenderTaskList, compleptionBargainTeamPurchaseSchemeList); + var victoryCompetitiveTenderTaskIdList = victoryCompetitiveTenderTaskList.Select(ct => ct.Id).ToList(); + updateCompetitiveTenderTask = fsql.Update(victoryCompetitiveTenderTaskIdList) + .Set(ct => ct.IsWin, true); + #endregion + } + fsql.Transaction(() => + { + updateSpuTask?.ExecuteAffrows(); + updateSpuSaleInfo?.ExecuteAffrows(); + updateCompetitiveTenderTask?.ExecuteAffrows(); + }); + } + catch (Exception ex) + { + nLogManager.Default().Error(ex, "限时任务超时回调失败"); + } } } }