From b9ccd6e13a69b6b24904c2aad13016d6da5f220b Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 20 Sep 2023 17:33:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 60 +++++++++++++++++-- .../Db/PurchaseScheme/Purchaser.cs | 10 ++++ .../history/SkuHistoryPurchaserRelation.cs | 39 ++++++++++++ 3 files changed, 103 insertions(+), 6 deletions(-) create mode 100644 BBWYB.Server.Model/Db/PurchaseScheme/history/SkuHistoryPurchaserRelation.cs diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 15ea68e..c7ba566 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -264,7 +264,7 @@ namespace BBWYB.Server.Business throw new BusinessException("缺少收货人信息"); if (request.PurchaseAccountList == null || request.PurchaseAccountList.Count() == 0) throw new BusinessException("缺少采购账号"); - if (request.CargoParamGroupList == null || request.CargoParamGroupList.Count() == 0) + if (request.CargoParamGroupList == null || request.CargoParamGroupList.Count() == 0 || request.CargoParamGroupList.Any(g => string.IsNullOrEmpty(g.PurchaserId))) throw new BusinessException("缺少下单商品参数"); #region 验证同一个批次中,一个订单sku不能同时拥有多个采购方案 @@ -320,6 +320,9 @@ namespace BBWYB.Server.Business List<IUpdate<PurchaseScheme>> updatePurchaseSchemeList = new List<IUpdate<PurchaseScheme>>(); List<OrderPurchaseRelationInfo> insertOrderPurchaseRelationInfoList = new List<OrderPurchaseRelationInfo>(); List<string> updatePurchaseTimeLimitTaskOrderSkuList = new List<string>(); + List<IUpdate<Purchaser>> updatePurchaserList = new List<IUpdate<Purchaser>>(); + List<SkuHistoryPurchaserRelation> insertSkuHistoryPurchaserRelationList = new List<SkuHistoryPurchaserRelation>(); + List<QiKuPackTaskSkuPurchaseSchemeIdRequest> notifyQikuPackSchemeParamList = null; if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越) notifyQikuPackSchemeParamList = new List<QiKuPackTaskSkuPurchaseSchemeIdRequest>(); @@ -507,18 +510,56 @@ namespace BBWYB.Server.Business var cargoParamGroupsBySchemeList = allCargoParamList.GroupBy(c => c.SchemeId); foreach (var cargoParamGroupsByScheme in cargoParamGroupsBySchemeList) { - var defalutCost = 0M; var schemeId = cargoParamGroupsByScheme.Key; - - defalutCost = cargoParamGroupsByScheme.Sum(cargoParam => createdPurchaseOrderItemList.Where(x => x.SkuId == cargoParam.SkuId) - .Select(x => x.Price * (cargoParam.PurchaseRatio ?? 1)).DefaultIfEmpty(0M).First()); + var skuId = cargoParamGroupsByScheme.FirstOrDefault().BelongSkuId; + + var lastPurchasePriceCost = cargoParamGroupsByScheme.Sum(cargoParam => createdPurchaseOrderItemList + .Where(x => x.SkuId == cargoParam.SkuId) + .Select(x => x.Price * (cargoParam.PurchaseRatio ?? 1)) + .DefaultIfEmpty(0M) + .First()); + var purchasedAmount = insertOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == skuId)?.SkuAmount ?? 0M; var update = fsql.Update<PurchaseScheme>(schemeId).Set(ps => ps.LastPurchaseTime, DateTime.Now) - .Set(ps => ps.LastPurchasePriceCost, defalutCost); + .Set(ps => ps.LastPurchasePriceCost, lastPurchasePriceCost) + .Set(ps => ps.PurchasedCount + 1) + .Set(ps => ps.PurchasedAmount + purchasedAmount); updatePurchaseSchemeList.Add(update); } } #endregion + #region 更新采购商采购次数和sku数 + { + var purchaserIdList = new List<string>(); + var purchaserSkuDictionary = new Dictionary<string, List<string>>(); + request.CargoParamGroupList.ForEach(x => + { + purchaserIdList.Add(x.PurchaserId); + purchaserSkuDictionary.Add(x.PurchaserId, x.CargoParamList.Select(c => c.BelongSkuId).Distinct().ToList()); + }); + + //采购商的sku采购关系表 + var dbSkuAndPurchaserRelationList = fsql.Select<SkuHistoryPurchaserRelation>() + .Where(spr => purchaserIdList.Contains(spr.PurchaserId)) + .ToList(); + + foreach (var purchaserId in purchaserIdList) + { + purchaserSkuDictionary.TryGetValue(purchaserId, out var fromRequestSkuList); + var fromDBSkuList = dbSkuAndPurchaserRelationList.Where(x => x.PurchaserId == purchaserId) + .Select(x => x.SkuId) + .Distinct() + .ToList(); + var exceptSkuList = fromRequestSkuList.Except(fromDBSkuList); + if (exceptSkuList.Count() > 0) + { + //insertSkuHistoryPurchaserRelationList.AddRange(); + } + } + + } + #endregion + #region 订单Sku成本 var allOrderCostDetail = orderCostDetailList.Union(insertOrderCostDetails).ToList(); foreach (var orderSku in orderSkus) @@ -610,6 +651,8 @@ namespace BBWYB.Server.Business fsql.Insert(insertOrderPurchaseSkuInfos).ExecuteAffrows(); if (insertOrderPurchaseRelationInfoList.Count() > 0) fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); + if (insertSkuHistoryPurchaserRelationList.Count() > 0) + fsql.Insert(insertSkuHistoryPurchaserRelationList).ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows(); if (updatePurchaseSchemeList.Count() > 0) @@ -628,6 +671,11 @@ namespace BBWYB.Server.Business foreach (var update in updateOrderSkuCostList) update.ExecuteAffrows(); } + if (updatePurchaserList.Count() > 0) + { + foreach (var update in updatePurchaserList) + update.ExecuteAffrows(); + } }); //#region 更新采购方案最新价格 diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs index 2dd256f..e4292ac 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs @@ -44,6 +44,16 @@ namespace BBWYB.Server.Model.Db [Column(StringLength = 50, IsNullable = true)] public string MemberId { get; set; } + /// <summary> + /// 采购过的Sku数 + /// </summary> + public int? PurchasedSkuCount { get; set; } = 0; + + /// <summary> + /// 采购次数 + /// </summary> + public int? PurchasedCount { get; set; } = 0; + } } diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/history/SkuHistoryPurchaserRelation.cs b/BBWYB.Server.Model/Db/PurchaseScheme/history/SkuHistoryPurchaserRelation.cs new file mode 100644 index 0000000..000ab51 --- /dev/null +++ b/BBWYB.Server.Model/Db/PurchaseScheme/history/SkuHistoryPurchaserRelation.cs @@ -0,0 +1,39 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + /// <summary> + /// Sku历史采购商关系表 + /// </summary> + [Table(Name = "skuhistorypurchaserrelation", DisableSyncStructure = true)] + public partial class SkuHistoryPurchaserRelation + { + + [Column(DbType = "bigint", IsPrimary = true)] + public long Id { get; set; } + + /// <summary> + /// 创建时间 + /// </summary> + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + /// <summary> + /// 采购商Id + /// </summary> + [Column(StringLength = 50)] + public string PurchaserId { get; set; } + + [Column(DbType = "bigint")] + public long? ShopId { get; set; } + + /// <summary> + /// 店铺Sku + /// </summary> + [Column(StringLength = 50)] + public string SkuId { get; set; } + + } + +}