|
|
@ -123,7 +123,8 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
#region DB Operation
|
|
|
|
List<Model.Db.Order> insertOrderList = new List<Model.Db.Order>(); |
|
|
|
List<OrderSku> insertOrderSkuList = new List<OrderSku>(); |
|
|
|
List<long> updateOrderSkuIdList_OptimizationFlag = new List<long>(); |
|
|
|
//List<long> updateOrderSkuIdList_OptimizationFlag = new List<long>();
|
|
|
|
Dictionary<Enums.TriggerOptimizationReason, List<long>> updateOSkuOptimizationFlagByReasonGroups = new Dictionary<Enums.TriggerOptimizationReason, List<long>>(); |
|
|
|
List<OrderConsignee> insertOrderConsigneeList = new List<OrderConsignee>(); |
|
|
|
List<TimeLimitTask> insertTimeLimitTaskList = new List<TimeLimitTask>(); |
|
|
|
List<string> deleteTimeLimitTaskOrderIdList = new List<string>(); |
|
|
@ -375,11 +376,14 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
{ |
|
|
|
var optimizationSpuSaleList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList).Where(s => |
|
|
|
{ |
|
|
|
if (s.LastOptimizationItemCount == 0 && s.ItemCount >= 20) |
|
|
|
return true; |
|
|
|
if (s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2) |
|
|
|
return true; |
|
|
|
return false; |
|
|
|
//if (insertSpuTotalSaleInfoList.Any(x => x.ProductId == s.ProductId))
|
|
|
|
// return true; //首次触发
|
|
|
|
//if (s.LastOptimizationItemCount == 0 && s.ItemCount >= 20)
|
|
|
|
// return true; //销量大于20
|
|
|
|
//if (s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2)
|
|
|
|
// return true;
|
|
|
|
//return false;
|
|
|
|
return GetOptimizationReason(s, insertSpuTotalSaleInfoList) != null; |
|
|
|
}); |
|
|
|
if (optimizationSpuSaleList.Count() > 0) |
|
|
|
{ |
|
|
@ -393,13 +397,27 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
if (osku.ProductId != spuSale.ProductId) |
|
|
|
continue; |
|
|
|
|
|
|
|
var triggerOptimizationReason = GetOptimizationReason(spuSale, insertSpuTotalSaleInfoList); |
|
|
|
|
|
|
|
#region 更新sku优化标记
|
|
|
|
var oskuId = long.Parse(osku.Id); |
|
|
|
var insertOrderSku = insertOrderSkuList.FirstOrDefault(s => s.Id == oskuId); |
|
|
|
if (insertOrderSku != null) |
|
|
|
{ |
|
|
|
insertOrderSku.IsNeedOptimization = 1; |
|
|
|
insertOrderSku.TriggerOptimizationReason = triggerOptimizationReason; |
|
|
|
} |
|
|
|
else |
|
|
|
updateOrderSkuIdList_OptimizationFlag.Add(oskuId); |
|
|
|
{ |
|
|
|
//updateOrderSkuIdList_OptimizationFlag.Add(oskuId);
|
|
|
|
if (!updateOSkuOptimizationFlagByReasonGroups.TryGetValue(triggerOptimizationReason.Value, out var updateOSkuOptimizationFlagByReasonList)) |
|
|
|
{ |
|
|
|
updateOSkuOptimizationFlagByReasonList = new List<long>(); |
|
|
|
updateOSkuOptimizationFlagByReasonGroups.Add(triggerOptimizationReason.Value, updateOSkuOptimizationFlagByReasonList); |
|
|
|
} |
|
|
|
updateOSkuOptimizationFlagByReasonList.Add(oskuId); |
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建待议价任务
|
|
|
@ -474,8 +492,21 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
.ExecuteAffrows(); |
|
|
|
} |
|
|
|
|
|
|
|
if (updateOrderSkuIdList_OptimizationFlag.Count() > 0) |
|
|
|
fsql.Update<OrderSku>(updateOrderSkuIdList_OptimizationFlag).Set(osku => osku.IsNeedOptimization, 1).ExecuteAffrows(); |
|
|
|
//if (updateOrderSkuIdList_OptimizationFlag.Count() > 0)
|
|
|
|
// fsql.Update<OrderSku>(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<OrderSku>(updateOSkuListOptimizationFlagList).Set(osku => osku.IsNeedOptimization, 1) |
|
|
|
.Set(osku => osku.TriggerOptimizationReason, triggerOptimizationReason) |
|
|
|
.ExecuteAffrows(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
foreach (var key in deductionSkuCountDictionary.Keys) |
|
|
|
fsql.Update<SkuTotalSaleInfo>(key).Set(s => s.ItemCount - deductionSkuCountDictionary[key]).ExecuteAffrows(); |
|
|
@ -576,5 +607,16 @@ namespace BBWYB.Server.Business.Sync |
|
|
|
return Enums.OrderState.已完成; |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
public Enums.TriggerOptimizationReason? GetOptimizationReason(SpuTotalSaleInfo s, List<SpuTotalSaleInfo> insertSpuTotalSaleInfoList) |
|
|
|
{ |
|
|
|
if (insertSpuTotalSaleInfoList.Any(x => x.ProductId == s.ProductId)) |
|
|
|
return Enums.TriggerOptimizationReason.首次采购; //首次触发
|
|
|
|
if (s.LastOptimizationItemCount == 0 && s.ItemCount >= 20) |
|
|
|
return Enums.TriggerOptimizationReason.首次优化; //销量大于20
|
|
|
|
if (s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2) |
|
|
|
return Enums.TriggerOptimizationReason.再次优化; |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|