Browse Source

关联预览接口

yijia
shanji 2 years ago
parent
commit
9a42fb94df
  1. 11
      BBWYB.Server.API/Controllers/DataRepairController.cs
  2. 9
      BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
  3. 52
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

11
BBWYB.Server.API/Controllers/DataRepairController.cs

@ -19,5 +19,16 @@ namespace BBWYB.Server.API.Controllers
{
dataRepairBusiness.RepairPurchaseExpressOrder();
}
/// <summary>
/// 手动订阅快递100
/// </summary>
/// <param name="waybillNo"></param>
/// <param name="targetCompanyCode"></param>
[HttpPost("{waybillNo}/{targetCompanyCode}")]
public void SubscribeKD100([FromRoute] string waybillNo, [FromRoute] string targetCompanyCode)
{
dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode);
}
}
}

9
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");
}
}
}

52
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -827,8 +827,11 @@ namespace BBWYB.Server.Business
/// 预览关联订单信息
/// </summary>
/// <param name="request"></param>
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<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList();
if (orderSkuList.Count() == 0)
var dbOrderSkuList = fsql.Select<OrderSku>().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<Purchaser, PurchaseScheme, PurchaseSchemeProductSku>()
.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<AssocationOrderCostDetailResponse>();
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()
{
};
}
/// <summary>
@ -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
{

Loading…
Cancel
Save