|
|
@ -15,45 +15,42 @@ using SDKAdapter.PurchasePlatform.Models; |
|
|
|
using System.Text; |
|
|
|
using Yitter.IdGenerator; |
|
|
|
using BBWYB.Server.Business.Extensions; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
|
|
|
|
namespace BBWYB.Server.Business |
|
|
|
{ |
|
|
|
public class PurchaseOrderBusiness : BaseBusiness, IDenpendency |
|
|
|
{ |
|
|
|
private PP_PlatformClientFactory ppPlatformClientFactory; |
|
|
|
private TaskSchedulerManager taskSchedulerManager; |
|
|
|
private FreeSqlMultiDBManager fsqlManager; |
|
|
|
private OrderBusiness orderBusiness; |
|
|
|
private VenderBusiness venderBusiness; |
|
|
|
private PurchaseSchemeBusiness purchaseSchemeBusiness; |
|
|
|
private ExpressCompanyNameConverter expressCompanyNameConverter; |
|
|
|
private RestApiService restApiService; |
|
|
|
private Lazy<PP_PlatformClientFactory> pplatformClientFactoryLazy; |
|
|
|
private Lazy<TaskSchedulerManager> taskSchedulerManagerLazy; |
|
|
|
private Lazy<FreeSqlMultiDBManager> fsqlManagerLazy; |
|
|
|
private Lazy<ExpressCompanyNameConverter> expressCompanyNameConverterLazy; |
|
|
|
private Lazy<KuaiDi100Manager> kuaiDi100ManagerLazy; |
|
|
|
private Lazy<DingDingBusiness> dingDingBusinessLazy; |
|
|
|
private Lazy<QiKuManager> qiKuManagerLazy; |
|
|
|
|
|
|
|
private PP_PlatformClientFactory ppPlatformClientFactory => pplatformClientFactoryLazy.Value; |
|
|
|
private TaskSchedulerManager taskSchedulerManager => taskSchedulerManagerLazy.Value; |
|
|
|
private FreeSqlMultiDBManager fsqlManager => fsqlManagerLazy.Value; |
|
|
|
private ExpressCompanyNameConverter expressCompanyNameConverter => expressCompanyNameConverterLazy.Value; |
|
|
|
private KuaiDi100Manager kuaiDi100Manager => kuaiDi100ManagerLazy.Value; |
|
|
|
private DingDingBusiness dingDingBusiness => dingDingBusinessLazy.Value; |
|
|
|
private QiKuManager qiKuManager => qiKuManagerLazy.Value; |
|
|
|
private IList<Enums.OrderState> cantPurchaseOrderStateList; |
|
|
|
private KuaiDi100Manager kuaiDi100Manager; |
|
|
|
private QiKuManager qiKuManager; |
|
|
|
|
|
|
|
public PurchaseOrderBusiness(IFreeSql fsql, |
|
|
|
NLogManager nLogManager, |
|
|
|
IIdGenerator idGenerator, |
|
|
|
PP_PlatformClientFactory ppPlatformClientFactory, |
|
|
|
TaskSchedulerManager taskSchedulerManager, |
|
|
|
FreeSqlMultiDBManager fsqlManager, |
|
|
|
OrderBusiness orderBusiness, |
|
|
|
VenderBusiness venderBusiness, |
|
|
|
PurchaseSchemeBusiness purchaseSchemeBusiness, |
|
|
|
ExpressCompanyNameConverter expressCompanyNameConverter, |
|
|
|
RestApiService restApiService, |
|
|
|
KuaiDi100Manager kuaiDi100Manager, |
|
|
|
QiKuManager qiKuManager) : base(fsql, nLogManager, idGenerator) |
|
|
|
IServiceProvider serviceProvider) : base(fsql, nLogManager, idGenerator) |
|
|
|
{ |
|
|
|
this.ppPlatformClientFactory = ppPlatformClientFactory; |
|
|
|
this.taskSchedulerManager = taskSchedulerManager; |
|
|
|
this.fsqlManager = fsqlManager; |
|
|
|
this.orderBusiness = orderBusiness; |
|
|
|
this.venderBusiness = venderBusiness; |
|
|
|
this.expressCompanyNameConverter = expressCompanyNameConverter; |
|
|
|
this.restApiService = restApiService; |
|
|
|
this.purchaseSchemeBusiness = purchaseSchemeBusiness; |
|
|
|
pplatformClientFactoryLazy = new Lazy<PP_PlatformClientFactory>(() => serviceProvider.GetService<PP_PlatformClientFactory>()); |
|
|
|
taskSchedulerManagerLazy = new Lazy<TaskSchedulerManager>(() => serviceProvider.GetService<TaskSchedulerManager>()); |
|
|
|
fsqlManagerLazy = new Lazy<FreeSqlMultiDBManager>(() => serviceProvider.GetService<FreeSqlMultiDBManager>()); |
|
|
|
expressCompanyNameConverterLazy = new Lazy<ExpressCompanyNameConverter>(() => serviceProvider.GetService<ExpressCompanyNameConverter>()); |
|
|
|
kuaiDi100ManagerLazy = new Lazy<KuaiDi100Manager>(() => serviceProvider.GetService<KuaiDi100Manager>()); |
|
|
|
dingDingBusinessLazy = new Lazy<DingDingBusiness>(() => serviceProvider.GetService<DingDingBusiness>()); |
|
|
|
qiKuManagerLazy = new Lazy<QiKuManager>(() => serviceProvider.GetService<QiKuManager>()); |
|
|
|
|
|
|
|
cantPurchaseOrderStateList = new List<Enums.OrderState>() |
|
|
|
{ |
|
|
|
Enums.OrderState.已取消, |
|
|
@ -61,8 +58,6 @@ namespace BBWYB.Server.Business |
|
|
|
Enums.OrderState.待付款, |
|
|
|
Enums.OrderState.待完结 |
|
|
|
}; |
|
|
|
this.kuaiDi100Manager = kuaiDi100Manager; |
|
|
|
this.qiKuManager = qiKuManager; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
@ -1223,18 +1218,37 @@ namespace BBWYB.Server.Business |
|
|
|
#region 找出新发货的快递单
|
|
|
|
foreach (var logisticsInfo in logisticsList) |
|
|
|
{ |
|
|
|
if (purchaseExpressOrderList.Any(po => po.WaybillNo == logisticsInfo.WayBillNo)) |
|
|
|
if (string.IsNullOrEmpty(logisticsInfo.WayBillNo) || |
|
|
|
purchaseExpressOrderList.Any(po => po.WaybillNo == logisticsInfo.WayBillNo)) |
|
|
|
continue; |
|
|
|
|
|
|
|
#region 快递1688物流公司为快递100物流公司
|
|
|
|
var kuaidi100Company = expressCompanyNameConverter.ConverterToKuaiDi100Company(logisticsInfo.ExpressName); |
|
|
|
if (kuaidi100Company == null) |
|
|
|
throw new Exception($"快递100公司翻译失败 SourceExpressName:{logisticsInfo.ExpressName}"); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 订阅快递100
|
|
|
|
currentProgress = "订阅快递100"; |
|
|
|
kuaiDi100Manager.SubscribeKuaiDi100(logisticsInfo.WayBillNo, kuaidi100Company.TargetCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); |
|
|
|
LogisticsCompanyRelationship kuaidi100Company = null; |
|
|
|
bool isSubscribeKD100 = false; |
|
|
|
try |
|
|
|
{ |
|
|
|
kuaidi100Company = expressCompanyNameConverter.ConverterToKuaiDi100Company(logisticsInfo.ExpressName); |
|
|
|
if (kuaidi100Company == null) |
|
|
|
throw new Exception($"快递100公司翻译失败 SourceExpressName:{logisticsInfo.ExpressName} 无翻译结果"); |
|
|
|
kuaiDi100Manager.SubscribeKuaiDi100(logisticsInfo.WayBillNo, kuaidi100Company.TargetCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); |
|
|
|
isSubscribeKD100 = true; |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台1688,订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo}"); |
|
|
|
|
|
|
|
#region 订阅失败发送钉钉通知
|
|
|
|
var dingdingMsg = new StringBuilder(); |
|
|
|
dingdingMsg.AppendLine($"错误:{ex.Message}"); |
|
|
|
dingdingMsg.AppendLine($"1688订单号:{purchaseOrderId}"); |
|
|
|
dingdingMsg.AppendLine($"拳探订单号:{orderId}"); |
|
|
|
dingdingMsg.AppendLine($"源物流公司:{logisticsInfo.ExpressName}"); |
|
|
|
dingdingMsg.AppendLine($"目标物流公司:{kuaidi100Company?.TargetName} {kuaidi100Company?.TargetCode}"); |
|
|
|
dingdingMsg.Append($"快递单号:${logisticsInfo.WayBillNo}"); |
|
|
|
SendDingDingOnKD100SubscribeFail(dingdingMsg.ToString()); |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 创建快递单
|
|
|
@ -1247,9 +1261,10 @@ namespace BBWYB.Server.Business |
|
|
|
SourceExpressId = logisticsInfo.ExpressId, |
|
|
|
SourceExpressName = logisticsInfo.ExpressName, |
|
|
|
WaybillNo = logisticsInfo.WayBillNo, |
|
|
|
TargetExpressId = kuaidi100Company.TargetCode, |
|
|
|
TargetExpressName = kuaidi100Company.TargetName, |
|
|
|
ExpressState = kuaiDi100Manager.GetExpressState(1) //快递100发货状态值 默认揽收
|
|
|
|
TargetExpressId = kuaidi100Company?.TargetCode, |
|
|
|
TargetExpressName = kuaidi100Company?.TargetName, |
|
|
|
ExpressState = kuaiDi100Manager.GetExpressState(1), //快递100发货状态值 默认揽收
|
|
|
|
IsSubscribeKD100 = isSubscribeKD100 |
|
|
|
}; |
|
|
|
insertPurchaseExpressOrderList.Add(purchaseExpressOrder); |
|
|
|
#endregion
|
|
|
@ -1778,5 +1793,16 @@ namespace BBWYB.Server.Business |
|
|
|
nLogManager.GetLogger("快递100").Error(ex, waybillNo); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void SendDingDingOnKD100SubscribeFail(string content) |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
dingDingBusiness.SendDingDingBotMessage("SEC5f08a3dd6813e50bf9a3b81350ec12a8086c64b9e29ef858a17f5cc7887906d7", |
|
|
|
"https://oapi.dingtalk.com/robot/send?access_token=7ce472411bb8dde0c3ff503fcca9ead84d39950ee3c4c65c808dbc58981eb929", |
|
|
|
content); |
|
|
|
} |
|
|
|
catch { } |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|