From a6a367c8f1671c8ee1a36ac4d019e0a45c37f8d8 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 15 Jul 2023 00:32:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E9=BD=90=E5=BA=93=E5=90=88?= =?UTF-8?q?=E6=A0=BC=E8=AF=81=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 44 ++++++++++- BBWYB.Server.Business/QiKuManager.cs | 79 +++++++++++++++++-- .../QiKuPackTaskSkuPurchaseSchemeIdRequest.cs | 9 +++ .../QiKu/QiKuBindingSchemeResponse.cs | 22 ++++++ 4 files changed, 145 insertions(+), 9 deletions(-) create mode 100644 BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs create mode 100644 BBWYB.Server.Model/Dto/Response/QiKu/QiKuBindingSchemeResponse.cs diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ef5a226..7d8cbcc 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -258,6 +258,9 @@ namespace BBWYB.Server.Business List updatePurchaseTimeSchemeIdList = new List(); List insertOrderPurchaseRelationInfoList = new List(); List updatePurchaseTimeLimitTaskOrderSkuList = new List(); + List notifyQikuPackSchemeParamList = null; + if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越) + notifyQikuPackSchemeParamList = new List(); #region 待更新 IList updateOrderCostDetailIdList = fsql.Select() @@ -323,6 +326,8 @@ namespace BBWYB.Server.Business foreach (var cargoParam in cargoParamGroup.CargoParamList) { var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == cargoParam.BelongSkuId); + + #region 创建订单采购关系 insertOrderPurchaseRelationInfoList.Add(new OrderPurchaseRelationInfo() { Id = idGenerator.NewLong(), @@ -337,7 +342,7 @@ namespace BBWYB.Server.Business SchemeId = cargoParam.SchemeId, SourceSkuId = orderSku?.BelongSkuId }); - + #endregion } //采购单总件数,由于1688运费只存在订单层,sku层没有运费,所以需要以订单总件数为基础等比计算采购运费 @@ -435,6 +440,29 @@ namespace BBWYB.Server.Business updatePurchaseTimeLimitTaskOrderSkuList.Add(belongSkuId); } #endregion + + #region 封装查询齐库合格证接口参数 + if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越) + { + foreach (var belongSkuId in belongSkuIdList) //订单skuId + { + var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); + if (orderSku == null) + continue; + var cargoParam = cargoParamGroup.CargoParamList.FirstOrDefault(c => c.BelongSkuId == belongSkuId); + if (cargoParam == null) + continue; + if (!notifyQikuPackSchemeParamList.Any(x => x.SkuId == orderSku.BelongSkuId)) + { + notifyQikuPackSchemeParamList.Add(new QiKuPackTaskSkuPurchaseSchemeIdRequest() + { + SkuId = orderSku.BelongSkuId, + SkuPurchaseSchemeId = cargoParam.SchemeId.ToString() + }); + } + } + } + #endregion } #region 订单成本 @@ -468,6 +496,15 @@ namespace BBWYB.Server.Business Task.Factory.StartNew(() => SendPurchaseOrderStateToC(dbOrder.Id, dbOrder.OrderState.Value), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); #endregion + #region 查询齐库合格证 + if (dbOrder.IntoStoreType == Enums.IntoStoreType.发回齐越 && + notifyQikuPackSchemeParamList != null && + notifyQikuPackSchemeParamList.Count() > 0) + { + Task.Factory.StartNew(() => qiKuManager.SearchCerConfigured(request.OrderId, notifyQikuPackSchemeParamList, orderSkus), CancellationToken.None, TaskCreationOptions.None, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + } + #endregion + fsql.Transaction(() => { if (updatePurchaseOrderIdList.Count() > 0) @@ -495,8 +532,8 @@ namespace BBWYB.Server.Business fsql.Update(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState) .SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark) .Set(o => o.IsPurchased, true) - .Set(o => o.PackConfigState, Enums.PackConfigState.待配置) .ExecuteAffrows(); + //.Set(o => o.PackConfigState, Enums.PackConfigState.待配置) }); } @@ -2664,7 +2701,7 @@ namespace BBWYB.Server.Business { var currentOrderPurchaseRelationList = orderPurchaseRelationList.Where(opri => opri.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList(); - Task.Factory.StartNew(() => qiKuManager.PublishQiKu(purchaseOrder, currentOrderPurchaseRelationList, currentPurchaseOrderSkuList, purchaseExpressOrderList), + Task.Factory.StartNew(() => qiKuManager.PublishQiKuReceiveInfo(purchaseOrder, currentOrderPurchaseRelationList, currentPurchaseOrderSkuList, purchaseExpressOrderList), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); @@ -2736,5 +2773,6 @@ namespace BBWYB.Server.Business } } + } } diff --git a/BBWYB.Server.Business/QiKuManager.cs b/BBWYB.Server.Business/QiKuManager.cs index 8a93d99..b0e61b8 100644 --- a/BBWYB.Server.Business/QiKuManager.cs +++ b/BBWYB.Server.Business/QiKuManager.cs @@ -1,7 +1,11 @@ using BBWYB.Common.Http; +using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; +using BBWYB.Server.Model.Dto; +using FreeSql; +using Newtonsoft.Json; namespace BBWYB.Server.Business { @@ -9,14 +13,15 @@ namespace BBWYB.Server.Business { private RestApiService restApiService; private IFreeSql fsql; - public QiKuManager(RestApiService restApiService, IFreeSql fsql) + private NLogManager nLogManager; + public QiKuManager(RestApiService restApiService, IFreeSql fsql, NLogManager nLogManager) { this.restApiService = restApiService; this.fsql = fsql; } /// - /// 通知齐库 + /// 通知齐库到货情况 /// 支持关联的采购平台以来源SKU为单位通知齐库 /// 不支持关联的采购平台以采购单为单位通知齐库 /// @@ -24,10 +29,10 @@ namespace BBWYB.Server.Business /// /// /// - public void PublishQiKu(OrderPurchaseInfo orderPurchaseInfo, - IList orderPurchaseRelationInfoList, - IList orderPurchaseSkuInfoList, - IList purchaseExpressOrderList) + public void PublishQiKuReceiveInfo(OrderPurchaseInfo orderPurchaseInfo, + IList orderPurchaseRelationInfoList, + IList orderPurchaseSkuInfoList, + IList purchaseExpressOrderList) { if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.阿里巴巴) PublishQiKuByRelation(orderPurchaseRelationInfoList, orderPurchaseSkuInfoList, purchaseExpressOrderList); @@ -114,5 +119,67 @@ namespace BBWYB.Server.Business } } + + + /// + /// 查询齐库合格证 + /// + /// + /// + /// + public void SearchCerConfigured(string orderId, IList packTaskSkuPurchaseSchemeIdList, IList orderSkuList) + { + try + { + var restApiResult = restApiService.SendRequest("http://qiku.qiyue666.com", "api/PackPurchaseTask/SearchCerConfigured", new + { + orderId, + packTaskSkuPurchaseSchemeIdList + }, null, HttpMethod.Post); + + if (restApiResult.StatusCode != System.Net.HttpStatusCode.OK) + throw new Exception(restApiResult.Content); + var response = JsonConvert.DeserializeObject>(restApiResult.Content); + if (!response.Success) + throw new Exception(response.Msg); + + if (response.Data.PackTaskSkuPurchaseSchemeIdList != null && response.Data.PackTaskSkuPurchaseSchemeIdList.Count() > 0) + { + IList> updateOrderSkuList = new List>(); + foreach (var skuConfigured in response.Data.PackTaskSkuPurchaseSchemeIdList) + { + var orderSku = orderSkuList.FirstOrDefault(osku => osku.BelongSkuId == skuConfigured.SkuId); + if (orderSku == null) + continue; + var oldPackState = orderSku.PackConfigState ?? Enums.PackConfigState.待配置; + var qiKuPackState = skuConfigured.IsConfiguredCer ? Enums.PackConfigState.已配置 : Enums.PackConfigState.待配置; + if (oldPackState != qiKuPackState) + { + orderSku.PackConfigState = qiKuPackState; + var update = fsql.Update(orderSku.Id).Set(osku => osku.PackConfigState, qiKuPackState); + updateOrderSkuList.Add(update); + } + + if (qiKuPackState == Enums.PackConfigState.待配置) + { + //创建合格证拟定任务 + } + } + + fsql.Transaction(() => + { + if (updateOrderSkuList.Count() > 0) + { + foreach (var update in updateOrderSkuList) + update.ExecuteAffrows(); + } + }); + } + } + catch (Exception ex) + { + nLogManager.Default().Error(ex, $"SearchCerConfigured\r\n{JsonConvert.SerializeObject(new { orderId, packTaskSkuPurchaseSchemeIdList })}"); + } + } } } diff --git a/BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs b/BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs new file mode 100644 index 0000000..8bde0fe --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/QiKu/QiKuPackTaskSkuPurchaseSchemeIdRequest.cs @@ -0,0 +1,9 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QiKuPackTaskSkuPurchaseSchemeIdRequest + { + public string SkuId { get; set; } + + public string SkuPurchaseSchemeId { get; set; } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/QiKu/QiKuBindingSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/QiKu/QiKuBindingSchemeResponse.cs new file mode 100644 index 0000000..6b0c1ba --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/QiKu/QiKuBindingSchemeResponse.cs @@ -0,0 +1,22 @@ +namespace BBWYB.Server.Model.Dto +{ + public class QiKuBindingSchemeResponse + { + public string OrderId { get; set; } + + public IList PackTaskSkuPurchaseSchemeIdList { get; set; } + } + + public class QiKuBindingSchemeSkuResponse + { + /// + /// 来源skuId + /// + public string SkuId { get; set; } + + /// + /// 是否配置合格证 + /// + public bool IsConfiguredCer { get; set; } + } +}