From 9afa97b18406835408ce30be6449258d40429947 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 5 Jul 2023 20:41:15 +0800 Subject: [PATCH 1/4] 1 --- BBWYB.Client/APIServices/TestApiService.cs | 25 ++++++++++++++ .../Controllers/OrderController.cs | 10 ++++++ BBWYB.Server.Business/Order/OrderBusiness.cs | 33 +++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 BBWYB.Client/APIServices/TestApiService.cs diff --git a/BBWYB.Client/APIServices/TestApiService.cs b/BBWYB.Client/APIServices/TestApiService.cs new file mode 100644 index 0000000..8df625b --- /dev/null +++ b/BBWYB.Client/APIServices/TestApiService.cs @@ -0,0 +1,25 @@ +using BBWYB.Common.Http; +using BBWYB.Common.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BBWYB.Client.APIServices +{ + public class TestApiService : BaseApiService, IDenpendency + { + public TestApiService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) + { + } + + public ApiResponse BatchManualSign() + { + return SendRequest(globalContext.BBWYApiHost, "Api/PurchaseOrder/BatchManualSign", new + { + wayBillNoList = new string[] { "ceshi123456" } + }, null, System.Net.Http.HttpMethod.Post); + } + } +} diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs index fcb1178..eb83425 100644 --- a/BBWYB.Server.API/Controllers/OrderController.cs +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -114,6 +114,16 @@ namespace BBWYB.Server.API.Controllers orderBusiness.CheckSku(request); } + /// + /// 核算订单 + /// + /// + [HttpPost("{orderId}")] + public void CheckComputationOrder([FromRoute]string orderId) + { + orderBusiness.CheckComputationOrder(orderId); + } + /// /// 齐库推送打包费 /// diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index c5d4530..b89c2b6 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -542,5 +542,38 @@ namespace BBWYB.Server.Business updateOrder?.ExecuteAffrows(); }); } + + public void CheckComputationOrder(string orderId) + { + var order = fsql.Select(orderId).ToOne(); + if (order == null) + throw new BusinessException("未查询到订单"); + if (order.OrderState != Enums.OrderState.待核算) + throw new BusinessException("订单状态不正确,只有待核算的订单才允许核算"); + var orderCost = fsql.Select(orderId).ToOne(); + if (orderCost == null) + throw new BusinessException("未查询到订单成本"); + if (Math.Abs(orderCost.Profit ?? 0) > 1M) + throw new BusinessException("订单利润绝对值不能大于1"); + + fsql.Update(orderId).Set(o => o.OrderState, Enums.OrderState.已完成).ExecuteAffrows(); + SendPurchaseOrderStateToC(orderId, Enums.OrderState.已完成); + } + + private void SendPurchaseOrderStateToC(string orderId, Enums.OrderState orderState) + { + try + { + restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new + { + OrderId = orderId, + PurchaseOrderState = orderState + }, null, HttpMethod.Post); + } + catch + { + + } + } } } From 92081d248e98d5f54bf2221a4a108dc5315f49f4 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 6 Jul 2023 00:55:40 +0800 Subject: [PATCH 2/4] 1 --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 9dc23e4..cc427f5 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1088,8 +1088,7 @@ namespace BBWYB.Server.Business { nLogManager.Default().Info($"EditPurchaseExpressOrder {JsonConvert.SerializeObject(request)}"); - throw new BusinessException("修改快递单已暂时下线,待调整后重新上线"); - + var dbOrder = fsql.Select(request.OrderId).ToOne(o => new { o.Id, o.ShopId, o.OrderSn }); if (dbOrder == null) throw new BusinessException($"订单号{request.OrderId}不存在"); @@ -1100,11 +1099,14 @@ namespace BBWYB.Server.Business var oldPeo = fsql.Select(request.OldWaybillNo).ToOne(); if (oldPeo == null) throw new BusinessException($"旧快递单号{request.OldWaybillNo}不存在"); - //if (oldPeo.OrderId != request.OrderId || oldPeo.PurchaseOrderId != request.PurchaseOrderId) - // throw new BusinessException("快递单号不属于当前操作提交的订单或采购单"); + var newPeo = fsql.Select(request.NewWaybillNo).ToOne(); - if (newPeo != null) - throw new BusinessException($"新快递单号{request.NewWaybillNo}已存在"); + if (newPeo != null && newPeo.PurchaseOrderId == request.PurchaseOrderId) + throw new BusinessException("不能为同一采购单设置重复的快递单号"); + + IInsert insertPEO = null; + IInsert insertEORI = null; + newPeo = new PurchaseExpressOrder() { From 5b13f33057633a40ab0155b57b54f08df4c78af7 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 6 Jul 2023 14:44:34 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=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 | 182 ++++++++++++++---- 1 file changed, 140 insertions(+), 42 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index cc427f5..f149f2c 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1088,69 +1088,167 @@ namespace BBWYB.Server.Business { nLogManager.Default().Info($"EditPurchaseExpressOrder {JsonConvert.SerializeObject(request)}"); - - var dbOrder = fsql.Select(request.OrderId).ToOne(o => new { o.Id, o.ShopId, o.OrderSn }); + var dbOrder = fsql.Select(request.OrderId).ToOne(); if (dbOrder == null) throw new BusinessException($"订单号{request.OrderId}不存在"); var shopIds = dbOrder.ShopId.ToString(); var shop = fsqlManager.MDSfsql.Select().Where(s => s.ShopId == shopIds).ToOne(); - var oldPeo = fsql.Select(request.OldWaybillNo).ToOne(); - if (oldPeo == null) - throw new BusinessException($"旧快递单号{request.OldWaybillNo}不存在"); + var orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); + var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); + if (purchaseOrder == null) + throw new BusinessException($"未查询到采购单号{request.PurchaseOrderId}"); - var newPeo = fsql.Select(request.NewWaybillNo).ToOne(); - if (newPeo != null && newPeo.PurchaseOrderId == request.PurchaseOrderId) - throw new BusinessException("不能为同一采购单设置重复的快递单号"); IInsert insertPEO = null; IInsert insertEORI = null; + IDelete deleteEORI = null; + IDelete deletePEO = null; + IUpdate updatePurchaseOrderSku = null; + IUpdate updatePurchaseOrder = null; + IUpdate updateOrder = null; + + var waybillNos = new List() { request.OldWaybillNo, request.NewWaybillNo }; + var expressOrderRelationList = fsql.Select().Where(eori => waybillNos.Contains(eori.WayBillNo)).ToList(); + var oldWaybillNoRelationList = expressOrderRelationList.Where(eori => eori.WayBillNo == request.OldWaybillNo).ToList(); + var newWaybillNoRelationList = expressOrderRelationList.Where(eori => eori.WayBillNo == request.NewWaybillNo).ToList(); + + #region 旧快递单号验证 + if (!oldWaybillNoRelationList.Any()) + throw new BusinessException("未查询到旧快递单号"); + if (!oldWaybillNoRelationList.Any(eori => eori.PurchaseOrderId == request.PurchaseOrderId)) + throw new BusinessException($"旧快递单号{request.OldWaybillNo}不属于采购单{request.PurchaseOrderId},无权修改"); + if (oldWaybillNoRelationList.Count() == oldWaybillNoRelationList.Count(eori => eori.PurchaseOrderId == request.PurchaseOrderId)) + deletePEO = fsql.Delete(request.OldWaybillNo); + deleteEORI = fsql.Delete().Where(eori => eori.PurchaseOrderId == request.PurchaseOrderId && eori.WayBillNo == request.OldWaybillNo); + #endregion - newPeo = new PurchaseExpressOrder() + #region 新快递单号验证 + if (!newWaybillNoRelationList.Any(eori => eori.PurchaseOrderId == request.PurchaseOrderId)) { - WaybillNo = request.NewWaybillNo, - TargetExpressId = request.NewExpressId, - TargetExpressName = request.NewExpressName, - CreateTime = DateTime.Now, - OrderId = request.OrderId, - PurchaseOrderId = request.PurchaseOrderId, - ShopId = oldPeo.ShopId, - ExpressState = kuaiDi100Manager.GetExpressState(1) //快递100发货状态值 默认揽收 - }; - try + var eori = new ExpressOrderRelationInfo() + { + Id = idGenerator.NewLong(), + OrderId = request.OrderId, + PurchaseOrderId = request.PurchaseOrderId, + CreateTime = DateTime.Now, + ShopId = dbOrder.ShopId, + WayBillNo = request.NewWaybillNo + }; + insertEORI = fsql.Insert(eori); + } + else + throw new BusinessException("请勿重复为同一采购单设置相同的快递单号"); + + PurchaseExpressOrder newPeo = null; + if (!newWaybillNoRelationList.Any()) + { + newPeo = new PurchaseExpressOrder() + { + WaybillNo = request.NewWaybillNo, + TargetExpressId = request.NewExpressId, + TargetExpressName = request.NewExpressName, + CreateTime = DateTime.Now, + ShopId = dbOrder.ShopId.Value, + IsSubscribeKD100 = false, + ExpressState = kuaiDi100Manager.GetExpressState(1) //快递100发货状态值 默认揽收 + }; + + try + { + kuaiDi100Manager.SubscribeKuaiDi100(request.NewWaybillNo, request.NewExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); + newPeo.IsSubscribeKD100 = true; + } + catch (Exception ex) + { + nLogManager.Default().Error(ex, $"EditPurchaseExpressOrder,Request:{JsonConvert.SerializeObject(request)}"); + + #region 订阅失败发送钉钉通知 + var dingdingMsg = new StringBuilder(); + dingdingMsg.AppendLine($"错误:{ex.Message}"); + dingdingMsg.AppendLine($"采购订单号:{request.PurchaseOrderId}"); + dingdingMsg.AppendLine($"拳探订单号:{request.OrderId}"); + dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}"); + dingdingMsg.AppendLine($"源物流公司:无"); + dingdingMsg.AppendLine($"目标物流公司:{request.NewExpressName} {request.NewExpressId}"); + dingdingMsg.AppendLine($"快递单号:{request.NewWaybillNo}"); + dingdingMsg.AppendLine("触发环节:修改物流单号"); + dingdingMsg.Append($"店铺名:{shop.ShopName}"); + Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #endregion + } + insertPEO = fsql.Insert(newPeo); + } + #endregion + + #region 更新采购sku使用的快递单号 + IList orderPurchaseSkuList = null; + if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴) { - kuaiDi100Manager.SubscribeKuaiDi100(request.NewWaybillNo, request.NewExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); - newPeo.IsSubscribeKD100 = true; + orderPurchaseSkuList = fsql.Select().Where(posku => posku.PurchaseOrderId == request.PurchaseOrderId).ToList(); + foreach (var posku in orderPurchaseSkuList) + { + if (posku.WaybillNo == request.OldWaybillNo) + posku.WaybillNo = request.NewWaybillNo; + } + updatePurchaseOrderSku = fsql.Update().Set(psku => psku.WaybillNo, request.NewWaybillNo) + .Where(psku => psku.PurchaseOrderId == request.PurchaseOrderId) + .Where(psku => psku.WaybillNo == request.OldWaybillNo); + } - catch (Exception ex) + #endregion + + #region 计算采购单状态 + var purchaseExpressOrderList = fsql.Select() + .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) + .Where((eori, peo) => eori.PurchaseOrderId == request.PurchaseOrderId).ToList((eori, peo) => new PurchaseExpressOrder + { + CreateTime = peo.CreateTime, + ExpressContent = peo.ExpressContent, + ExpressChangedTime = peo.ExpressChangedTime, + ExpressState = peo.ExpressState, + IsSubscribeKD100 = peo.IsSubscribeKD100, + //OrderId = eori.OrderId, + //PurchaseOrderId = eori.PurchaseOrderId, + ShopId = eori.ShopId.Value, + SourceExpressId = peo.SourceExpressId, + SourceExpressName = peo.SourceExpressName, + TargetExpressId = peo.TargetExpressId, + TargetExpressName = peo.TargetExpressName, + WaybillNo = peo.WaybillNo + }); + if (newPeo != null) + purchaseExpressOrderList.Add(newPeo); + var oldPurchaseOrderState = purchaseOrder.OrderState; + purchaseOrder.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList); + if (oldPurchaseOrderState != purchaseOrder.OrderState) + updatePurchaseOrder = fsql.Update(purchaseOrder.Id).Set(opi => opi.OrderState, purchaseOrder.OrderState); + #endregion + + #region 计算订单状态 + var oldOrderState = dbOrder.OrderState; + dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); + if (oldOrderState != dbOrder.OrderState) { - nLogManager.Default().Error(ex, $"EditPurchaseExpressOrder,Request:{JsonConvert.SerializeObject(request)}"); - - #region 订阅失败发送钉钉通知 - var dingdingMsg = new StringBuilder(); - dingdingMsg.AppendLine($"错误:{ex.Message}"); - dingdingMsg.AppendLine($"采购订单号:{request.PurchaseOrderId}"); - dingdingMsg.AppendLine($"拳探订单号:{request.OrderId}"); - dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}"); - dingdingMsg.AppendLine($"源物流公司:无"); - dingdingMsg.AppendLine($"目标物流公司:{request.NewExpressName} {request.NewExpressId}"); - dingdingMsg.AppendLine($"快递单号:{request.NewWaybillNo}"); - dingdingMsg.AppendLine("触发环节:修改物流单号"); - dingdingMsg.Append($"店铺名:{shop.ShopName}"); - Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState); + + #region 通知C端状态 + Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion } + #endregion fsql.Transaction(() => { - fsql.Delete(request.OldWaybillNo).ExecuteAffrows(); - fsql.Update().Set(psku => psku.WaybillNo, request.NewWaybillNo) - .Where(psku => psku.PurchaseOrderId == request.PurchaseOrderId) - .Where(psku => psku.WaybillNo == request.OldWaybillNo) - .ExecuteAffrows(); - fsql.Insert(newPeo).ExecuteAffrows(); + insertPEO?.ExecuteAffrows(); + insertEORI?.ExecuteAffrows(); + deleteEORI?.ExecuteAffrows(); + deletePEO?.ExecuteAffrows(); + updatePurchaseOrderSku?.ExecuteAffrows(); + updatePurchaseOrder?.ExecuteAffrows(); + updateOrder?.ExecuteAffrows(); }); } From 9b4cff8a5408c9695ded29433126462c9b212ca9 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 6 Jul 2023 21:42:41 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AE=A2=E5=8D=95zhuangt?= =?UTF-8?q?ia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Server.Business/Sync/OrderSyncBusiness.cs | 4 ++-- BBWYB.Server.Model/Enums.cs | 9 --------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 5659490..67e235d 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -239,7 +239,7 @@ namespace BBWYB.Server.Business.Sync } } - private Enums.OrderState ConvertQuanTanOrderState(string qtOrderState, bool isPay, bool isPurchased) + private Enums.OrderState? ConvertQuanTanOrderState(string qtOrderState, bool isPay, bool isPurchased) { /* -1、已取消; @@ -267,7 +267,7 @@ namespace BBWYB.Server.Business.Sync return Enums.OrderState.待收货; if (qtOrderState == "3") return Enums.OrderState.已完成; - return Enums.OrderState.Unknow; + return null; } } } diff --git a/BBWYB.Server.Model/Enums.cs b/BBWYB.Server.Model/Enums.cs index d6b348d..a64c561 100644 --- a/BBWYB.Server.Model/Enums.cs +++ b/BBWYB.Server.Model/Enums.cs @@ -78,11 +78,7 @@ /// 待发货 = 2, 部分发货 = 120 /// 待收货 = 3, 部分收货 = 130 /// 已完成 = 4 - /// 锁定 = 5 /// 已取消 = 6 - /// 暂停 = 7 - /// 已退款 = 8 - /// Unknow = 100 /// 待验收 = 140 /// 待核算 = 150 /// @@ -96,14 +92,9 @@ 待收货 = 3, 部分收货 = 130, 已完成 = 4, - 锁定 = 5, 已取消 = 6, - 暂停 = 7, - 已退款 = 8, - Unknow = 100, 待验收 = 140, 待核算 = 150 - //待配置 = 101, } ///