From f3c00c4f81020090326a98e28c1d40825bb8d7eb Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Sat, 10 Jun 2023 03:09:09 +0800
Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E6=94=B6=E8=B4=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/PurchaseOrderController.cs | 10 ++
.../PurchaseOrder/PurchaseOrderBusiness.cs | 94 +++++++++++++++++++
2 files changed, 104 insertions(+)
diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs
index 3a2b04d..7a0cb99 100644
--- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs
+++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs
@@ -88,6 +88,16 @@ namespace BBWYB.Server.API.Controllers
purchaseOrderBusiness.ManualDelivery(request);
}
+ ///
+ /// 手动收货
+ ///
+ ///
+ [HttpPost]
+ public void ManualSign([FromBody] ManualSignRequest request)
+ {
+ purchaseOrderBusiness.ManualSign(request);
+ }
+
///
/// 1688回调
///
diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index 7033eb1..225f2a9 100644
--- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
@@ -966,6 +966,100 @@ namespace BBWYB.Server.Business
});
}
+ ///
+ /// 手动收货
+ ///
+ ///
+ public void ManualSign(ManualSignRequest request)
+ {
+ IList> updatePurchaseExpressOrderList = new List>();
+ IUpdate updateOrderPurchase = null;
+ IUpdate updateOrder = null;
+
+ #region 查询该笔采购单的快递单信息
+ var purchaseExpressOrderList = fsql.Select().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList();
+ #endregion
+
+ #region 查询当前采购单的订单信息
+ var dbOrder = fsql.Select().InnerJoin((opi, o) => opi.OrderId == o.Id)
+ .Where((opi, o) => opi.PurchaseOrderId == request.PurchaseOrderId && opi.IsEnabled == true)
+ .ToOne((opi, o) => new Order
+ {
+ Id = o.Id,
+ OrderState = o.OrderState,
+ ShopId = o.ShopId
+ });
+ if (dbOrder == null)
+ throw new BusinessException("未查询到采购单的订单信息");
+ #endregion
+
+ #region 查询订单的全部采购单信息
+ var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == dbOrder.Id && opi.IsEnabled == true).ToList();
+ var orderPurchaseInfo = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
+ if (orderPurchaseInfo == null)
+ throw new BusinessException("未查询到采购单信息");
+ #endregion
+
+ #region 查询采购关联信息
+ var orderPurchaseRelationList = fsql.Select().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId &&
+ opri.BelongSkuId == request.SkuId).ToList();
+ if (orderPurchaseRelationList.Count() == 0)
+ throw new BusinessException("未查询到采购单的关联信息");
+ #endregion
+
+ #region 查询该笔采购单的采购sku信息
+ var orderPurchaseSkuList = fsql.Select().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList();
+ if (orderPurchaseSkuList.Count() == 0)
+ throw new BusinessException("未查询到采购单sku信息");
+ #endregion
+
+ #region 更新采购sku的快递单状态为签收
+ foreach (var relation in orderPurchaseRelationList)
+ {
+ var orderPurchaseSku = orderPurchaseSkuList.FirstOrDefault(posku => posku.PurchaseSkuId == relation.PurchaseSkuId);
+ if (orderPurchaseSku == null)
+ throw new BusinessException("未查询到采购单sku信息");
+ if (!string.IsNullOrEmpty(orderPurchaseSku.WaybillNo))
+ {
+ var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(exo => exo.WaybillNo == orderPurchaseSku.WaybillNo);
+ if (purchaseExpressOrder == null)
+ throw new BusinessException("未查询到采购sku的快递信息");
+ purchaseExpressOrder.ExpressState = kuaiDi100Manager.GetExpressState(3);
+ updatePurchaseExpressOrderList.Add(fsql.Update(purchaseExpressOrder.WaybillNo)
+ .Set(exo => exo.ExpressState, purchaseExpressOrder.ExpressState)
+ .Set(exo => exo.ExpressChangedTime, DateTime.Now)
+ .Set(exo => exo.ExpressContent, "手动签收"));
+ }
+ }
+ #endregion
+
+ #region 计算采购单状态
+ orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList.ToList());
+ updateOrderPurchase = fsql.Update(orderPurchaseInfo.Id)
+ .Set(opi => opi.OrderState, orderPurchaseInfo.OrderState);
+ #endregion
+
+ #region 计算订单状态
+ dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList);
+ updateOrder = fsql.Update(dbOrder.Id)
+ .Set(o => o.OrderState, dbOrder.OrderState);
+ #endregion
+
+ #region 通知C端订单状态
+
+ #endregion
+
+ fsql.Transaction(() =>
+ {
+ if (updatePurchaseExpressOrderList.Count() > 0)
+ {
+ foreach (var update in updatePurchaseExpressOrderList)
+ update.ExecuteAffrows();
+ }
+ updateOrderPurchase?.ExecuteAffrows();
+ updateOrder?.ExecuteAffrows();
+ });
+ }
///
/// 签收采购单