Browse Source

订单结构调整

yijia
shanji 2 years ago
parent
commit
f68615777a
  1. 27
      BBWYB.Server.API/Controllers/PurchaseOrderController.cs
  2. 136
      BBWYB.Server.Business/Order/OrderBusiness.cs
  3. 626
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  4. 66
      BBWYB.Server.Business/QiKuManager.cs
  5. 10
      BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs
  6. 2
      BBWYB.Server.Model/Db/Order/PurchaseExpressOrder.cs
  7. 6
      BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs

27
BBWYB.Server.API/Controllers/PurchaseOrderController.cs

@ -1,4 +1,6 @@
using BBWYB.Server.Business; using BBWYB.Common.Models;
using BBWYB.Server.API.Filters;
using BBWYB.Server.Business;
using BBWYB.Server.Model.Dto; using BBWYB.Server.Model.Dto;
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
@ -75,7 +77,8 @@ namespace BBWYB.Server.API.Controllers
[HttpPost] [HttpPost]
public void SignPurchaseOrder([FromBody] SignPurchaseOrderRequest request) public void SignPurchaseOrder([FromBody] SignPurchaseOrderRequest request)
{ {
purchaseOrderBusiness.SignPurchaseOrder(request); throw new BusinessException("SignPurchaseOrder接口已经停用");
//purchaseOrderBusiness.SignPurchaseOrder(request);
} }
/// <summary> /// <summary>
@ -109,5 +112,25 @@ namespace BBWYB.Server.API.Controllers
{ {
purchaseOrderBusiness.CallbackFrom1688(message); purchaseOrderBusiness.CallbackFrom1688(message);
} }
[Consumes("application/x-www-form-urlencoded")]
[HttpPost]
public IActionResult KuaiDi100Publish([FromForm] string sign, [FromForm] string param)
{
#region 去掉本次请求的DTO格式
var filters = ControllerContext.ActionDescriptor.FilterDescriptors;
var filterToRemove = filters.FirstOrDefault(f => f.Filter.GetType() == typeof(ResultFilter));
if (filterToRemove != null)
filters.Remove(filterToRemove);
#endregion
purchaseOrderBusiness.KuaiDi100Publish(param);
return new JsonResult(new
{
result = true,
returnCode = "200",
message = "成功"
});
}
} }
} }

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

