Browse Source

订单同步调整 未完

liangku_skuoptimazation
shanji 1 year ago
parent
commit
58035bb015
  1. 297
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs
  2. 2
      BBWYB.Server.Model/Db/SpuOptimization/Skuoptimizationtask.cs
  3. 5
      BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs

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

@ -384,142 +384,167 @@ namespace BBWYB.Server.Business.Sync
}
#endregion
//#region 检查待议价任务
//{
// 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 bargainTeamList = venderBusiness.GetYiJiaGroup(); //获取议价组
// var bargainTeamIdList = bargainTeamList.Select(t => t.Id).ToList();
// var waitToCompetitiveTenderSchemeList = fsql.Select<PurchaseScheme>()
// .Where(ps => bargainTeamIdList.Contains(ps.BelongBargainTeamId) &&
// skuIdList.Contains(ps.SkuId))
// .ToList(); //需要参与竞标采购方案
// foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList)
// {
// foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList)
// {
// if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) &&
// !dbSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId) &&
// !insertSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId))
// {
// #region 解析来源店铺数据
// JArray belongSkus = null;
// string sourceShopName = string.Empty;
// if (!string.IsNullOrEmpty(waitCheckOrder.Extended))
// {
// try
// {
// var jobject = JObject.Parse(waitCheckOrder.Extended);
// //dbOrder.SourceSku = jobject.Value<string>("SourceSku");
// sourceShopName = jobject.Value<string>("SourceShopName");
// if (jobject.ContainsKey("BelongSkus"))
// belongSkus = jobject["BelongSkus"] as JArray;
// }
// catch (Exception ex)
// {
// }
// }
// #endregion
// #region 创建待优化任务
// var skuOptimizationTask = new SkuOptimizationTask()
// {
// Id = idGenerator.NewLong(),
// PreItemCount = 0,
// PrePurchasedAmount = 0,
// IsOptimizationCompleted = false,
// IsPurchasementCompleted = false,
// CreateTime = DateTime.Now,
// SafeWarningRemainingDay = 0,
// TriggerOptimizationReason = Enums.TriggerOptimizationReason.首次采购,
// SkuId = waitCheckOrderSku.SkuId,
// ShopId = shopId,
// ProductId = waitCheckOrderSku.ProductId,
// BelongShopName = sourceShopName,
// CompletionTime = null,
// JDSkuId = belongSkus?.FirstOrDefault(j => j.Value<string>("SkuId") == waitCheckOrderSku.SkuId)?.Value<string>("BelongSkuId") ?? string.Empty,
// LastOptimizationRatio = 0,
// LastPurchasePrice = 0,
// LastOptimizationTime = null
// };
// insertSkuOptimizationTaskList.Add(skuOptimizationTask);
// #endregion
// #region 创建待优化子任务
// {
// foreach (var department in bargainTeamList)
// {
// var skuOptimizationChildTask = new SkuOptimizationChildTask()
// {
// Id = idGenerator.NewLong(),
// BelongTeamId = department.Id,
// BelongTeamName = department.DepartmentName,
// CompletionTime = null,
// IsOptimizationCompleted = false,
// OptimizationTaskId = skuOptimizationTask.Id
// };
// insertSkuOptimizationChildTaskList.Add(skuOptimizationChildTask);
// #region 创建竞标任务
// var schemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.SkuId == waitCheckOrderSku.SkuId &&
// ps.BelongBargainTeamId == department.Id)
// .ToList();
// #endregion
// }
// }
// #endregion
// #region 创建待优化限时任务
// //判断sku是否首次采购
// var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == waitCheckOrderSku.SkuId);
// insertTimeLimitTaskList.Add(new TimeLimitTask()
// {
// Id = idGenerator.NewLong(),
// CreateTme = DateTime.Now,
// //ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1),
// ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType.待议价任务, DateTime.Now.AddDays(isFirst ? 1 : 0)),
// //OrderId = o.OrderId,
// //OrderSn = o.OrderSn,
// ShopId = shopId,
// SkuId = waitCheckOrderSku.SkuId,
// TaskType = Enums.TimeLimitTaskType.待议价任务,
// TaskId = skuOptimizationTask.Id,
// Remark = "首次采购限时任务"
// });
// #endregion
// }
// }
// }
// }
// }
//}
//#endregion
#region 检查待议价任务
{
if (waitToCheckSkuSaleOrderList.Count() > 0)
{
var spuIdList = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList.Select(osku => osku.ProductId)).Distinct().ToList();
//没有完成首次采购的spu
var noFisrstPurchasedSpuList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList)
.Where(s => s.IsFirstPurchaseCompleted == false)
.Select(s => s.ProductId)
.ToList();
//查询已存在未结束的优化任务
var dbSpuOptimizationTaskList = fsql.Select<SpuOptimizationTask>()
.Where(t => t.ShopId == shopId &&
t.IsOptimizationCompleted == false &&
spuIdList.Contains(t.ProductId))
.ToList();
if (noFisrstPurchasedSpuList.Count() > 0)
{
var bargainTeamList = venderBusiness.GetYiJiaGroup(); //获取议价组
var bargainTeamIdList = bargainTeamList.Select(t => t.Id).ToList();
var waitToCompetitiveTenderSchemeList = fsql.Select<PurchaseScheme>()
.Where(ps => bargainTeamIdList.Contains(ps.BelongBargainTeamId) &&
spuIdList.Contains(ps.ProductId))
.ToList(); //需要参与竞标采购方案
var waitToCheckOrderSpuGroups = waitToCheckSkuSaleOrderList.SelectMany(o => o.OrderSkuList).GroupBy(osku => osku.ProductId);
foreach (var spuGroup in waitToCheckOrderSpuGroups)
{
if (noFisrstPurchasedSpuList.Contains(spuGroup.Key) &&
!dbSpuOptimizationTaskList.Any(t => t.ProductId == spuGroup.Key) &&
!insertSpuOptimizationTaskList.Any(t => t.ProductId == spuGroup.Key))
{
var includeSpuOrderList = waitToCheckSkuSaleOrderList.Where(o => o.OrderSkuList.Any(osku => osku.ProductId == spuGroup.Key));
var sourceShopName = string.Empty;
//京东sku-拳探sku下单关系映射表
var mappingQT_JDSKUDictionary = new Dictionary<string, string>();
#region 解析来源店铺数据
foreach (var waitCheckOrder in includeSpuOrderList)
{
if (!string.IsNullOrEmpty(waitCheckOrder.Extended))
{
try
{
var jobject = JObject.Parse(waitCheckOrder.Extended);
sourceShopName = jobject.Value<string>("SourceShopName");
if (jobject.ContainsKey("BelongSkus"))
{
var jbelongSkus = jobject["BelongSkus"] as JArray;
foreach (var j in jbelongSkus)
{
var skuId = j.Value<string>("SkuId");
var belongSkuId = j.Value<string>("BelongSkuId");
if (!mappingQT_JDSKUDictionary.ContainsKey(skuId))
mappingQT_JDSKUDictionary.TryAdd(skuId, belongSkuId);
}
}
}
catch (Exception ex)
{
}
}
}
#endregion
}
}
foreach (var waitCheckOrder in waitToCheckSkuSaleOrderList)
{
foreach (var waitCheckOrderSku in waitCheckOrder.OrderSkuList)
{
if (noFisrstPurchasedSpuList.Contains(waitCheckOrderSku.ProductId) &&
!dbSpuOptimizationTaskList.Any(t => t.ProductId == waitCheckOrderSku.ProductId) &&
!insertSpuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId))
{
#region 创建待优化任务
var skuOptimizationTask = new SkuOptimizationTask()
{
Id = idGenerator.NewLong(),
PreItemCount = 0,
PrePurchasedAmount = 0,
IsOptimizationCompleted = false,
IsPurchasementCompleted = false,
CreateTime = DateTime.Now,
SafeWarningRemainingDay = 0,
TriggerOptimizationReason = Enums.TriggerOptimizationReason.,
SkuId = waitCheckOrderSku.SkuId,
ShopId = shopId,
ProductId = waitCheckOrderSku.ProductId,
BelongShopName = sourceShopName,
CompletionTime = null,
JDSkuId = belongSkus?.FirstOrDefault(j => j.Value<string>("SkuId") == waitCheckOrderSku.SkuId)?.Value<string>("BelongSkuId") ?? string.Empty,
LastOptimizationRatio = 0,
LastPurchasePrice = 0,
LastOptimizationTime = null
};
insertSkuOptimizationTaskList.Add(skuOptimizationTask);
#endregion
#region 创建待优化子任务
{
foreach (var department in bargainTeamList)
{
var skuOptimizationChildTask = new SkuOptimizationChildTask()
{
Id = idGenerator.NewLong(),
BelongTeamId = department.Id,
BelongTeamName = department.DepartmentName,
CompletionTime = null,
IsOptimizationCompleted = false,
OptimizationTaskId = skuOptimizationTask.Id
};
insertSkuOptimizationChildTaskList.Add(skuOptimizationChildTask);
#region 创建竞标任务
var schemeList = waitToCompetitiveTenderSchemeList.Where(ps => ps.SkuId == waitCheckOrderSku.SkuId &&
ps.BelongBargainTeamId == department.Id)
.ToList();
#endregion
}
}
#endregion
#region 创建待优化限时任务
//判断sku是否首次采购
var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == waitCheckOrderSku.SkuId);
insertTimeLimitTaskList.Add(new TimeLimitTask()
{
Id = idGenerator.NewLong(),
CreateTme = DateTime.Now,
//ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1),
ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType., DateTime.Now.AddDays(isFirst ? 1 : 0)),
//OrderId = o.OrderId,
//OrderSn = o.OrderSn,
ShopId = shopId,
SkuId = waitCheckOrderSku.SkuId,
TaskType = Enums.TimeLimitTaskType.,
TaskId = skuOptimizationTask.Id,
Remark = "首次采购限时任务"
});
#endregion
}
}
}
}
}
}
#endregion
#region 检查限时采购任务
CheckPurchaseTimeLimitTask(shopId, qtOrderList.Items, dbPurchaseTimeLimitTaskList, insertTimeLimitTaskList);

2
BBWYB.Server.Model/Db/SpuOptimization/Skuoptimizationtask.cs

@ -38,7 +38,7 @@ namespace BBWYB.Server.Model.Db
public int? PreSkuCount { get; set; }
[Column(StringLength = 50)]
public string QTSkuId { get; set; }
public string SkuId { get; set; }
/// <summary>
/// Spu优化任务Id;Spu优化任务Id

5
BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs

@ -46,7 +46,10 @@ namespace BBWYB.Server.Model.Db
public bool? IsOptimizationCompleted { get; set; }
[Column(StringLength = 50)]
public string JDSpuId { get; set; }
public string ProductId { get; set; }
[Column(StringLength = 255)]
public string ProductTitle { get; set; }
/// <summary>
/// 上次优化时间;上次优化时间

Loading…
Cancel
Save