From 3dba07a9f6c77e354822f2f24b23598eb6967c0c Mon Sep 17 00:00:00 2001
From: shanji <18996038927@163.com>
Date: Tue, 21 Jun 2022 20:30:51 +0800
Subject: [PATCH] 1
---
.../Controllers/OrderController.cs | 10 ++
BBWY.Server.Business/Order/OrderBusiness.cs | 163 ++++++++++++++++++
.../Request/Order/OrderDropShippingRequest.cs | 16 ++
.../Order/RelationPurchaseOrderRequest.cs | 1 +
.../Order/RelationPurchaseOrderRequestV2.cs | 11 ++
5 files changed, 201 insertions(+)
create mode 100644 BBWY.Server.Model/Dto/Request/Order/RelationPurchaseOrderRequestV2.cs
diff --git a/BBWY.Server.API/Controllers/OrderController.cs b/BBWY.Server.API/Controllers/OrderController.cs
index 4fd9affc..c269630a 100644
--- a/BBWY.Server.API/Controllers/OrderController.cs
+++ b/BBWY.Server.API/Controllers/OrderController.cs
@@ -112,6 +112,16 @@ namespace BBWY.Server.API.Controllers
orderBusiness.RelationPurchaseOrder(relationPurchaseOrderRequest);
}
+ ///
+ /// 关联采购单V2
+ ///
+ ///
+ [HttpPost]
+ public void RelationPurchaseOrderV2([FromBody]RelationPurchaseOrderRequestV2 relationPurchaseOrderRequestV2)
+ {
+ orderBusiness.RelationPurchaseOrderV2(relationPurchaseOrderRequestV2);
+ }
+
///
/// 出库
///
diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs
index 8412d4ef..ccb172d1 100644
--- a/BBWY.Server.Business/Order/OrderBusiness.cs
+++ b/BBWY.Server.Business/Order/OrderBusiness.cs
@@ -899,6 +899,169 @@ namespace BBWY.Server.Business
});
}
+ ///
+ /// 关联外部订单
+ ///
+ ///
+ public void RelationPurchaseOrderV2(RelationPurchaseOrderRequestV2 relationPurchaseOrderRequestV2)
+ {
+ var dbOrder = fsql.Select(relationPurchaseOrderRequestV2.OrderDropShippingList[0].OrderId).ToOne();
+ if (dbOrder == null)
+ throw new BusinessException($"订单号{relationPurchaseOrderRequestV2.OrderDropShippingList[0].OrderId}不存在");
+
+ if (relationPurchaseOrderRequestV2.PlatformCommissionRatio == 0M)
+ relationPurchaseOrderRequestV2.PlatformCommissionRatio = 0.05M;
+
+ List insertOrderDropShippingList = new List();
+ List updateOrderDropShippingList = new List();
+ IInsert insertOrderCost = null;
+ IUpdate updateOrderCost = null;
+ IDelete deletePurchaseOrder = null;
+ IDelete deleteOrderCostDetail = null;
+ List> updateOrderSkuList = new List>();
+ List insertPurchaseOrderList = new List();
+ List insertOrderCostDetailList = new List();
+
+ var oldPourchaseIdList = fsql.Select().Where(ocd => ocd.OrderId == dbOrder.Id)
+ .ToList(ocd => ocd.PurchaseOrderPKId);
+
+ deletePurchaseOrder = fsql.Delete().Where(po => oldPourchaseIdList.Contains(po.Id));
+ deleteOrderCostDetail = fsql.Delete().Where(ocd => ocd.OrderId == dbOrder.Id);
+
+ foreach (var orderDropShipping in relationPurchaseOrderRequestV2.OrderDropShippingList)
+ {
+ #region 代发信息表
+ if (orderDropShipping.Id == 0)
+ {
+ orderDropShipping.Id = idGenerator.NewLong();
+ orderDropShipping.CreateTime = DateTime.Now;
+ orderDropShipping.ShopId = dbOrder.ShopId;
+ insertOrderDropShippingList.Add(orderDropShipping);
+ }
+ else
+ {
+ updateOrderDropShippingList.Add(orderDropShipping);
+ }
+ #endregion
+
+ foreach (var relationOrderSku in orderDropShipping.RelationPurchaseOrderSkuList)
+ {
+ #region OrderSku
+ var updateOrderSku = fsql.Update(relationOrderSku.Id).Set(osku => osku.OrderDropShippingId, orderDropShipping.Id);
+ updateOrderSkuList.Add(updateOrderSku);
+ #endregion
+
+ #region 采购单
+ var purchaseOrder = new PurchaseOrder()
+ {
+ Id = idGenerator.NewLong(),
+ CreateTime = DateTime.Now,
+ ProductId = relationOrderSku.ProductId,
+ PurchaseMethod = Enums.PurchaseMethod.线下采购,
+ StorageType = Enums.StorageType.代发,
+ PurchaseOrderId = orderDropShipping.PurchaseOrderId,
+ PurchasePlatform = orderDropShipping.PurchasePlatform,
+ PurchaseQuantity = relationOrderSku.Quantity,
+ RemainingQuantity = 0,
+ ShopId = dbOrder.ShopId,
+ SkuId = relationOrderSku.SkuId,
+ SingleConsumableAmount = 0,
+ SingleFirstFreight = 0,
+ SingleFreight = orderDropShipping.PurchaseFreight / orderDropShipping.RelationPurchaseOrderSkuList.Count() / relationOrderSku.Quantity,
+ SingleOperationAmount = 0,
+ SingleStorageAmount = 0,
+ SingleSkuAmount = relationOrderSku.SingleSkuAmount,
+ SingleDeliveryFreight = 0
+ };
+ insertPurchaseOrderList.Add(purchaseOrder);
+ #endregion
+
+ #region 明细
+ insertOrderCostDetailList.Add(new OrderCostDetail()
+ {
+ Id = idGenerator.NewLong(),
+ ConsumableAmount = 0,
+ CreateTime = DateTime.Now,
+ DeductionQuantity = relationOrderSku.Quantity,
+ DeliveryExpressFreight = 0,
+ FirstFreight = 0,
+ OperationAmount = 0,
+ OrderId = dbOrder.Id,
+ ProductId = relationOrderSku.ProductId,
+ PurchaseFreight = orderDropShipping.PurchaseFreight / orderDropShipping.RelationPurchaseOrderSkuList.Count(),
+ SkuAmount = relationOrderSku.SingleSkuAmount * relationOrderSku.Quantity,
+ SkuId = relationOrderSku.SkuId,
+ StorageAmount = 0,
+ TotalCost = relationOrderSku.SingleSkuAmount * relationOrderSku.Quantity + orderDropShipping.PurchaseFreight / orderDropShipping.RelationPurchaseOrderSkuList.Count(),
+ UnitCost = purchaseOrder.UnitCost,
+ PurchaseOrderPKId = purchaseOrder.Id
+ });
+ #endregion
+ }
+
+ #region 订单成本
+ var totalDeliveryFreight = relationPurchaseOrderRequestV2.OrderDropShippingList.Sum(ods => ods.DeliveryFreight);
+ var totalPurchaseAmount = relationPurchaseOrderRequestV2.OrderDropShippingList.Sum(ods => ods.PurchaseAmount);
+ var orderCost = fsql.Select(dbOrder.Id).ToOne();
+ if (orderCost != null)
+ {
+ orderCost.PlatformCommissionRatio = relationPurchaseOrderRequestV2.PlatformCommissionRatio;
+ orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * relationPurchaseOrderRequestV2.PlatformCommissionRatio;
+ orderCost.DeliveryExpressFreight = totalDeliveryFreight;
+ orderCost.PurchaseAmount = totalPurchaseAmount;
+ orderCost.Profit = dbOrder.OrderSellerPrice +
+ dbOrder.FreightPrice -
+ orderCost.PurchaseAmount -
+ orderCost.DeliveryExpressFreight -
+ orderCost.PlatformCommissionAmount;
+ updateOrderCost = fsql.Update().SetSource(orderCost).IgnoreColumns(oc => new
+ {
+ oc.CreateTime,
+ oc.SDCommissionAmount,
+ oc.PlatformCommissionAmount,
+ oc.PlatformCommissionRatio
+ });
+ }
+ else
+ {
+ var preferentialAmount = fsql.Select().Where(oc => oc.OrderId == dbOrder.Id)
+ .ToAggregate(g => g.Sum(g.Key.CouponPrice));
+ orderCost = new OrderCost()
+ {
+ OrderId = dbOrder.Id,
+ CreateTime = DateTime.Now,
+ DeliveryExpressFreight = totalDeliveryFreight,
+ PlatformCommissionRatio = relationPurchaseOrderRequestV2.PlatformCommissionRatio,
+ SDCommissionAmount = 0,
+ PurchaseAmount = totalPurchaseAmount,
+ PlatformCommissionAmount = dbOrder.OrderSellerPrice * relationPurchaseOrderRequestV2.PlatformCommissionRatio,
+ PreferentialAmount = preferentialAmount,
+ IsManualEdited = true
+ };
+
+ orderCost.Profit = dbOrder.OrderSellerPrice +
+ dbOrder.FreightPrice -
+ orderCost.PurchaseAmount -
+ orderCost.DeliveryExpressFreight -
+ orderCost.PlatformCommissionAmount;
+ insertOrderCost = fsql.Insert(orderCost);
+ }
+ #endregion
+ }
+
+ fsql.Transaction(() =>
+ {
+ deletePurchaseOrder.ExecuteAffrows();
+ deleteOrderCostDetail.ExecuteAffrows();
+ foreach (var updateOrderSku in updateOrderSkuList)
+ updateOrderSku.ExecuteAffrows();
+ fsql.Insert(insertPurchaseOrderList).ExecuteAffrows();
+ fsql.Insert(insertOrderCostDetailList).ExecuteAffrows();
+ insertOrderCost?.ExecuteAffrows();
+ updateOrderCost?.ExecuteAffrows();
+ });
+ }
+
///
/// 出库
///
diff --git a/BBWY.Server.Model/Dto/Request/Order/OrderDropShippingRequest.cs b/BBWY.Server.Model/Dto/Request/Order/OrderDropShippingRequest.cs
index 0e692938..b82fd82d 100644
--- a/BBWY.Server.Model/Dto/Request/Order/OrderDropShippingRequest.cs
+++ b/BBWY.Server.Model/Dto/Request/Order/OrderDropShippingRequest.cs
@@ -1,8 +1,24 @@
using BBWY.Server.Model.Db;
+using System.Collections.Generic;
namespace BBWY.Server.Model.Dto
{
public class OrderDropShippingRequest : OrderDropShipping
{
+ public IList RelationPurchaseOrderSkuList { get; set; }
+ }
+
+
+ public class RelationPurchaseOrderSkuRequestV2
+ {
+ public long Id { get; set; }
+
+ public string ProductId { get; set; }
+
+ public string SkuId { get; set; }
+
+ public decimal SingleSkuAmount { get; set; }
+
+ public int Quantity { get; set; }
}
}
diff --git a/BBWY.Server.Model/Dto/Request/Order/RelationPurchaseOrderRequest.cs b/BBWY.Server.Model/Dto/Request/Order/RelationPurchaseOrderRequest.cs
index e848fc07..010b5862 100644
--- a/BBWY.Server.Model/Dto/Request/Order/RelationPurchaseOrderRequest.cs
+++ b/BBWY.Server.Model/Dto/Request/Order/RelationPurchaseOrderRequest.cs
@@ -13,6 +13,7 @@ namespace BBWY.Server.Model.Dto
public class RelationPurchaseOrderSkuRequest
{
+
public string ProductId { get; set; }
public string SkuId { get; set; }
diff --git a/BBWY.Server.Model/Dto/Request/Order/RelationPurchaseOrderRequestV2.cs b/BBWY.Server.Model/Dto/Request/Order/RelationPurchaseOrderRequestV2.cs
new file mode 100644
index 00000000..6ca26bdf
--- /dev/null
+++ b/BBWY.Server.Model/Dto/Request/Order/RelationPurchaseOrderRequestV2.cs
@@ -0,0 +1,11 @@
+using System.Collections.Generic;
+
+namespace BBWY.Server.Model.Dto
+{
+ public class RelationPurchaseOrderRequestV2
+ {
+ public IList OrderDropShippingList { get; set; }
+
+ public decimal PlatformCommissionRatio { get; set; }
+ }
+}