@ -153,15 +153,17 @@ namespace BBWYB.Server.Business
#region 处理采购信息 #region 处理采购信息
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>(); var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>();
var orderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>().Where(o => orderIdList.Contains(o.OrderId)).ToList(); var orderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>().Where(o => orderIdList.Contains(o.OrderId)).ToList<OrderPurchaseSkuInfoResponse>();
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(peo => orderIdList.Contains(peo.OrderId)).ToList<PurchaseExpressOrderResponse>();
foreach (var order in orderList) foreach (var order in orderList)
{ {
order.OrderPurchaseInfoList = orderPurchaseInfoList.Where(op => op.OrderId == order.Id).ToList(); order.OrderPurchaseInfoList = orderPurchaseInfoList.Where(op => op.OrderId == order.Id).ToList();
foreach (var purchaseOrder in order.OrderPurchaseInfoList) foreach (var orderPurchaseInfo in order.OrderPurchaseInfoList)
{ {
purchaseOrder.ExpressState = orderPurchaseSkuInfoList.FirstOrDefault(x => !string.IsNullOrEmpty(x.ExpressState) && orderPurchaseInfo.OrderPurchaseSkuInfoList = orderPurchaseSkuInfoList.Where(opsi => opsi.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList();
x.PurchaseOrderId == purchaseOrder.PurchaseOrderId)?.ExpressState; orderPurchaseInfo.PurchaseExpressOrderList = purchaseExpressOrderList.Where(peo=>peo.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList();
} }
} }
@ -174,81 +176,81 @@ namespace BBWYB.Server.Business
}; };
} }
public void OutStock(OutStockRequest request) //public void OutStock(OutStockRequest request)
{ //{
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(); // var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
if (dbOrder == null) // if (dbOrder == null)
throw new BusinessException($"订单{request.OrderId}不存在"); // throw new BusinessException($"订单{request.OrderId}不存在");
var dbOrderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList();
var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
dbOrderPurchaseInfo.WaybillNo = request.WayBillNo;
dbOrderPurchaseInfo.SourceExpressId = request.SourceExpressId;
dbOrderPurchaseInfo.SourceExpressName = request.SourceExpressName;
dbOrderPurchaseInfo.TargetExpressId = request.TargetExpressId;
dbOrderPurchaseInfo.TargetExpressName = request.TargetExpressName;
dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.;
#region 订单状态
dbOrder.CalculationOrderState(fsql, null, dbOrderPurchaseInfoList);
#endregion
if (!string.IsNullOrEmpty(request.TargetExpressId)) // var dbOrderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList();
{ // var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
#region 订阅快递100
#endregion // dbOrderPurchaseInfo.WaybillNo = request.WayBillNo;
// dbOrderPurchaseInfo.SourceExpressId = request.SourceExpressId;
// dbOrderPurchaseInfo.SourceExpressName = request.SourceExpressName;
// dbOrderPurchaseInfo.TargetExpressId = request.TargetExpressId;
// dbOrderPurchaseInfo.TargetExpressName = request.TargetExpressName;
// dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.待收货;
// #region 订单状态
// dbOrder.CalculationOrderState(fsql, null, dbOrderPurchaseInfoList);
// #endregion
// if (!string.IsNullOrEmpty(request.TargetExpressId))
// {
// #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端出库
// //通知C端
// try // try
// { // {
// opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform) // restApiService.SendRequest("https://bbwy.qiyue666.com",
// .OutStock(new OP_OutStockRequest() // "/Api/PurchaseOrder/QuanTanSendGoodsCallback",
// new
// { // {
// AppKey = request.AppKey,
// AppSecret = request.AppSecret,
// AppToken = request.AppToken,
// ExpressId = request.TargetExpressId,
// ExpressName = request.TargetExpressName,
// OrderId = request.OrderId, // OrderId = request.OrderId,
// Platform = (AdapterEnums.PlatformType)request.Platform, // ExpressId = request.SourceExpressId,
// WayBillNo = request.WayBillNo // ExpressName = request.SourceExpressName,
// }); // request.WayBillNo
// },
// null,
// HttpMethod.Post);
// } // }
// catch (Exception ex) // catch (Exception ex)
// { // {
// nLogManager.Default().Error(ex, $"OutStock Request {JsonConvert.SerializeObject(request)}");
//}
}
#region 通知C端出库
//通知C端
try
{
restApiService.SendRequest("https://bbwy.qiyue666.com",
"/Api/PurchaseOrder/QuanTanSendGoodsCallback",
new
{
OrderId = request.OrderId,
ExpressId = request.SourceExpressId,
ExpressName = request.SourceExpressName,
request.WayBillNo
},
null,
HttpMethod.Post);
}
catch (Exception ex)
{
} // }
#endregion // #endregion
fsql.Transaction(() => // fsql.Transaction(() =>
{ // {
fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo).ExecuteAffrows(); // fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo).ExecuteAffrows();
fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows(); // fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows();
}); // });
} //}
public void CancelOrder(CancelOrderRequest request, string mdsToken) public void CancelOrder(CancelOrderRequest request, string mdsToken)
{ {

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

@ -30,6 +30,8 @@ namespace BBWYB.Server.Business
private RestApiService restApiService; private RestApiService restApiService;
private IList<Enums.OrderState> cantPurchaseOrderStateList; private IList<Enums.OrderState> cantPurchaseOrderStateList;
private KuaiDi100Manager kuaiDi100Manager; private KuaiDi100Manager kuaiDi100Manager;
private QiKuManager qiKuManager;
public PurchaseOrderBusiness(IFreeSql fsql, public PurchaseOrderBusiness(IFreeSql fsql,
NLogManager nLogManager, NLogManager nLogManager,
IIdGenerator idGenerator, IIdGenerator idGenerator,
@ -41,7 +43,8 @@ namespace BBWYB.Server.Business
PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseSchemeBusiness purchaseSchemeBusiness,
ExpressCompanyNameConverter expressCompanyNameConverter, ExpressCompanyNameConverter expressCompanyNameConverter,
RestApiService restApiService, RestApiService restApiService,
KuaiDi100Manager kuaiDi100Manager) : base(fsql, nLogManager, idGenerator) KuaiDi100Manager kuaiDi100Manager,
QiKuManager qiKuManager) : base(fsql, nLogManager, idGenerator)
{ {
this.ppPlatformClientFactory = ppPlatformClientFactory; this.ppPlatformClientFactory = ppPlatformClientFactory;
this.taskSchedulerManager = taskSchedulerManager; this.taskSchedulerManager = taskSchedulerManager;
@ -59,6 +62,7 @@ namespace BBWYB.Server.Business
Enums.OrderState. Enums.OrderState.
}; };
this.kuaiDi100Manager = kuaiDi100Manager; this.kuaiDi100Manager = kuaiDi100Manager;
this.qiKuManager = qiKuManager;
} }
/// <summary> /// <summary>
@ -846,6 +850,10 @@ namespace BBWYB.Server.Business
.Where(ocd => ocd.PurchaseOrderId == request.PurchaseOrderId) .Where(ocd => ocd.PurchaseOrderId == request.PurchaseOrderId)
.ExecuteAffrows(); .ExecuteAffrows();
fsql.Delete<OrderPurchaseSkuInfo>().Where(opsi => opsi.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows();
fsql.Delete<OrderPurchaseRelationInfo>().Where(opri => opri.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows();
fsql.Delete<PurchaseExpressOrder>().Where(peo => peo.PurchaseOrderId == request.PurchaseOrderId).ExecuteAffrows();
fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows(); fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows();
}); });
} }
@ -1045,6 +1053,13 @@ namespace BBWYB.Server.Business
.Set(o => o.OrderState, dbOrder.OrderState); .Set(o => o.OrderState, dbOrder.OrderState);
#endregion #endregion
#region 通知齐库打包落仓情况
Task.Factory.StartNew(() => qiKuManager.PublishQiKu(orderPurchaseRelationList, orderPurchaseSkuList, purchaseExpressOrderList),
CancellationToken.None,
TaskCreationOptions.LongRunning,
taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
#region 通知C端订单状态 #region 通知C端订单状态
#endregion #endregion
@ -1061,44 +1076,44 @@ namespace BBWYB.Server.Business
}); });
} }
/// <summary> ///// <summary>
/// 签收采购单 ///// 签收采购单
/// </summary> ///// </summary>
/// <param name="request"></param> ///// <param name="request"></param>
public void SignPurchaseOrder(SignPurchaseOrderRequest request) //public void SignPurchaseOrder(SignPurchaseOrderRequest request)
{ //{
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne(); // var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
if (dbOrder == null) // if (dbOrder == null)
throw new BusinessException("无效订单号"); // throw new BusinessException("无效订单号");
if (dbOrder.OrderState == Enums.OrderState.) // if (dbOrder.OrderState == Enums.OrderState.已取消)
throw new BusinessException("订单已取消"); // throw new BusinessException("订单已取消");
if (dbOrder.OrderState == Enums.OrderState.) // if (dbOrder.OrderState == Enums.OrderState.已完成)
throw new BusinessException("订单已完成无需签收"); // throw new BusinessException("订单已完成无需签收");
var dbOrderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList(); // var dbOrderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList();
var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId); // var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
if (dbOrderPurchaseInfo == null) // if (dbOrderPurchaseInfo == null)
throw new BusinessException("无效采购单号"); // throw new BusinessException("无效采购单号");
if (!dbOrderPurchaseInfo.IsEnabled) // if (!dbOrderPurchaseInfo.IsEnabled)
throw new BusinessException("采购单已失效"); // throw new BusinessException("采购单已失效");
if (dbOrderPurchaseInfo.OrderState == Enums.PurchaseOrderState. || // if (dbOrderPurchaseInfo.OrderState == Enums.PurchaseOrderState.已签收 ||
dbOrderPurchaseInfo.IsSign == true) // dbOrderPurchaseInfo.IsSign == true)
throw new BusinessException("采购单已签收"); // throw new BusinessException("采购单已签收");
dbOrderPurchaseInfo.IsSign = true; // dbOrderPurchaseInfo.IsSign = true;
dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.; // dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.已签收;
dbOrder.CalculationOrderState(fsql, null, dbOrderPurchaseInfoList); // dbOrder.CalculationOrderState(fsql, null, dbOrderPurchaseInfoList);
fsql.Transaction(() => // fsql.Transaction(() =>
{ // {
fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo).ExecuteAffrows(); // fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo).ExecuteAffrows();
fsql.Update<Order>(dbOrder.Id) // fsql.Update<Order>(dbOrder.Id)
.Set(o => o.OrderState, dbOrder.OrderState) // .Set(o => o.OrderState, dbOrder.OrderState)
.Set(o => o.IsWaitPack, true).ExecuteAffrows(); // .Set(o => o.IsWaitPack, true).ExecuteAffrows();
}); // });
} //}
#region 1688CallBack #region 1688CallBack
public void CallbackFrom1688(string jsonStr) public void CallbackFrom1688(string jsonStr)
@ -1116,7 +1131,7 @@ namespace BBWYB.Server.Business
OrderPriceModificationCallbackFrom1688(jObject); //订单改价 OrderPriceModificationCallbackFrom1688(jObject); //订单改价
break; break;
case "LOGISTICS_BUYER_VIEW_TRACE": case "LOGISTICS_BUYER_VIEW_TRACE":
LogisticsUpdateCallbackFrom1688(jObject);//1688物流信息变更 // LogisticsUpdateCallbackFrom1688(jObject);//1688物流信息变更
break; break;
default: default:
break; break;
@ -1290,243 +1305,243 @@ namespace BBWYB.Server.Business
} }
#endregion #endregion
/// <summary> ///// <summary>
/// 采购平台发货回调 ///// 采购平台发货回调
/// </summary> ///// </summary>
/// <param name="purchaseOrderId"></param> ///// <param name="purchaseOrderId"></param>
/// <param name="wayBillNoResponse"></param> ///// <param name="wayBillNoResponse"></param>
/// <param name="callbackPlatform"></param> ///// <param name="callbackPlatform"></param>
private void DeliveryCallback(string purchaseOrderId, PP_QueryOrderLogisticsResponse wayBillNoResponse, Enums.Platform callbackPlatform) //private void DeliveryCallback(string purchaseOrderId, PP_QueryOrderLogisticsResponse wayBillNoResponse, Enums.Platform callbackPlatform)
{ //{
string currentProgress = string.Empty; // string currentProgress = string.Empty;
string wayBillNoResponseInfo = string.Empty; // string wayBillNoResponseInfo = string.Empty;
string expressCompanyListInfo = string.Empty; // string expressCompanyListInfo = string.Empty;
string expressCompanyInfo = string.Empty; // string expressCompanyInfo = string.Empty;
string orderId = string.Empty; // string orderId = string.Empty;
long? shopId = null; // long? shopId = null;
try // try
{ // {
#region 查询代发信息 // #region 查询代发信息
currentProgress = "查询代发信息"; // currentProgress = "查询代发信息";
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(o => o.PurchaseOrderId == purchaseOrderId && o.IsEnabled == true).ToOne(); // var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(o => o.PurchaseOrderId == purchaseOrderId && o.IsEnabled == true).ToOne();
if (orderPurchaseInfo == null) // if (orderPurchaseInfo == null)
throw new Exception("未查询到代发信息"); // throw new Exception("未查询到代发信息");
orderId = orderPurchaseInfo.OrderId; // orderId = orderPurchaseInfo.OrderId;
shopId = orderPurchaseInfo.ShopId; // shopId = orderPurchaseInfo.ShopId;
#endregion
//#region 查询采购账号的归属店铺
//currentProgress = "查询采购账号归属店铺";
//var shop = venderBusiness.GetShopList(shopId: shopId)?.FirstOrDefault();
//if (shop == null)
// throw new Exception("未查询到店铺信息");
// #endregion // #endregion
#region 查询采购账号 // //#region 查询采购账号的归属店铺
currentProgress = "查询采购账号"; // //currentProgress = "查询采购账号归属店铺";
var purchaseAccount = fsqlManager.MDSfsql.Select<Purchaseaccount>().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); // //var shop = venderBusiness.GetShopList(shopId: shopId)?.FirstOrDefault();
if (purchaseAccount == null) // //if (shop == null)
throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); // // throw new Exception("未查询到店铺信息");
#endregion // //#endregion
#region 获取采购单的物流信息 // #region 查询采购账号
currentProgress = "获取采购单的物流信息"; // currentProgress = "查询采购账号";
if (wayBillNoResponse == null) // var purchaseAccount = fsqlManager.MDSfsql.Select<Purchaseaccount>().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne();
{ // if (purchaseAccount == null)
var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)callbackPlatform); // throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}");
var ppQueryOrderLogisticsRequest = new PP_QueryOrderLogisticsRequest() // #endregion
{
AppKey = purchaseAccount.AppKey,
AppSecret = purchaseAccount.AppSecret,
AppToken = purchaseAccount.AppToken,
OrderId = purchaseOrderId,
Platform = (AdapterEnums.PlatformType)callbackPlatform
};
wayBillNoResponse = client.QueryOrderLogistics(ppQueryOrderLogisticsRequest);
wayBillNoResponseInfo = JsonConvert.SerializeObject(new { Request = ppQueryOrderLogisticsRequest, Result = wayBillNoResponse });
}
#endregion
//#region 获取目标平台的物流公司列表 // #region 获取采购单的物流信息
//currentProgress = "获取店铺平台物流公司列表"; // currentProgress = "获取采购单的物流信息";
//var expressCompanyList = venderBusiness.GetExpressCompanyList(new PlatformRequest() // if (wayBillNoResponse == null)
// { // {
// AppKey = shop.AppKey, // var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)callbackPlatform);
// AppSecret = shop.AppSecret, // var ppQueryOrderLogisticsRequest = new PP_QueryOrderLogisticsRequest()
// AppToken = shop.AppToken, // {
// Platform = shop.PlatformId // AppKey = purchaseAccount.AppKey,
//}); // AppSecret = purchaseAccount.AppSecret,
//if (expressCompanyList != null) // AppToken = purchaseAccount.AppToken,
// expressCompanyListInfo = JsonConvert.SerializeObject(expressCompanyList); // OrderId = purchaseOrderId,
// Platform = (AdapterEnums.PlatformType)callbackPlatform
// };
// wayBillNoResponse = client.QueryOrderLogistics(ppQueryOrderLogisticsRequest);
// wayBillNoResponseInfo = JsonConvert.SerializeObject(new { Request = ppQueryOrderLogisticsRequest, Result = wayBillNoResponse });
// }
// #endregion // #endregion
// //#region 获取目标平台的物流公司列表
// //currentProgress = "获取店铺平台物流公司列表";
//#region 物流公司翻译 // //var expressCompanyList = venderBusiness.GetExpressCompanyList(new PlatformRequest()
//currentProgress = "物流公司翻译"; // //{
// // AppKey = shop.AppKey,
//OP_QueryExpressCompanyResponse convertExpressCompany = null; // // AppSecret = shop.AppSecret,
// // AppToken = shop.AppToken,
//try // // Platform = shop.PlatformId
//{ // //});
// convertExpressCompany = expressCompanyNameConverter.Converter(wayBillNoResponse.ExpressName, // //if (expressCompanyList != null)
// (AdapterEnums.PlatformType)callbackPlatform, // // expressCompanyListInfo = JsonConvert.SerializeObject(expressCompanyList);
// (AdapterEnums.PlatformType)shop.PlatformId, // //#endregion
// expressCompanyList);
// if (convertExpressCompany != null)
// expressCompanyInfo = JsonConvert.SerializeObject(convertExpressCompany);
// //#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,
// // 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
// nLogManager.Default().Info($"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}");
// } // }
//catch // catch (Exception ex)
// { // {
// throw; // nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}");
// } // }
//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,
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
///// <summary>
///// 1688物流信息变更回调
///// </summary>
///// <param name="jObject"></param>
//private void LogisticsUpdateCallbackFrom1688(JObject jObject)
//{
// Task.Factory.StartNew(() =>
// {
// IList<IUpdate<OrderPurchaseSkuInfo>> updateOrderPurchaseSkuInfoList = new List<IUpdate<OrderPurchaseSkuInfo>>();
// IList<IUpdate<OrderPurchaseInfo>> updateOrderPurchaseInfoList = new List<IUpdate<OrderPurchaseInfo>>();
nLogManager.Default().Info($"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}"); // var statusChanged = jObject["data"]["OrderLogisticsTracingModel"].Value<string>("statusChanged").ToUpper();
} // var orderLogsItems = jObject["data"]["OrderLogisticsTracingModel"]["orderLogsItems"].Children();
catch (Exception ex)
{
nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}");
}
}
/// <summary>
/// 1688物流信息变更回调
/// </summary>
/// <param name="jObject"></param>
private void LogisticsUpdateCallbackFrom1688(JObject jObject)
{
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();
var purchaseOrderIds = orderLogsItems.Select(x => x.Value<string>("orderId")).Distinct().ToList(); // var purchaseOrderIds = orderLogsItems.Select(x => x.Value<string>("orderId")).Distinct().ToList();
var orderEntryIds = orderLogsItems.Select(x => x.Value<string>("orderEntryId")).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 dbOrderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => purchaseOrderIds.Contains(opi.PurchaseOrderId) && opi.IsEnabled == true).ToList();
var dbOrderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>() // var dbOrderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>()
.WhereIf(purchaseOrderIds.Count() > 1, ops => purchaseOrderIds.Contains(ops.PurchaseOrderId)) // .WhereIf(purchaseOrderIds.Count() > 1, ops => purchaseOrderIds.Contains(ops.PurchaseOrderId))
.WhereIf(purchaseOrderIds.Count() == 1, ops => ops.PurchaseOrderId == purchaseOrderIds[0]) // .WhereIf(purchaseOrderIds.Count() == 1, ops => ops.PurchaseOrderId == purchaseOrderIds[0])
.ToList(); // .ToList();
var dbOrderPurchaseRelationInfoList = fsql.Select<OrderPurchaseRelationInfo>() // var dbOrderPurchaseRelationInfoList = fsql.Select<OrderPurchaseRelationInfo>()
.WhereIf(purchaseOrderIds.Count() > 1, opr => purchaseOrderIds.Contains(opr.PurchaseOrderId)) // .WhereIf(purchaseOrderIds.Count() > 1, opr => purchaseOrderIds.Contains(opr.PurchaseOrderId))
.WhereIf(purchaseOrderIds.Count() == 1, opr => opr.PurchaseOrderId == purchaseOrderIds[0]) // .WhereIf(purchaseOrderIds.Count() == 1, opr => opr.PurchaseOrderId == purchaseOrderIds[0])
.ToList(); // .ToList();
foreach (var orderEntryId in orderEntryIds) // foreach (var orderEntryId in orderEntryIds)
{ // {
var dbOrderPurchaseSkuInfo = dbOrderPurchaseSkuInfoList.FirstOrDefault(x => x.Id == orderEntryId); // var dbOrderPurchaseSkuInfo = dbOrderPurchaseSkuInfoList.FirstOrDefault(x => x.Id == orderEntryId);
if (dbOrderPurchaseSkuInfo.ExpressState != statusChanged) // if (dbOrderPurchaseSkuInfo.ExpressState != statusChanged)
{ // {
var update = fsql.Update<OrderPurchaseSkuInfo>(orderEntryId).Set(x => x.ExpressState, statusChanged) // var update = fsql.Update<OrderPurchaseSkuInfo>(orderEntryId).Set(x => x.ExpressState, statusChanged)
.Set(x => x.ExpressChangeTime, DateTime.Now); // .Set(x => x.ExpressChangeTime, DateTime.Now);
updateOrderPurchaseSkuInfoList.Add(update); // updateOrderPurchaseSkuInfoList.Add(update);
dbOrderPurchaseSkuInfo.ExpressState = statusChanged; // dbOrderPurchaseSkuInfo.ExpressState = statusChanged;
} // }
} // }
if (statusChanged == "SIGN") // if (statusChanged == "SIGN")
{ // {
var groupsByPoIds = dbOrderPurchaseSkuInfoList.GroupBy(x => x.PurchaseOrderId); // var groupsByPoIds = dbOrderPurchaseSkuInfoList.GroupBy(x => x.PurchaseOrderId);
foreach (var group in groupsByPoIds) // foreach (var group in groupsByPoIds)
{ // {
var isSignAll = group.Count() == group.Where(x => x.ExpressState == "SIGN").Count(); // var isSignAll = group.Count() == group.Where(x => x.ExpressState == "SIGN").Count();
if (isSignAll) // if (isSignAll)
{ // {
var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(x => x.PurchaseOrderId == group.Key && x.IsEnabled == true); // var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(x => x.PurchaseOrderId == group.Key && x.IsEnabled == true);
if (dbOrderPurchaseInfo != null) // if (dbOrderPurchaseInfo != null)
{ // {
dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.; // dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.已签收;
updateOrderPurchaseInfoList.Add(fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo)); // updateOrderPurchaseInfoList.Add(fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo));
} // }
} // }
#region 通知齐库 // #region 通知齐库
var relationList = dbOrderPurchaseRelationInfoList.Where(x => x.PurchaseOrderId == group.Key).ToList(); // var relationList = dbOrderPurchaseRelationInfoList.Where(x => x.PurchaseOrderId == group.Key).ToList();
foreach (var relation in relationList) // foreach (var relation in relationList)
{ // {
try // try
{ // {
restApiService.SendRequest("http://qiku.qiyue666.com", // restApiService.SendRequest("http://qiku.qiyue666.com",
"/Api/PackPurchaseTask/UpdateAvailabilityState", // "/Api/PackPurchaseTask/UpdateAvailabilityState",
new // new
{ // {
availability = isSignAll ? 0 : 1, // availability = isSignAll ? 0 : 1,
orderId = relation.OrderId, // orderId = relation.OrderId,
skuId = relation.SourceSkuId // skuId = relation.SourceSkuId
}, // },
null, // null,
HttpMethod.Post); // HttpMethod.Post);
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
} // }
} // }
#endregion // #endregion
} // }
} // }
if (updateOrderPurchaseSkuInfoList.Count() > 0 || updateOrderPurchaseInfoList.Count() > 0) // if (updateOrderPurchaseSkuInfoList.Count() > 0 || updateOrderPurchaseInfoList.Count() > 0)
{ // {
fsql.Transaction(() => // fsql.Transaction(() =>
{ // {
foreach (var update in updateOrderPurchaseSkuInfoList) // foreach (var update in updateOrderPurchaseSkuInfoList)
update.ExecuteAffrows(); // update.ExecuteAffrows();
foreach (var update in updateOrderPurchaseInfoList) // foreach (var update in updateOrderPurchaseInfoList)
update.ExecuteAffrows(); // update.ExecuteAffrows();
}); // });
} // }
}, CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); // }, CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
} //}
/// <summary> /// <summary>
/// 采购平台改价回调 /// 采购平台改价回调
@ -1652,5 +1667,108 @@ namespace BBWYB.Server.Business
nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId},执行进度[{currentProgress}]"); nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId},执行进度[{currentProgress}]");
} }
} }
public void KuaiDi100Publish(string param)
{
Task.Factory.StartNew(() => KuaiDi100PublishCore(param), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
}
private void KuaiDi100PublishCore(string param)
{
nLogManager.GetLogger("快递100").Info($"KuaiDi100Publish {param}");
JObject jobject = JObject.Parse(param);
var waybillNo = jobject["lastResult"].Value<string>("nu");
try
{
var state = jobject["lastResult"].Value<int>("state");
var convertState = kuaiDi100Manager.GetExpressState(state);
if (convertState == "Unknow")
return;
var dataArray = jobject["lastResult"]["data"].Children().Select(d => new
{
context = d.Value<string>("context"),
ftime = d.Value<DateTime>("ftime"),
statusCode = d.Value<int>("statusCode")
}).OrderByDescending(d => d.ftime).ToList();
var lastData = dataArray.FirstOrDefault();
IUpdate<PurchaseExpressOrder> updatePurchaseExpressOrder = null;
IUpdate<OrderPurchaseInfo> updateOrderPurchase = null;
IUpdate<Order> updateOrder = null;
#region 查询该笔快递单
var tpeo = fsql.Select<PurchaseExpressOrder>(waybillNo).ToOne();
if (tpeo == null)
throw new Exception("未查询到快递单");
#endregion
#region 查询订单/采购单/采购sku/快递单/采购关系
var dbOrder = fsql.Select<Order>(tpeo.OrderId).ToOne(o => new Order
{
Id = o.Id,
ShopId = o.ShopId,
OrderState = o.OrderState
});
if (dbOrder == null)
throw new Exception("未查询到订单");
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == dbOrder.Id && opi.IsEnabled == true).ToList();
var orderPurchaseInfo = orderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == tpeo.PurchaseOrderId);
if (orderPurchaseInfo == null)
throw new Exception("未查询到采购单");
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(x => x.PurchaseOrderId == tpeo.PurchaseOrderId).ToList();
if (orderPurchaseSkuList.Count() == 0)
throw new BusinessException("未查询到采购单sku信息");
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(x => x.PurchaseOrderId == tpeo.PurchaseOrderId).ToList();
var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(exo => exo.WaybillNo == waybillNo);
purchaseExpressOrder.ExpressState = convertState;
purchaseExpressOrder.ExpressChangedTime = lastData.ftime;
purchaseExpressOrder.ExpressContent = lastData.context;
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
#region 计算采购单状态
orderPurchaseInfo.CalculationOrderState(fsql, orderPurchaseSkuList, purchaseExpressOrderList);
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 通知齐库打包落仓情况
Task.Factory.StartNew(() => qiKuManager.PublishQiKu(orderPurchaseRelationList, orderPurchaseSkuList, purchaseExpressOrderList),
CancellationToken.None,
TaskCreationOptions.LongRunning,
taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
#region 通知C端状态
#endregion
fsql.Transaction(() =>
{
updatePurchaseExpressOrder?.ExecuteAffrows();
updateOrderPurchase?.ExecuteAffrows();
updateOrder?.ExecuteAffrows();
});
}
catch (Exception ex)
{
nLogManager.GetLogger("快递100").Error(ex, waybillNo);
}
}
} }
} }

