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; } + } +}