From d702fed21578dde7630b6f41a287b7bd78cfb8e7 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 27 Aug 2023 09:43:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B7=BB=E5=8A=A0/=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88(web)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 10 +++ .../PurchaseScheme/PurchaseSchemeBusiness.cs | 79 ++++++++++++++++--- .../InputPurchaseSchemeProductRequest.cs | 4 +- .../InputPurchaseSchemeRequest.cs | 17 +++- 4 files changed, 95 insertions(+), 15 deletions(-) diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 7e71b1b..28285a9 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -26,6 +26,16 @@ namespace BBWYB.Server.API.Controllers purchaseSchemeBusiness.EditPurchaseScheme(batchCURDSchemeRequest); } + /// + /// 添加/编辑采购方案(web) + /// + /// + [HttpPost] + public void EditPurchaseSchemeV2([FromBody] BatchCURDSchemeRequest batchCURDSchemeRequest) + { + purchaseSchemeBusiness.EditPurchaseSchemeV2(batchCURDSchemeRequest); + } + /// /// 获取采购方案列表 /// diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index d31a373..e08c632 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -194,25 +194,60 @@ namespace BBWYB.Server.Business public void EditPurchaseSchemeV2(BatchCURDSchemeRequest batchCURDSchemeRequest) { - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && - batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) - throw new BusinessException("非法参数"); - if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || - string.IsNullOrEmpty(pp.PurchaserName)))) - throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); + List dbSchemeGroupList = null; + List dbPurchaseSchemeList = null; + + #region 数据验证 + if ((batchCURDSchemeRequest.EditPurchaseSchemeList == null || batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0) && + (batchCURDSchemeRequest.AddPurchaseSchemeList == null || batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)) + throw new BusinessException("更新方案和新增方案参数不能同时为空"); + + if (batchCURDSchemeRequest.EditPurchaseSchemeList != null && batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0) + { + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserName)))) + throw new BusinessException("更新方案中有采购商Id/Name/Location为空"); + + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) + throw new BusinessException("更新方案中采购方案缺少Id"); + + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.SchemeGroupId == null || ps.SchemeGroupId == 0)) + throw new BusinessException("更新方案中采购方案缺少分组Id"); + } + + if (batchCURDSchemeRequest.AddPurchaseSchemeList != null && batchCURDSchemeRequest.AddPurchaseSchemeList.Count() > 0) + { + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserName)))) + throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || - string.IsNullOrEmpty(pp.PurchaserName)))) - throw new BusinessException("编辑方案中有采购商Id/Name/Location为空"); - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count() > 0 && batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.Id == 0)) - throw new BusinessException("编辑方案中采购方案缺少Id"); + var productIds = batchCURDSchemeRequest.AddPurchaseSchemeList.Select(ps => ps.ProductId).ToList(); + + dbSchemeGroupList = fsql.Select().Where(psg => productIds.Contains(psg.ProductId)).ToList(); + var dbSchemeGroupIds = dbSchemeGroupList.Select(psg => psg.Id).ToList(); + dbPurchaseSchemeList = fsql.Select().Where(ps => dbSchemeGroupIds.Contains(ps.SchemeGroupId)).ToList(); + foreach (var addPurchaseScheme in batchCURDSchemeRequest.AddPurchaseSchemeList) + { + if (addPurchaseScheme.SchemeGroupId == null || addPurchaseScheme.SchemeGroupId == 0) + continue; + var dbSchemeGroup = dbSchemeGroupList.FirstOrDefault(g => g.Id == addPurchaseScheme.SchemeGroupId); + if (dbSchemeGroup == null) + throw new BusinessException($"新增方案中指定了不存在的分组{addPurchaseScheme.SchemeGroupId}"); + var dbPurchaseSchemeList_sameGroup = dbPurchaseSchemeList.Where(ps => ps.SchemeGroupId == addPurchaseScheme.SchemeGroupId).ToList(); + if (dbPurchaseSchemeList_sameGroup.Any(ps => ps.SkuId == addPurchaseScheme.SkuId)) + throw new BusinessException($"采购方案分组中Sku不允许重复,{dbSchemeGroup.GroupName}已存在{addPurchaseScheme.SkuId}的采购方案"); + } + } + + #endregion List addPurchaseSchemeList = new List(); List addPurchaseSchemeProductList = new List(); List addPurchaseSchemeProductSkuList = new List(); List newPurchaserList = new List(); List deletePurchaseSchemeIdList = new List(); List> updatePurchaseSchemeList = new List>(); + List insertPurchaseSchemeGroupsList = new List(); if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0) { @@ -220,13 +255,31 @@ namespace BBWYB.Server.Business foreach (var psReq in batchCURDSchemeRequest.AddPurchaseSchemeList) { + if (psReq.SchemeGroupId == null || psReq.SchemeGroupId == 0) + { + //新增分组 + var saemSpuSchemeGroupList = dbSchemeGroupList.Where(psg => psg.ProductId == psReq.ProductId).ToList(); + var insertSchemeGroup = new PurchaseSchemeGroup() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + GroupName = $"{psReq.ProductId}_第{saemSpuSchemeGroupList.Count() + 1}组", + ProductId = psReq.ProductId, + ShopId = psReq.ShopId + }; + insertPurchaseSchemeGroupsList.Add(insertSchemeGroup); + } + var ps = new PurchaseScheme() { CreateTime = DateTime.Now, Id = idGenerator.NewLong(), ProductId = psReq.ProductId, SkuId = psReq.SkuId, - ShopId = psReq.ShopId + ShopId = psReq.ShopId, + HYBDId = psReq.HYBDId, + HYSchemeId = psReq.HYSchemeId, + SchemeGroupId = psReq.SchemeGroupId ?? 0 }; addPurchaseSchemeList.Add(ps); foreach (var pspReq in psReq.PurchaseSchemeProductList) @@ -308,6 +361,8 @@ namespace BBWYB.Server.Business fsql.Insert(addPurchaseSchemeProductList).ExecuteAffrows(); if (addPurchaseSchemeProductSkuList.Count > 0) fsql.Insert(addPurchaseSchemeProductSkuList).ExecuteAffrows(); + if (insertPurchaseSchemeGroupsList.Count() > 0) + fsql.Insert(insertPurchaseSchemeGroupsList).ExecuteAffrows(); if (updatePurchaseSchemeList.Count() > 0) { foreach (var update in updatePurchaseSchemeList) diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs index e8ea75e..141aa17 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs @@ -15,12 +15,12 @@ public string PurchaseUrl { get; set; } /// - /// 采购商Id + /// 采购商Id (1688 SellerUserId) /// public string PurchaserId { get; set; } /// - /// 采购商Id + /// 采购商Id2 (1688 SellerLoginId) /// public string PurchaserId2 { get; set; } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs index 6a11c88..955a6d0 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs @@ -4,10 +4,25 @@ namespace BBWYB.Server.Model.Dto { public class InputPurchaseSchemeRequest { + /// + /// 采购方案分组Id,为空将新增分组 + /// + public long? SchemeGroupId { get; set; } + + /// + /// 慧眼标的Id + /// + public string HYBDId { get; set; } + + /// + /// 慧眼方案Id + /// + public string HYSchemeId { get; set; } + public long ShopId { get; set; } public string ProductId { get; set; } public string SkuId { get; set; } - + public IList PurchaseSchemeProductList { get; set; } } }