66
BBWYB.Server.Business/QiKuManager.cs

@ -0,0 +1,66 @@
using BBWYB.Common.Http;
using BBWYB.Common.Models;
using BBWYB.Server.Model.Db;
namespace BBWYB.Server.Business
{
public class QiKuManager : IDenpendency
{
private RestApiService restApiService;
public QiKuManager(RestApiService restApiService)
{
this.restApiService = restApiService;
}
/// <summary>
/// 通知齐库
/// </summary>
/// <param name="orderPurchaseRelationInfoList"></param>
/// <param name="orderPurchaseSkuInfoList"></param>
/// <param name="purchaseExpressOrderList"></param>
public void PublishQiKu(IList<OrderPurchaseRelationInfo> orderPurchaseRelationInfoList,
IList<OrderPurchaseSkuInfo> orderPurchaseSkuInfoList,
IList<PurchaseExpressOrder> purchaseExpressOrderList)
{
try
{
var relationGroups = orderPurchaseRelationInfoList.GroupBy(opri => opri.SourceSkuId);
foreach (var relationGroup in relationGroups)
{
bool isSignAll = true;
foreach (var relation in relationGroup)
{
var purchaseSku = orderPurchaseSkuInfoList.FirstOrDefault(x => x.PurchaseSkuId == relation.PurchaseSkuId);
if (purchaseSku == null || string.IsNullOrEmpty(purchaseSku.WaybillNo))
{
isSignAll = false;
continue;
}
var purchaseExpressOrder = purchaseExpressOrderList.FirstOrDefault(x => x.WaybillNo == purchaseSku.WaybillNo);
if (purchaseExpressOrder == null || purchaseExpressOrder.ExpressState != "QianShou")
{
isSignAll = false;
continue;
}
}
restApiService.SendRequest("http://qiku.qiyue666.com",
"/Api/PackPurchaseTask/UpdateAvailabilityState",
new
{
availability = isSignAll ? 0 : 1,
orderId = relationGroup.FirstOrDefault().OrderId,
skuId = relationGroup.Key
},
null,
HttpMethod.Post);
}
}
catch (Exception ex)
{
}
}
}
}

