Browse Source

订单状态判断逻辑

yijia
shanji 2 years ago
parent
commit
f2b57e4b5c
  1. 78
      BBWYB.Server.Business/Extensions/OrderStateExtension.cs
  2. 45
      BBWYB.Server.Business/Order/OrderBusiness.cs
  3. 181
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  4. 2
      BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs

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

@ -14,12 +14,82 @@ namespace BBWYB.Server.Business
/// <param name="orderSkuList"></param>
/// <param name="orderPurchaseInfoList"></param>
/// <returns></returns>
public static Enums.OrderState CalculationOrderState(this Order order,
IList<OrderSku> orderSkuList,
IList<OrderPurchaseInfo> orderPurchaseInfoList)
public static void CalculationOrderState(this Order order,
IFreeSql fsql,
IList<OrderSku> orderSkuList = null,
IList<OrderPurchaseInfo> orderPurchaseInfoList = null)
{
if (order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState.)
return;
return Enums.OrderState.Unknow;
if (orderSkuList == null)
orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == order.Id).ToList();
if (orderPurchaseInfoList == null)
orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == order.Id && opi.IsEnabled == true).ToList();
#region 等待采购
if (orderPurchaseInfoList == null || orderPurchaseInfoList.Count() == 0)
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 部分采购
foreach (var osku in orderSkuList)
{
if (!orderPurchaseInfoList.Any(opi => opi.BelongSkuIds.Contains(osku.SkuId)))
{
order.OrderState = Enums.OrderState.;
return;
}
}
#endregion
#region 待发货
if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.))
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 部分发货
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.) &&
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 待收货
if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.))
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 部分收货
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.) &&
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
#region 打包中
if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.))
{
order.OrderState = Enums.OrderState.;
return;
}
#endregion
}
}
}

45
BBWYB.Server.Business/Order/OrderBusiness.cs

@ -184,25 +184,29 @@ namespace BBWYB.Server.Business
if (!string.IsNullOrEmpty(request.TargetExpressId))
{
try
{
opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform)
.OutStock(new OP_OutStockRequest()
{
AppKey = request.AppKey,
AppSecret = request.AppSecret,
AppToken = request.AppToken,
ExpressId = request.TargetExpressId,
ExpressName = request.TargetExpressName,
OrderId = request.OrderId,
Platform = (AdapterEnums.PlatformType)request.Platform,
WayBillNo = request.WayBillNo
});
}
catch (Exception ex)
{
nLogManager.Default().Error(ex, $"OutStock Request {JsonConvert.SerializeObject(request)}");
}
#region 订阅快递100
#endregion
//try
//{
// opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform)
// .OutStock(new OP_OutStockRequest()
// {
// AppKey = request.AppKey,
// AppSecret = request.AppSecret,
// AppToken = request.AppToken,
// ExpressId = request.TargetExpressId,
// ExpressName = request.TargetExpressName,
// OrderId = request.OrderId,
// Platform = (AdapterEnums.PlatformType)request.Platform,
// WayBillNo = request.WayBillNo
// });
//}
//catch (Exception ex)
//{
// nLogManager.Default().Error(ex, $"OutStock Request {JsonConvert.SerializeObject(request)}");
//}
}
#region 通知C端出库
@ -229,12 +233,13 @@ namespace BBWYB.Server.Business
fsql.Transaction(() =>
{
fsql.Update<OrderPurchaseInfo>().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId)
fsql.Update<OrderPurchaseInfo>().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId && opi.IsEnabled == true)
.Set(opi => opi.WaybillNo, request.WayBillNo)
.Set(opi => opi.SourceExpressId, request.SourceExpressId)
.Set(opi => opi.SourceExpressName, request.SourceExpressName)
.Set(opi => opi.TargetExpressId, request.TargetExpressId)
.Set(opi => opi.TargetExpressName, request.TargetExpressName)
.Set(opi => opi.OrderState, Enums.PurchaseOrderState.)
.ExecuteAffrows();
if (dbOrder.OrderState == Enums.OrderState.)

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

