shanji 2 years ago
parent
commit
9eb55c8c3a
  1. 70
      BBWYB.Server.Business/Extensions/OrderStateExtension.cs
  2. 152
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  3. 56
      BBWYB.Server.Business/QiKuManager.cs

70
BBWYB.Server.Business/Extensions/OrderStateExtension.cs

@ -79,7 +79,7 @@ namespace BBWYB.Server.Business
#region 部分收货 #region 部分收货
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState. || if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.) && opi.OrderState == Enums.PurchaseOrderState.) &&
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.|| orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count()) opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
{ {
order.OrderState = Enums.OrderState.; order.OrderState = Enums.OrderState.;
@ -111,39 +111,59 @@ namespace BBWYB.Server.Business
IList<OrderPurchaseSkuInfo> orderPurchaseSkuList = null, IList<OrderPurchaseSkuInfo> orderPurchaseSkuList = null,
IList<PurchaseExpressOrder> purchaseExpressOrderList = null) IList<PurchaseExpressOrder> purchaseExpressOrderList = null)
{ {
/*
= 0,
= 1,
= 10,
= 11,
= 20,
= 100
*/
if (orderPurchaseInfo.OrderState == Enums.PurchaseOrderState.) if (orderPurchaseInfo.OrderState == Enums.PurchaseOrderState.)
return; return;
if (orderPurchaseSkuList == null)
orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(ops => ops.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList(); if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.)
{
if (orderPurchaseSkuList == null)
orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(ops => ops.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList();
}
if (purchaseExpressOrderList == null) if (purchaseExpressOrderList == null)
purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(exo => exo.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList(); purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(exo => exo.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList();
/* if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.) //支持采购sku和关联信息
= 0,
= 1,
= 10,
= 11,
= 20,
= 100
*/
#region 待发货
if (orderPurchaseSkuList.Count() == orderPurchaseSkuList.Count(ops => string.IsNullOrEmpty(ops.WaybillNo)))
{ {
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.; #region 待发货
return; if (orderPurchaseSkuList.Count() == orderPurchaseSkuList.Count(ops => string.IsNullOrEmpty(ops.WaybillNo)))
} {
#endregion orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
return;
}
#endregion
#region 部分发货 #region 部分发货
if (orderPurchaseSkuList.Any(ops => string.IsNullOrEmpty(ops.WaybillNo)) && if (orderPurchaseSkuList.Any(ops => string.IsNullOrEmpty(ops.WaybillNo)) &&
orderPurchaseSkuList.Count(ops => string.IsNullOrEmpty(ops.WaybillNo)) < orderPurchaseSkuList.Count()) orderPurchaseSkuList.Count(ops => string.IsNullOrEmpty(ops.WaybillNo)) < orderPurchaseSkuList.Count())
{
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
return;
}
#endregion
}
else
{ {
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.; //不支持采购sku和关联信息
return; #region 待发货
if (purchaseExpressOrderList.Count() == 0)
{
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
return;
}
#endregion
} }
#endregion
#region 待收货 #region 待收货
if (purchaseExpressOrderList.Count(exo => exo.ExpressState == "QianShou") == 0) if (purchaseExpressOrderList.Count(exo => exo.ExpressState == "QianShou") == 0)
@ -164,7 +184,7 @@ namespace BBWYB.Server.Business
#region 已签收 #region 已签收
if (purchaseExpressOrderList.Any(exo => exo.ExpressState == "QianShou") && if (purchaseExpressOrderList.Any(exo => exo.ExpressState == "QianShou") &&
purchaseExpressOrderList.Count(exo => exo.ExpressState == "QianShou") == purchaseExpressOrderList.Count()) purchaseExpressOrderList.Count(exo => exo.ExpressState == "QianShou") == purchaseExpressOrderList.Count())
{ {
orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.; orderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
return; return;

152
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -1142,30 +1142,34 @@ namespace BBWYB.Server.Business
throw new BusinessException("未查询到采购单信息"); throw new BusinessException("未查询到采购单信息");
#endregion #endregion
#region 查询采购关联信息 IList<OrderPurchaseSkuInfo> orderPurchaseSkuList = null;
var orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId && if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.)
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); #region 查询采购关联信息
if (orderPurchaseSku == null) 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信息并更新快递单号
orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList();
if (orderPurchaseSkuList.Count() == 0)
throw new BusinessException("未查询到采购单sku信息"); throw new BusinessException("未查询到采购单sku信息");
if (orderPurchaseSku.WaybillNo != request.WaybillNo)
foreach (var relation in orderPurchaseRelationList)
{ {
orderPurchaseSku.WaybillNo = request.WaybillNo; var orderPurchaseSku = orderPurchaseSkuList.FirstOrDefault(posku => posku.PurchaseSkuId == relation.PurchaseSkuId);
updateOrderPurchaseSkuList.Add(fsql.Update<OrderPurchaseSkuInfo>(orderPurchaseSku.Id).Set(ps => ps.WaybillNo, request.WaybillNo)); 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
} }
#endregion
#region 订阅快递100 #region 订阅快递100
bool isSubscribeKD100 = false; bool isSubscribeKD100 = false;
@ -1285,38 +1289,62 @@ namespace BBWYB.Server.Business
throw new BusinessException("未查询到采购单信息"); throw new BusinessException("未查询到采购单信息");
#endregion #endregion
#region 查询采购关联信息 IList<OrderPurchaseSkuInfo> orderPurchaseSkuList = null;
var orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId && IList<OrderPurchaseRelationInfo> orderPurchaseRelationList = null;
opri.BelongSkuId == request.SkuId).ToList(); if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.)
if (orderPurchaseRelationList.Count() == 0) {
throw new BusinessException("未查询到采购单的关联信息"); #region 查询采购关联信息
#endregion 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信息 #region 查询该笔采购单的采购sku信息
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList(); orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(x => x.PurchaseOrderId == request.PurchaseOrderId).ToList();
if (orderPurchaseSkuList.Count() == 0) if (orderPurchaseSkuList.Count() == 0)
throw new BusinessException("未查询到采购单sku信息"); throw new BusinessException("未查询到采购单sku信息");
#endregion #endregion
#region 更新采购sku的快递单状态为签收 #region 更新采购sku的快递单状态为签收
foreach (var relation in orderPurchaseRelationList) foreach (var relation in orderPurchaseRelationList)
{
var orderPurchaseSku = orderPurchaseSkuList.FirstOrDefault(posku => posku.PurchaseSkuId == relation.PurchaseSkuId);
if (orderPurchaseSku == null)
throw new BusinessException("未查询到采购单sku信息");
if (!string.IsNullOrEmpty(orderPurchaseSku.WaybillNo))
{
var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(exo => exo.WaybillNo == orderPurchaseSku.WaybillNo);
if (purchaseExpressOrder == null)
throw new BusinessException("未查询到采购sku的快递信息");
var expressState = kuaiDi100Manager.GetExpressState(3);
if (purchaseExpressOrder.ExpressState != expressState)
{
purchaseExpressOrder.ExpressState = expressState;
updatePurchaseExpressOrderList.Add(fsql.Update<PurchaseExpressOrder>(purchaseExpressOrder.WaybillNo)
.Set(exo => exo.ExpressState, purchaseExpressOrder.ExpressState)
.Set(exo => exo.ExpressChangedTime, DateTime.Now)
.Set(exo => exo.ExpressContent, "手动签收"));
}
}
}
#endregion
}
else
{ {
var orderPurchaseSku = orderPurchaseSkuList.FirstOrDefault(posku => posku.PurchaseSkuId == relation.PurchaseSkuId); foreach (var purchaseExpressOrder in purchaseExpressOrderList)
if (orderPurchaseSku == null)
throw new BusinessException("未查询到采购单sku信息");
if (!string.IsNullOrEmpty(orderPurchaseSku.WaybillNo))
{ {
var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(exo => exo.WaybillNo == orderPurchaseSku.WaybillNo); var expressState = kuaiDi100Manager.GetExpressState(3);
if (purchaseExpressOrder == null) if (purchaseExpressOrder.ExpressState != expressState)
throw new BusinessException("未查询到采购sku的快递信息"); {
purchaseExpressOrder.ExpressState = kuaiDi100Manager.GetExpressState(3); purchaseExpressOrder.ExpressState = expressState;
updatePurchaseExpressOrderList.Add(fsql.Update<PurchaseExpressOrder>(purchaseExpressOrder.WaybillNo) updatePurchaseExpressOrderList.Add(fsql.Update<PurchaseExpressOrder>(purchaseExpressOrder.WaybillNo)
.Set(exo => exo.ExpressState, purchaseExpressOrder.ExpressState) .Set(exo => exo.ExpressState, purchaseExpressOrder.ExpressState)
.Set(exo => exo.ExpressChangedTime, DateTime.Now) .Set(exo => exo.ExpressChangedTime, DateTime.Now)
.Set(exo => exo.ExpressContent, "手动签收")); .Set(exo => exo.ExpressContent, "手动签收"));
}
} }
} }
#endregion
#region 计算采购单状态 #region 计算采购单状态
orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList); orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList);
@ -1331,7 +1359,7 @@ namespace BBWYB.Server.Business
#endregion #endregion
#region 通知齐库打包落仓情况 #region 通知齐库打包落仓情况
Task.Factory.StartNew(() => qiKuManager.PublishQiKu(orderPurchaseRelationList, orderPurchaseSkuList, purchaseExpressOrderList), Task.Factory.StartNew(() => qiKuManager.PublishQiKu(orderPurchaseInfo, orderPurchaseRelationList, orderPurchaseSkuList, purchaseExpressOrderList),
CancellationToken.None, CancellationToken.None,
TaskCreationOptions.LongRunning, TaskCreationOptions.LongRunning,
taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
@ -2018,7 +2046,14 @@ namespace BBWYB.Server.Business
throw new Exception("未查询到快递单"); throw new Exception("未查询到快递单");
#endregion #endregion
#region 查询订单/采购单/采购sku/快递单/采购关系 #region 查询采购单
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == tpeo.OrderId && opi.IsEnabled == true).ToList();
var orderPurchaseInfo = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == tpeo.PurchaseOrderId);
if (orderPurchaseInfo == null)
throw new Exception("未查询到采购单");
#endregion
#region 查询订单/采购sku/快递单/采购关系
var dbOrder = fsql.Select<Order>(tpeo.OrderId).ToOne(o => new Order var dbOrder = fsql.Select<Order>(tpeo.OrderId).ToOne(o => new Order
{ {
Id = o.Id, Id = o.Id,
@ -2028,14 +2063,18 @@ namespace BBWYB.Server.Business
if (dbOrder == null) if (dbOrder == null)
throw new Exception("未查询到订单"); throw new Exception("未查询到订单");
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == dbOrder.Id && opi.IsEnabled == true).ToList(); IList<OrderPurchaseSkuInfo> orderPurchaseSkuList = null;
var orderPurchaseInfo = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == tpeo.PurchaseOrderId); IList<OrderPurchaseRelationInfo> orderPurchaseRelationList = null;
if (orderPurchaseInfo == null) if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.)
throw new Exception("未查询到采购单"); {
orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(x => x.PurchaseOrderId == tpeo.PurchaseOrderId).ToList();
if (orderPurchaseSkuList.Count() == 0)
throw new BusinessException("未查询到采购单sku信息");
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(x => x.PurchaseOrderId == tpeo.PurchaseOrderId).ToList(); orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => opri.PurchaseOrderId == tpeo.PurchaseOrderId).ToList();
if (orderPurchaseSkuList.Count() == 0) if (orderPurchaseRelationList.Count() == 0)
throw new BusinessException("未查询到采购单sku信息"); throw new BusinessException("未查询到采购单的关联信息");
}
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(x => x.PurchaseOrderId == tpeo.PurchaseOrderId).ToList(); var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(x => x.PurchaseOrderId == tpeo.PurchaseOrderId).ToList();
var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(exo => exo.WaybillNo == waybillNo); var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(exo => exo.WaybillNo == waybillNo);
@ -2044,9 +2083,6 @@ namespace BBWYB.Server.Business
purchaseExpressOrder.ExpressContent = lastData.context; purchaseExpressOrder.ExpressContent = lastData.context;
updatePurchaseExpressOrder = fsql.Update<PurchaseExpressOrder>().SetSource(purchaseExpressOrder); updatePurchaseExpressOrder = fsql.Update<PurchaseExpressOrder>().SetSource(purchaseExpressOrder);
var orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => opri.PurchaseOrderId == tpeo.PurchaseOrderId).ToList();
if (orderPurchaseRelationList.Count() == 0)
throw new BusinessException("未查询到采购单的关联信息");
#endregion #endregion
#region 计算采购单状态 #region 计算采购单状态
@ -2062,7 +2098,7 @@ namespace BBWYB.Server.Business
#endregion #endregion
#region 通知齐库打包落仓情况 #region 通知齐库打包落仓情况
Task.Factory.StartNew(() => qiKuManager.PublishQiKu(orderPurchaseRelationList, orderPurchaseSkuList, purchaseExpressOrderList), Task.Factory.StartNew(() => qiKuManager.PublishQiKu(orderPurchaseInfo, orderPurchaseRelationList, orderPurchaseSkuList, purchaseExpressOrderList),
CancellationToken.None, CancellationToken.None,
TaskCreationOptions.LongRunning, TaskCreationOptions.LongRunning,
taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);

56
BBWYB.Server.Business/QiKuManager.cs

@ -1,5 +1,6 @@
using BBWYB.Common.Http; using BBWYB.Common.Http;
using BBWYB.Common.Models; using BBWYB.Common.Models;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Db;
namespace BBWYB.Server.Business namespace BBWYB.Server.Business
@ -7,20 +8,36 @@ namespace BBWYB.Server.Business
public class QiKuManager : IDenpendency public class QiKuManager : IDenpendency
{ {
private RestApiService restApiService; private RestApiService restApiService;
public QiKuManager(RestApiService restApiService) private IFreeSql fsql;
public QiKuManager(RestApiService restApiService, IFreeSql fsql)
{ {
this.restApiService = restApiService; this.restApiService = restApiService;
this.fsql = fsql;
} }
/// <summary> /// <summary>
/// 通知齐库 /// 通知齐库
/// <para>支持关联的采购平台以来源SKU为单位通知齐库</para>
/// <para>不支持关联的采购平台以采购单为单位通知齐库</para>
/// </summary> /// </summary>
/// <param name="orderPurchaseInfo"></param>
/// <param name="orderPurchaseRelationInfoList"></param> /// <param name="orderPurchaseRelationInfoList"></param>
/// <param name="orderPurchaseSkuInfoList"></param> /// <param name="orderPurchaseSkuInfoList"></param>
/// <param name="purchaseExpressOrderList"></param> /// <param name="purchaseExpressOrderList"></param>
public void PublishQiKu(IList<OrderPurchaseRelationInfo> orderPurchaseRelationInfoList, public void PublishQiKu(OrderPurchaseInfo orderPurchaseInfo,
IList<OrderPurchaseRelationInfo> orderPurchaseRelationInfoList,
IList<OrderPurchaseSkuInfo> orderPurchaseSkuInfoList, IList<OrderPurchaseSkuInfo> orderPurchaseSkuInfoList,
IList<PurchaseExpressOrder> purchaseExpressOrderList) IList<PurchaseExpressOrder> purchaseExpressOrderList)
{
if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.)
PublishQiKuByRelation(orderPurchaseRelationInfoList, orderPurchaseSkuInfoList, purchaseExpressOrderList);
else
PublishQiKuPurchaseExpressOrder(orderPurchaseInfo, purchaseExpressOrderList);
}
private void PublishQiKuByRelation(IList<OrderPurchaseRelationInfo> orderPurchaseRelationInfoList,
IList<OrderPurchaseSkuInfo> orderPurchaseSkuInfoList,
IList<PurchaseExpressOrder> purchaseExpressOrderList)
{ {
try try
{ {
@ -62,5 +79,40 @@ namespace BBWYB.Server.Business
} }
} }
private void PublishQiKuPurchaseExpressOrder(OrderPurchaseInfo orderPurchaseInfo, IList<PurchaseExpressOrder> purchaseExpressOrderList)
{
try
{
if (string.IsNullOrEmpty(orderPurchaseInfo.BelongSkuIds))
return;
var orderId = purchaseExpressOrderList.FirstOrDefault().OrderId;
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == orderId).ToList();
var isSignAll = !purchaseExpressOrderList.Any(x => x.ExpressState != "QianShou");
var notifyList = orderSkuList.Where(osku => orderPurchaseInfo.BelongSkuIds.Contains(osku.SkuId)).ToList();
if (notifyList.Count() == 0)
return;
foreach (var notifySku in notifyList)
{
restApiService.SendRequest("http://qiku.qiyue666.com",
"/Api/PackPurchaseTask/UpdateAvailabilityState",
new
{
availability = isSignAll ? 0 : 1,
orderId = notifySku.OrderId,
skuId = notifySku.BelongSkuId
},
null,
HttpMethod.Post);
}
}
catch
{
}
}
} }
} }

Loading…
Cancel
Save