10
BBWYB.Server.Model/Db/Order/OrderPurchaseInfo.cs

@ -101,11 +101,11 @@ namespace BBWYB.Server.Model.Db
[Column(StringLength = 500)] [Column(StringLength = 500)]
public string Remark { get; set; } public string Remark { get; set; }
/// <summary> ///// <summary>
/// 是否签收 ///// 是否签收
/// </summary> ///// </summary>
[Column(DbType = "bit")] //[Column(DbType = "bit")]
public bool? IsSign { get; set; } = false; //public bool? IsSign { get; set; } = false;
/// <summary> /// <summary>
/// 꽃뭔데榴檄 /// 꽃뭔데榴檄

2
BBWYB.Server.Model/Db/Order/PurchaseExpressOrder.cs

@ -35,7 +35,7 @@ namespace BBWYB.Server.Model.Db
public string ExpressContent { get; set; } public string ExpressContent { get; set; }
/// <summary> /// <summary>
/// 物流状态 /// 物流状态 (ZaiTu,LanShou,QianShou,PaiJian,Unknow)
/// </summary> /// </summary>
[Column(StringLength = 100)] [Column(StringLength = 100)]
public string ExpressState { get; set; } public string ExpressState { get; set; }

6
BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs

@ -4,12 +4,6 @@ namespace BBWYB.Server.Model.Dto
{ {
public class OrderPurchaseInfoResponse : OrderPurchaseInfo public class OrderPurchaseInfoResponse : OrderPurchaseInfo
{ {
///// <summary>
///// 物流状态
///// <para>1688物流状态: 发货(CONSIGN)、揽收(ACCEPT)、运输(TRANSPORT)、派送(DELIVERING)、签收(SIGN)</para>
///// </summary>
//public string ExpressState { get; set; }
/// <summary> /// <summary>
/// 采购sku列表 /// 采购sku列表
/// </summary> /// </summary>

Loading…
Cancel
Save