From ed5b59cf9b9add0abc5d7857a26f109c3c28ac74 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Tue, 23 May 2023 15:27:55 +0800 Subject: [PATCH 01/21] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8Dweb=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98=202.?= =?UTF-8?q?=E5=85=B3=E8=81=94=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20=E6=9C=AA=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/Views/Order/OrderList.xaml.cs | 2 +- BBWYB.Client/Views/WebB/WebB.xaml.cs | 9 +++ .../PurchaseOrder/PurchaseOrderBusiness.cs | 58 +++++++++++++++++++ .../Db/Order/OrderPurchaseInfo.cs | 6 ++ .../AssocationOrderCostDetailResponse.cs | 44 ++++++++++++++ .../AssociationPurchaseOrderResponse.cs | 53 +++++++++++++++++ 6 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssocationOrderCostDetailResponse.cs create mode 100644 BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs diff --git a/BBWYB.Client/Views/Order/OrderList.xaml.cs b/BBWYB.Client/Views/Order/OrderList.xaml.cs index d0f7e38..999a77e 100644 --- a/BBWYB.Client/Views/Order/OrderList.xaml.cs +++ b/BBWYB.Client/Views/Order/OrderList.xaml.cs @@ -19,7 +19,7 @@ namespace BBWYB.Client.Views.Order { this.Dispatcher.Invoke(() => { - scrollviewer_OrderList.Dispatcher.Invoke(() => scrollviewer_OrderList.ScrollToTop()); + scrollviewer_OrderList.Dispatcher?.Invoke(() => scrollviewer_OrderList.ScrollToTop()); }); }); } diff --git a/BBWYB.Client/Views/WebB/WebB.xaml.cs b/BBWYB.Client/Views/WebB/WebB.xaml.cs index a4ae4c4..90bd88a 100644 --- a/BBWYB.Client/Views/WebB/WebB.xaml.cs +++ b/BBWYB.Client/Views/WebB/WebB.xaml.cs @@ -23,6 +23,14 @@ namespace BBWYB.Client.Views.WebB { InitializeComponent(); this.Loaded += WebB_Loaded; + this.Unloaded += WebB_Unloaded; + } + + private void WebB_Unloaded(object sender, RoutedEventArgs e) + { + grid.Children.Remove(w2m.wb2); + //w2m.wb2.Dispose(); + w2m.Close(); } private void WebB_Loaded(object sender, System.Windows.RoutedEventArgs e) @@ -48,6 +56,7 @@ namespace BBWYB.Client.Views.WebB w2m.Init(); w2m.wb2.SetValue(Grid.RowProperty, 1); w2m.wb2.Margin = new Thickness(1, 0, 1, 0); + //grid.Children.Clear(); grid.Children.Add(w2m.wb2); if (w2m.IsInitializationCompleted && !isNavigated) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 5b887d4..847fe46 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -71,6 +71,12 @@ namespace BBWYB.Server.Business return orderProductParamList; } + /// + /// 预览采购单 + /// + /// + /// + /// public PreviewOrderResponse PreviewPurchaseOrder(PreviewOrderRequest request) { nLogManager.Default().Info($"PreviewPurchaseOrder {JsonConvert.SerializeObject(request)}"); @@ -145,6 +151,11 @@ namespace BBWYB.Server.Business }; } + /// + /// 创建采购单 + /// + /// + /// public void CreatePurchaseOrder(CreateOrderRequest request) { nLogManager.Default().Info($"CreatePurchaseOrder\r\n{JsonConvert.SerializeObject(request)}"); @@ -304,6 +315,7 @@ namespace BBWYB.Server.Business PurchaseMethod = Enums.PurchaseMethod.线上采购, PurchaseOrderId = createOrderResponse.OrderId, PurchasePlatform = cargoParamGroup.PurchasePlatform, + PurchaserId = cargoParamGroup.PurchaserId, PurchaserName = cargoParamGroup.PurchaserName, ShopId = request.ShopId, BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)) @@ -373,6 +385,52 @@ namespace BBWYB.Server.Business }); } + /// + /// 获取关联订单列表 + /// + /// + /// + public IList GetAssociationPurchaseOrderList(string orderId) + { + IList list = new List(); + var purchaseOrderList = fsql.Select().Where(opi => opi.OrderId == orderId).ToList(); + var orderSkuList = fsql.Select().Where(osku => osku.OrderId == orderId).ToList(); + var orderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == orderId).ToList(); + + foreach (var purchaseOrder in purchaseOrderList) + { + var associationPurchaseOrder = new AssociationPurchaseOrderResponse() + { + PurchaseAccountId = purchaseOrder.PurchaseAccountId, + PurchaseAccountName = purchaseOrder.PurchaseAccountName, + PurchasePlatform = purchaseOrder.PurchasePlatform.Value, + PurchaserId = purchaseOrder.PurchaserId, + PurchaserName = purchaseOrder.PurchaserName, + PurchaserOrderId = purchaseOrder.PurchaseOrderId + }; + var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); + foreach (var orderCostDetail in currentOrderCostDetailList) + { + var orderSku = orderSkuList.FirstOrDefault(osku => osku.SkuId == orderCostDetail.SkuId); + var assocationOrderCostDetail = new AssocationOrderCostDetailResponse() + { + Id = orderCostDetail.Id, + Logo = orderSku.Logo, + Title = orderSku.Title, + OrderId = orderSku.OrderId, + SkuId = orderSku.SkuId, + PurchaseQuantity = orderCostDetail.DeductionQuantity ?? 0, + PurchaseFreight = orderCostDetail.PurchaseFreight ?? 0M, + SkuAmount = orderCostDetail.SkuAmount ?? 0M, + }; + if (assocationOrderCostDetail.PurchaseQuantity != 0) + assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseQuantity; + } + list.Add(associationPurchaseOrder); + } + return list; + } + #region 1688CallBack public void CallbackFrom1688(string jsonStr) { diff --git a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs index fdeb97a..0e0e21c 100644 --- a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs +++ b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs @@ -39,6 +39,12 @@ namespace BBWYB.Server.Model.Db [Column(MapType = typeof(int?))] public Enums.Platform? PurchasePlatform { get; set; } + /// + /// ɹId + /// + [Column(StringLength = 100)] + public string PurchaserId { get; set; } + /// /// ɹ /// diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssocationOrderCostDetailResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssocationOrderCostDetailResponse.cs new file mode 100644 index 0000000..164f6c9 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssocationOrderCostDetailResponse.cs @@ -0,0 +1,44 @@ +namespace BBWYB.Server.Model.Dto +{ + public class AssocationOrderCostDetailResponse + { + /// + /// SKU成本Id + /// + public long Id { get; set; } + + /// + /// 订单Id + /// + public string OrderId { get; set; } + + public string SkuId { get; set; } + + /// + /// SKU标题 + /// + public string Title { get; set; } + + public string Logo { get; set; } + + /// + /// 采购货款 + /// + public decimal SkuAmount { get; set; } + + /// + /// 采购运费 + /// + public decimal PurchaseFreight { get; set; } + + /// + /// 采购数量 + /// + public int PurchaseQuantity { get; set; } + + /// + /// 采购单价 + /// + public decimal PurchasePrice { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs new file mode 100644 index 0000000..fdf95b0 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs @@ -0,0 +1,53 @@ +namespace BBWYB.Server.Model.Dto +{ + public class AssociationPurchaseOrderResponse + { + public AssociationPurchaseOrderResponse() + { + AssocationOrderCostDetailList = new List(); + } + + /// + /// 采购单号 + /// + public string PurchaserOrderId { get; set; } + + public Enums.Platform PurchasePlatform { get; set; } + + /// + /// 买家账号Id (如果采购平台为不支持的平台,此Id可填空) + /// + public string PurchaseAccountId { get; set; } + + /// + /// 买家账号 + /// + public string PurchaseAccountName { get; set; } + + + /// + /// 商家Id + /// + public string PurchaserId { get; set; } + + /// + /// 商家名称 + /// + public string PurchaserName { get; set; } + + /// + /// 采购金额 + /// + public decimal PurchaseAmount { get; set; } + + /// + /// 采购运费 + /// + public decimal PurchaseFreight { get; set; } + + /// + /// 订单成本明细列表 + /// + public IList AssocationOrderCostDetailList { get; set; } + } +} From 462b1d3ab1d31462ac799b4f6dbca6b7d1f8024b Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Tue, 23 May 2023 16:02:11 +0800 Subject: [PATCH 02/21] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=85=B3=E8=81=94?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/Views/MainWindow.xaml | 2 +- BBWYB.Client/Views/WebB/WebB.xaml.cs | 7 ++++++- .../Controllers/PurchaseOrderController.cs | 11 +++++++++++ .../PurchaseOrder/PurchaseOrderBusiness.cs | 6 ++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/BBWYB.Client/Views/MainWindow.xaml b/BBWYB.Client/Views/MainWindow.xaml index b86f1a9..0e9be0c 100644 --- a/BBWYB.Client/Views/MainWindow.xaml +++ b/BBWYB.Client/Views/MainWindow.xaml @@ -24,7 +24,7 @@ - + diff --git a/BBWYB.Client/Views/WebB/WebB.xaml.cs b/BBWYB.Client/Views/WebB/WebB.xaml.cs index 90bd88a..bf261dd 100644 --- a/BBWYB.Client/Views/WebB/WebB.xaml.cs +++ b/BBWYB.Client/Views/WebB/WebB.xaml.cs @@ -44,7 +44,12 @@ namespace BBWYB.Client.Views.WebB shopService = s.ServiceProvider.GetRequiredService(); } - var url = "http://qtbbwy.qiyue666.com"; +#if DEBUG + var url = "http://192.168.1.2:8080"; +#else + var url = "http://qtbbwy.qiyue666.com"; +#endif + w2m.CoreWebView2InitializationCompleted = (e) => { w2m.wb2.CoreWebView2.AddHostObjectToScript("qtbbwybContext", this.globalContext); diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index 98e3bfe..d4879dd 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -37,6 +37,17 @@ namespace BBWYB.Server.API.Controllers purchaseOrderBusiness.CreatePurchaseOrder(request); } + /// + /// 获取关联订单列表 + /// + /// + /// + [HttpGet("{orderId}")] + public IList GetAssociationPurchaseOrderList([FromRoute] string orderId) + { + return purchaseOrderBusiness.GetAssociationPurchaseOrderList(orderId); + } + /// /// 1688回调 /// diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 847fe46..e5c383b 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -408,7 +408,9 @@ namespace BBWYB.Server.Business PurchaserName = purchaseOrder.PurchaserName, PurchaserOrderId = purchaseOrder.PurchaseOrderId }; + var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); + foreach (var orderCostDetail in currentOrderCostDetailList) { var orderSku = orderSkuList.FirstOrDefault(osku => osku.SkuId == orderCostDetail.SkuId); @@ -425,7 +427,11 @@ namespace BBWYB.Server.Business }; if (assocationOrderCostDetail.PurchaseQuantity != 0) assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseQuantity; + + associationPurchaseOrder.AssocationOrderCostDetailList.Add(assocationOrderCostDetail); } + associationPurchaseOrder.PurchaseAmount = associationPurchaseOrder.AssocationOrderCostDetailList.Sum(x => x.SkuAmount); + associationPurchaseOrder.PurchaseFreight = associationPurchaseOrder.AssocationOrderCostDetailList.Sum(x => x.PurchaseFreight); list.Add(associationPurchaseOrder); } return list; From ac7c4fd464744f365f9b5e10e4370b0d350af71e Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Tue, 23 May 2023 17:21:02 +0800 Subject: [PATCH 03/21] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=85=B3=E8=81=94?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.API/Controllers/PurchaseOrderController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index d4879dd..0cff092 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -38,7 +38,7 @@ namespace BBWYB.Server.API.Controllers } /// - /// 获取关联订单列表 + /// 获取关联采购单列表 /// /// /// From 1e7a51eccbf94502efdf677a9e0eb278073e5244 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 24 May 2023 12:21:51 +0800 Subject: [PATCH 04/21] 1 --- .../Controllers/PurchaseOrderController.cs | 10 ++++ BBWYB.Server.Business/Order/OrderBusiness.cs | 6 +-- .../PurchaseOrder/PurchaseOrderBusiness.cs | 12 ++++- .../Db/Order/OrderPurchaseInfo.cs | 3 ++ .../AssocationOrderCostDetailRequest.cs | 32 ++++++++++++ .../AssociationPurchaseOrderRequest.cs | 52 +++++++++++++++++++ .../AssociationPurchaseOrderResponse.cs | 5 ++ 7 files changed, 116 insertions(+), 4 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index 0cff092..fc37483 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -48,6 +48,16 @@ namespace BBWYB.Server.API.Controllers return purchaseOrderBusiness.GetAssociationPurchaseOrderList(orderId); } + /// + /// 关联采购单 + /// + /// + [HttpPost] + public void AssociatePurchaseOrder([FromBody] IList request) + { + purchaseOrderBusiness.AssociatePurchaseOrder(request); + } + /// /// 1688回调 /// diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 8dbd5a7..44a917b 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -54,7 +54,7 @@ namespace BBWYB.Server.Business } select = select.WhereIf(request.OrderState != null && request.OrderState != Enums.OrderState.待配置, (o, ocs, oct) => o.OrderState == request.OrderState) - .WhereIf(request.OrderState == Enums.OrderState.待配置, (o, ocs, oct) =>o.OrderState != Enums.OrderState.已取消&&o.PackConfigState!=null)//&&o.OrderState> Enums.OrderState.等待采购 + .WhereIf(request.OrderState == Enums.OrderState.待配置, (o, ocs, oct) => o.OrderState != Enums.OrderState.已取消 && o.PackConfigState != null)//&&o.OrderState> Enums.OrderState.等待采购 .WhereIf(request.StartDate != null, (o, ocs, oct) => o.StartTime >= request.StartDate) .WhereIf(request.EndDate != null, (o, ocs, oct) => o.StartTime <= request.EndDate) .WhereIf(!string.IsNullOrEmpty(request.ClientOrderId), (o, ocs, oct) => o.ClientOrderId == request.ClientOrderId) @@ -113,7 +113,7 @@ namespace BBWYB.Server.Business Profit = oct.Profit, PurchaseAmount = oct.PurchaseAmount, IsManualEdited = oct.IsManualEdited, - PackConfigState= o.PackConfigState, + PackConfigState = o.PackConfigState, }; } @@ -148,7 +148,7 @@ namespace BBWYB.Server.Business #endregion #region 处理采购信息 - var orderPurchaseInfoList = fsql.Select().Where(op => orderIdList.Contains(op.OrderId)).ToList(); + var orderPurchaseInfoList = fsql.Select().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList(); var orderPurchaseSkuInfoList = fsql.Select().Where(o => orderIdList.Contains(o.OrderId)).ToList(); foreach (var order in orderList) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index e5c383b..3dc85da 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -406,7 +406,8 @@ namespace BBWYB.Server.Business PurchasePlatform = purchaseOrder.PurchasePlatform.Value, PurchaserId = purchaseOrder.PurchaserId, PurchaserName = purchaseOrder.PurchaserName, - PurchaserOrderId = purchaseOrder.PurchaseOrderId + PurchaserOrderId = purchaseOrder.PurchaseOrderId, + IsEnabled = purchaseOrder.IsEnabled }; var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); @@ -437,6 +438,15 @@ namespace BBWYB.Server.Business return list; } + /// + /// 关联订单 + /// + /// + public void AssociatePurchaseOrder(IList request) + { + + } + #region 1688CallBack public void CallbackFrom1688(string jsonStr) { diff --git a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs index 0e0e21c..a45ec29 100644 --- a/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs +++ b/BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs @@ -91,6 +91,9 @@ namespace BBWYB.Server.Model.Db /// [Column(StringLength = 500)] public string BelongSkuIds { get; set; } + + [Column(DbType = "bit")] + public bool IsEnabled { get; set; } = true; } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs new file mode 100644 index 0000000..e6d4f2b --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs @@ -0,0 +1,32 @@ +namespace BBWYB.Server.Model.Dto +{ + public class AssocationOrderCostDetailRequest + { + /// + /// 订单Id + /// + public string OrderId { get; set; } + + public string SkuId { get; set; } + + /// + /// 采购货款 + /// + public decimal SkuAmount { get; set; } + + /// + /// 采购运费 + /// + public decimal PurchaseFreight { get; set; } + + /// + /// 采购数量 + /// + public int PurchaseQuantity { get; set; } + + /// + /// 采购单价 + /// + public decimal PurchasePrice { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs new file mode 100644 index 0000000..5076f39 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationPurchaseOrderRequest.cs @@ -0,0 +1,52 @@ +namespace BBWYB.Server.Model.Dto +{ + public class AssociationPurchaseOrderRequest + { + public AssociationPurchaseOrderRequest() + { + AssocationOrderCostDetailList = new List(); + } + + /// + /// 采购单号 + /// + public string PurchaserOrderId { get; set; } + + public Enums.Platform PurchasePlatform { get; set; } + + /// + /// 买家账号Id (如果采购平台为不支持的平台,此Id可填空) + /// + public string PurchaseAccountId { get; set; } + + /// + /// 买家账号 + /// + public string PurchaseAccountName { get; set; } + + /// + /// 商家Id + /// + public string PurchaserId { get; set; } + + /// + /// 商家名称 + /// + public string PurchaserName { get; set; } + + /// + /// 采购金额 + /// + public decimal PurchaseAmount { get; set; } + + /// + /// 采购运费 + /// + public decimal PurchaseFreight { get; set; } + + /// + /// 订单成本明细列表 + /// + public IList AssocationOrderCostDetailList { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs index fdf95b0..095d7f8 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseOrder/AssociationPurchaseOrderResponse.cs @@ -45,6 +45,11 @@ /// public decimal PurchaseFreight { get; set; } + /// + /// 是否有效(以此判定是否为历史采购单) + /// + public bool IsEnabled { get; set; } + /// /// 订单成本明细列表 /// From 9dfcc10f1e34ba44beaa37a08847d488ec990bf9 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 24 May 2023 13:58:17 +0800 Subject: [PATCH 05/21] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=85=B3=E8=81=94?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E6=8E=A5=E5=8F=A3=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseOrderController.cs | 2 +- .../PurchaseOrder/PurchaseOrderBusiness.cs | 7 ++++++- .../PurchaseOrder/AssociationOrderRequest.cs | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationOrderRequest.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index fc37483..72cf85d 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -53,7 +53,7 @@ namespace BBWYB.Server.API.Controllers /// /// [HttpPost] - public void AssociatePurchaseOrder([FromBody] IList request) + public void AssociatePurchaseOrder([FromBody] AssociationOrderRequest request) { purchaseOrderBusiness.AssociatePurchaseOrder(request); } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 3dc85da..69abfd6 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -442,9 +442,14 @@ namespace BBWYB.Server.Business /// 关联订单 /// /// - public void AssociatePurchaseOrder(IList request) + public void AssociatePurchaseOrder(AssociationOrderRequest request) { + var purchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); + var orderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); + var orderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId).ToList(); + + } #region 1688CallBack diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationOrderRequest.cs new file mode 100644 index 0000000..33d3ba1 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationOrderRequest.cs @@ -0,0 +1,15 @@ +namespace BBWYB.Server.Model.Dto +{ + public class AssociationOrderRequest + { + /// + /// 订单Id + /// + public string OrderId { get; set; } + + /// + /// 采购单列表 + /// + public IList AssociationPurchaseOrderList { get; set; } + } +} From 7a83bff7dc03d7b6ee87e892d3fb94abdfbab5bd Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 24 May 2023 14:49:30 +0800 Subject: [PATCH 06/21] =?UTF-8?q?=E5=85=B3=E8=81=94=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 69abfd6..447099f 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -444,12 +444,32 @@ namespace BBWYB.Server.Business /// public void AssociatePurchaseOrder(AssociationOrderRequest request) { + if (request.AssociationPurchaseOrderList == null || request.AssociationPurchaseOrderList.Count() == 0) + throw new BusinessException("缺少采购单信息"); - var purchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); - var orderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); - var orderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId).ToList(); + var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); + var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); + var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId).ToList(); + List insertOrderPurchaseInfoList = new List(); + IList> updateOrderPurchaseInfoList = new List>(); + List insertOrderCostDetailList = new List(); + IList> updateOrderCostDetailList = new List>(); + IInsert insertOrderCost = null; + IUpdate updateOrderCost = null; + + foreach (var purchaseOrder in request.AssociationPurchaseOrderList) + { + var dbPurchaserOrder = dbPurchaseOrderList.FirstOrDefault(x => x.PurchaseOrderId == purchaseOrder.PurchaserOrderId); + if (dbPurchaserOrder == null) + { + } + else + { + + } + } } #region 1688CallBack From 325a33b8210ada638c7871b484809cef0c9fdaf4 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 24 May 2023 17:50:56 +0800 Subject: [PATCH 07/21] 1 --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 36 +++++++++++++++++++ .../AssocationOrderCostDetailRequest.cs | 16 ++++----- .../PurchaseOrder/AssociationOrderRequest.cs | 5 +++ 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 447099f..0d74339 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -460,10 +460,46 @@ namespace BBWYB.Server.Business foreach (var purchaseOrder in request.AssociationPurchaseOrderList) { + var avgFreight = purchaseOrder.PurchaseFreight / purchaseOrder.AssocationOrderCostDetailList.Count(); var dbPurchaserOrder = dbPurchaseOrderList.FirstOrDefault(x => x.PurchaseOrderId == purchaseOrder.PurchaserOrderId); if (dbPurchaserOrder == null) { + dbPurchaserOrder = new OrderPurchaseInfo() + { + Id = idGenerator.NewLong(), + OrderId = request.OrderId, + PurchaseAccountId = purchaseOrder.PurchaseAccountId, + PurchaseAccountName = purchaseOrder.PurchaseAccountName, + IsEnabled = true, + BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)), + CreateTime = DateTime.Now, + PurchaseMethod = Enums.PurchaseMethod.线下采购, + PurchaseOrderId = purchaseOrder.PurchaserOrderId, + PurchasePlatform = purchaseOrder.PurchasePlatform, + PurchaserId = purchaseOrder.PurchaserId, + PurchaserName = purchaseOrder.PurchaserName, + ShopId = request.ShopId + }; + insertOrderPurchaseInfoList.Add(dbPurchaserOrder); + foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) + { + var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId); + var orderCostDetail = new OrderCostDetail() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + DeductionQuantity = assOrderCostDetail.PurchaseQuantity, + IsEnabled = true, + OrderId = request.OrderId, + ProductId = dbOrderSku.ProductId, + SkuId = assOrderCostDetail.SkuId, + PurchaseAmount = assOrderCostDetail.SkuAmount, + PurchaseFreight = avgFreight, + TotalCost = assOrderCostDetail.SkuAmount + avgFreight + }; + insertOrderCostDetailList.Add(orderCostDetail); + } } else { diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs index e6d4f2b..bec6e2e 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssocationOrderCostDetailRequest.cs @@ -14,19 +14,19 @@ /// public decimal SkuAmount { get; set; } - /// - /// 采购运费 - /// - public decimal PurchaseFreight { get; set; } + ///// + ///// 采购运费 + ///// + //public decimal PurchaseFreight { get; set; } /// /// 采购数量 /// public int PurchaseQuantity { get; set; } - /// - /// 采购单价 - /// - public decimal PurchasePrice { get; set; } + ///// + ///// 采购单价 + ///// + //public decimal PurchasePrice { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationOrderRequest.cs index 33d3ba1..e303045 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationOrderRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/AssociationOrderRequest.cs @@ -7,6 +7,11 @@ /// public string OrderId { get; set; } + /// + /// 店铺Id (Shop对象的ShopId) + /// + public long ShopId { get; set; } + /// /// 采购单列表 /// From 84c93586ec2996b7573eee4c14718fd1078e9d5d Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 24 May 2023 22:36:46 +0800 Subject: [PATCH 08/21] temp --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 0d74339..c126e01 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -503,9 +503,30 @@ namespace BBWYB.Server.Business } else { + dbPurchaserOrder.PurchaseAccountId = purchaseOrder.PurchaseAccountId; + dbPurchaserOrder.PurchaseAccountName = purchaseOrder.PurchaseAccountName; + //dbPurchaserOrder.BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)); + dbPurchaserOrder.PurchasePlatform = purchaseOrder.PurchasePlatform; + dbPurchaserOrder.PurchaserId = purchaseOrder.PurchaserId; + dbPurchaserOrder.PurchaserName = purchaseOrder.PurchaserName; + updateOrderPurchaseInfoList.Add(fsql.Update().SetSource(dbPurchaserOrder)); + foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) + { + var dbOrderCostDetail = dbOrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == assOrderCostDetail.SkuId); + dbOrderCostDetail.SkuAmount = assOrderCostDetail.SkuAmount; + dbOrderCostDetail.DeductionQuantity = assOrderCostDetail.PurchaseQuantity; + dbOrderCostDetail.PurchaseFreight = avgFreight; + dbOrderCostDetail.TotalCost = assOrderCostDetail.SkuAmount + avgFreight; + updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderCostDetail)); + } } } + + fsql.Transaction(() => + { + + }); } #region 1688CallBack From faba31818aaba76f8be3e55df6662fedd18a5700 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 24 May 2023 23:20:10 +0800 Subject: [PATCH 09/21] =?UTF-8?q?=E5=85=B3=E8=81=94=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 52 ++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index c126e01..5f0717b 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -350,7 +350,8 @@ namespace BBWYB.Server.Business IsManualEdited = false, PlatformCommissionRatio = 0, PreferentialAmount = 0, - PurchaseAmount = totalPurchaseAmount + PurchaseAmount = totalPurchaseAmount, + TotalCost = totalPurchaseAmount }; //orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio; orderCost.Profit = dbOrder.OrderTotalPrice - @@ -450,6 +451,8 @@ namespace BBWYB.Server.Business var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId).ToList(); + var dbOrderCost = fsql.Select(request.OrderId).ToOne(); + var dbOrder = fsql.Select(request.OrderId).ToOne(); List insertOrderPurchaseInfoList = new List(); IList> updateOrderPurchaseInfoList = new List>(); @@ -523,9 +526,54 @@ namespace BBWYB.Server.Business } } - fsql.Transaction(() => + + var totalPurchaseAmount = request.AssociationPurchaseOrderList.Sum(p => p.PurchaseAmount + p.PurchaseFreight); + var profit = dbOrder.OrderTotalPrice - totalPurchaseAmount - (dbOrderCost?.DeliveryExpressFreight ?? 0); // -orderCost.PlatformCommissionAmount + + if (dbOrderCost == null) + { + dbOrderCost = new OrderCost() + { + OrderId = request.OrderId, + DeliveryExpressFreight = 0, + IsManualEdited = false, + PlatformCommissionAmount = 0, + PlatformCommissionRatio = 0, + PreferentialAmount = 0, + CreateTime = DateTime.Now, + PurchaseAmount = totalPurchaseAmount, + TotalCost = totalPurchaseAmount, + Profit = profit + }; + insertOrderCost = fsql.Insert(dbOrderCost); + } + else { + dbOrderCost.PurchaseAmount = totalPurchaseAmount; + dbOrderCost.Profit = profit; + updateOrderCost = fsql.Update(request.OrderId).Set(oc => oc.PurchaseAmount, totalPurchaseAmount) + .Set(oc => oc.TotalCost, totalPurchaseAmount) + .Set(oc => oc.Profit, profit); + } + fsql.Transaction(() => + { + if (insertOrderPurchaseInfoList.Count() > 0) + fsql.Insert(insertOrderPurchaseInfoList).ExecuteAffrows(); + if (updateOrderPurchaseInfoList.Count() > 0) + { + foreach (var update in updateOrderPurchaseInfoList) + update.ExecuteAffrows(); + } + if (insertOrderCostDetailList.Count() > 0) + fsql.Insert(insertOrderCostDetailList).ExecuteAffrows(); + if (updateOrderCostDetailList.Count() > 0) + { + foreach (var update in updateOrderCostDetailList) + update.ExecuteAffrows(); + } + insertOrderCost?.ExecuteAffrows(); + updateOrderCost?.ExecuteAffrows(); }); } From 71d937f949622d87bab0b0208c6948df8b326b17 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 24 May 2023 23:45:19 +0800 Subject: [PATCH 10/21] =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E9=87=87=E8=B4=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 5f0717b..c3668db 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -176,7 +176,7 @@ namespace BBWYB.Server.Business if (request.CargoParamGroupList == null || request.CargoParamGroupList.Count() == 0) throw new BusinessException("缺少下单商品参数"); - var deleteOrderCostDetail = fsql.Delete().Where(ocd => ocd.OrderId == dbOrder.Id); + //var deleteOrderCostDetail = fsql.Delete().Where(ocd => ocd.OrderId == dbOrder.Id); var isRepurchase = fsql.Select(dbOrder.Id).Any(); var orderSkus = fsql.Select().Where(osku => osku.Price != 0 && osku.OrderId == request.OrderId).ToList(); @@ -189,6 +189,16 @@ namespace BBWYB.Server.Business List insertOrderPurchaseSkuInfos = new List(); List updatePurchaseTimeSchemeIdList = new List(); List insertOrderPurchaseRelationInfoList = new List(); + + #region 待更新 + IList updateOrderCostDetailIdList = fsql.Select() + .Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true) + .ToList(ocd => ocd.Id); + IList updatePurchaseOrderIdList = fsql.Select() + .Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true) + .ToList(opi => opi.Id); + #endregion + IInsert insertOrderCost = null; IUpdate updateOrderCost = null; var totalPurchaseAmount = 0M; @@ -369,7 +379,12 @@ namespace BBWYB.Server.Business fsql.Transaction(() => { - deleteOrderCostDetail.ExecuteAffrows(); + //deleteOrderCostDetail.ExecuteAffrows(); + if (updatePurchaseOrderIdList.Count() > 0) + fsql.Update(updatePurchaseOrderIdList).Set(opi => opi.IsEnabled, false).ExecuteAffrows(); + if (updateOrderCostDetailIdList.Count() > 0) + fsql.Update(updateOrderCostDetailIdList).Set(ocd => ocd.IsEnabled, false).ExecuteAffrows(); + fsql.Insert(insertOrderCostDetails).ExecuteAffrows(); fsql.Insert(insertOrderPurchaseInfos).ExecuteAffrows(); fsql.Insert(insertOrderPurchaseSkuInfos).ExecuteAffrows(); @@ -448,9 +463,9 @@ namespace BBWYB.Server.Business if (request.AssociationPurchaseOrderList == null || request.AssociationPurchaseOrderList.Count() == 0) throw new BusinessException("缺少采购单信息"); - var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); + var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); - var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId).ToList(); + var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); var dbOrderCost = fsql.Select(request.OrderId).ToOne(); var dbOrder = fsql.Select(request.OrderId).ToOne(); From 2afddc36f1feb5921e9888b2149cb82f14da8a06 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 25 May 2023 01:20:08 +0800 Subject: [PATCH 11/21] =?UTF-8?q?=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E9=99=90=E5=88=B6=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/APIServices/BaseApiService.cs | 4 +- BBWYB.Client/GlobalContext.cs | 8 +++ BBWYB.Client/Views/MainWindow.xaml | 2 +- .../ClientVersionValidationMiddleWare.cs | 55 +++++++++++++++++++ BBWYB.Server.API/Program.cs | 2 + BBWYB.Server.API/appsettings.json | 9 ++- 6 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 BBWYB.Server.API/Middlewares/ClientVersionValidationMiddleWare.cs diff --git a/BBWYB.Client/APIServices/BaseApiService.cs b/BBWYB.Client/APIServices/BaseApiService.cs index 747db0f..1ff52e0 100644 --- a/BBWYB.Client/APIServices/BaseApiService.cs +++ b/BBWYB.Client/APIServices/BaseApiService.cs @@ -32,9 +32,9 @@ namespace BBWYB.Client.APIServices if (headers == null) headers = new Dictionary(); if (!headers.ContainsKey("ClientCode")) - headers.Add("ClientCode", "BBWY"); + headers.Add("ClientCode", "BBWYB"); if (!headers.ContainsKey("ClientVersion")) - headers.Add("ClientVersion", "1.0.0.0"); + headers.Add("ClientVersion", globalContext.BBWYBApiVersion); if (!headers.ContainsKey("Authorization") && !string.IsNullOrEmpty(globalContext.UserToken)) headers.Add("Authorization", $"Bearer {globalContext.UserToken}"); if (!headers.ContainsKey("qy")) diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index becd36d..9a6e868 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -13,6 +13,7 @@ namespace BBWYB.Client { public GlobalContext() { + BBWYBApiVersion = "10018"; } private User user; @@ -35,10 +36,17 @@ namespace BBWYB.Client public string BBWYCApiHost { get; set; } public string QKApiHost { get; set; } + public string BBWYBApiVersion { get; set; } + public string GetUserString() { return JsonConvert.SerializeObject(User); } + + public string GetBBWYBApiVersion() + { + return BBWYBApiVersion; + } #endregion } } \ No newline at end of file diff --git a/BBWYB.Client/Views/MainWindow.xaml b/BBWYB.Client/Views/MainWindow.xaml index 0e9be0c..a72f884 100644 --- a/BBWYB.Client/Views/MainWindow.xaml +++ b/BBWYB.Client/Views/MainWindow.xaml @@ -24,7 +24,7 @@ - + diff --git a/BBWYB.Server.API/Middlewares/ClientVersionValidationMiddleWare.cs b/BBWYB.Server.API/Middlewares/ClientVersionValidationMiddleWare.cs new file mode 100644 index 0000000..cdd75c1 --- /dev/null +++ b/BBWYB.Server.API/Middlewares/ClientVersionValidationMiddleWare.cs @@ -0,0 +1,55 @@ +using BBWYB.Common.Models; +using Microsoft.Extensions.Options; +using Microsoft.Extensions.Primitives; + +namespace BBWYB.Server.API.Middlewares +{ + public class ClientVersionValidationMiddleWare + { + /// + /// 管道请求委托 + /// + private RequestDelegate _next; + + private IDictionary apiVersionDictionary; + + private IOptionsMonitor> _monitor; + + public ClientVersionValidationMiddleWare(RequestDelegate requestDelegate, IOptionsMonitor> monitor) + { + _next = requestDelegate; + _monitor = monitor; + apiVersionDictionary = new Dictionary(); + } + + public async Task Invoke(HttpContext context) + { + try + { + Console.WriteLine(context.Request.Path); + var apiRequirement = _monitor.CurrentValue.FirstOrDefault(x => x.Api.Equals(context.Request.Path, StringComparison.CurrentCultureIgnoreCase)); + if (apiRequirement != null) + { + if (!context.Request.Headers.TryGetValue("ClientVersion", out StringValues clientVersionStr)) + throw new BusinessException("未读取到ClientVersion"); + if (!int.TryParse(clientVersionStr, out int clientVersion)) + throw new BusinessException("非法ClientVersion"); + if (clientVersion < apiRequirement.MinimumVersion) + throw new BusinessException("当前ClientVersion低于接口最低要求,请升级到最新版"); + } + await _next(context); //调用管道执行下一个中间件 + } + catch + { + throw; + } + } + } + + public class ClientVersionValidationModel + { + public string Api { get; set; } + + public int MinimumVersion { get; set; } + } +} diff --git a/BBWYB.Server.API/Program.cs b/BBWYB.Server.API/Program.cs index 1da4090..76cd58e 100644 --- a/BBWYB.Server.API/Program.cs +++ b/BBWYB.Server.API/Program.cs @@ -63,6 +63,7 @@ services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddMapper(new MappingProfiles()); +services.Configure>(configuration.GetSection("ApiVersionRequirements")); services.AddControllers(c => { @@ -164,6 +165,7 @@ if (isAllowedSwagger) } //app.UseHttpsRedirection(); app.UseMiddleware(); +app.UseMiddleware(); app.UseRouting(); app.UseCors("cors"); app.UseAuthorization(); diff --git a/BBWYB.Server.API/appsettings.json b/BBWYB.Server.API/appsettings.json index 503362a..21910ce 100644 --- a/BBWYB.Server.API/appsettings.json +++ b/BBWYB.Server.API/appsettings.json @@ -13,5 +13,12 @@ "MDSDB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=mds;charset=utf8;sslmode=none;" }, "AllowedSwagger": true, - "Secret": "D96BFA5B-F2AF-45BC-9342-5A55C3F9BBB0" + "Secret": "D96BFA5B-F2AF-45BC-9342-5A55C3F9BBB0", + //ApiVersionRequirementsҪվ + "ApiVersionRequirements": [ + { + "Api": "/api/purchaseOrder/createpurchaseorder", + "MinimumVersion": 10017 + } + ] } From 326926e789e174d506419c5f2cc40a3676decbe4 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 25 May 2023 14:41:10 +0800 Subject: [PATCH 12/21] 1 --- BBWYB.Client/Views/WebB/WebB.xaml.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/BBWYB.Client/Views/WebB/WebB.xaml.cs b/BBWYB.Client/Views/WebB/WebB.xaml.cs index bf261dd..fd34972 100644 --- a/BBWYB.Client/Views/WebB/WebB.xaml.cs +++ b/BBWYB.Client/Views/WebB/WebB.xaml.cs @@ -1,6 +1,8 @@ using BBWYB.Client.APIServices; using Microsoft.Extensions.DependencyInjection; using System.Collections.Generic; +using System.IO; +using System.Reflection; using System.Windows; using System.Windows.Controls; @@ -46,6 +48,7 @@ namespace BBWYB.Client.Views.WebB #if DEBUG var url = "http://192.168.1.2:8080"; + //var url = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "s.html"); #else var url = "http://qtbbwy.qiyue666.com"; #endif From b3da379c91c681e3841c8194ae345fdd88dcafea Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 25 May 2023 15:00:17 +0800 Subject: [PATCH 13/21] =?UTF-8?q?baseapi=E5=90=AF=E7=94=A8=E8=B7=A8?= =?UTF-8?q?=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.API/Controllers/BaseApiController.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.API/Controllers/BaseApiController.cs b/BBWYB.Server.API/Controllers/BaseApiController.cs index 32fe69d..bfb1ca8 100644 --- a/BBWYB.Server.API/Controllers/BaseApiController.cs +++ b/BBWYB.Server.API/Controllers/BaseApiController.cs @@ -1,9 +1,11 @@ -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.Mvc; namespace BBWYB.Server.API.Controllers { [Produces("application/json")] [Route("Api/[Controller]/[Action]")] [ApiController] + [EnableCors("cors")] public class BaseApiController : ControllerBase { protected IHttpContextAccessor httpContextAccessor; From dbb7706b47eb1a4a71d46201c270856e390f90da Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 25 May 2023 15:19:42 +0800 Subject: [PATCH 14/21] =?UTF-8?q?=E6=94=B9=E5=8F=98=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=B8=AD=E9=97=B4=E4=BB=B6=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.API/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BBWYB.Server.API/Program.cs b/BBWYB.Server.API/Program.cs index 76cd58e..94be203 100644 --- a/BBWYB.Server.API/Program.cs +++ b/BBWYB.Server.API/Program.cs @@ -165,9 +165,9 @@ if (isAllowedSwagger) } //app.UseHttpsRedirection(); app.UseMiddleware(); -app.UseMiddleware(); app.UseRouting(); app.UseCors("cors"); +app.UseMiddleware(); app.UseAuthorization(); app.MapControllers(); From a266316e7d6dea2169d249ea6c19c8f4bcd62e84 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 25 May 2023 16:10:03 +0800 Subject: [PATCH 15/21] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8Csku=E6=88=90=E6=9C=AC=E9=BB=98=E8=AE=A4=E5=90=AF?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index c3668db..5aca507 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -308,7 +308,8 @@ namespace BBWYB.Server.Business PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, SkuAmount = currentOrderSkuProductAmount, SkuId = belongSkuId, - StorageAmount = 0 + StorageAmount = 0, + IsEnabled = true }; insertOrderCostDetails.Add(orderCostDetail); #endregion From 8f926e3d408380e14c06bf0dbd4adc965421935a Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 25 May 2023 16:11:40 +0800 Subject: [PATCH 16/21] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=90=AF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 5aca507..e5d1ebb 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -329,7 +329,8 @@ namespace BBWYB.Server.Business PurchaserId = cargoParamGroup.PurchaserId, PurchaserName = cargoParamGroup.PurchaserName, ShopId = request.ShopId, - BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)) + BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)), + IsEnabled = true }; insertOrderPurchaseInfos.Add(orderPurchaserInfo); #endregion From 72fb615f581467631c8b2dac59a503ef2acc8edd Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 25 May 2023 23:56:47 +0800 Subject: [PATCH 17/21] =?UTF-8?q?=E6=94=B9=E4=BB=B7=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 85 +++++++++++++------ .../Db/Order/OrderCostDetail.cs | 6 -- 2 files changed, 60 insertions(+), 31 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index e5d1ebb..7db44d9 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -307,6 +307,7 @@ namespace BBWYB.Server.Business PurchaseFreight = currentOrderSkuFreightAmount, PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, SkuAmount = currentOrderSkuProductAmount, + TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount, SkuId = belongSkuId, StorageAmount = 0, IsEnabled = true @@ -514,7 +515,6 @@ namespace BBWYB.Server.Business OrderId = request.OrderId, ProductId = dbOrderSku.ProductId, SkuId = assOrderCostDetail.SkuId, - PurchaseAmount = assOrderCostDetail.SkuAmount, PurchaseFreight = avgFreight, TotalCost = assOrderCostDetail.SkuAmount + avgFreight }; @@ -899,26 +899,36 @@ namespace BBWYB.Server.Business { var orderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne(); if (orderPurchaseInfo == null) - throw new Exception($"未查询到采购单{orderPurchaseInfo.PurchaseAccountId}"); + throw new Exception($"采购单{purchaseOrderId}-未查询到采购单"); var purchaseAccount = fsqlManager.MDSfsql.Select().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); if (purchaseAccount == null) - throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); + throw new Exception($"采购单{purchaseOrderId}-未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); - var dbOrder = fsql.Select(orderPurchaseInfo.OrderId).ToOne(o => new { o.OrderTotalPrice }); + var dbOrder = fsql.Select(orderPurchaseInfo.OrderId).ToOne(); var dbOrderCost = fsql.Select(orderPurchaseInfo.OrderId).ToOne(); if (dbOrderCost == null) - throw new Exception($"未查询到订单成本 {orderPurchaseInfo.OrderId}"); + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的成本"); + + var dbOrderCostDetails = fsql.Select().Where(ocd => ocd.OrderId == dbOrder.Id && ocd.IsEnabled == true).ToList(); + if (dbOrderCostDetails.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的明细成本"); + + var dbOrderPurchaseRelationInfos = fsql.Select().Where(x => x.OrderId == dbOrder.Id).ToList(); + if (dbOrderPurchaseRelationInfos.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细,手动关联的采购单不支持改价"); + + var dbOrderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId && opi.IsEnabled == true).ToList(); + if (dbOrderPurchaseInfoList.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的采购单集合"); + + List> updateOrderCostDetailList = new List>(); + IUpdate updateOrderCost = null; - var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId).ToList(opi => new - { - opi.PurchaseOrderId, - opi.PurchaseAccountId - }); var client = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); var totalPurchaseAmount = 0M; - foreach (var opi in orderPurchaseInfoList) + foreach (var opi in dbOrderPurchaseInfoList) { var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() { @@ -928,25 +938,50 @@ namespace BBWYB.Server.Business OrderId = opi.PurchaseOrderId }); totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount; - } + var currentPurchaseOrderRelationInfos = dbOrderPurchaseRelationInfos.Where(x => x.PurchaseOrderId == opi.PurchaseOrderId).ToList(); - //var oldTotalAmount = dbOrderCost.PurchaseAmount; - //var oldProductAmount = dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount); - //var oldPurchaseFreight = dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight); + var belongSkuGroups = currentPurchaseOrderRelationInfos.GroupBy(p => p.BelongSkuId); + foreach (var belongSkuGroup in belongSkuGroups) + { + var belongSkuId = belongSkuGroup.Key; + var currentOrderSkuProductAmount = 0M; //采购成本 + var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前skuId的采购skuId - dbOrderCost.PurchaseAmount = totalPurchaseAmount; - dbOrderCost.Profit = dbOrder.OrderTotalPrice - - dbOrderCost.PurchaseAmount - - dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount + foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) + { + var purchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) + .Sum(p => p.ProductAmount); + var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) + .Sum(p => p.Quantity); + currentOrderSkuProductAmount += purchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity.Value / purchaseSkuTotalQuantity); + } - fsql.Transaction(() => - { - fsql.Update(dbOrderCost.OrderId).Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount) - .Set(oc => oc.Profit, dbOrderCost.Profit) - .ExecuteAffrows(); - }); + var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / belongSkuGroups.Count(); //采购运费(按sku数均分) + + var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId); + dbOrderSkuDetail.SkuAmount = currentOrderSkuProductAmount; + dbOrderSkuDetail.PurchaseFreight = currentOrderSkuFreightAmount; + dbOrderSkuDetail.TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount; + updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); + } + + dbOrderCost.PurchaseAmount = totalPurchaseAmount; + dbOrderCost.Profit = dbOrder.OrderTotalPrice - + dbOrderCost.PurchaseAmount - + dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount + fsql.Transaction(() => + { + foreach (var update in updateOrderCostDetailList) + update.ExecuteAffrows(); + updateOrderCost?.ExecuteAffrows(); + + //fsql.Update(dbOrderCost.OrderId).Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount) + // .Set(oc => oc.Profit, dbOrderCost.Profit) + // .ExecuteAffrows(); + }); + } } catch (Exception ex) { diff --git a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs b/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs index 3ba1064..6f4b31f 100644 --- a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs +++ b/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs @@ -109,12 +109,6 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "decimal(20,2)")] public decimal? StorageAmount { get; set; } = 0.00M; - /// - /// 采购成本(不含发货运费) - /// - [Column(DbType = "decimal(20,2)")] - public decimal? PurchaseAmount { get; set; } = 0.00M; - /// /// 成本总计 /// From 54f8ca7d11409bc8abf4115ddaa07672d0f35993 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 25 May 2023 16:11:40 +0800 Subject: [PATCH 18/21] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=90=AF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 5aca507..e5d1ebb 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -329,7 +329,8 @@ namespace BBWYB.Server.Business PurchaserId = cargoParamGroup.PurchaserId, PurchaserName = cargoParamGroup.PurchaserName, ShopId = request.ShopId, - BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)) + BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)), + IsEnabled = true }; insertOrderPurchaseInfos.Add(orderPurchaserInfo); #endregion From a59010f1f92b8688a21863921c7ef7ce7b30c026 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 25 May 2023 23:56:47 +0800 Subject: [PATCH 19/21] =?UTF-8?q?=E6=94=B9=E4=BB=B7=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 85 +++++++++++++------ .../Db/Order/OrderCostDetail.cs | 6 -- 2 files changed, 60 insertions(+), 31 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index e5d1ebb..7db44d9 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -307,6 +307,7 @@ namespace BBWYB.Server.Business PurchaseFreight = currentOrderSkuFreightAmount, PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, SkuAmount = currentOrderSkuProductAmount, + TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount, SkuId = belongSkuId, StorageAmount = 0, IsEnabled = true @@ -514,7 +515,6 @@ namespace BBWYB.Server.Business OrderId = request.OrderId, ProductId = dbOrderSku.ProductId, SkuId = assOrderCostDetail.SkuId, - PurchaseAmount = assOrderCostDetail.SkuAmount, PurchaseFreight = avgFreight, TotalCost = assOrderCostDetail.SkuAmount + avgFreight }; @@ -899,26 +899,36 @@ namespace BBWYB.Server.Business { var orderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne(); if (orderPurchaseInfo == null) - throw new Exception($"未查询到采购单{orderPurchaseInfo.PurchaseAccountId}"); + throw new Exception($"采购单{purchaseOrderId}-未查询到采购单"); var purchaseAccount = fsqlManager.MDSfsql.Select().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); if (purchaseAccount == null) - throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); + throw new Exception($"采购单{purchaseOrderId}-未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); - var dbOrder = fsql.Select(orderPurchaseInfo.OrderId).ToOne(o => new { o.OrderTotalPrice }); + var dbOrder = fsql.Select(orderPurchaseInfo.OrderId).ToOne(); var dbOrderCost = fsql.Select(orderPurchaseInfo.OrderId).ToOne(); if (dbOrderCost == null) - throw new Exception($"未查询到订单成本 {orderPurchaseInfo.OrderId}"); + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的成本"); + + var dbOrderCostDetails = fsql.Select().Where(ocd => ocd.OrderId == dbOrder.Id && ocd.IsEnabled == true).ToList(); + if (dbOrderCostDetails.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的明细成本"); + + var dbOrderPurchaseRelationInfos = fsql.Select().Where(x => x.OrderId == dbOrder.Id).ToList(); + if (dbOrderPurchaseRelationInfos.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细,手动关联的采购单不支持改价"); + + var dbOrderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId && opi.IsEnabled == true).ToList(); + if (dbOrderPurchaseInfoList.Count() == 0) + throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的采购单集合"); + + List> updateOrderCostDetailList = new List>(); + IUpdate updateOrderCost = null; - var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId).ToList(opi => new - { - opi.PurchaseOrderId, - opi.PurchaseAccountId - }); var client = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴); var totalPurchaseAmount = 0M; - foreach (var opi in orderPurchaseInfoList) + foreach (var opi in dbOrderPurchaseInfoList) { var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() { @@ -928,25 +938,50 @@ namespace BBWYB.Server.Business OrderId = opi.PurchaseOrderId }); totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount; - } + var currentPurchaseOrderRelationInfos = dbOrderPurchaseRelationInfos.Where(x => x.PurchaseOrderId == opi.PurchaseOrderId).ToList(); - //var oldTotalAmount = dbOrderCost.PurchaseAmount; - //var oldProductAmount = dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount); - //var oldPurchaseFreight = dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight); + var belongSkuGroups = currentPurchaseOrderRelationInfos.GroupBy(p => p.BelongSkuId); + foreach (var belongSkuGroup in belongSkuGroups) + { + var belongSkuId = belongSkuGroup.Key; + var currentOrderSkuProductAmount = 0M; //采购成本 + var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前skuId的采购skuId - dbOrderCost.PurchaseAmount = totalPurchaseAmount; - dbOrderCost.Profit = dbOrder.OrderTotalPrice - - dbOrderCost.PurchaseAmount - - dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount + foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) + { + var purchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) + .Sum(p => p.ProductAmount); + var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.PurchaseSkuId) + .Sum(p => p.Quantity); + currentOrderSkuProductAmount += purchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity.Value / purchaseSkuTotalQuantity); + } - fsql.Transaction(() => - { - fsql.Update(dbOrderCost.OrderId).Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount) - .Set(oc => oc.Profit, dbOrderCost.Profit) - .ExecuteAffrows(); - }); + var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / belongSkuGroups.Count(); //采购运费(按sku数均分) + + var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId); + dbOrderSkuDetail.SkuAmount = currentOrderSkuProductAmount; + dbOrderSkuDetail.PurchaseFreight = currentOrderSkuFreightAmount; + dbOrderSkuDetail.TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount; + updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail)); + } + + dbOrderCost.PurchaseAmount = totalPurchaseAmount; + dbOrderCost.Profit = dbOrder.OrderTotalPrice - + dbOrderCost.PurchaseAmount - + dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount + fsql.Transaction(() => + { + foreach (var update in updateOrderCostDetailList) + update.ExecuteAffrows(); + updateOrderCost?.ExecuteAffrows(); + + //fsql.Update(dbOrderCost.OrderId).Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount) + // .Set(oc => oc.Profit, dbOrderCost.Profit) + // .ExecuteAffrows(); + }); + } } catch (Exception ex) { diff --git a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs b/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs index 3ba1064..6f4b31f 100644 --- a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs +++ b/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs @@ -109,12 +109,6 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "decimal(20,2)")] public decimal? StorageAmount { get; set; } = 0.00M; - /// - /// 采购成本(不含发货运费) - /// - [Column(DbType = "decimal(20,2)")] - public decimal? PurchaseAmount { get; set; } = 0.00M; - /// /// 成本总计 /// From 8809684bd05ec5a76365f7386df7e0892980969c Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Fri, 26 May 2023 11:57:07 +0800 Subject: [PATCH 20/21] 1 --- BBWYB.Server.API/appsettings.json | 1 - 1 file changed, 1 deletion(-) diff --git a/BBWYB.Server.API/appsettings.json b/BBWYB.Server.API/appsettings.json index 21910ce..9be7fb6 100644 --- a/BBWYB.Server.API/appsettings.json +++ b/BBWYB.Server.API/appsettings.json @@ -14,7 +14,6 @@ }, "AllowedSwagger": true, "Secret": "D96BFA5B-F2AF-45BC-9342-5A55C3F9BBB0", - //ApiVersionRequirementsҪվ "ApiVersionRequirements": [ { "Api": "/api/purchaseOrder/createpurchaseorder", From 593b1d8a7f59917e9ab11c31d2010761a04a3b97 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 26 May 2023 19:20:58 +0800 Subject: [PATCH 21/21] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseOrderController.cs | 10 ++++ .../PurchaseOrder/PurchaseOrderBusiness.cs | 50 +++++++++++++++++-- .../SetHistoryPurchaseOrderRequest.cs | 15 ++++++ 3 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index 72cf85d..56829c6 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -58,6 +58,16 @@ namespace BBWYB.Server.API.Controllers purchaseOrderBusiness.AssociatePurchaseOrder(request); } + /// + /// 设置历史采购单 + /// + /// + [HttpPost] + public void SetHistoryPurchaseOrder([FromBody] SetHistoryPurchaseOrderRequest request) + { + purchaseOrderBusiness.SetHistoryPurchaseOrder(request); + } + /// /// 1688回调 /// diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 7db44d9..5357d1d 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -466,7 +466,10 @@ namespace BBWYB.Server.Business if (request.AssociationPurchaseOrderList == null || request.AssociationPurchaseOrderList.Count() == 0) throw new BusinessException("缺少采购单信息"); - var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); + + var dbPurchaseOrderList = fsql.Select().Where(opi => opi.OrderId == request.OrderId).ToList(); + var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).ToList(); + var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && ocd.IsEnabled == true).ToList(); var dbOrderCost = fsql.Select(request.OrderId).ToOne(); @@ -481,6 +484,9 @@ namespace BBWYB.Server.Business foreach (var purchaseOrder in request.AssociationPurchaseOrderList) { + if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaserOrderId)) + continue; + var avgFreight = purchaseOrder.PurchaseFreight / purchaseOrder.AssocationOrderCostDetailList.Count(); var dbPurchaserOrder = dbPurchaseOrderList.FirstOrDefault(x => x.PurchaseOrderId == purchaseOrder.PurchaserOrderId); if (dbPurchaserOrder == null) @@ -543,8 +549,8 @@ namespace BBWYB.Server.Business } } - - var totalPurchaseAmount = request.AssociationPurchaseOrderList.Sum(p => p.PurchaseAmount + p.PurchaseFreight); + var totalPurchaseAmount = request.AssociationPurchaseOrderList.Where(x => !dbInvalidPurchaseOrderIdList.Contains(x.PurchaserOrderId)) + .Sum(p => p.PurchaseAmount + p.PurchaseFreight); var profit = dbOrder.OrderTotalPrice - totalPurchaseAmount - (dbOrderCost?.DeliveryExpressFreight ?? 0); // -orderCost.PlatformCommissionAmount if (dbOrderCost == null) @@ -594,6 +600,44 @@ namespace BBWYB.Server.Business }); } + public void SetHistoryPurchaseOrder(SetHistoryPurchaseOrderRequest request) + { + var dbOrderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId) + .ToList(); + var dbOrderCost = fsql.Select(request.OrderId).ToOne(); + var dbOrder = fsql.Select(request.OrderId).ToOne(); + + var invalidCost = dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount + ocd.PurchaseFreight); + + //orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio; + try + { + dbOrderCost.PurchaseAmount = dbOrderCostDetailList.Where(ocd => ocd.PurchaseOrderId != request.PurchaseOrderId).Sum(ocd => ocd.TotalCost); + } + catch + { + dbOrderCost.PurchaseAmount = 0; + } + dbOrderCost.Profit = dbOrder.OrderTotalPrice - + dbOrderCost.PurchaseAmount - + dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount + + fsql.Transaction(() => + { + fsql.Update() + .Set(opi => opi.IsEnabled, false) + .Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId) + .ExecuteAffrows(); + + fsql.Update() + .Set(ocd => ocd.IsEnabled, false) + .Where(ocd => ocd.PurchaseOrderId == request.PurchaseOrderId) + .ExecuteAffrows(); + + fsql.Update().SetSource(dbOrderCost).ExecuteAffrows(); + }); + } + #region 1688CallBack public void CallbackFrom1688(string jsonStr) { diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs new file mode 100644 index 0000000..72a02b9 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/SetHistoryPurchaseOrderRequest.cs @@ -0,0 +1,15 @@ +namespace BBWYB.Server.Model.Dto +{ + public class SetHistoryPurchaseOrderRequest + { + /// + /// 订单Id + /// + public string OrderId { get; set; } + + /// + /// 采购单Id + /// + public string PurchaseOrderId { get; set; } + } +}