Browse Source

更新订单sku优化标记

liangku_skuoptimazation
shanji 1 year ago
parent
commit
e6c27cb1b7
  1. 10
      BBWYB.Server.API/Controllers/SkuOptimizationController.cs
  2. 2
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  3. 53
      BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs
  4. 52
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

10
BBWYB.Server.API/Controllers/SkuOptimizationController.cs

@ -23,5 +23,15 @@ namespace BBWYB.Server.API.Controllers
{
skuOptimizationBusiness.LKInventoryAlertNotification(request);
}
/// <summary>
/// 完成待优化任务 (相同spu的优化任务会一起完成)
/// </summary>
/// <param name="taskId">待优化任务Id</param>
[HttpPost("{taskId}")]
public void CompleteOptimization([FromRoute]long taskId)
{
skuOptimizationBusiness.CompleteOptimization(taskId);
}
}
}

2
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -682,7 +682,7 @@ namespace BBWYB.Server.Business
}
#endregion
#region 创建优化历史
#region 创建优化历史
{
//本批次在线采购的订单sku集合
var allBelongSkuIdList = request.CargoParamGroupList.SelectMany(cg => cg.CargoParamList.Select(c => c.BelongSkuId)).Distinct().ToList();

53
BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs

@ -1,5 +1,7 @@
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto;
using Yitter.IdGenerator;
@ -16,6 +18,57 @@ namespace BBWYB.Server.Business
}
/// <summary>
/// 完成优化
/// </summary>
/// <param name="taskId"></param>
public void CompleteOptimization(long taskId)
{
var optimazaionTask = fsql.Select<SkuOptimizationTask>(taskId).ToOne();
if (optimazaionTask == null)
throw new BusinessException("优化任务不存在");
if (optimazaionTask.IsOptimizationCompleted == true)
throw new BusinessException("优化任务已完成");
var optimazationTaskIdList = fsql.Select<SkuOptimizationTask>()
.Where(t => t.ProductId == optimazaionTask.ProductId && t.IsOptimizationCompleted == false)
.ToList(t => t.Id);
var spuSaleInfo = fsql.Select<SpuTotalSaleInfo>(optimazaionTask.ProductId).ToOne();
if (spuSaleInfo == null)
throw new BusinessException($"未找到spu{optimazaionTask.ProductId}销量");
var updateSpuSaleInfo = fsql.Update<SpuTotalSaleInfo>(optimazaionTask.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);
fsql.Transaction(() =>
{
fsql.Update<SkuOptimizationTask>().Set(t => t.IsOptimizationCompleted, true)
.Set(t => t.CompletionTime, DateTime.Now)
.Where(t => optimazationTaskIdList.Contains(t.Id) && t.IsOptimizationCompleted == false)
.ExecuteAffrows();
fsql.Update<TimeLimitTask>().Set(t => t.CompletionTime, DateTime.Now)
.Set(t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false))
.Where(t => optimazationTaskIdList.Contains(t.TaskId) &&
t.CompletionTime == null &&
t.TaskType == Enums.TimeLimitTaskType.)
.ExecuteAffrows();
updateSpuSaleInfo.ExecuteAffrows();
});
}
/*
var optimizationSpuSaleList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList).Where(s =>
{

52
BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

@ -378,21 +378,24 @@ namespace BBWYB.Server.Business.Sync
{
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<SkuOptimizationTask>()
.Where(t => t.ShopId == shopId &&
t.IsOptimizationCompleted == false &&
skuIdList.Contains(t.SkuId))
.ToList();
if (noFisrstPurchasedSpuList.Count() > 0)
{
//查询已存在未结束的优化任务
var dbSkuOptimizationTaskList = fsql.Select<SkuOptimizationTask>()
.Where(t => t.ShopId == shopId &&
t.IsOptimizationCompleted == false &&
t.TriggerOptimizationReason == Enums.TriggerOptimizationReason. &&
noFisrstPurchasedSpuList.Contains(t.ProductId))
.ToList();
foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList)
{
foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList)
@ -469,6 +472,39 @@ namespace BBWYB.Server.Business.Sync
}
}
}
#region 更新订单sku优化标记
var allSkuOptimizationTaskList = dbSkuOptimizationTaskList.Union(insertSkuOptimizationTaskList);
foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList)
{
foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList)
{
var task = allSkuOptimizationTaskList.FirstOrDefault(t => t.SkuId == waitCheckOrderSku.SkuId);
if (task != null)
{
#region 更新sku优化标记
var oskuId = long.Parse(waitCheckOrderSku.SkuId);
var insertOrderSku = insertOrderSkuList.FirstOrDefault(s => s.Id == oskuId);
if (insertOrderSku != null)
{
insertOrderSku.IsNeedOptimization = 1;
insertOrderSku.TriggerOptimizationReason = task.TriggerOptimizationReason;
}
else
{
//updateOrderSkuIdList_OptimizationFlag.Add(oskuId);
if (!updateOSkuOptimizationFlagByReasonGroups.TryGetValue(task.TriggerOptimizationReason.Value, out var updateOSkuOptimizationFlagByReasonList))
{
updateOSkuOptimizationFlagByReasonList = new List<long>();
updateOSkuOptimizationFlagByReasonGroups.Add(task.TriggerOptimizationReason.Value, updateOSkuOptimizationFlagByReasonList);
}
updateOSkuOptimizationFlagByReasonList.Add(oskuId);
}
#endregion
}
}
}
#endregion
}
}
#endregion

Loading…
Cancel
Save