@ -827,13 +827,18 @@ namespace BBWYB.Server.Business
throw new BusinessException("无效采购单号");
if (!dbOrderPurchaseInfo.IsEnabled)
throw new BusinessException("采购单已失效");
if (dbOrderPurchaseInfo.IsSign == true)
if (dbOrderPurchaseInfo.OrderState == Enums.PurchaseOrderState. ||
dbOrderPurchaseInfo.IsSign == true)
throw new BusinessException("采购单已签收");
dbOrderPurchaseInfo.IsSign = true;
dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
fsql.Transaction(() =>
{
fsql.Update<OrderPurchaseInfo>(dbOrderPurchaseInfo.Id).Set(opi => opi.IsSign, true).ExecuteAffrows();
fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo).ExecuteAffrows();
fsql.Update<Order>(dbOrder.Id).Set(o => o.IsWaitPack, true).ExecuteAffrows();
Enums.OrderState.;
});
}
@ -899,19 +904,19 @@ namespace BBWYB.Server.Business
{
#region 查询代发信息
currentProgress = "查询代发信息";
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(o => o.PurchaseOrderId == purchaseOrderId).ToOne();
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(o => o.PurchaseOrderId == purchaseOrderId && orderPurchaseInfo.IsEnabled == true).ToOne();
if (orderPurchaseInfo == null)
throw new Exception("未查询到代发信息");
orderId = orderPurchaseInfo.OrderId;
shopId = orderPurchaseInfo.ShopId;
#endregion
#region 查询采购账号的归属店铺
currentProgress = "查询采购账号归属店铺";
var shop = venderBusiness.GetShopList(shopId: shopId)?.FirstOrDefault();
if (shop == null)
throw new Exception("未查询到店铺信息");
#endregion
//#region 查询采购账号的归属店铺
//currentProgress = "查询采购账号归属店铺";
//var shop = venderBusiness.GetShopList(shopId: shopId)?.FirstOrDefault();
//if (shop == null)
// throw new Exception("未查询到店铺信息");
//#endregion
#region 查询采购账号
currentProgress = "查询采购账号";
@ -938,58 +943,80 @@ namespace BBWYB.Server.Business
}
#endregion
#region 获取目标平台的物流公司列表
currentProgress = "获取店铺平台物流公司列表";
var expressCompanyList = venderBusiness.GetExpressCompanyList(new PlatformRequest()
//#region 获取目标平台的物流公司列表
//currentProgress = "获取店铺平台物流公司列表";
//var expressCompanyList = venderBusiness.GetExpressCompanyList(new PlatformRequest()
//{
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// Platform = shop.PlatformId
//});
//if (expressCompanyList != null)
// expressCompanyListInfo = JsonConvert.SerializeObject(expressCompanyList);
//#endregion
//#region 物流公司翻译
//currentProgress = "物流公司翻译";
//OP_QueryExpressCompanyResponse convertExpressCompany = null;
//try
//{
// convertExpressCompany = expressCompanyNameConverter.Converter(wayBillNoResponse.ExpressName,
// (AdapterEnums.PlatformType)callbackPlatform,
// (AdapterEnums.PlatformType)shop.PlatformId,
// expressCompanyList);
// if (convertExpressCompany != null)
// expressCompanyInfo = JsonConvert.SerializeObject(convertExpressCompany);
//}
//catch
//{
// throw;
//}
//finally
//{
// #region 店铺平台订单出库
// currentProgress = "店铺平台订单出库";
// orderBusiness.OutStock(new OutStockRequest()
// {
// AppKey = shop.AppKey,
// AppSecret = shop.AppSecret,
// AppToken = shop.AppToken,
// OrderId = orderId,
// TargetExpressId = convertExpressCompany?.ExpressId ?? string.Empty, //物流公司Id
// TargetExpressName = convertExpressCompany?.ExpressName ?? string.Empty, //物流公司名称
// SourceExpressId = wayBillNoResponse.ExpressId,
// SourceExpressName = wayBillNoResponse.ExpressName,
// PurchaseOrderId = purchaseOrderId,
// Platform = shop.PlatformId,
// WayBillNo = wayBillNoResponse.WayBillNo
// });
// #endregion
//}
//#endregion
#region 店铺平台订单出库
currentProgress = "店铺平台订单出库";
orderBusiness.OutStock(new OutStockRequest()
{
AppKey = shop.AppKey,
AppSecret = shop.AppSecret,
AppToken = shop.AppToken,
Platform = shop.PlatformId
//AppKey = shop.AppKey,
//AppSecret = shop.AppSecret,
//AppToken = shop.AppToken,
OrderId = orderId,
//TargetExpressId = convertExpressCompany?.ExpressId ?? string.Empty, //物流公司Id
//TargetExpressName = convertExpressCompany?.ExpressName ?? string.Empty, //物流公司名称
SourceExpressId = wayBillNoResponse.ExpressId,
SourceExpressName = wayBillNoResponse.ExpressName,
PurchaseOrderId = purchaseOrderId,
//Platform = shop.PlatformId,
WayBillNo = wayBillNoResponse.WayBillNo
});
if (expressCompanyList != null)
expressCompanyListInfo = JsonConvert.SerializeObject(expressCompanyList);
#endregion
#region 物流公司翻译
currentProgress = "物流公司翻译";
OP_QueryExpressCompanyResponse convertExpressCompany = null;
try
{
convertExpressCompany = expressCompanyNameConverter.Converter(wayBillNoResponse.ExpressName,
(AdapterEnums.PlatformType)callbackPlatform,
(AdapterEnums.PlatformType)shop.PlatformId,
expressCompanyList);
if (convertExpressCompany != null)
expressCompanyInfo = JsonConvert.SerializeObject(convertExpressCompany);
}
catch
{
throw;
}
finally
{
#region 店铺平台订单出库
currentProgress = "店铺平台订单出库";
orderBusiness.OutStock(new OutStockRequest()
{
AppKey = shop.AppKey,
AppSecret = shop.AppSecret,
AppToken = shop.AppToken,
OrderId = orderId,
TargetExpressId = convertExpressCompany?.ExpressId ?? string.Empty, //物流公司Id
TargetExpressName = convertExpressCompany?.ExpressName ?? string.Empty, //物流公司名称
SourceExpressId = wayBillNoResponse.ExpressId,
SourceExpressName = wayBillNoResponse.ExpressName,
PurchaseOrderId = purchaseOrderId,
Platform = shop.PlatformId,
WayBillNo = wayBillNoResponse.WayBillNo
});
#endregion
}
#endregion
nLogManager.Default().Info($"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}");
}
@ -1008,6 +1035,7 @@ namespace BBWYB.Server.Business
Task.Factory.StartNew(() =>
{
IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuInfoList = new List<IUpdate<OrderPurchaseSkuInfo>>();
IList<IUpdate<OrderPurchaseInfo>> updateOrderPurchaseInfoList = new List<IUpdate<OrderPurchaseInfo>>();
var statusChanged = jObject["data"]["OrderLogisticsTracingModel"].Value<string>("statusChanged").ToUpper();
var orderLogsItems = jObject["data"]["OrderLogisticsTracingModel"]["orderLogsItems"].Children();
@ -1015,6 +1043,8 @@ namespace BBWYB.Server.Business
var purchaseOrderIds = orderLogsItems.Select(x => x.Value<string>("orderId")).Distinct().ToList();
var orderEntryIds = orderLogsItems.Select(x => x.Value<string>("orderEntryId")).Distinct().ToList();
var dbOrderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => purchaseOrderIds.Contains(opi.PurchaseOrderId) && opi.IsEnabled == true).ToList();
var dbOrderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>()
.WhereIf(purchaseOrderIds.Count() > 1, ops => purchaseOrderIds.Contains(ops.PurchaseOrderId))
.WhereIf(purchaseOrderIds.Count() == 1, ops => ops.PurchaseOrderId == purchaseOrderIds[0])
@ -1043,12 +1073,20 @@ namespace BBWYB.Server.Business
foreach (var group in groupsByPoIds)
{
var isSignAll = group.Count() == group.Where(x => x.ExpressState == "SIGN").Count();
if (isSignAll)
{
var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(x => x.PurchaseOrderId == group.Key && x.IsEnabled == true);
if (dbOrderPurchaseInfo != null)
{
dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
updateOrderPurchaseInfoList.Add(fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo));
}
}
#region 通知齐库
var relationList = dbOrderPurchaseRelationInfoList.Where(x => x.PurchaseOrderId == group.Key).ToList();
foreach (var relation in relationList)
{
//通知C端
try
{
restApiService.SendRequest("http://qiku.qiyue666.com",
@ -1069,37 +1107,16 @@ namespace BBWYB.Server.Business
}
#endregion
}
var groupsByOrderIds = dbOrderPurchaseSkuInfoList.GroupBy(x => x.OrderId);
foreach (var group in groupsByOrderIds)
{
var isSignAll = group.Count() == group.Where(x => x.ExpressState == "SIGN").Count();
if (isSignAll)
{
//通知C端
try
{
restApiService.SendRequest("https://bbwy.qiyue666.com",
"/Api/PurchaseOrder/SignPurchaseOrder",
new { orderId = group.Key },
null,
HttpMethod.Post);
}
catch (Exception ex)
{
}
}
}
}
if (updateOrderPurchaseSkuInfoList.Count() > 0)
if (updateOrderPurchaseSkuInfoList.Count() > 0 || updateOrderPurchaseInfoList.Count() > 0)
{
fsql.Transaction(() =>
{
foreach (var update in updateOrderPurchaseSkuInfoList)
update.ExecuteAffrows();
foreach (var update in updateOrderPurchaseInfoList)
update.ExecuteAffrows();
});
}

2
BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs

@ -1,6 +1,6 @@
namespace BBWYB.Server.Model.Dto
{
public class OutStockRequest : PlatformRequest
public class OutStockRequest
{
/// <summary>
/// 订单Id

Loading…
Cancel
Save