|
|
@ -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<OrderPurchaseInfo>(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<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, |
|
|
|
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<PurchaseExpressOrder> insertPurchaseExpressOrderList = new List<PurchaseExpressOrder>(); |
|
|
|
IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuList = new List<IUpdate<OrderPurchaseSkuInfo>>(); |
|
|
@ -1324,21 +1341,6 @@ namespace BBWYB.Server.Business |
|
|
|
bool isDbExists = fsql.Select<PurchaseExpressOrder>(request.WaybillNo).Any(); |
|
|
|
#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, |
|
|
|
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<Shops>().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>(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<PurchaseExpressOrder> insertPurchaseExpressOrderList = new List<PurchaseExpressOrder>(); |
|
|
|
List<ExpressOrderRelationInfo> insertExpressOrderRelationList = new List<ExpressOrderRelationInfo>(); |
|
|
|
List<InStorePurchaseOrdeRrelationInfo> insertInStorePurchaseOrderRelationList = new List<InStorePurchaseOrdeRrelationInfo>(); |
|
|
|
//IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuList = new List<IUpdate<OrderPurchaseSkuInfo>>();
|
|
|
|
IUpdate<OrderPurchaseInfo> updateOrderPurchase = null; |
|
|
|
IUpdate<Order> updateOrder = null; |
|
|
|
|
|
|
|
#region 查询该笔采购单的快递单信息
|
|
|
|
//var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList();
|
|
|
|
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>() |
|
|
|
.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<PurchaseExpressOrder>(wayBillNos).ToList(); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 查询该订单的入库采购单关系
|
|
|
|
var dbInStoreRelationList = fsql.Select<InStorePurchaseOrdeRrelationInfo>().Where(x => x.OrderId == request.OrderId).ToList(); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 店铺信息
|
|
|
|
var shop = fsqlManager.MDSfsql.Select<Shops>().Where(s => s.ShopId == dbOrder.ShopId.ToString()).ToOne(); |
|
|
|
if (shop == 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
|
|
|
|
|
|
|
|
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>(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端状态
|
|
|
|
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<PurchaseExpressOrder> insertPurchaseExpressOrderList = new List<PurchaseExpressOrder>(); |
|
|
|
List<ExpressOrderRelationInfo> insertExpressOrderRelationInfoList = new List<ExpressOrderRelationInfo>(); |
|
|
|
IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuList = new List<IUpdate<OrderPurchaseSkuInfo>>(); |
|
|
|
IUpdate<OrderPurchaseInfo> updateOrderPurchase = null; |
|
|
|
IUpdate<Order> 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<PurchaseExpressOrder> insertPurchaseExpressOrderList = new List<PurchaseExpressOrder>(); |
|
|
|
List<ExpressOrderRelationInfo> insertExpressOrderRelationInfoList = new List<ExpressOrderRelationInfo>(); |
|
|
|
IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuList = new List<IUpdate<OrderPurchaseSkuInfo>>(); |
|
|
|
IUpdate<OrderPurchaseInfo> updateOrderPurchase = null; |
|
|
|
IUpdate<Order> 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>(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<OrderPurchaseInfo>(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(); |
|
|
|
|
|
|
|