shanji 2 years ago
parent
commit
7e076fbc8e
  1. 10
      BBWYB.Server.API/Controllers/DataRepairController.cs
  2. 74
      BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs

10
BBWYB.Server.API/Controllers/DataRepairController.cs

@ -36,5 +36,15 @@ namespace BBWYB.Server.API.Controllers
{
dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode);
}
/// <summary>
/// 修复订单状态
/// </summary>
/// <param name="orderId"></param>
[HttpPost("{orderId}")]
public void RepairOrderState([FromRoute] string orderId)
{
dataRepairBusiness.RepairOrderState(orderId);
}
}
}

74
BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs

@ -73,6 +73,80 @@ namespace BBWYB.Server.Business
});
}
public void RepairOrderState(string orderId)
{
List<IUpdate<OrderPurchaseInfo>> updateOrderPurchaseList = new List<IUpdate<OrderPurchaseInfo>>();
IUpdate<Order> updateOrder = null;
var order = fsql.Select<Order>(orderId).ToOne();
#region 查询采购单
var purchaseOrderList = fsql.Select<OrderPurchaseInfo>().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<OrderPurchaseSkuInfo> orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>()
.Where(posku => purchaseOrderIds.Contains(posku.PurchaseOrderId))
.ToList();
#endregion
#region 查询采购sku关联信息
IList<OrderPurchaseRelationInfo> orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>()
.Where(ops => purchaseOrderIds.Contains(ops.PurchaseOrderId))
.ToList();
#endregion
#region 查询采购单关联的快递单
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
.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<OrderPurchaseInfo>(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>(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");

Loading…
Cancel
Save