From 2af36c81ed2212021293c4148a274dd35301e7db Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 13 Jul 2023 16:44:49 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E9=BD=90=E5=BA=93=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E8=A7=84=E5=88=99=EF=BC=8C=E5=BF=AB=E9=80=92=E9=9D=9E?= =?UTF-8?q?=E7=AD=BE=E6=94=B6=E4=B8=8D=E5=81=9A=E9=80=9A=E7=9F=A5=202.?= =?UTF-8?q?=E4=BF=AE=E6=94=B91688=E5=8F=91=E8=B4=A7=E6=8E=A8=E9=80=81?= =?UTF-8?q?=EF=BC=8C=E5=BF=BD=E7=95=A5=E5=8E=82=E5=AE=B6=E4=BB=A3=E5=8F=91?= =?UTF-8?q?=E5=85=A5=E4=BB=93=E8=AE=A2=E5=8D=95=E7=9A=84=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E6=8E=A8=E9=80=81=203.=E4=BF=AE=E6=94=B9=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E5=8F=91=E8=B4=A7=E6=8E=A5=E5=8F=A3=EF=BC=8C=E9=99=90?= =?UTF-8?q?=E5=88=B6=E5=8E=82=E5=AE=B6=E4=BB=A3=E5=8F=91=E5=85=A5=E4=BB=93?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=9A=84=E8=AF=B7=E6=B1=82=204.=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=AE=BE=E7=BD=AE=E5=BF=AB=E9=80=92=E5=8D=95=E5=92=8C?= =?UTF-8?q?=E5=85=A5=E4=BB=93=E9=87=87=E8=B4=AD=E5=8D=95=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20(=E5=8E=82=E5=AE=B6=E4=BB=A3=E5=8F=91=E5=85=A5=E4=BB=93?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=B8=93=E5=B1=9E)=205.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=BF=AB=E9=80=92=E5=8D=95=E5=B1=82=E8=BF=94=E5=9B=9E=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E9=87=87=E8=B4=AD=E5=8D=95=E5=8F=B7=206.=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E8=AE=A2=E5=8D=95=E5=90=8C=E6=97=B6=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E9=99=90=E6=97=B6=E4=BB=BB=E5=8A=A1=207.?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5=EF=BC=8C?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E5=88=B0=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=87=E8=B4=AD=E9=99=90=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseOrderController.cs | 2 +- .../Extensions/OrderStateExtension.cs | 12 +- BBWYB.Server.Business/Order/OrderBusiness.cs | 21 +- .../PurchaseOrder/PurchaseOrderBusiness.cs | 234 ++++++++++++++++-- .../Sync/OrderSyncBusiness.cs | 13 +- .../Order/InStorePurchaseOrdeRrelationInfo.cs | 35 +++ .../PurchaseOrder/PurchaserDeliveryRequest.cs | 27 +- .../Order/PurchaseExpressOrderResponse.cs | 7 +- 8 files changed, 314 insertions(+), 37 deletions(-) create mode 100644 BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs diff --git a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs index 21c07e0..f1ab9e4 100644 --- a/BBWYB.Server.API/Controllers/PurchaseOrderController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseOrderController.cs @@ -113,7 +113,7 @@ namespace BBWYB.Server.API.Controllers } /// - /// 厂商代发入仓发货 + /// 设置快递单和入仓采购单(厂商代发入仓订单专用) /// /// [HttpPost] diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index 4fe1500..bf6d25c 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -125,10 +125,12 @@ namespace BBWYB.Server.Business /// 计算采购单状态 /// /// + /// /// /// /// public static void CalculationOrderState(this OrderPurchaseInfo orderPurchaseInfo, + Enums.IntoStoreType intoStoreType, IFreeSql fsql, IList orderPurchaseSkuList = null, IList purchaseExpressOrderList = null) @@ -145,18 +147,15 @@ namespace BBWYB.Server.Business if (orderPurchaseInfo.OrderState == Enums.PurchaseOrderState.已取消) return; + if (purchaseExpressOrderList == null) + return; - if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) + if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴 && intoStoreType != Enums.IntoStoreType.厂商代发入仓) //支持采购sku和关联信息 { if (orderPurchaseSkuList == null) orderPurchaseSkuList = fsql.Select().Where(ops => ops.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList(); - } - if (purchaseExpressOrderList == null) - return; - if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) //支持采购sku和关联信息 - { #region 待发货 if (orderPurchaseSkuList.Count() == orderPurchaseSkuList.Count(ops => string.IsNullOrEmpty(ops.WaybillNo))) { @@ -186,7 +185,6 @@ namespace BBWYB.Server.Business #endregion } - #region 待收货 if (purchaseExpressOrderList.Count(exo => exo.ExpressState == "QianShou") == 0) { diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index aa106c5..6c861ac 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -175,6 +175,21 @@ namespace BBWYB.Server.Business }); #endregion + #region 查询入仓采购单信息 + var inStoreRelationList = fsql.Select().Where(i => orderIdList.Contains(i.OrderId)).ToList(); + if (inStoreRelationList.Count() > 0) + { + foreach (var purchaseExpressOrder in purchaseExpressOrderList) + { + purchaseExpressOrder.InStorePurchaseOrderIdList = inStoreRelationList.Where(i => i.OrderId == purchaseExpressOrder.OrderId && + i.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId && + i.WaybillNo == purchaseExpressOrder.WaybillNo) + .Select(i => i.InStorePurchaseOrderId) + .ToList(); + } + } + #endregion + #region 处理订单成本明细 var orderCostDetailList = fsql.Select().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList(); foreach (var order in orderList) @@ -373,7 +388,11 @@ namespace BBWYB.Server.Business Remark = request.Remark }); - fsql.Update(request.OrderId).Set(o => o.OrderState, Enums.OrderState.已取消).ExecuteAffrows(); + fsql.Transaction(() => + { + fsql.Update(request.OrderId).Set(o => o.OrderState, Enums.OrderState.已取消).ExecuteAffrows(); + fsql.Delete().Where(t => t.OrderId == request.OrderId).ExecuteAffrows(); + }); try { diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 8dba5c7..ba2a5f8 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1252,7 +1252,7 @@ namespace BBWYB.Server.Business if (newPeo != null) purchaseExpressOrderList.Add(newPeo); var oldPurchaseOrderState = purchaseOrder.OrderState; - purchaseOrder.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList); + purchaseOrder.CalculationOrderState(dbOrder.IntoStoreType.Value, fsql, orderPurchaseSkuList, purchaseExpressOrderList); if (oldPurchaseOrderState != purchaseOrder.OrderState) updatePurchaseOrder = fsql.Update(purchaseOrder.Id).Set(opi => opi.OrderState, purchaseOrder.OrderState); #endregion @@ -1292,6 +1292,23 @@ namespace BBWYB.Server.Business if (request.ExpressId == "zhuanxianwuliu" && string.IsNullOrEmpty(request.WaybillNo)) request.WaybillNo = $"wdh{idGenerator.NewLong()}"; + #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, + OrderSn = o.OrderSn, + OrderState = o.OrderState, + ShopId = o.ShopId, + IntoStoreType = o.IntoStoreType + }); + if (dbOrder == null) + throw new BusinessException("未查询到采购单的订单信息"); + if (dbOrder.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) + throw new BusinessException("厂家代发入仓订单请使用【设置快递单和入仓采购单接口(厂家代发入仓专用)】"); + #endregion + #region 准备数据库更新对象 List insertPurchaseExpressOrderList = new List(); IList> updateOrderPurchaseSkuList = new List>(); @@ -1324,21 +1341,6 @@ namespace BBWYB.Server.Business bool isDbExists = fsql.Select(request.WaybillNo).Any(); #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, - OrderSn = o.OrderSn, - OrderState = o.OrderState, - ShopId = o.ShopId, - IntoStoreType = o.IntoStoreType - }); - if (dbOrder == null) - throw new BusinessException("未查询到采购单的订单信息"); - #endregion - #region 店铺信息 var shop = fsqlManager.MDSfsql.Select().Where(s => s.ShopId == dbOrder.ShopId.ToString()).ToOne(); if (shop == null) @@ -1451,7 +1453,7 @@ namespace BBWYB.Server.Business #endregion #region 计算采购单状态 - orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); + orderPurchaseInfo.CalculationOrderState(dbOrder.IntoStoreType.Value, fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); updateOrderPurchase = fsql.Update(orderPurchaseInfo.Id) .Set(opi => opi.OrderState, orderPurchaseInfo.OrderState); #endregion @@ -1495,6 +1497,183 @@ namespace BBWYB.Server.Business if (dbOrder.IntoStoreType != Enums.IntoStoreType.厂商代发入仓) throw new BusinessException("此订单非厂商代发入仓"); + List insertPurchaseExpressOrderList = new List(); + List insertExpressOrderRelationList = new List(); + List insertInStorePurchaseOrderRelationList = new List(); + //IList> updateOrderPurchaseSkuList = new List>(); + IUpdate updateOrderPurchase = null; + IUpdate updateOrder = null; + + #region 查询该笔采购单的快递单信息 + //var purchaseExpressOrderList = fsql.Select().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList(); + 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 + }); + + var wayBillNos = request.InStorePurchaseOrderManualDeliveryList.Select(x => x.WaybillNo).ToList(); + var dbPurchaseExpressOrderList = fsql.Select(wayBillNos).ToList(); + #endregion + + #region 查询该订单的入库采购单关系 + var dbInStoreRelationList = fsql.Select().Where(x => x.OrderId == request.OrderId).ToList(); + #endregion + + #region 店铺信息 + var shop = fsqlManager.MDSfsql.Select().Where(s => s.ShopId == dbOrder.ShopId.ToString()).ToOne(); + if (shop == 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 + + foreach (var peoRequest in request.InStorePurchaseOrderManualDeliveryList) + { + bool isExists = purchaseExpressOrderList.Any(exo => exo.WaybillNo == peoRequest.WaybillNo); + bool isDbExists = dbPurchaseExpressOrderList.Any(exo => exo.WaybillNo == peoRequest.WaybillNo); + + #region 订阅快递100 + bool isSubscribeKD100 = false; + if (peoRequest.ExpressId != "zhuanxianwuliu" && !isDbExists) + { + try + { + kuaiDi100Manager.SubscribeKuaiDi100(peoRequest.WaybillNo, peoRequest.ExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); + isSubscribeKD100 = true; + } + catch (Exception ex) + { + if (!ex.Message.Contains("重复订阅")) + { + nLogManager.Default().Error(ex, $"ManualDelivery,Request:{JsonConvert.SerializeObject(request)}"); + + #region 订阅失败发送钉钉通知 + var dingdingMsg = new StringBuilder(); + dingdingMsg.AppendLine($"错误:{ex.Message}"); + dingdingMsg.AppendLine($"采购订单号:{request.PurchaseOrderId}"); + dingdingMsg.AppendLine($"拳探订单号:{dbOrder.Id}"); + dingdingMsg.AppendLine($"拳探订单Sn:{dbOrder.OrderSn}"); + dingdingMsg.AppendLine($"源物流公司:无"); + dingdingMsg.AppendLine($"目标物流公司:{peoRequest.ExpressName} {peoRequest.ExpressId}"); + dingdingMsg.AppendLine($"快递单号:{peoRequest.WaybillNo}"); + dingdingMsg.AppendLine("触发环节:手动发货"); + dingdingMsg.Append($"店铺名:{shop.ShopName}"); + Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #endregion + } + } + } + #endregion + + #region 创建快递单 + if (!isDbExists) + { + var purchaseExpressOrder = new PurchaseExpressOrder() + { + //OrderId = dbOrder.Id, + CreateTime = DateTime.Now, + //PurchaseOrderId = request.PurchaseOrderId, + ShopId = dbOrder.ShopId ?? 0, + TargetExpressId = peoRequest.ExpressId, + TargetExpressName = peoRequest.ExpressName, + WaybillNo = peoRequest.WaybillNo, + ExpressState = kuaiDi100Manager.GetExpressState(1), //快递100发货状态值 默认揽收 + IsSubscribeKD100 = isSubscribeKD100, + ExpressContent = "手动发货", + ExpressChangedTime = DateTime.Now + }; + insertPurchaseExpressOrderList.Add(purchaseExpressOrder); + } + #endregion + + #region 创建快递单关系 + if (!isExists) + { + var expressOrderRelation = new ExpressOrderRelationInfo() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + OrderId = dbOrder.Id, + PurchaseOrderId = request.PurchaseOrderId, + ShopId = dbOrder.ShopId.Value, + WayBillNo = peoRequest.WaybillNo + }; + insertExpressOrderRelationList.Add(expressOrderRelation); + } + #endregion + + #region 入库采购单号 + var waitInsertInStoreRelationList = peoRequest.InStorePurchaseOrderIdList.Where(x => !dbInStoreRelationList.Any(r => r.WaybillNo == peoRequest.WaybillNo && + r.InStorePurchaseOrderId == x)).ToList(); + if (waitInsertInStoreRelationList.Count() > 0) + { + insertInStorePurchaseOrderRelationList.AddRange(waitInsertInStoreRelationList.Select(x => new InStorePurchaseOrdeRrelationInfo() + { + CreateTime = DateTime.Now, + Id = idGenerator.NewLong(), + InStorePurchaseOrderId = x, + OrderId = request.OrderId, + PurchaseOrderId = request.PurchaseOrderId, + ShopId = dbOrder.ShopId, + WaybillNo = peoRequest.WaybillNo + })); + } + #endregion + } + + #region 计算采购单状态 + orderPurchaseInfo.CalculationOrderState(dbOrder.IntoStoreType.Value, fsql, null, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).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端状态 + Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + #endregion + + fsql.Transaction(() => + { + if (insertPurchaseExpressOrderList.Count() > 0) + fsql.Insert(insertPurchaseExpressOrderList).ExecuteAffrows(); + if (insertExpressOrderRelationList.Count() > 0) + fsql.Insert(insertExpressOrderRelationList).ExecuteAffrows(); + if (insertInStorePurchaseOrderRelationList.Count() > 0) + fsql.Insert(insertInStorePurchaseOrderRelationList).ExecuteAffrows(); + + //if (updateOrderPurchaseSkuList.Count() > 0) + //{ + // foreach (var update in updateOrderPurchaseSkuList) + // update.ExecuteAffrows(); + //} + updateOrderPurchase?.ExecuteAffrows(); + updateOrder?.ExecuteAffrows(); + }); + } public void ManualSign(ManualSignRequest request) @@ -1731,11 +1910,6 @@ namespace BBWYB.Server.Business string wayBillNoResponseInfo = string.Empty; try { - List insertPurchaseExpressOrderList = new List(); - List insertExpressOrderRelationInfoList = new List(); - IList> updateOrderPurchaseSkuList = new List>(); - IUpdate updateOrderPurchase = null; - IUpdate updateOrder = null; #region 查询当前采购单的订单信息 currentProgress = "查询当前采购单的订单信息"; @@ -1751,6 +1925,16 @@ namespace BBWYB.Server.Business }); if (dbOrder == null) throw new Exception("未查询到采购单的订单信息"); + + if (dbOrder.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) + return; + + List insertPurchaseExpressOrderList = new List(); + List insertExpressOrderRelationInfoList = new List(); + IList> updateOrderPurchaseSkuList = new List>(); + IUpdate updateOrderPurchase = null; + IUpdate updateOrder = null; + orderId = dbOrder.Id; shopId = dbOrder.ShopId; #endregion @@ -1909,7 +2093,7 @@ namespace BBWYB.Server.Business #endregion #region 计算采购单状态 - orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); + orderPurchaseInfo.CalculationOrderState(dbOrder.IntoStoreType.Value, fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); updateOrderPurchase = fsql.Update(orderPurchaseInfo.Id) .Set(opi => opi.OrderState, orderPurchaseInfo.OrderState); #endregion @@ -2462,14 +2646,14 @@ namespace BBWYB.Server.Business temp.ExpressState = state; var oldPurchaseOrderState = purchaseOrder.OrderState; - purchaseOrder.CalculationOrderState(fsql, currentPurchaseOrderSkuList, currentPurchaseExpressOrderList); + purchaseOrder.CalculationOrderState(order.IntoStoreType.Value, fsql, currentPurchaseOrderSkuList, currentPurchaseExpressOrderList); if (purchaseOrder.OrderState != oldPurchaseOrderState) { var update = fsql.Update(purchaseOrder.Id).Set(po => po.OrderState, purchaseOrder.OrderState); updateOrderPurchaseList.Add(update); #region 通知齐库打包落仓情况 - if (order.IntoStoreType == Enums.IntoStoreType.发回齐越) + if (order.IntoStoreType == Enums.IntoStoreType.发回齐越 && state == "QianShou") { var currentOrderPurchaseRelationList = orderPurchaseRelationList.Where(opri => opri.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 82a34ca..6f2ef91 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -5,6 +5,7 @@ using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; using Newtonsoft.Json.Linq; +using Org.BouncyCastle.Bcpg; using SDKAdapter; using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Models; @@ -76,6 +77,7 @@ namespace BBWYB.Server.Business.Sync //采购限时任务列表 var payedQTOrderIdList = qtOrderList.Items.Where(qto => qto.IsPay).Select(qto => qto.OrderId).ToList(); + var dbPurchaseTimeLimitTaskList = fsql.Select().Where(t => t.TaskType == Enums.TimeLimitTaskType.采购任务 && payedQTOrderIdList.Contains(t.OrderId)).ToList(); @@ -83,6 +85,7 @@ namespace BBWYB.Server.Business.Sync List insertOrderSkuList = new List(); List insertOrderConsigneeList = new List(); List insertTimeLimitTaskList = new List(); + List deleteTimeLimitTaskOrderIdList = new List(); List> updateOrderList = new List>(); @@ -192,7 +195,12 @@ namespace BBWYB.Server.Business.Sync updateOrderState = Enums.OrderState.等待采购; if (dbOrder.OrderState != Enums.OrderState.已取消 && orderState == Enums.OrderState.已取消) + { updateOrderState = Enums.OrderState.已取消; + if (dbPurchaseTimeLimitTaskList.Any(t => t.OrderId == qtOrder.OrderId)) + deleteTimeLimitTaskOrderIdList.Add(qtOrder.OrderId); + } + #endregion var updateModifyTime = dbOrder.ModifyTime != qtOrder.ModifyTime; @@ -235,6 +243,9 @@ namespace BBWYB.Server.Business.Sync if (updateOrderList.Count() > 0) foreach (var update in updateOrderList) update.ExecuteAffrows(); + + if (deleteTimeLimitTaskOrderIdList.Count() > 0) + fsql.Delete().Where(t => deleteTimeLimitTaskOrderIdList.Contains(t.OrderId)).ExecuteAffrows(); }); } catch (Exception ex) @@ -247,7 +258,7 @@ namespace BBWYB.Server.Business.Sync { foreach (var order in orderList) { - if (!order.IsPay || order.PayTime == null) + if (!order.IsPay || order.PayTime == null || order.OrderState == "-1") continue; var waitInserTimeLimitTasks = order.OrderSkuList.Where(osku => !dbTimeLimits.Any(x => x.OrderId == order.OrderId && x.SkuId == osku.SkuId)) .Select(osku => new TimeLimitTask() diff --git a/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs b/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs new file mode 100644 index 0000000..1a67e40 --- /dev/null +++ b/BBWYB.Server.Model/Db/Order/InStorePurchaseOrdeRrelationInfo.cs @@ -0,0 +1,35 @@ +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db +{ + + /// + /// 入库采购单关系表 + /// + [Table(Name = "instorepurchaseorderrelationinfo", DisableSyncStructure = true)] + public partial class InStorePurchaseOrdeRrelationInfo + { + + [Column(IsPrimary = true)] + public long Id { get; set; } + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + [Column(StringLength = 100)] + public string InStorePurchaseOrderId { get; set; } + + [Column(StringLength = 100)] + public string OrderId { get; set; } + + [Column(StringLength = 100)] + public string PurchaseOrderId { get; set; } + + public long? ShopId { get; set; } + + [Column(StringLength = 100)] + public string WaybillNo { get; set; } + + } + +} diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs index 6fa7545..1b06d38 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseOrder/PurchaserDeliveryRequest.cs @@ -4,11 +4,36 @@ { public string OrderId { get; set; } + public string PurchaseOrderId { get; set; } + + /// + /// 订单SkuId (OrderSku对象的SkuId) + /// + public string SkuId { get; set; } + public IList InStorePurchaseOrderManualDeliveryList { get; set; } } - public class InStorePurchaseOrderManualDeliveryRequest: ManualDeliveryRequest + public class InStorePurchaseOrderManualDeliveryRequest { + /// + /// 快递公司Id + /// + public string ExpressId { get; set; } + + /// + /// 快递公司名称 + /// + public string ExpressName { get; set; } + + /// + /// 快递单号 + /// + public string WaybillNo { get; set; } + + /// + /// 入库采购单集合 + /// public IList InStorePurchaseOrderIdList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs index 0a0a2a9..dd2f73f 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs @@ -2,11 +2,16 @@ namespace BBWYB.Server.Model.Dto { - public class PurchaseExpressOrderResponse: PurchaseExpressOrder + public class PurchaseExpressOrderResponse : PurchaseExpressOrder { /// /// 归属SkuId,逗号间隔 (拳探SKU) /// public string BelongSkuIds { get; set; } + + /// + /// 入仓采购单号 + /// + public IList InStorePurchaseOrderIdList { get; set; } } }