Browse Source

触发待议价条件增加首次采购

yijia
shanji 2 years ago
parent
commit
03205b39a7
  1. 60
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs
  2. 8
      BBWYB.Server.Model/Db/Order/OrderSku.cs
  3. 8
      BBWYB.Server.Model/Enums.cs

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

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

8
BBWYB.Server.Model/Db/Order/OrderSku.cs

@ -106,7 +106,7 @@ namespace BBWYB.Server.Model.Db
/// <summary> /// <summary>
/// 是否需要优化 是=1 否=0 /// 是否需要优化 是=1 否=0
/// </summary> /// </summary>
[Column(DbType = "int(1)", IsNullable = true)] [Column(DbType = "int(1)", IsNullable = true)]
public int? IsNeedOptimization { get; set; } = 0; public int? IsNeedOptimization { get; set; } = 0;
/// <summary> /// <summary>
@ -114,6 +114,12 @@ namespace BBWYB.Server.Model.Db
/// </summary> /// </summary>
[Column(DbType = "int(1)", IsNullable = true)] [Column(DbType = "int(1)", IsNullable = true)]
public int? IsOptimizationCompleted { get; set; } = 0; public int? IsOptimizationCompleted { get; set; } = 0;
/// <summary>
/// 触发优化原因
/// </summary>
[Column(DbType = "int(1)", MapType = typeof(int?), IsNullable = true)]
public Enums.TriggerOptimizationReason? TriggerOptimizationReason { get; set; }
} }
} }

8
BBWYB.Server.Model/Enums.cs

@ -322,5 +322,13 @@
{ {
= 0, = 1, = 2 = 0, = 1, = 2
} }
/// <summary>
/// 触发优化原因 首次采购 = 0, 首次优化 = 1, 再次优化 = 2
/// </summary>
public enum TriggerOptimizationReason
{
= 0, = 1, = 2
}
} }
} }

Loading…
Cancel
Save