From 1f3ff1e8864de18f97488a1cd117e5eea9df85fe Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Tue, 29 Aug 2023 09:21:37 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=87=E8=B4=AD=E6=96=B9?=
=?UTF-8?q?=E6=A1=88=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/PurchaseSchemeController.cs | 11 +++
.../PurchaseScheme/PurchaseSchemeBusiness.cs | 83 +++++++++++++++++--
.../DeletePurchaseSchemeRequest.cs | 9 --
.../DeletePurchaseSkuRequest.cs | 11 +++
4 files changed, 97 insertions(+), 17 deletions(-)
delete mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs
create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSkuRequest.cs
diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
index 8f129aa..6e9c386 100644
--- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
+++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
@@ -165,5 +165,16 @@ namespace BBWYB.Server.API.Controllers
{
return purchaseSchemeBusiness.EditPurchaseRatio(request);
}
+
+ ///
+ /// 删除采购Sku
+ ///
+ ///
+ /// 最新的采购方案成本
+ [HttpDelete]
+ public decimal DeletePurchaseSku([FromBody]DeletePurchaseSkuRequest request)
+ {
+ return purchaseSchemeBusiness.DeletePurchaseSku(request);
+ }
}
}
diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
index 96a0729..4de643b 100644
--- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
@@ -225,6 +225,14 @@ namespace BBWYB.Server.Business
throw new BusinessException("更新方案缺少ProductId/SkuId");
}
+ if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList == null ||
+ ps.PurchaseSchemeProductList.Count() == 0 ||
+ ps.PurchaseSchemeProductList.Any(psp => psp.PurchaseSchemeProductSkuList == null ||
+ psp.PurchaseSchemeProductSkuList.Count() == 0)))
+ {
+ throw new BusinessException("更新方案缺少商品信息");
+ }
+
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) ||
string.IsNullOrEmpty(pp.PurchaserId2) ||
@@ -250,6 +258,15 @@ namespace BBWYB.Server.Business
throw new BusinessException("新增方案缺少ProductId/SkuId");
}
+ if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList == null ||
+ ps.PurchaseSchemeProductList.Count() == 0 ||
+ ps.PurchaseSchemeProductList.Any(psp => psp.PurchaseSchemeProductSkuList == null ||
+ psp.PurchaseSchemeProductSkuList.Count() == 0)))
+ {
+ throw new BusinessException("新增方案缺少商品信息");
+ }
+
+
if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) ||
string.IsNullOrEmpty(pp.PurchaserId2) ||
string.IsNullOrEmpty(pp.PurchaserName))))
@@ -870,16 +887,27 @@ namespace BBWYB.Server.Business
long? pssId = null;
foreach (var schemeProduct in scheme.PurchaseSchemeProductList)
{
- foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList)
+ var tartegtPurchaseProductSku = schemeProduct.PurchaseSchemeProductSkuList.FirstOrDefault(pss => pss.SkuId == request.SkuId &&
+ pss.PurchaseSkuId == request.PurchaseSkuId);
+
+ if (tartegtPurchaseProductSku != null)
{
- if (schemeProductSku.SkuId == request.SkuId &&
- schemeProductSku.PurchaseSkuId == request.PurchaseSkuId)
- {
- schemeProductSku.PurchaseRatio = request.Ratio;
- pssId = schemeProductSku.Id;
- }
- defaultCost += ((schemeProductSku.ActualPrice ?? schemeProductSku.PurchaseSkuPrice) ?? 0) * (schemeProductSku.PurchaseRatio ?? 1);
+ tartegtPurchaseProductSku.PurchaseRatio = request.Ratio;
+ pssId = tartegtPurchaseProductSku.Id;
}
+
+ defaultCost += schemeProduct.PurchaseSchemeProductSkuList.Sum(pss => ((pss.ActualPrice ?? pss.PurchaseSkuPrice) ?? 0) * (pss.PurchaseRatio ?? 1));
+
+ //foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList)
+ //{
+ // if (schemeProductSku.SkuId == request.SkuId &&
+ // schemeProductSku.PurchaseSkuId == request.PurchaseSkuId)
+ // {
+ // schemeProductSku.PurchaseRatio = request.Ratio;
+ // pssId = schemeProductSku.Id;
+ // }
+ // defaultCost += ((schemeProductSku.ActualPrice ?? schemeProductSku.PurchaseSkuPrice) ?? 0) * (schemeProductSku.PurchaseRatio ?? 1);
+ //}
}
if (pssId == null)
throw new BusinessException("未找到需要更新的采购配件");
@@ -890,5 +918,44 @@ namespace BBWYB.Server.Business
});
return defaultCost;
}
+
+ public decimal DeletePurchaseSku(DeletePurchaseSkuRequest request)
+ {
+ if (request.SchemeId == 0 || string.IsNullOrEmpty(request.SkuId) || string.IsNullOrEmpty(request.PurchaseSkuId))
+ throw new BusinessException("参数不完整");
+ var schemeList = GetPurchaseSchemeList(new QuerySchemeRequest()
+ {
+ IncludePurchaseSkuBasicInfo = 1,
+ SchemeId = request.SchemeId
+ });
+ if (schemeList.Count() == 0)
+ throw new BusinessException("采购方案不存在");
+ var scheme = schemeList[0];
+ var defaultCost = 0M;
+ long? pssId = null;
+ foreach (var schemeProduct in scheme.PurchaseSchemeProductList)
+ {
+ var tartegtPurchaseProductSku = schemeProduct.PurchaseSchemeProductSkuList.FirstOrDefault(pss => pss.SkuId == request.SkuId &&
+ pss.PurchaseSkuId == request.PurchaseSkuId);
+ if (tartegtPurchaseProductSku != null)
+ {
+ if (schemeProduct.PurchaseSchemeProductSkuList.Count() == 1)
+ throw new BusinessException("最后一个采购sku不能被移除");
+ pssId = tartegtPurchaseProductSku.Id;
+ }
+
+ defaultCost += schemeProduct.PurchaseSchemeProductSkuList.Where(pss => !(pss.SkuId == request.SkuId && pss.PurchaseSkuId == request.PurchaseSkuId))
+ .Sum(pss => ((pss.ActualPrice ?? pss.PurchaseSkuPrice) ?? 0) * (pss.PurchaseRatio ?? 1));
+ }
+
+ if (pssId == null)
+ throw new BusinessException("未找到需要移除的采购sku");
+ fsql.Transaction(() =>
+ {
+ fsql.Update(request.SchemeId).Set(ps => ps.DefaultCost, defaultCost).ExecuteAffrows();
+ fsql.Delete(pssId.Value).ExecuteAffrows();
+ });
+ return defaultCost;
+ }
}
}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs
deleted file mode 100644
index 047cd7b..0000000
--- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace BBWYB.Server.Model.Dto
-{
- public class DeletePurchaseSchemeRequest
- {
- public string ProductId { get; set; }
-
- public string PurchaserId { get; set; }
- }
-}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSkuRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSkuRequest.cs
new file mode 100644
index 0000000..47d4440
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSkuRequest.cs
@@ -0,0 +1,11 @@
+namespace BBWYB.Server.Model.Dto
+{
+ public class DeletePurchaseSkuRequest
+ {
+ public long SchemeId { get; set; }
+
+ public string SkuId { get; set; }
+
+ public string PurchaseSkuId { get; set; }
+ }
+}