diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 109e792..57fc92e 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -317,7 +317,7 @@ namespace BBWYB.Server.Business List insertOrderCostDetails = new List(); List insertOrderPurchaseInfos = new List(); List insertOrderPurchaseSkuInfos = new List(); - List updatePurchaseTimeSchemeIdList = new List(); + List> updatePurchaseSchemeList = new List>(); List insertOrderPurchaseRelationInfoList = new List(); List updatePurchaseTimeLimitTaskOrderSkuList = new List(); List notifyQikuPackSchemeParamList = null; @@ -328,6 +328,7 @@ namespace BBWYB.Server.Business IUpdate updateOrderCost = null; List insertOrderSkuCostList = new List(); IList> updateOrderSkuCostList = new List>(); + List createdPurchaseOrderItemList = new List(); foreach (var cargoParamGroup in request.CargoParamGroupList) { @@ -338,8 +339,6 @@ namespace BBWYB.Server.Business var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform); var extJson = extJArray.FirstOrDefault(j => j.Value("PurchaserId") == cargoParamGroup.PurchaserId); - updatePurchaseTimeSchemeIdList.AddRange(cargoParamGroup.CargoParamList.Select(p => p.SchemeId).Distinct()); - var orderProductParamList = CombineRepeatPurchaseSku(cargoParamGroup.CargoParamList); var createOrderResponse = client.CreateOrder(new PP_CreateOrderRequest() @@ -372,15 +371,15 @@ namespace BBWYB.Server.Business AppToken = purchaseAccount.AppToken, OrderId = createOrderResponse.OrderId }); + createdPurchaseOrderItemList.AddRange(purchaseOrderSimpleInfo.ItemList); //totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount; //totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount; + #region 创建订单采购关系 foreach (var cargoParam in cargoParamGroup.CargoParamList) { var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == cargoParam.BelongSkuId); - - #region 创建订单采购关系 insertOrderPurchaseRelationInfoList.Add(new OrderPurchaseRelationInfo() { Id = idGenerator.NewLong(), @@ -395,8 +394,8 @@ namespace BBWYB.Server.Business SchemeId = cargoParam.SchemeId, SourceSkuId = orderSku?.BelongSkuId }); - #endregion } + #endregion #region 等比计算采购成本 var proportionalCalculationResultList = ProportionalCalculationCost(cargoParamGroup.CargoParamList, purchaseOrderSimpleInfo); @@ -497,6 +496,27 @@ namespace BBWYB.Server.Business #endregion } + #region 更新采购方案最近采购价格 + { + var allCargoParamList = new List(); + + request.CargoParamGroupList.ForEach(x => allCargoParamList.AddRange(x.CargoParamList)); + + 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 update = fsql.Update(schemeId).Set(ps => ps.LastPurchaseTime, DateTime.Now) + .Set(ps => ps.LastPurchasePriceCost, defalutCost); + updatePurchaseSchemeList.Add(update); + } + } + #endregion + #region 订单Sku成本 var allOrderCostDetail = orderCostDetailList.Union(insertOrderCostDetails).ToList(); foreach (var orderSku in orderSkus) @@ -590,8 +610,11 @@ namespace BBWYB.Server.Business fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows(); - if (updatePurchaseTimeSchemeIdList.Count() > 0) - fsql.Update(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows(); + if (updatePurchaseSchemeList.Count() > 0) + { + foreach (var update in updatePurchaseSchemeList) + update.ExecuteAffrows(); + } fsql.Update(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState) .SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark) .Set(o => o.IsPurchased, true) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 286dd05..7938a27 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -6,10 +6,7 @@ using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; -using MySqlX.XDevAPI; using Newtonsoft.Json; -using Org.BouncyCastle.Asn1.X509.Qualified; -using System.Net.Http.Headers; using Yitter.IdGenerator; namespace BBWYB.Server.Business diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs index f87cc75..22bbb7b 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs @@ -17,7 +17,7 @@ public string SpecId { get; set; } /// - /// 采购数量 + /// 采购配件数量 (订单sku数量 * 采购比例) /// public int Quantity { get; set; } @@ -30,6 +30,11 @@ /// 采购方案Id /// public long SchemeId { get; set; } + + /// + /// 配件的采购比例 不传值默认1 + /// + public int? PurchaseRatio { get; set; } } public class CargoParamGroupRequest { @@ -52,6 +57,6 @@ /// /// 采购商品列表 /// - public IList CargoParamList { get; set; } + public List CargoParamList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PreviewOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PreviewOrderRequest.cs index 600af08..a55aff4 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PreviewOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PreviewOrderRequest.cs @@ -7,7 +7,7 @@ namespace BBWYB.Server.Model.Dto /// /// 采购账号列表 /// - public IList PurchaseAccountList { get; set; } + public List PurchaseAccountList { get; set; } public Enums.PurchaseOrderMode PurchaseOrderMode { get; set; } @@ -19,7 +19,7 @@ namespace BBWYB.Server.Model.Dto /// /// 采购参数列表(以采购商分组) /// - public IList CargoParamGroupList { get; set; } + public List CargoParamGroupList { get; set; } } }