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; }
+ }
+}