Browse Source

入库采购单查询

yijia
shanji 2 years ago
parent
commit
1238c820d4
  1. 22
      BBWYB.Server.Business/Extensions/OrderStateExtension.cs
  2. 54
      BBWYB.Server.Business/JD/JDBusiness.cs
  3. 2
      BBWYB.Server.Business/Order/OrderBusiness.cs
  4. 353
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  5. 5
      BBWYB.Server.Business/Vender/VenderBusiness.cs
  6. 34
      BBWYB.Server.Model/Dto/Response/JD/JDInStoreOrderDetail.cs

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

@ -2,6 +2,7 @@
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using JD.Dto;
namespace BBWYB.Server.Business
{
@ -11,14 +12,19 @@ namespace BBWYB.Server.Business
/// 计算订单状态
/// </summary>
/// <param name="order"></param>
/// <param name="fsql"></param>
/// <param name="IsNotifyDingDingWhenInStoreOrderFail">是否在入库单验证失败后通知钉钉</param>
/// <param name="orderSkuList"></param>
/// <param name="orderPurchaseInfoList"></param>
/// <returns></returns>
/// <param name="jdInStoreOrderDetailList"></param>
public static void CalculationOrderState(this Order order,
IFreeSql fsql,
out bool IsNotifyDingDingWhenInStoreOrderFail,
IList<OrderSku> orderSkuList = null,
IList<OrderPurchaseInfo> orderPurchaseInfoList = null)
IList<OrderPurchaseInfo> orderPurchaseInfoList = null,
IList<JDInStoreOrderDetail> jdInStoreOrderDetailList = null)
{
IsNotifyDingDingWhenInStoreOrderFail = false;
if (order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState.)
@ -112,8 +118,16 @@ namespace BBWYB.Server.Business
else
order.OrderState = Enums.OrderState.;
}
else
order.OrderState = Enums.OrderState.;
else if (order.IntoStoreType == Enums.IntoStoreType.)
{
if (jdInStoreOrderDetailList == null || jdInStoreOrderDetailList.Count() == 0 || jdInStoreOrderDetailList.Any(x => x.storageStatus != "2"))
{
order.OrderState = Enums.OrderState.;
IsNotifyDingDingWhenInStoreOrderFail = true;
}
else
order.OrderState = Enums.OrderState.;
}
return;
}
#endregion

54
BBWYB.Server.Business/JD/JDBusiness.cs

@ -0,0 +1,54 @@
using BBWYB.Common.Http;
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using JD.Dto;
using Newtonsoft.Json;
using Yitter.IdGenerator;
namespace BBWYB.Server.Business.JD
{
public class JDBusiness : BaseBusiness, IDenpendency
{
private RestApiService restApiService;
private VenderBusiness venderBusiness;
public JDBusiness(IFreeSql fsql,
NLogManager nLogManager,
IIdGenerator idGenerator,
RestApiService restApiService,
VenderBusiness venderBusiness) : base(fsql, nLogManager, idGenerator)
{
this.restApiService = restApiService;
this.venderBusiness = venderBusiness;
}
public ApiResponse<IList<JDInStoreOrderDetail>> GetJDInStoreOrderDetailList(string sourceShopName, IList<string> poOrderNos)
{
var shop = venderBusiness.GetShopList(shopName: sourceShopName).FirstOrDefault();
if (shop == null)
return new ApiResponse<IList<JDInStoreOrderDetail>>() { Code = 0, Msg = $"未找到店铺{sourceShopName}" };
try
{
var httpResult = restApiService.SendRequest("https://yunding.qiyue666.com/", "api/PlatformSDK/GetJDInStorePurchaseOrderList", new
{
Platform = shop.PlatformId,
shop.AppKey,
shop.AppSecret,
shop.AppToken,
PoOrderNos = string.Join(',', poOrderNos)
}, null, HttpMethod.Post);
if (httpResult.StatusCode != System.Net.HttpStatusCode.OK)
return new ApiResponse<IList<JDInStoreOrderDetail>>() { Code = 0, Msg = httpResult.Content };
var response = JsonConvert.DeserializeObject<ApiResponse<IList<JDInStoreOrderDetail>>>(httpResult.Content);
return response;
}
catch (Exception ex)
{
return new ApiResponse<IList<JDInStoreOrderDetail>>() { Code = 0, Msg = ex.Message };
}
}
}
}

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

