From 9a42fb94df6d9a410a53de9915a8a7fb2ca673df Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Sun, 18 Jun 2023 18:16:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E8=81=94=E9=A2=84=E8=A7=88=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DataRepairController.cs | 11 ++++ .../DataRepair/DataRepairBusiness.cs | 9 +++- .../PurchaseOrder/PurchaseOrderBusiness.cs | 52 ++++++++++++++++--- 3 files changed, 64 insertions(+), 8 deletions(-) diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index bb8eb80..4581b91 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -19,5 +19,16 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.RepairPurchaseExpressOrder(); } + + /// + /// 手动订阅快递100 + /// + /// + /// + [HttpPost("{waybillNo}/{targetCompanyCode}")] + public void SubscribeKD100([FromRoute] string waybillNo, [FromRoute] string targetCompanyCode) + { + dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 4710bef..b2a827f 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -8,13 +8,20 @@ namespace BBWYB.Server.Business { public class DataRepairBusiness : BaseBusiness, IDenpendency { - public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) + private KuaiDi100Manager kuaiDi100Manager; + public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager) : base(fsql, nLogManager, idGenerator) { + this.kuaiDi100Manager = kuaiDi100Manager; } public void RepairPurchaseExpressOrder() { } + + public void SubscribeKD100(string waybillNo,string targetCompanyCode) + { + kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); + } } } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index f979837..21c1a1e 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -827,8 +827,11 @@ namespace BBWYB.Server.Business /// 预览关联订单信息 /// /// - public void PreviewAssocationPurchaseOrder(AssocationPurchaseOrderPreviewRequest request) + public AssociationPurchaseOrderResponse PreviewAssocationPurchaseOrder(AssocationPurchaseOrderPreviewRequest request) { + if (request.PurchasePlatform != Enums.Platform.阿里巴巴) + return null; + var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.PurchasePlatform); var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() { @@ -852,13 +855,13 @@ namespace BBWYB.Server.Business #endregion #region 查询订单Sku - var orderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); - if (orderSkuList.Count() == 0) + var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == request.OrderId).ToList(); + if (dbOrderSkuList.Count() == 0) throw new BusinessException("缺少订单sku信息"); #endregion - #region 匹配采购方案 - var skuIds = orderSkuList.Select(osku => osku.SkuId).ToList(); + #region 查询订单sku所有采购方案 + var skuIds = dbOrderSkuList.Select(osku => osku.SkuId).ToList(); var purchaseSchemeSkuList = fsql.Select() .InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId) .InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId) @@ -879,6 +882,43 @@ namespace BBWYB.Server.Business throw new BusinessException($"采购单{request.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案"); #endregion + #region 匹配采购单所使用到的采购方案 + var assocationOrderCostDetailList = new List(); + var purchaseSchemeGroups = purchaseSchemeSkuList.GroupBy(s => s.SkuPurchaseSchemeId); + var totalPurchaseCount = purchaseOrderSimpleInfo.ItemList.Sum(x => x.Quantity); + foreach (var schemeGroup in purchaseSchemeGroups) + { + var schemePurchaseSkuList = schemeGroup.ToList(); + if (schemePurchaseSkuList.Any(psku => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == psku.PurchaseSkuId) == 0)) + continue; + + var orderPurchaseSkuOfCurrentSchemeList = purchaseOrderSimpleInfo.ItemList.Where(psku => schemePurchaseSkuList.Count(x => x.PurchaseSkuId == psku.SkuId) > 0); + + + var skuId = schemePurchaseSkuList.FirstOrDefault().SkuId; + var orderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); + var assocationOrderCostDetail = new AssocationOrderCostDetailResponse() + { + Logo = orderSku.Logo, + Title = orderSku.Title, + SkuId = skuId, + OrderId = orderSku.OrderId, + SkuAmount = orderPurchaseSkuOfCurrentSchemeList.Sum(psku => psku.ProductAmount), + PurchaseQuantity = orderSku.ItemTotal.Value, + PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount * (orderPurchaseSkuOfCurrentSchemeList.Sum(x => x.Quantity) / totalPurchaseCount) + }; + assocationOrderCostDetail.PurchasePrice = assocationOrderCostDetail.SkuAmount / assocationOrderCostDetail.PurchaseFreight; + assocationOrderCostDetailList.Add(assocationOrderCostDetail); + } + #endregion + + if (assocationOrderCostDetailList.Count() == 0) + throw new BusinessException("没有匹配到合适的采购方案"); + + return new AssociationPurchaseOrderResponse() + { + + }; } /// @@ -998,8 +1038,6 @@ namespace BBWYB.Server.Business bool isSubscribeKD100 = false; if (!isExists) { - kuaiDi100Manager.SubscribeKuaiDi100(request.WaybillNo, request.ExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); - #region 订阅快递100 try {