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(); 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 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 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> /// </summary>
/// <param name="request"></param> /// <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 client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.PurchasePlatform);
var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest()
{ {
@ -852,13 +855,13 @@ namespace BBWYB.Server.Business
#endregion #endregion
#region 查询订单Sku #region 查询订单Sku
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList(); var dbOrderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList();
if (orderSkuList.Count() == 0) if (dbOrderSkuList.Count() == 0)
throw new BusinessException("缺少订单sku信息"); throw new BusinessException("缺少订单sku信息");
#endregion #endregion
#region 匹配采购方案 #region 查询订单sku所有采购方案
var skuIds = orderSkuList.Select(osku => osku.SkuId).ToList(); var skuIds = dbOrderSkuList.Select(osku => osku.SkuId).ToList();
var purchaseSchemeSkuList = fsql.Select<Purchaser, PurchaseScheme, PurchaseSchemeProductSku>() var purchaseSchemeSkuList = fsql.Select<Purchaser, PurchaseScheme, PurchaseSchemeProductSku>()
.InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId) .InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId)
.InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId) .InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId)
@ -879,6 +882,43 @@ namespace BBWYB.Server.Business
throw new BusinessException($"采购单{request.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案"); throw new BusinessException($"采购单{request.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案");
#endregion #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> /// <summary>
@ -998,8 +1038,6 @@ namespace BBWYB.Server.Business
bool isSubscribeKD100 = false; bool isSubscribeKD100 = false;
if (!isExists) if (!isExists)
{ {
kuaiDi100Manager.SubscribeKuaiDi100(request.WaybillNo, request.ExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish");
#region 订阅快递100 #region 订阅快递100
try try
{ {

Loading…
Cancel
Save