diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs
index bf6d25c..1834f9c 100644
--- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs
+++ b/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
/// 计算订单状态
///
///
+ ///
+ /// 是否在入库单验证失败后通知钉钉
///
///
- ///
+ ///
public static void CalculationOrderState(this Order order,
IFreeSql fsql,
+ out bool IsNotifyDingDingWhenInStoreOrderFail,
IList orderSkuList = null,
- IList orderPurchaseInfoList = null)
+ IList orderPurchaseInfoList = null,
+ IList 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
diff --git a/BBWYB.Server.Business/JD/JDBusiness.cs b/BBWYB.Server.Business/JD/JDBusiness.cs
new file mode 100644
index 0000000..d00139d
--- /dev/null
+++ b/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> GetJDInStoreOrderDetailList(string sourceShopName, IList poOrderNos)
+ {
+ var shop = venderBusiness.GetShopList(shopName: sourceShopName).FirstOrDefault();
+ if (shop == null)
+ return new ApiResponse>() { 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>() { Code = 0, Msg = httpResult.Content };
+
+
+ var response = JsonConvert.DeserializeObject>>(httpResult.Content);
+ return response;
+ }
+ catch (Exception ex)
+ {
+ return new ApiResponse>() { Code = 0, Msg = ex.Message };
+ }
+ }
+ }
+}
diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs
index 528a8f0..60d53ec 100644
--- a/BBWYB.Server.Business/Order/OrderBusiness.cs
+++ b/BBWYB.Server.Business/Order/OrderBusiness.cs
@@ -548,7 +548,7 @@ namespace BBWYB.Server.Business
updateOrderSku = fsql.Update(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(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState);
diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index 0fc8bb1..695bcd9 100644
--- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/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 dingDingBusinessLazy;
private Lazy qiKuManagerLazy;
private Lazy restApiServiceLazy;
+ private Lazy 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 cantPurchaseOrderStateList;
public PurchaseOrderBusiness(IFreeSql fsql,
@@ -54,6 +59,7 @@ namespace BBWYB.Server.Business
dingDingBusinessLazy = new Lazy(() => serviceProvider.GetService());
qiKuManagerLazy = new Lazy(() => serviceProvider.GetService());
restApiServiceLazy = new Lazy(() => serviceProvider.GetService());
+ jdBusinessLazy = new Lazy(() => serviceProvider.GetService());
cantPurchaseOrderStateList = new List()
{
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().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(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(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(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(dbOrder.Id)
.Set(o => o.OrderState, dbOrder.OrderState);
#endregion
@@ -2222,243 +2228,6 @@ namespace BBWYB.Server.Business
}
#endregion
- /////
- ///// 采购平台发货回调
- /////
- /////
- /////
- /////
- //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().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().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}");
- // }
- //}
-
- /////
- ///// 1688物流信息变更回调
- /////
- /////
- //private void LogisticsUpdateCallbackFrom1688(JObject jObject)
- //{
- // Task.Factory.StartNew(() =>
- // {
- // IList> updateOrderPurchaseSkuInfoList = new List>();
- // IList> updateOrderPurchaseInfoList = new List>();
-
- // var statusChanged = jObject["data"]["OrderLogisticsTracingModel"].Value("statusChanged").ToUpper();
- // var orderLogsItems = jObject["data"]["OrderLogisticsTracingModel"]["orderLogsItems"].Children();
-
- // var purchaseOrderIds = orderLogsItems.Select(x => x.Value("orderId")).Distinct().ToList();
- // var orderEntryIds = orderLogsItems.Select(x => x.Value("orderEntryId")).Distinct().ToList();
-
- // var dbOrderPurchaseInfoList = fsql.Select().Where(opi => purchaseOrderIds.Contains(opi.PurchaseOrderId) && opi.IsEnabled == true).ToList();
-
- // var dbOrderPurchaseSkuInfoList = fsql.Select()
- // .WhereIf(purchaseOrderIds.Count() > 1, ops => purchaseOrderIds.Contains(ops.PurchaseOrderId))
- // .WhereIf(purchaseOrderIds.Count() == 1, ops => ops.PurchaseOrderId == purchaseOrderIds[0])
- // .ToList();
-
- // var dbOrderPurchaseRelationInfoList = fsql.Select()
- // .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(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().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);
- //}
///
/// 采购平台改价回调
@@ -2652,9 +2421,11 @@ namespace BBWYB.Server.Business
var orderList = fsql.Select(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().SetSource(tpeo);
#endregion
+ #region 查询入库单信息
+ IList inStoreOrderRelationList = null;
+ if (orderList.Any(o => o.IntoStoreType == Enums.IntoStoreType.厂商代发入仓) && state == "QianShou")
+ inStoreOrderRelationList = fsql.Select().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> 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.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
{
diff --git a/BBWYB.Server.Business/Vender/VenderBusiness.cs b/BBWYB.Server.Business/Vender/VenderBusiness.cs
index e11998b..1f55d66 100644
--- a/BBWYB.Server.Business/Vender/VenderBusiness.cs
+++ b/BBWYB.Server.Business/Vender/VenderBusiness.cs
@@ -23,11 +23,12 @@ namespace BBWYB.Server.Business
this.kuaiDi100Manager = kuaiDi100Manager;
}
- public IList GetShopList(long? shopId = null, Enums.Platform? platform = null)
+ public IList GetShopList(long? shopId = null, Enums.Platform? platform = null, string shopName = "")
{
return fsqlManager.MDSfsql.Select().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();
}
@@ -87,7 +88,7 @@ namespace BBWYB.Server.Business
public IList GetKuaiDi100ExpressCompanyList(KuaiDi100ExpressSearchRequest request)
{
- return kuaiDi100Manager.GetKuaiDi100ExpressCompanyList(request);
+ return kuaiDi100Manager.GetKuaiDi100ExpressCompanyList(request);
}
}
}
diff --git a/BBWYB.Server.Model/Dto/Response/JD/JDInStoreOrderDetail.cs b/BBWYB.Server.Model/Dto/Response/JD/JDInStoreOrderDetail.cs
new file mode 100644
index 0000000..e80da50
--- /dev/null
+++ b/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; }
+
+ ///
+ /// 开放平台事业部编号
+ ///
+ public string deptNo { get; set; }
+
+ ///
+ /// 开放平台库房编号
+ ///
+ public string whNo { get; set; }
+
+ ///
+ /// 开放平台供应商编号
+ ///
+ public string supplierNo { get; set; }
+
+ ///
+ /// 采购入库单状态: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字符
+ ///
+ public string poOrderStatus { get; set; }
+
+ ///
+ /// 采购入库单入库状态;1:有差异待确认,2:无差异已确认,3:待确认,4:有差异已确认
+ ///
+ public string storageStatus { get; set; }
+ }
+}