Browse Source

限时任务超时回调

liangku_skuoptimazation
shanji 1 year ago
parent
commit
351bee6f89
  1. 82
      BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs

82
BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs

@ -503,8 +503,7 @@ namespace BBWYB.Server.Business
var allBargainTeamCompetitiveTenderSchemeIdList = allBargainTeamCompetitiveTenderTaskList.Select(ct => ct.SchemeId).ToList(); var allBargainTeamCompetitiveTenderSchemeIdList = allBargainTeamCompetitiveTenderTaskList.Select(ct => ct.SchemeId).ToList();
var allBargainTeamPurchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest() var allBargainTeamPurchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest()
{ {
BargainTeamIdList = new List<string>() { uInfo.user.DepartmentId }, SchemeIdList = allBargainTeamCompetitiveTenderSchemeIdList,
SkuIdList = skuIdList,
IncludePurchaseSkuBasicInfo = 0 IncludePurchaseSkuBasicInfo = 0
}); });
var victoryCompetitiveTenderTaskList = VictoryPlanSelection(allBargainTeamCompetitiveTenderTaskList, allBargainTeamPurchaseSchemeList); var victoryCompetitiveTenderTaskList = VictoryPlanSelection(allBargainTeamCompetitiveTenderTaskList, allBargainTeamPurchaseSchemeList);
@ -691,7 +690,86 @@ namespace BBWYB.Server.Business
/// <param name="taskId"></param> /// <param name="taskId"></param>
public void TimeLimitTaskTimeOutCallBack(long taskId) public void TimeLimitTaskTimeOutCallBack(long taskId)
{ {
try
{
var spuOptimizationTask = fsql.Select<SpuOptimizationTask>(taskId).ToOne();
if (spuOptimizationTask == null)
throw new BusinessException($"待优化任务{taskId}不存在");
if (spuOptimizationTask.IsOptimizationCompleted == true)
throw new BusinessException("待优化任务已完成");
IUpdate<SpuOptimizationTask> updateSpuTask = null;
IUpdate<SpuTotalSaleInfo> updateSpuSaleInfo = null;
IUpdate<SpuOptimizationCompetitiveTenderTask> updateCompetitiveTenderTask = null;
var spuOptimizationBargainTeamTaskList = fsql.Select<SpuOptimizationBargainTeamTask>()
.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<SpuOptimizationCompetitiveTenderTask>()
.Where(ct => ct.SpuOptimizationTaskId == taskId &&
compleptionBargainTeamIdList.Contains(ct.BargainTeamId))
.ToList();
#region 更新spu销量表
var spuSaleInfo = fsql.Select<SpuTotalSaleInfo>(spuOptimizationTask.ProductId).ToOne();
if (spuSaleInfo == null)
throw new BusinessException($"未找到spu{spuOptimizationTask.ProductId}销量");
updateSpuSaleInfo = fsql.Update<SpuTotalSaleInfo>(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>(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<SpuOptimizationCompetitiveTenderTask>(victoryCompetitiveTenderTaskIdList)
.Set(ct => ct.IsWin, true);
#endregion
}
fsql.Transaction(() =>
{
updateSpuTask?.ExecuteAffrows();
updateSpuSaleInfo?.ExecuteAffrows();
updateCompetitiveTenderTask?.ExecuteAffrows();
});
}
catch (Exception ex)
{
nLogManager.Default().Error(ex, "限时任务超时回调失败");
}
} }
} }
} }

Loading…
Cancel
Save