@ -548,7 +548,7 @@ namespace BBWYB.Server.Business
updateOrderSku = fsql.Update<OrderSku>(orderSku.Id).Set(osku => osku.IsCheck, true);
var oldOrderState = dbOrder.OrderState;
dbOrder.CalculationOrderState(fsql, orderSkuList, null);
dbOrder.CalculationOrderState(fsql, out _, orderSkuList, null);
if (oldOrderState != dbOrder.OrderState)
updateOrder = fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState);

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

@ -2,12 +2,14 @@
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using BBWYB.Server.Business.Extensions;
using BBWYB.Server.Business.JD;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Db.Mds;
using BBWYB.Server.Model.Db.MDS;
using BBWYB.Server.Model.Dto;
using FreeSql;
using JD.Dto;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
@ -29,6 +31,7 @@ namespace BBWYB.Server.Business
private Lazy<DingDingBusiness> dingDingBusinessLazy;
private Lazy<QiKuManager> qiKuManagerLazy;
private Lazy<RestApiService> restApiServiceLazy;
private Lazy<JDBusiness> jdBusinessLazy;
private PP_PlatformClientFactory ppPlatformClientFactory => pplatformClientFactoryLazy.Value;
private TaskSchedulerManager taskSchedulerManager => taskSchedulerManagerLazy.Value;
@ -39,6 +42,8 @@ namespace BBWYB.Server.Business
private QiKuManager qiKuManager => qiKuManagerLazy.Value;
private RestApiService restApiService => restApiServiceLazy.Value;
private JDBusiness jdBusiness => jdBusinessLazy.Value;
private IList<Enums.OrderState> cantPurchaseOrderStateList;
public PurchaseOrderBusiness(IFreeSql fsql,
@ -54,6 +59,7 @@ namespace BBWYB.Server.Business
dingDingBusinessLazy = new Lazy<DingDingBusiness>(() => serviceProvider.GetService<DingDingBusiness>());
qiKuManagerLazy = new Lazy<QiKuManager>(() => serviceProvider.GetService<QiKuManager>());
restApiServiceLazy = new Lazy<RestApiService>(() => serviceProvider.GetService<RestApiService>());
jdBusinessLazy = new Lazy<JDBusiness>(() => serviceProvider.GetService<JDBusiness>());
cantPurchaseOrderStateList = new List<Enums.OrderState>()
{
Enums.OrderState.,
@ -489,7 +495,7 @@ namespace BBWYB.Server.Business
#endregion
#region 订单状态
dbOrder.CalculationOrderState(fsql, orderSkus, orderPurchaseInfoList.Union(insertOrderPurchaseInfos).ToList());
dbOrder.CalculationOrderState(fsql, out _, orderSkus, orderPurchaseInfoList.Union(insertOrderPurchaseInfos).ToList());
#endregion
#region 通知C端状态
@ -953,7 +959,7 @@ namespace BBWYB.Server.Business
updateOrderCost = fsql.Update<OrderCost>().SetSource(dbOrderCost);
#region 订单状态
dbOrder.CalculationOrderState(fsql, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList());
dbOrder.CalculationOrderState(fsql, out _, dbOrderSkuList, dbPurchaseOrderList.Union(insertOrderPurchaseInfoList).ToList());
#endregion
#region 通知C端状态
@ -1156,7 +1162,7 @@ namespace BBWYB.Server.Business
orderPurchaseInfoList.Remove(historyPurchaseOrder);
dbOrder.CalculationOrderState(fsql, orderPurchaseInfoList: orderPurchaseInfoList);
dbOrder.CalculationOrderState(fsql, out _, orderPurchaseInfoList: orderPurchaseInfoList);
fsql.Transaction(() =>
{
@ -1282,7 +1288,7 @@ namespace BBWYB.Server.Business
dingdingMsg.AppendLine($"快递单号:{request.NewWaybillNo}");
dingdingMsg.AppendLine("触发环节:修改物流单号");
dingdingMsg.Append($"店铺名:{shop.ShopName}");
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
}
insertPEO = fsql.Insert(newPeo);
@ -1335,7 +1341,7 @@ namespace BBWYB.Server.Business
#region 计算订单状态
var oldOrderState = dbOrder.OrderState;
dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList);
dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList);
if (oldOrderState != dbOrder.OrderState)
{
updateOrder = fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState);
@ -1484,7 +1490,7 @@ namespace BBWYB.Server.Business
dingdingMsg.AppendLine($"快递单号:{request.WaybillNo}");
dingdingMsg.AppendLine("触发环节:手动发货");
dingdingMsg.Append($"店铺名:{shop.ShopName}");
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
}
#endregion
@ -1535,7 +1541,7 @@ namespace BBWYB.Server.Business
#endregion
#region 计算订单状态
dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList);
dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList);
updateOrder = fsql.Update<Order>(dbOrder.Id)
.Set(o => o.OrderState, dbOrder.OrderState);
#endregion
@ -1659,7 +1665,7 @@ namespace BBWYB.Server.Business
dingdingMsg.AppendLine($"快递单号:{peoRequest.WaybillNo}");
dingdingMsg.AppendLine("触发环节:手动发货");
dingdingMsg.Append($"店铺名:{shop.ShopName}");
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
}
}
@ -1729,7 +1735,7 @@ namespace BBWYB.Server.Business
#endregion
#region 计算订单状态
dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList);
dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList);
updateOrder = fsql.Update<Order>(dbOrder.Id)
.Set(o => o.OrderState, dbOrder.OrderState);
#endregion
@ -2122,7 +2128,7 @@ namespace BBWYB.Server.Business
dingdingMsg.AppendLine($"快递单号:{logisticsInfo.WayBillNo}");
dingdingMsg.AppendLine("触发环节:1688发货回调");
dingdingMsg.Append($"店铺名:{shop.ShopName}");
Task.Factory.StartNew(() => SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
}
}
@ -2181,7 +2187,7 @@ namespace BBWYB.Server.Business
#endregion
#region 计算订单状态
dbOrder.CalculationOrderState(fsql, null, orderPurchaseInfoList);
dbOrder.CalculationOrderState(fsql, out _, null, orderPurchaseInfoList);
updateOrder = fsql.Update<Order>(dbOrder.Id)
.Set(o => o.OrderState, dbOrder.OrderState);
#endregion
@ -2222,243 +2228,6 @@ namespace BBWYB.Server.Business
}
#endregion
///// <summary>
///// 采购平台发货回调
///// </summary>
///// <param name="purchaseOrderId"></param>
///// <param name="wayBillNoResponse"></param>
///// <param name="callbackPlatform"></param>
//private void DeliveryCallback(string purchaseOrderId, PP_QueryOrderLogisticsResponse wayBillNoResponse, Enums.Platform callbackPlatform)
//{
// string currentProgress = string.Empty;
// string wayBillNoResponseInfo = string.Empty;
// string expressCompanyListInfo = string.Empty;
// string expressCompanyInfo = string.Empty;
// string orderId = string.Empty;
// long? shopId = null;
// try
// {
// #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;
// #endregion
// //#region 查询采购账号的归属店铺
// //currentProgress = "查询采购账号归属店铺";
// //var shop = venderBusiness.GetShopList(shopId: shopId)?.FirstOrDefault();
// //if (shop == null)
// // throw new Exception("未查询到店铺信息");
// //#endregion
// #region 查询采购账号
// currentProgress = "查询采购账号";
// var purchaseAccount = fsqlManager.MDSfsql.Select<Purchaseaccount>().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne();
// if (purchaseAccount == null)
// throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}");
// #endregion
// #region 获取采购单的物流信息
// currentProgress = "获取采购单的物流信息";
// if (wayBillNoResponse == null)
// {
// var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)callbackPlatform);
// var ppQueryOrderLogisticsRequest = new PP_QueryOrderLogisticsRequest()
// {
// 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 获取目标平台的物流公司列表
// //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,
// // 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 (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 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])
// .ToList();
// var dbOrderPurchaseRelationInfoList = fsql.Select<OrderPurchaseRelationInfo>()
// .WhereIf(purchaseOrderIds.Count() > 1, opr => purchaseOrderIds.Contains(opr.PurchaseOrderId))
// .WhereIf(purchaseOrderIds.Count() == 1, opr => opr.PurchaseOrderId == purchaseOrderIds[0])
// .ToList();
// foreach (var orderEntryId in orderEntryIds)
// {
// var dbOrderPurchaseSkuInfo = dbOrderPurchaseSkuInfoList.FirstOrDefault(x => x.Id == orderEntryId);
// if (dbOrderPurchaseSkuInfo.ExpressState != statusChanged)
// {
// var update = fsql.Update<OrderPurchaseSkuInfo>(orderEntryId).Set(x => x.ExpressState, statusChanged)
// .Set(x => x.ExpressChangeTime, DateTime.Now);
// updateOrderPurchaseSkuInfoList.Add(update);
// dbOrderPurchaseSkuInfo.ExpressState = statusChanged;
// }
// }
// if (statusChanged == "SIGN")
// {
// var groupsByPoIds = dbOrderPurchaseSkuInfoList.GroupBy(x => x.PurchaseOrderId);
// 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)
// {
// try
// {
// restApiService.SendRequest("http://qiku.qiyue666.com",
// "/Api/PackPurchaseTask/UpdateAvailabilityState",
// new
// {
// availability = isSignAll ? 0 : 1,
// orderId = relation.OrderId,
// skuId = relation.SourceSkuId
// },
// null,
// HttpMethod.Post);
// }
// catch (Exception ex)
// {
// }
// }
// #endregion
// }
// }
// if (updateOrderPurchaseSkuInfoList.Count() > 0 || updateOrderPurchaseInfoList.Count() > 0)
// {
// fsql.Transaction(() =>
// {
// foreach (var update in updateOrderPurchaseSkuInfoList)
// update.ExecuteAffrows();
// foreach (var update in updateOrderPurchaseInfoList)
// update.ExecuteAffrows();
// });
// }
// }, CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
//}
/// <summary>
/// 采购平台改价回调
@ -2652,9 +2421,11 @@ namespace BBWYB.Server.Business
var orderList = fsql.Select<Order>(orderIds).ToList(o => new Order
{
Id = o.Id,
OrderSn = o.OrderSn,
ShopId = o.ShopId,
OrderState = o.OrderState,
IntoStoreType = o.IntoStoreType
IntoStoreType = o.IntoStoreType,
SourceShopName = o.SourceShopName
});
if (orderList.Count() == 0)
throw new Exception("未查询到任何订单");
@ -2713,6 +2484,12 @@ namespace BBWYB.Server.Business
updatePurchaseExpressOrder = fsql.Update<PurchaseExpressOrder>().SetSource(tpeo);
#endregion
#region 查询入库单信息
IList<InStorePurchaseOrdeRrelationInfo> inStoreOrderRelationList = null;
if (orderList.Any(o => o.IntoStoreType == Enums.IntoStoreType.) && state == "QianShou")
inStoreOrderRelationList = fsql.Select<InStorePurchaseOrdeRrelationInfo>().Where(i => orderIds.Contains(i.OrderId)).ToList();
#endregion
#region 计算订单状态和采购单状态
foreach (var order in orderList)
{
@ -2749,7 +2526,81 @@ namespace BBWYB.Server.Business
}
var oldOrderState = order.OrderState;
order.CalculationOrderState(fsql, currentOrderSkuList, currentPurchaseOrderList);
if (order.IntoStoreType == Enums.IntoStoreType. && state == "QianShou")
{
#region 检查入库采购单状态
var isNotifyDingDingWhenInOrderFail = false;
var currentOrder_InStoreOrderRelationList = inStoreOrderRelationList.Where(i => i.OrderId == order.Id).ToList();
ApiResponse<IList<JDInStoreOrderDetail>> inStoreResponse = null;
if (currentOrder_InStoreOrderRelationList.Count() > 0)
{
var poOrderNos = currentOrder_InStoreOrderRelationList.Select(i => i.InStorePurchaseOrderId).Distinct().ToList();
//查询京东
inStoreResponse = jdBusiness.GetJDInStoreOrderDetailList(order.SourceShopName, poOrderNos);
}
order.CalculationOrderState(fsql, out isNotifyDingDingWhenInOrderFail, currentOrderSkuList, currentPurchaseOrderList, inStoreResponse?.Data);
if (isNotifyDingDingWhenInOrderFail && inStoreResponse != null)
{
#region 入库单查询有误,通知钉钉
var dingdingMsg = new StringBuilder();
if (inStoreResponse.Data == null || inStoreResponse.Data.Count() == 0)
{
foreach (var opi in currentPurchaseOrderList)
{
dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}");
dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}");
dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}");
dingdingMsg.AppendLine("缺少入仓采购单号");
dingdingMsg.AppendLine();
}
}
else
{
foreach (var inStoreOrderRelation in currentOrder_InStoreOrderRelationList)
{
var jdInStore = inStoreResponse.Data.FirstOrDefault(x => x.poOrderNo == inStoreOrderRelation.InStorePurchaseOrderId);
if (jdInStore == null || jdInStore.storageStatus == "2")
continue;
var opi = currentPurchaseOrderList.FirstOrDefault(opi => opi.PurchaseOrderId == inStoreOrderRelation.PurchaseOrderId);
if (opi == null)
continue;
var stateText = "";
switch (jdInStore.storageStatus)
{
case "1":
stateText = "有差异待确认";
break;
case "3":
stateText = "待确认";
break;
case "4":
stateText = "有差异已确认";
break;
}
dingdingMsg.AppendLine($"拳探订单号:{order.OrderSn}");
dingdingMsg.AppendLine($"采购平台:{opi.PurchasePlatform}");
dingdingMsg.AppendLine($"采购单号:{opi.PurchaseOrderId}");
dingdingMsg.AppendLine($"入仓采购单号:{inStoreOrderRelation.InStorePurchaseOrderId}");
dingdingMsg.AppendLine($"入仓采购单状态:{jdInStore.storageStatus} {stateText}");
dingdingMsg.AppendLine();
}
}
Task.Factory.StartNew(() => SendDingDing(dingdingMsg.ToString()), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
#endregion
}
#endregion
}
else
{
order.CalculationOrderState(fsql, out _, currentOrderSkuList, currentPurchaseOrderList);
}
if (order.OrderState != oldOrderState)
{
var update = fsql.Update<Order>(order.Id).Set(o => o.OrderState, order.OrderState);
@ -2785,7 +2636,7 @@ namespace BBWYB.Server.Business
}
}
private void SendDingDingOnKD100SubscribeFail(string content)
private void SendDingDing(string content)
{
try
{

5
BBWYB.Server.Business/Vender/VenderBusiness.cs

@ -23,11 +23,12 @@ namespace BBWYB.Server.Business
this.kuaiDi100Manager = kuaiDi100Manager;
}
public IList<ShopResponse> GetShopList(long? shopId = null, Enums.Platform? platform = null)
public IList<ShopResponse> GetShopList(long? shopId = null, Enums.Platform? platform = null, string shopName = "")
{
return fsqlManager.MDSfsql.Select<Shops>().Where(s => !string.IsNullOrEmpty(s.ShopId))
.WhereIf(shopId != null, s => s.ShopId == shopId.ToString())
.WhereIf(platform != null, s => s.PlatformId == (int)platform)
.WhereIf(!string.IsNullOrEmpty(shopName), s => s.ShopName == shopName)
.ToList<ShopResponse>();
}
@ -87,7 +88,7 @@ namespace BBWYB.Server.Business
public IList<KuaiDi100ExpressCompany> GetKuaiDi100ExpressCompanyList(KuaiDi100ExpressSearchRequest request)
{
return kuaiDi100Manager.GetKuaiDi100ExpressCompanyList(request);
return kuaiDi100Manager.GetKuaiDi100ExpressCompanyList(request);
}
}
}

