From 7e076fbc8eadfb4891ca8d1bdc569a4cab720cb4 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 29 Jun 2023 15:39:08 +0800 Subject: [PATCH] 1 --- .../Controllers/DataRepairController.cs | 10 +++ .../DataRepair/DataRepairBusiness.cs | 74 +++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index 47ab484..a14d0c6 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -36,5 +36,15 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode); } + + /// + /// 修复订单状态 + /// + /// + [HttpPost("{orderId}")] + public void RepairOrderState([FromRoute] string orderId) + { + dataRepairBusiness.RepairOrderState(orderId); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 8931e91..5a1b84e 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -73,6 +73,80 @@ namespace BBWYB.Server.Business }); } + public void RepairOrderState(string orderId) + { + List> updateOrderPurchaseList = new List>(); + IUpdate updateOrder = null; + + var order = fsql.Select(orderId).ToOne(); + + #region 查询采购单 + var purchaseOrderList = fsql.Select().Where(ori => ori.IsEnabled == true && ori.OrderId == orderId).ToList(); + if (purchaseOrderList.Count() == 0) + throw new Exception("未查询到任何采购单"); + var purchaseOrderIds = purchaseOrderList.Select(po => po.PurchaseOrderId).ToList(); + #endregion + + #region 查询采购SKU + IList orderPurchaseSkuList = fsql.Select() + .Where(posku => purchaseOrderIds.Contains(posku.PurchaseOrderId)) + .ToList(); + #endregion + + #region 查询采购sku关联信息 + IList orderPurchaseRelationList = fsql.Select() + .Where(ops => purchaseOrderIds.Contains(ops.PurchaseOrderId)) + .ToList(); + #endregion + + #region 查询采购单关联的快递单 + var purchaseExpressOrderList = fsql.Select() + .InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) + .Where((eori, peo) => eori.OrderId == orderId).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 + }); + #endregion + + foreach (var purchaseOrder in purchaseOrderList) + { + var currentPurchaseOrderSkuList = orderPurchaseSkuList.Where(posku => posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); + + var currentPurchaseExpressOrderList = purchaseExpressOrderList.Where(peo => peo.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); + + var oldPurchaseOrderState = purchaseOrder.OrderState; + purchaseOrder.CalculationOrderState(fsql, currentPurchaseOrderSkuList, currentPurchaseExpressOrderList); + if (purchaseOrder.OrderState != oldPurchaseOrderState) + { + var update = fsql.Update(purchaseOrder.Id).Set(opi => opi.OrderState, purchaseOrder.OrderState); + updateOrderPurchaseList.Add(update); + } + } + var oldOrderState = order.OrderState; + order.CalculationOrderState(fsql, null, purchaseOrderList); + if (order.OrderState != oldOrderState) + updateOrder = fsql.Update(order.Id).Set(o => o.OrderState, order.OrderState); + + fsql.Transaction(() => + { + foreach (var update in updateOrderPurchaseList) + update.ExecuteAffrows(); + updateOrder?.ExecuteAffrows(); + }); + } + public void SubscribeKD100(string waybillNo, string targetCompanyCode) { kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish");