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; } + } +}