From 04bf8325efab6f5a266188630e014451e427ce99 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 10 Apr 2024 18:59:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=87=87=E8=B4=AD=E6=96=B9?= =?UTF-8?q?=E6=A1=88SKU=E6=9C=80=E8=BF=91=E9=87=87=E8=B4=AD=E6=88=90?= =?UTF-8?q?=E6=9C=AC=EF=BC=8C=E5=A2=9E=E5=8A=A0TaskTime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/SkuOptimizationController.cs | 10 ++++ .../AggregionPurchaseSchemeBusiness.cs | 53 ++++++++++++++----- .../SkuOptimization/OptimizationBusiness.cs | 23 ++++++-- .../Sync/OrderSyncBusiness.cs | 1 + .../Db/SpuOptimization/Spuoptimizationtask.cs | 6 +++ .../SkuOptimizationTaskResponse.cs | 5 ++ 6 files changed, 80 insertions(+), 18 deletions(-) diff --git a/BBWYB.Server.API/Controllers/SkuOptimizationController.cs b/BBWYB.Server.API/Controllers/SkuOptimizationController.cs index f99350f..d890db3 100644 --- a/BBWYB.Server.API/Controllers/SkuOptimizationController.cs +++ b/BBWYB.Server.API/Controllers/SkuOptimizationController.cs @@ -80,5 +80,15 @@ namespace BBWYB.Server.API.Controllers { return optimizationBusiness.GetNoCompletedSpuOptimizationTaskCount(GetUserId()); } + + /// + /// 获取未完成且超时任务数量 + /// + /// + [HttpGet] + public long GetNoCompletedAndTimeOutSpuOptimizationTaskCount() + { + return optimizationBusiness.GetNoCompletedAndTimeOutSpuOptimizationTaskCount(); + } } } diff --git a/BBWYB.Server.Business/Aggregion/AggregionPurchaseSchemeBusiness.cs b/BBWYB.Server.Business/Aggregion/AggregionPurchaseSchemeBusiness.cs index 9ac86c6..30f939b 100644 --- a/BBWYB.Server.Business/Aggregion/AggregionPurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/Aggregion/AggregionPurchaseSchemeBusiness.cs @@ -136,21 +136,46 @@ namespace BBWYB.Server.Business #endregion #region 采购方案 - List dbSchemeList = fsql.Select(schemeIdList).ToList(); - - #region 最近采购成本 - var recentOrderPurchaserRelationList = fsql.Select() - .InnerJoin((opi, opri) => opi.OrderId == opri.OrderId && - opi.PurchaseOrderId == opri.PurchaseOrderId) - .Where((opi, opri) => opi.IsEnabled == true && schemeIdList.Contains(opri.SchemeId.Value)) - .GroupBy((opi, opri) => opri.SchemeId.Value) - .WithTempQuery(g => new { MaxId = g.Max(g.Value.Item2.Id) }) - .From() - .InnerJoin((opri, opri2) => opri.MaxId == opri2.Id) - .ToList((opri, opri2) => opri2); - var purchaseOrderIdList = recentOrderPurchaserRelationList.Select(x => x.PurchaseOrderId).Distinct().ToList(); + //List dbSchemeList = fsql.Select(schemeIdList).ToList(); + + //#region 最近采购成本/采购时间 + + + //var recentPurchaseRecordList = fsql.Select() + // .InnerJoin((opi, opri, opsi) => opi.OrderId == opri.OrderId && + // opi.PurchaseOrderId == opri.PurchaseOrderId) + // .InnerJoin((opi, opri, opsi) => opri.PurchaseOrderId == opsi.PurchaseOrderId && + // opri.PurchaseSkuId == opsi.PurchaseSkuId) + // .Where((opi, opri, opsi) => opi.IsEnabled == true && + // schemeIdList.Contains(opri.SchemeId.Value)) + // .OrderByDescending((opi, opri, opsi) => opri.CreateTime) + // .Page(1, 1000) + // .ToList((opi, opri, opsi) => new + // { + // opi.OrderId, + // opi.PurchaseOrderId, + // opri.SchemeId, + // opsi.PurchasedPrice, + // opsi.CreateTime + // }); + + //var recentPurchaseRecordGroups = recentPurchaseRecordList.GroupBy(x => x.SchemeId); + //foreach (var relationGroup in recentPurchaseRecordGroups) + //{ + // var scheme = dbSchemeList.FirstOrDefault(s => s.Id == relationGroup.Key.Value); + // if (scheme == null) + // continue; + + // //取最近一笔订单,最大的订单号 + // var recentOrderId = relationGroup.Max(x => x.OrderId); + // var recentOrderRelationRecordList = relationGroup.Where(x => x.OrderId == recentOrderId); + // scheme.LastPurchasePriceCost = recentOrderRelationRecordList.Sum(x=>x.PurchasedPrice); + // scheme.LastBargainingTime = recentOrderRelationRecordList.FirstOrDefault()?.CreateTime; + //} + + + //#endregion - #endregion #region 采购次数 diff --git a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs index 123e358..d62d8b2 100644 --- a/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs +++ b/BBWYB.Server.Business/SkuOptimization/OptimizationBusiness.cs @@ -184,6 +184,7 @@ namespace BBWYB.Server.Business BelongShopName = belongShop.ShopName, CompletionTime = null, CreateTime = DateTime.Now, + TaskTime = DateTime.Now, IsOptimizationCompleted = false, LastOptimizationTime = null, ProductId = productId, @@ -716,7 +717,7 @@ namespace BBWYB.Server.Business var sql = select.ToSql(); - var taskList = select.OrderBy(t => t.CreateTime) + var taskList = select.OrderBy(t => t.TaskTime) .Count(out var total) .Page(request.PageIndex, request.PageSize) .ToList(); @@ -770,7 +771,8 @@ namespace BBWYB.Server.Business SkuIdList = skuIdList, BargainTeamIdList = bargainTeamIdList, IncludePurchaseSkuBasicInfo = 1, - IncludePurchaseSkuStatisticsInfo = 1 + IncludePurchaseSkuStatisticsInfo = 1, + IncludeSkuStatisticsInfo = 1 }); #endregion @@ -798,7 +800,8 @@ namespace BBWYB.Server.Business SchemeGroupId = ps.SchemeGroupId, IsFreeFreight = ps.IsFreeFreight, LastPurchasePriceCost = ps.LastPurchasePriceCost, - PurchaseSchemeCost = ps.BargainingCost ?? ps.DefaultCost + PurchaseSchemeCost = ps.BargainingCost ?? ps.DefaultCost, + SkuLastPurchasePriceCost = ps.SkuLastPurchasePriceCost }).ToList(); } #endregion @@ -978,7 +981,8 @@ namespace BBWYB.Server.Business } spuOptimizationTask.ReStartTimes++; updateSpuTask = fsql.Update(spuOptimizationTask.Id) - .Set(t => t.ReStartTimes, spuOptimizationTask.ReStartTimes); + .Set(t => t.ReStartTimes, spuOptimizationTask.ReStartTimes) + .Set(t => t.TaskTime, DateTime.Now); } } @@ -1050,5 +1054,16 @@ namespace BBWYB.Server.Business return fsql.Select().Where(t => t.IsOptimizationCompleted == false).Count(); } + + /// + /// 获取未完成且超时的任务数量 + /// + /// + public long GetNoCompletedAndTimeOutSpuOptimizationTaskCount() + { + return fsql.Select().Where(t => t.ReStartTimes > 2 && t.IsOptimizationCompleted == false) + .Count(); + } + } } diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index a8dbeb6..b56716d 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -495,6 +495,7 @@ namespace BBWYB.Server.Business.Sync BelongShopName = sourceShopName, CompletionTime = null, CreateTime = DateTime.Now, + TaskTime = DateTime.Now, IsOptimizationCompleted = false, LastOptimizationTime = null, ProductId = spuGroup.Key, diff --git a/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs b/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs index 1c5c598..e496741 100644 --- a/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs +++ b/BBWYB.Server.Model/Db/SpuOptimization/Spuoptimizationtask.cs @@ -40,6 +40,12 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "datetime")] public DateTime? CreateTime { get; set; } + /// + /// 任务时间(创建/重启),用于查询 + /// + [Column(DbType = "datetime")] + public DateTime? TaskTime { get; set; } + /// /// 是否优化完成 /// diff --git a/BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs b/BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs index 0b5c60a..b90105b 100644 --- a/BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs @@ -37,6 +37,11 @@ namespace BBWYB.Server.Model.Dto /// public decimal? LastPurchasePriceCost { get; set; } = 0.0M; + /// + /// 店铺SKU的最近采购成本(配件单价之和) + /// + public decimal? SkuLastPurchasePriceCost { get; set; } + /// /// 采购方案成本 ///