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(); + }); + } /// /// 签收采购单