34
BBWYB.Server.Model/Dto/Response/JD/JDInStoreOrderDetail.cs

@ -0,0 +1,34 @@
namespace JD.Dto
{
public class JDInStoreOrderDetail
{
public string poOrderNo { get; set; }
public string isvPoOrderNo { get; set; }
/// <summary>
/// 开放平台事业部编号
/// </summary>
public string deptNo { get; set; }
/// <summary>
/// 开放平台库房编号
/// </summary>
public string whNo { get; set; }
/// <summary>
/// 开放平台供应商编号
/// </summary>
public string supplierNo { get; set; }
/// <summary>
/// 采购入库单状态:4等待箱明细、5等待序列号清单、6待集单、10新建、15追加中、16已集单、20初始、30预约、31单据申报、32入园放行、33理货申报、34入库放行、40叫号、50验收、51 TC验收、60上架、70完成、80异常、81未完成、82申报失败、90取消中、91取消成功、92取消失败、93待取消、94等待取消中、95库房修改;最大长度4字符
/// </summary>
public string poOrderStatus { get; set; }
/// <summary>
/// 采购入库单入库状态;1:有差异待确认,2:无差异已确认,3:待确认,4:有差异已确认
/// </summary>
public string storageStatus { get; set; }
}
}
Loading…
Cancel
Save