From 85f762c8efc264e5629642b78919c8d25599e277 Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Sat, 12 Aug 2023 16:30:11 +0800
Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E8=81=94=E9=A2=84=E8=A7=88=EF=BC=8C?=
=?UTF-8?q?=E5=85=B3=E8=81=94=E9=87=87=E8=B4=AD=E6=94=AF=E6=8C=81=E5=8C=B9?=
=?UTF-8?q?=E9=85=8D=E5=A4=9A=E9=87=87=E8=B4=AD=E5=95=86=E7=9A=84=E9=87=87?=
=?UTF-8?q?=E8=B4=AD=E6=96=B9=E6=A1=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/DataRepairController.cs | 9 -
.../Controllers/PurchaseSchemeController.cs | 38 ++--
.../DataRepair/DataRepairBusiness.cs | 67 ------
.../PurchaseOrder/PurchaseOrderBusiness.cs | 198 +++++++++---------
.../PurchaseScheme/PurchaseSchemeBusiness.cs | 22 +-
5 files changed, 131 insertions(+), 203 deletions(-)
diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs
index c741111..9c2bdbe 100644
--- a/BBWYB.Server.API/Controllers/DataRepairController.cs
+++ b/BBWYB.Server.API/Controllers/DataRepairController.cs
@@ -25,15 +25,6 @@ namespace BBWYB.Server.API.Controllers
dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode);
}
- ///
- /// 修复采购商信息
- ///
- [HttpPost]
- public void SupplementPurchaserInfo()
- {
- dataRepairBusiness.SupplementPurchaserInfo();
- }
-
///
/// 修复订单Sku成本
///
diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
index 673114c..1244ca6 100644
--- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
+++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
@@ -38,15 +38,15 @@ namespace BBWYB.Server.API.Controllers
return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest);
}
- ///
- /// 删除采购商
- ///
- ///
- [HttpDelete]
- public void DeletePurchaser([FromBody] DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
- {
- purchaseSchemeBusiness.DeletePurchaser(deletePurchaseSchemeRequest);
- }
+ /////
+ ///// 删除采购商
+ /////
+ /////
+ //[HttpDelete]
+ //public void DeletePurchaser([FromBody] DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
+ //{
+ // purchaseSchemeBusiness.DeletePurchaser(deletePurchaseSchemeRequest);
+ //}
///
/// 删除采购方案
@@ -58,16 +58,16 @@ namespace BBWYB.Server.API.Controllers
purchaseSchemeBusiness.DeletePurchaseScheme(schemeId);
}
- ///
- /// 查询共有采购商
- ///
- ///
- ///
- [HttpPost]
- public IList GetSharePurchaser([FromBody] QuerySchemeRequest querySchemeRequest)
- {
- return purchaseSchemeBusiness.GetSharePurchaser(querySchemeRequest);
- }
+ /////
+ ///// 查询共有采购商
+ /////
+ /////
+ /////
+ //[HttpPost]
+ //public IList GetSharePurchaser([FromBody] QuerySchemeRequest querySchemeRequest)
+ //{
+ // return purchaseSchemeBusiness.GetSharePurchaser(querySchemeRequest);
+ //}
///
/// 查询采购方案中采购Sku的基本信息
diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
index f70c444..dcf2821 100644
--- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
+++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
@@ -38,73 +38,6 @@ namespace BBWYB.Server.Business
purchaseOrderBusiness.OnSomeOnePurchaseOrderChanged(pid, false);
}
- public void SupplementPurchaserInfo()
- {
- var purlList = fsql.Select()
- .InnerJoin((psp, ps, p) => psp.SkuPurchaseSchemeId == ps.Id)
- .InnerJoin((psp, ps, p) => ps.PurchaserId == p.Id)
- .Where((psp, ps, p) => ps.PurchasePlatform == Enums.Platform.阿里巴巴 && string.IsNullOrEmpty(p.Id2))
- .ToList((psp, ps, p) => new
- {
- //psp.PurchaseUrl,
- psp.PurchaseProductId,
- p.Id
- });
- var groups = purlList.GroupBy(p => p.Id);
- Console.WriteLine(groups.Count());
- IList> updatePurchaserList = new List>();
- int i = 1;
- foreach (var group in groups)
- {
- var purchaseId = group.Key;
- var productId = group.Max(p => p.PurchaseProductId);
- Thread.Sleep(1000);
- Console.WriteLine();
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine($"index {i}");
- Console.ResetColor();
- Console.WriteLine();
- var response = purchaseSchemeBusiness.GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest()
- {
- FirstApiMode = Enums.PurchaseProductAPIMode.Spider,
- Platform = Enums.Platform.阿里巴巴,
- PriceMode = Enums.PurchaseOrderMode.批发,
- PurchaseProductId = productId
- });
- if (!string.IsNullOrEmpty(response?.Purchaser?.Id2))
- {
- if (response.Purchaser.Id2.Length > 20)
- Console.WriteLine(response.Purchaser.Id2);
- var update = fsql.Update(purchaseId).Set(p => p.Id2, response.Purchaser.Id2);
- updatePurchaserList.Add(update);
- }
- i++;
-
- if (updatePurchaserList.Count >= 10)
- {
- fsql.Transaction(() =>
- {
- foreach (var update in updatePurchaserList)
- update.ExecuteAffrows();
- });
- updatePurchaserList.Clear();
- Console.WriteLine();
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("更新数据库更新");
- Console.ResetColor();
- Console.WriteLine();
- }
- }
-
- if (updatePurchaserList.Count() > 0)
- {
- fsql.Transaction(() =>
- {
- foreach (var update in updatePurchaserList)
- update.ExecuteAffrows();
- });
- }
- }
public void SupplementOrderSkuCost()
{
diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index a4eed99..a83adf7 100644
--- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
@@ -749,12 +749,13 @@ namespace BBWYB.Server.Business
{
if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴)
{
- #region 补齐采购SKU
+ #region 补齐采购SKU和采购关系
var purchaseAccount = dbPurchaseAccountList.FirstOrDefault(pa => pa.Id == purchaseOrder.PurchaseAccountId ||
pa.AccountName == purchaseOrder.PurchaseAccountName);
if (purchaseAccount == null)
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少有效的采购账号");
+ #region 查询1688采购单
var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)purchaseOrder.PurchasePlatform);
var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest()
{
@@ -763,6 +764,7 @@ namespace BBWYB.Server.Business
AppToken = purchaseAccount.AppToken,
OrderId = purchaseOrder.PurchaseOrderId
});
+ #endregion
#region 处理采购商Id
var purchaserId = purchaseOrderSimpleInfo.PurchaserId;
@@ -782,58 +784,29 @@ namespace BBWYB.Server.Business
#region 匹配采购方案
var skuIds = purchaseOrder.AssocationOrderCostDetailList.Select(ocd => ocd.SkuId).ToList();
- var purchaseSchemeSkuList = fsql.Select()
- .InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId)
- .InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId)
- .Where((p, ps, pss) => p.Id == purchaserId)
- .Where((p, ps, pss) => ps.PurchasePlatform == Enums.Platform.阿里巴巴)
- .Where((p, ps, pss) => skuIds.Contains(pss.SkuId))
- .ToList((p, ps, pss) => new
- {
- pss.Id,
- pss.SkuId,
- pss.ProductId,
- pss.PurchaseProductId,
- pss.PurchaseSkuId,
- pss.PurchaseSkuSpecId,
- pss.SkuPurchaseSchemeId
- });
- if (purchaseSchemeSkuList.Count() == 0)
- throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案");
- #endregion
-
-
- foreach (var purchaseOrderSku in purchaseOrderSimpleInfo.ItemList)
+ var purchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest()
{
- var orderPurchaseSkuInfo = new OrderPurchaseSkuInfo()
- {
- Id = purchaseOrderSku.OrderSkuId,
- CreateTime = DateTime.Now,
- OrderId = request.OrderId,
- PurchaseOrderId = purchaseOrder.PurchaseOrderId,
- PurchaseProductId = purchaseOrderSku.ProductId,
- PurchaseSkuId = purchaseOrderSku.SkuId,
- ShopId = request.ShopId
- };
- insertOrderPurchaseSkuInfoList.Add(orderPurchaseSkuInfo);
- }
+ ShopId = dbOrder.ShopId,
+ SkuIdList = skuIds
+ });
+ if (purchaseSchemeList.Count() == 0)
+ throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案");
#endregion
#region 补齐采购关系
foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList)
{
- var currentPurchaseSchemeSkuList = purchaseSchemeSkuList.Where(x => x.SkuId == assOrderCostDetail.SkuId).ToList();
- if (currentPurchaseSchemeSkuList == null || currentPurchaseSchemeSkuList.Count() == 0)
+ var matchResultList = MatchPurchaseScheme(assOrderCostDetail.SkuId,
+ assOrderCostDetail.PurchaseQuantity,
+ purchaserId,
+ purchaseSchemeList,
+ purchaseOrderSimpleInfo);
+ if (matchResultList.Count() == 0)
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id {purchaserId} Sku{assOrderCostDetail.SkuId}缺少采购方案");
- var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId);
- foreach (var currentPurchaseSchemeSku in currentPurchaseSchemeSkuList)
+ foreach (var cargoParam in matchResultList)
{
- var purchaseSkuFromApi = purchaseOrderSimpleInfo.ItemList.FirstOrDefault(x => x.SkuId == currentPurchaseSchemeSku.PurchaseSkuId);
- if (purchaseSkuFromApi == null)
- {
- throw new BusinessException($"Sku{assOrderCostDetail.SkuId}使用了采购方案{currentPurchaseSchemeSku.SkuPurchaseSchemeId}下的采购Sku{currentPurchaseSchemeSku.PurchaseSkuId},而且在采购单{purchaseOrder.PurchaseOrderId}的商品明细中没有找到该采购sku");
- }
+ var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId);
var orderPurchaseRelationInfo = new OrderPurchaseRelationInfo()
{
Id = idGenerator.NewLong(),
@@ -841,16 +814,37 @@ namespace BBWYB.Server.Business
CreateTime = DateTime.Now,
OrderId = assOrderCostDetail.OrderId,
PurchaseOrderId = purchaseOrder.PurchaseOrderId,
- PurchaseSkuId = currentPurchaseSchemeSku.PurchaseSkuId,
- PurchaseProductId = currentPurchaseSchemeSku.PurchaseProductId,
- PurchaseSpecId = currentPurchaseSchemeSku.PurchaseSkuSpecId,
- SchemeId = currentPurchaseSchemeSku.SkuPurchaseSchemeId,
+ PurchaseSkuId = cargoParam.SkuId,
+ PurchaseProductId = cargoParam.ProductId,
+ PurchaseSpecId = cargoParam.SpecId,
+ SchemeId = cargoParam.SchemeId,
Quantity = assOrderCostDetail.PurchaseQuantity,
SourceSkuId = dbOrderSku.BelongSkuId
};
insertOrderPurchaseRelationInfoList.Add(orderPurchaseRelationInfo);
+
}
}
+
+ #region 补齐采购SKU
+ foreach (var purchaseOrderSku in purchaseOrderSimpleInfo.ItemList)
+ {
+ var orderPurchaseSkuInfo = new OrderPurchaseSkuInfo()
+ {
+ Id = purchaseOrderSku.OrderSkuId,
+ CreateTime = DateTime.Now,
+ OrderId = request.OrderId,
+ PurchaseOrderId = purchaseOrder.PurchaseOrderId,
+ PurchaseProductId = purchaseOrderSku.ProductId,
+ PurchaseSkuId = purchaseOrderSku.SkuId,
+ ShopId = request.ShopId
+ };
+ insertOrderPurchaseSkuInfoList.Add(orderPurchaseSkuInfo);
+ }
+ #endregion
+
+ #endregion
+
#endregion
}
@@ -1151,27 +1145,6 @@ namespace BBWYB.Server.Business
#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)
- // .Where((p, ps, pss) => p.Id == purchaserId)
- // .Where((p, ps, pss) => ps.PurchasePlatform == Enums.Platform.阿里巴巴)
- // .Where((p, ps, pss) => skuIds.Contains(pss.SkuId))
- // .ToList((p, ps, pss) => new
- // {
- // pss.Id,
- // pss.SkuId,
- // pss.ProductId,
- // pss.PurchaseProductId,
- // pss.PurchaseSkuId,
- // pss.PurchaseSkuSpecId,
- // pss.SkuPurchaseSchemeId
- // });
- //if (purchaseSchemeSkuList.Count() == 0)
- // throw new BusinessException($"采购单{request.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案");
-
var purchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest()
{
ShopId = order.ShopId,
@@ -1183,41 +1156,17 @@ namespace BBWYB.Server.Business
#region 匹配采购单所使用到的采购方案
var cargoParamList = new List();
- foreach (var scheme in purchaseSchemeList)
+ foreach (var orderSku in dbOrderSkuList)
{
- var samePurchaserProductList = scheme.PurchaseSchemeProductList.Where(psp => psp.PurchaserId == purchaserId).ToList();
- if (samePurchaserProductList.Count() == 0)
- continue;
- foreach (var schemeProduct in samePurchaserProductList)
- {
-
- }
+ var matchResultList = MatchPurchaseScheme(orderSku.SkuId, orderSku.ItemTotal ?? 1, purchaserId, purchaseSchemeList, purchaseOrderSimpleInfo);
+ if (matchResultList.Count() > 0)
+ cargoParamList.AddRange(matchResultList);
}
if (cargoParamList.Count() == 0)
throw new BusinessException("未匹配到采购方案");
-
var assocationOrderCostDetailList = new List();
-
- //var purchaseSchemeGroups = purchaseSchemeSkuList.GroupBy(s => s.SkuPurchaseSchemeId);
-
- //foreach (var schemeGroup in purchaseSchemeGroups)
- //{
- // var schemePurchaseSkuList = schemeGroup.ToList();
- // if (schemePurchaseSkuList.Any(psku => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == psku.PurchaseSkuId) == 0))
- // continue;
- // cargoParamList.AddRange(schemePurchaseSkuList.Select(x => new CargoParamRequest()
- // {
- // BelongSkuId = x.SkuId,
- // ProductId = x.PurchaseProductId,
- // SkuId = x.PurchaseSkuId,
- // Quantity = dbOrderSkuList.FirstOrDefault(s => s.SkuId == x.SkuId)?.ItemTotal ?? 1,
- // SchemeId = x.SkuPurchaseSchemeId,
- // SpecId = x.PurchaseSkuSpecId
- // }));
- //}
-
var belongSkuGroups = cargoParamList.GroupBy(p => p.BelongSkuId);
var purchaseSkuTotalQuantity = cargoParamList.Sum(x => x.Quantity);
foreach (var belongSkuGroup in belongSkuGroups)
@@ -3011,5 +2960,60 @@ namespace BBWYB.Server.Business
}
}
+ ///
+ /// 匹配采购方案
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ private IList MatchPurchaseScheme(string skuId,
+ int itemTotal,
+ string purchaserId,
+ IList purchaseSchemeList,
+ PP_QueryOrderDetailResponse purchaseOrderSimpleInfo)
+ {
+ List cargoParamList = new List();
+ var currentSkuSchemeList = purchaseSchemeList.Where(ps => ps.SkuId == skuId).ToList();
+ if (currentSkuSchemeList.Count() > 0)
+ {
+ foreach (var scheme in currentSkuSchemeList)
+ {
+ var samePurchaserProductList = scheme.PurchaseSchemeProductList.Where(psp => psp.PurchaserId == purchaserId).ToList();
+ if (samePurchaserProductList.Count() == 0)
+ continue;
+
+ bool isMatch = true;
+ foreach (var schemeProduct in samePurchaserProductList)
+ {
+ if (schemeProduct.PurchaseSchemeProductSkuList.Any(pss => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == pss.PurchaseSkuId) == 0))
+ {
+ isMatch = false;
+ break;
+ }
+ }
+
+ if (isMatch)
+ {
+ foreach (var schemeProduct in samePurchaserProductList)
+ {
+ cargoParamList.AddRange(schemeProduct.PurchaseSchemeProductSkuList.Select(pss => new CargoParamRequest()
+ {
+ BelongSkuId = pss.SkuId,
+ ProductId = pss.PurchaseProductId,
+ SkuId = pss.PurchaseSkuId,
+ SchemeId = pss.SkuPurchaseSchemeId,
+ SpecId = pss.PurchaseSkuSpecId,
+ Quantity = (itemTotal * pss.PurchaseRatio) ?? 1
+ }));
+ }
+ break;
+ }
+ }
+ }
+ return cargoParamList;
+ }
}
}
diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
index c0a5923..7a59a5b 100644
--- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
@@ -316,18 +316,18 @@ namespace BBWYB.Server.Business
// return fsql.Select().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList();
//}
- public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
- {
- var purchaseSchemeIdList = fsql.Select().Where(ps => ps.ProductId == deletePurchaseSchemeRequest.ProductId &&
- ps.PurchaserId == deletePurchaseSchemeRequest.PurchaserId).ToList(ps => ps.Id);
+ //public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
+ //{
+ // var purchaseSchemeIdList = fsql.Select().Where(ps => ps.ProductId == deletePurchaseSchemeRequest.ProductId &&
+ // ps.PurchaserId == deletePurchaseSchemeRequest.PurchaserId).ToList(ps => ps.Id);
- fsql.Transaction(() =>
- {
- fsql.Delete(purchaseSchemeIdList).ExecuteAffrows();
- fsql.Delete().Where(psp => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)).ExecuteAffrows();
- fsql.Delete().Where(psps => purchaseSchemeIdList.Contains(psps.SkuPurchaseSchemeId)).ExecuteAffrows();
- });
- }
+ // fsql.Transaction(() =>
+ // {
+ // fsql.Delete(purchaseSchemeIdList).ExecuteAffrows();
+ // fsql.Delete().Where(psp => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)).ExecuteAffrows();
+ // fsql.Delete().Where(psps => purchaseSchemeIdList.Contains(psps.SkuPurchaseSchemeId)).ExecuteAffrows();
+ // });
+ //}
public void DeletePurchaseScheme(long schemeId)
{