|
|
@ -850,6 +850,122 @@ namespace BBWYB.Server.Business |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 手动发货
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="request"></param>
|
|
|
|
public void ManualDelivery(ManualDeliveryRequest request) |
|
|
|
{ |
|
|
|
#region 准备数据库更新对象
|
|
|
|
List<PurchaseExpressOrder> insertPurchaseExpressOrderList = new List<PurchaseExpressOrder>(); |
|
|
|
IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuList = new List<IUpdate<OrderPurchaseSkuInfo>>(); |
|
|
|
IUpdate<OrderPurchaseInfo> updateOrderPurchase = null; |
|
|
|
IUpdate<Order> updateOrder = null; |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 查询该笔采购单的快递单信息
|
|
|
|
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList(); |
|
|
|
bool isExists = purchaseExpressOrderList.Any(exo => exo.WaybillNo == request.WaybillNo); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 查询当前采购单的订单信息
|
|
|
|
var dbOrder = fsql.Select<OrderPurchaseInfo, Order>().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<OrderPurchaseInfo>().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<OrderPurchaseRelationInfo>().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<OrderPurchaseSkuInfo>().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList(); |
|
|
|
if (orderPurchaseSkuList.Count() == 0) |
|
|
|
throw new BusinessException("未查询到采购单sku信息"); |
|
|
|
|
|
|
|
foreach (var relation in orderPurchaseRelationList) |
|
|
|
{ |
|
|
|
var orderPurchaseSku = orderPurchaseSkuList.FirstOrDefault(posku => posku.PurchaseSkuId == relation.PurchaseSkuId); |
|
|
|
if (orderPurchaseSku == null) |
|
|
|
throw new BusinessException("未查询到采购单sku信息"); |
|
|
|
if (orderPurchaseSku.WaybillNo != request.WaybillNo) |
|
|
|
{ |
|
|
|
orderPurchaseSku.WaybillNo = request.WaybillNo; |
|
|
|
updateOrderPurchaseSkuList.Add(fsql.Update<OrderPurchaseSkuInfo>(orderPurchaseSku.Id).Set(ps => ps.WaybillNo, request.WaybillNo)); |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 订阅快递100
|
|
|
|
if (!isExists) |
|
|
|
kuaiDi100Manager.SubscribeKuaiDi100(request.WaybillNo, string.Empty, request.ExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建快递单
|
|
|
|
if (!isExists) |
|
|
|
{ |
|
|
|
var purchaseExpressOrder = new PurchaseExpressOrder() |
|
|
|
{ |
|
|
|
OrderId = dbOrder.Id, |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
PurchaseOrderId = request.PurchaseOrderId, |
|
|
|
ShopId = dbOrder.ShopId ?? 0, |
|
|
|
TargetExpressId = request.ExpressId, |
|
|
|
TargetExpressName = request.ExpressName, |
|
|
|
WaybillNo = request.WaybillNo, |
|
|
|
ExpressState = kuaiDi100Manager.GetExpressState(1) //快递100发货状态值 默认揽收
|
|
|
|
}; |
|
|
|
insertPurchaseExpressOrderList.Add(purchaseExpressOrder); |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 计算采购单状态
|
|
|
|
orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); |
|
|
|
updateOrderPurchase = fsql.Update<OrderPurchaseInfo>(orderPurchaseInfo.Id) |
|
|
|
.Set(opi => opi.OrderState, orderPurchaseInfo.OrderState); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 计算订单状态
|
|
|
|
dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); |
|
|
|
updateOrder = fsql.Update<Order>(dbOrder.Id) |
|
|
|
.Set(o => o.OrderState, dbOrder.OrderState); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 通知C端订单状态
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
if (insertPurchaseExpressOrderList.Count() > 0) |
|
|
|
fsql.Insert(insertPurchaseExpressOrderList).ExecuteAffrows(); |
|
|
|
if (updateOrderPurchaseSkuList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updateOrderPurchaseSkuList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
} |
|
|
|
updateOrderPurchase?.ExecuteAffrows(); |
|
|
|
updateOrder?.ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 签收采购单
|
|
|
|
/// </summary>
|
|
|
@ -939,13 +1055,36 @@ namespace BBWYB.Server.Business |
|
|
|
IUpdate<OrderPurchaseInfo> updateOrderPurchase = null; |
|
|
|
IUpdate<Order> updateOrder = null; |
|
|
|
|
|
|
|
#region 查询采购单信息
|
|
|
|
currentProgress = "查询采购单信息"; |
|
|
|
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(o => o.PurchaseOrderId == purchaseOrderId && o.IsEnabled == true).ToOne(); |
|
|
|
if (orderPurchaseInfo == null) |
|
|
|
throw new Exception("未查询到采购单信息"); |
|
|
|
orderId = orderPurchaseInfo.OrderId; |
|
|
|
shopId = orderPurchaseInfo.ShopId; |
|
|
|
#region 查询当前采购单的订单信息
|
|
|
|
currentProgress = "查询当前采购单的订单信息"; |
|
|
|
var dbOrder = fsql.Select<OrderPurchaseInfo, Order>().InnerJoin((opi, o) => opi.OrderId == o.Id) |
|
|
|
.Where((opi, o) => opi.PurchaseOrderId == purchaseOrderId && opi.IsEnabled == true) |
|
|
|
.ToOne((opi, o) => new Order |
|
|
|
{ |
|
|
|
Id = o.Id, |
|
|
|
OrderState = o.OrderState, |
|
|
|
ShopId = o.ShopId |
|
|
|
}); |
|
|
|
if (dbOrder == null) |
|
|
|
throw new Exception("未查询到采购单的订单信息"); |
|
|
|
orderId = dbOrder.Id; |
|
|
|
shopId = dbOrder.ShopId; |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 查询订单的全部采购单信息
|
|
|
|
currentProgress = "查询订单的全部采购单信息"; |
|
|
|
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == orderId && opi.IsEnabled == true).ToList(); |
|
|
|
var orderPurchaseInfo = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == purchaseOrderId); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 查询该笔采购单的sku信息
|
|
|
|
currentProgress = "查询该笔采购单的sku信息"; |
|
|
|
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(x => x.PurchaseOrderId == purchaseOrderId).ToList(); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 查询该笔采购单的快递单信息
|
|
|
|
currentProgress = "查询该笔采购单的快递单信息"; |
|
|
|
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(x => x.PurchaseOrderId == purchaseOrderId).ToList(); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 查询采购账号
|
|
|
@ -970,11 +1109,6 @@ namespace BBWYB.Server.Business |
|
|
|
wayBillNoResponseInfo = JsonConvert.SerializeObject(new { purchaseOrderId, logisticsList }); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 查询该笔采购单的sku信息和已有快递单信息
|
|
|
|
currentProgress = "查询该笔采购单的sku信息和已有快递单信息"; |
|
|
|
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(x => x.PurchaseOrderId == purchaseOrderId).ToList(); |
|
|
|
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(x => x.PurchaseOrderId == purchaseOrderId).ToList(); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 找出新发货的快递单
|
|
|
|
foreach (var logisticsInfo in logisticsList) |
|
|
@ -982,6 +1116,11 @@ namespace BBWYB.Server.Business |
|
|
|
if (purchaseExpressOrderList.Any(po => po.WaybillNo == logisticsInfo.WayBillNo)) |
|
|
|
continue; |
|
|
|
|
|
|
|
#region 订阅快递100
|
|
|
|
currentProgress = "订阅快递100"; |
|
|
|
kuaiDi100Manager.SubscribeKuaiDi100(logisticsInfo.WayBillNo, logisticsInfo.ExpressName, string.Empty, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建快递单
|
|
|
|
var purchaseExpressOrder = new PurchaseExpressOrder() |
|
|
|
{ |
|
|
@ -1007,20 +1146,19 @@ namespace BBWYB.Server.Business |
|
|
|
updateOrderPurchaseSkuList.Add(fsql.Update<OrderPurchaseSkuInfo>(orderEntryId).Set(ps => ps.WaybillNo, logisticsInfo.WayBillNo)); |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 订阅快递100
|
|
|
|
currentProgress = "订阅快递100"; |
|
|
|
kuaiDi100Manager.SubscribeKuaiDi100(logisticsInfo.WayBillNo, logisticsInfo.ExpressName, string.Empty,""); |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 计算采购单状态
|
|
|
|
|
|
|
|
orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList.Union(insertPurchaseExpressOrderList).ToList()); |
|
|
|
updateOrderPurchase = fsql.Update<OrderPurchaseInfo>(orderPurchaseInfo.Id) |
|
|
|
.Set(opi => opi.OrderState, orderPurchaseInfo.OrderState); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 计算订单状态
|
|
|
|
|
|
|
|
dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList); |
|
|
|
updateOrder = fsql.Update<Order>(dbOrder.Id) |
|
|
|
.Set(o => o.OrderState, dbOrder.OrderState); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 通知C端订单状态
|
|
|
@ -1029,9 +1167,13 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Insert(insertPurchaseExpressOrderList).ExecuteAffrows(); |
|
|
|
foreach (var update in updateOrderPurchaseSkuList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
if (insertPurchaseExpressOrderList.Count() > 0) |
|
|
|
fsql.Insert(insertPurchaseExpressOrderList).ExecuteAffrows(); |
|
|
|
if (updateOrderPurchaseSkuList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updateOrderPurchaseSkuList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
} |
|
|
|
updateOrderPurchase?.ExecuteAffrows(); |
|
|
|
updateOrder?.ExecuteAffrows(); |
|
|
|
}); |
|
|
|