diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 8e519e6..673114c 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -28,7 +28,7 @@ namespace BBWYB.Server.API.Controllers } /// - /// 查询采购方案列表 + /// 获取采购方案列表 (不含采购配配件基本信息) /// /// /// diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 2347173..c0a5923 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -20,35 +20,45 @@ namespace BBWYB.Server.Business private void ExtractNewPurchaser(IList purchaserSchemeList, IList addPurchaserList) where T : InputPurchaseSchemeRequest { - var reqeustPurchaserIdList = purchaserSchemeList.Select(s => s.PurchaserId).Distinct().ToList(); + List reqeustPurchaserIdList = new List(); + foreach (var scheme in purchaserSchemeList) + reqeustPurchaserIdList.AddRange(scheme.PurchaseSchemeProductList.Select(p => p.PurchaserId)); + reqeustPurchaserIdList = reqeustPurchaserIdList.Distinct().ToList(); + + //var reqeustPurchaserIdList = purchaserSchemeList.Select(s => s.PurchaserId).Distinct().ToList(); var existPurchaserIdList = fsql.Select().Where(p => reqeustPurchaserIdList.Contains(p.Id)).ToList(p => p.Id); var newPurchaserIdList = reqeustPurchaserIdList.Except(existPurchaserIdList); foreach (var scheme in purchaserSchemeList) { - if (newPurchaserIdList.Any(p => p == scheme.PurchaserId) && !addPurchaserList.Any(p => p.Id == scheme.PurchaserId)) + foreach (var ps in scheme.PurchaseSchemeProductList) { - addPurchaserList.Add(new Purchaser() + if (newPurchaserIdList.Any(p => p == ps.PurchaserId) && !addPurchaserList.Any(p => p.Id == ps.PurchaserId)) { - Id = scheme.PurchaserId, - Id2 = scheme.PurchaserId2, - Name = scheme.PurchaserName, - Location = scheme.PurchaserLocation, - Platform = scheme.PurchasePlatform - }); + addPurchaserList.Add(new Purchaser() + { + Id = ps.PurchaserId, + Id2 = ps.PurchaserId2, + Name = ps.PurchaserName, + Location = ps.PurchaserLocation, + Platform = scheme.PurchasePlatform + }); + } } + } } public void EditPurchaseScheme(BatchCURDSchemeRequest batchCURDSchemeRequest) { - if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && + batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) throw new BusinessException("非法参数"); - if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) || - string.IsNullOrEmpty(p.PurchaserName))) + 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.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) || - string.IsNullOrEmpty(p.PurchaserName))) + if (batchCURDSchemeRequest.EditPurchaseSchemeList.Any(ps => ps.PurchaseSchemeProductList.Any(pp => string.IsNullOrEmpty(pp.PurchaserId) || + string.IsNullOrEmpty(pp.PurchaserName)))) throw new BusinessException("编辑方案中有采购商Id/Name/Location为空"); List addPurchaseSchemeList = null; @@ -138,48 +148,49 @@ namespace BBWYB.Server.Business } /// - /// 获取采购方案 + /// 获取采购方案(不含采购配配件基本信息) /// /// /// public IList GetPurchaseSchemeList(QuerySchemeRequest querySchemeRequest) { - var select = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id); + var select = fsql.Select(); if (querySchemeRequest.SchemeId != null && querySchemeRequest.SchemeId != 0) - select = select.Where((ps, p) => ps.Id == querySchemeRequest.SchemeId); + select = select.Where(ps => ps.Id == querySchemeRequest.SchemeId); else if (querySchemeRequest.SchemeIdList != null && querySchemeRequest.SchemeIdList.Count() > 0) - select = select.Where((ps, p) => querySchemeRequest.SchemeIdList.Contains(ps.Id)); + select = select.Where(ps => querySchemeRequest.SchemeIdList.Contains(ps.Id)); else { - select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, (ps, p) => ps.ShopId == querySchemeRequest.ShopId) - .WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, (ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId)) - .WhereIf(!string.IsNullOrEmpty(querySchemeRequest.PurchaserId), (ps, p) => ps.PurchaserId == querySchemeRequest.PurchaserId) - .WhereIf(querySchemeRequest.PurchasePlatform != null, (ps, p) => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform); + select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, ps => ps.ShopId == querySchemeRequest.ShopId) + .WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, ps => querySchemeRequest.SkuIdList.Contains(ps.SkuId)); + //.WhereIf(querySchemeRequest.PurchasePlatform != null, ps => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform); } - var purchaseSchemeList = select.ToList((ps, p) => new PurchaseSchemeResponse - { - Id = ps.Id, - ProductId = ps.ProductId, - SkuId = ps.SkuId, - ShopId = ps.ShopId, - PurchaserId = p.Id, - PurchaserId2 = p.Id2, - PurchaserName = p.Name, - PurchaserLocation = p.Location, - DefaultCost = ps.DefaultCost, - RealCost = ps.RealCost, - CreateTime = ps.CreateTime, - PurchasePlatform = ps.PurchasePlatform, - LastPurchaseTime = ps.LastPurchaseTime - }); + var purchaseSchemeList = select.ToList(); + if (purchaseSchemeList.Count > 0) { var purchaseSchemeIdList = purchaseSchemeList.Select(p => p.Id).ToList(); - var purchaseSchemeProductList = fsql.Select().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) - .ToList().Map>(); + var purchaseSchemeProductList = fsql.Select() + .InnerJoin((psp, p) => psp.PurchaserId == p.Id) + .Where((psp, p) => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)) + .ToList((psp, p) => new PurchaseSchemeProductResponse + { + CreateTime = psp.CreateTime, + Id = psp.Id, + ProductId = psp.ProductId, + PurchaseProductId = psp.PurchaseProductId, + PurchaseUrl = psp.PurchaseUrl, + SkuId = psp.SkuId, + SkuPurchaseSchemeId = psp.SkuPurchaseSchemeId, + PurchaserId = p.Id, + PurchaserId2 = p.Id2, + PurchaserLocation = p.Location, + PurchaserName = p.Name, + PurchasePlatform = p.Platform, + }); var purchaseSchemeProductSkuList = fsql.Select().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) .ToList().Map>(); @@ -198,6 +209,23 @@ namespace BBWYB.Server.Business schemeProduct.PurchaseSchemeProductSkuList.AddRange(schemeProductSkuList); } } + + #region 封装采购商 + foreach (var schemeProduct in schemeProductList) + { + if (!scheme.PurchaserList.Any(p => p.Id == schemeProduct.PurchaserId)) + { + scheme.PurchaserList.Add(new Purchaser() + { + Id = schemeProduct.PurchaserId, + Id2 = schemeProduct.PurchaserId2, + Location = schemeProduct.PurchaserLocation, + Name = schemeProduct.PurchaserName, + Platform = schemeProduct.PurchasePlatform + }); + } + } + #endregion } } return purchaseSchemeList; @@ -212,29 +240,33 @@ namespace BBWYB.Server.Business List> updatePurchaseSchemeList = new List>(); foreach (var purchaseScheme in purchaseSchemeList) { - var purchaseProductIds = purchaseScheme.PurchaseSchemeProductList.Select(p => p.PurchaseProductId).ToArray(); - var purchaseSkuIds = new List(); - foreach (var purchaseProduct in purchaseScheme.PurchaseSchemeProductList) + var amount = 0M; + var purchasePlatformGroups = purchaseScheme.PurchaseSchemeProductList.GroupBy(p => p.PurchasePlatform); + foreach (var purchasePlatformGroup in purchasePlatformGroups) { - purchaseSkuIds.AddRange(purchaseProduct.PurchaseSchemeProductSkuList.Select(ps => ps.PurchaseSkuId)); - } - - var purchaseSkuBasicInfoList = BatchGetPurchaseSkuBasicInfo(new BatchPurchaseSkuBasicInfoRequest() - { - FirstApiMode = Enums.PurchaseProductAPIMode.Spider, - PriceMode = Enums.PurchaseOrderMode.批发, - Params = new List() + var purchaseProductIds = purchasePlatformGroup.Select(p => p.PurchaseProductId).ToArray(); + var purchaseSkuIds = new List(); + foreach (var purchaseProduct in purchaseScheme.PurchaseSchemeProductList) + { + purchaseSkuIds.AddRange(purchaseProduct.PurchaseSchemeProductSkuList.Select(ps => ps.PurchaseSkuId)); + } + var purchaseSkuBasicInfoList = BatchGetPurchaseSkuBasicInfo(new BatchPurchaseSkuBasicInfoRequest() + { + FirstApiMode = Enums.PurchaseProductAPIMode.Spider, + PriceMode = Enums.PurchaseOrderMode.批发, + Params = new List() { new BatchPurchaseSkuBasicInfoParamRequest() { - Platform = purchaseScheme.PurchasePlatform, + Platform = purchasePlatformGroup.Key.Value, PurchaseProductIds = purchaseProductIds, PurchaseSkuIds = purchaseSkuIds } } - }); + }); + amount += purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price)); + } - var amount = purchaseSkuBasicInfoList.Sum(p => p.ItemList.Sum(s => s.Price)); if (purchaseScheme.DefaultCost != amount) { purchaseScheme.DefaultCost = amount; @@ -255,34 +287,34 @@ namespace BBWYB.Server.Business return purchaseSchemeList; } - /// - /// 获取共同拥有的采购商 - /// - /// - /// - public IList GetSharePurchaser(QuerySchemeRequest querySchemeRequest) - { - var skuCount = querySchemeRequest.SkuIdList.Count(); - - var purchaseSchemeList = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id) - .Where((ps, p) => ps.ShopId == querySchemeRequest.ShopId) - .Where((ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId)) - .ToList(); - if (purchaseSchemeList.Count() == 0) - return null; - - var group = purchaseSchemeList.GroupBy(p => p.PurchaserId); - var sharePurchaserIdList = new List(); - foreach (var g in group) - { - if (g.Count() == skuCount) - sharePurchaserIdList.Add(g.Key); - } - if (sharePurchaserIdList.Count == 0) - return null; - - return fsql.Select().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList(); - } + ///// + ///// 获取共同拥有的采购商 + ///// + ///// + ///// + //public IList GetSharePurchaser(QuerySchemeRequest querySchemeRequest) + //{ + // var skuCount = querySchemeRequest.SkuIdList.Count(); + + // var purchaseSchemeList = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id) + // .Where((ps, p) => ps.ShopId == querySchemeRequest.ShopId) + // .Where((ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId)) + // .ToList(); + // if (purchaseSchemeList.Count() == 0) + // return null; + + // var group = purchaseSchemeList.GroupBy(p => p.PurchaserId); + // var sharePurchaserIdList = new List(); + // foreach (var g in group) + // { + // if (g.Count() == skuCount) + // sharePurchaserIdList.Add(g.Key); + // } + // if (sharePurchaserIdList.Count == 0) + // return null; + + // return fsql.Select().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList(); + //} public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest) { diff --git a/BBWYB.Server.Model/BBWYB.Server.Model.csproj b/BBWYB.Server.Model/BBWYB.Server.Model.csproj index a408f32..54ecedd 100644 --- a/BBWYB.Server.Model/BBWYB.Server.Model.csproj +++ b/BBWYB.Server.Model/BBWYB.Server.Model.csproj @@ -12,4 +12,8 @@ + + + + diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs index be1d49c..356d97b 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs @@ -29,11 +29,11 @@ namespace BBWYB.Server.Model [Column(StringLength = 50, IsNullable = false)] public string ProductId { get; set; } - /// - /// 采购商Id - /// - [Column(StringLength = 20)] - public string PurchaserId { get; set; } + ///// + ///// 采购商Id + ///// + //[Column(StringLength = 20)] + //public string PurchaserId { get; set; } /// /// 采购实际成本 @@ -51,8 +51,8 @@ namespace BBWYB.Server.Model /// public DateTime? LastPurchaseTime { get; set; } - [Column(MapType = typeof(int), DbType = "int(1)")] - public Enums.Platform PurchasePlatform { get; set; } + //[Column(MapType = typeof(int), DbType = "int(1)")] + //public Enums.Platform PurchasePlatform { get; set; } [Column(IsIgnore = true)] public List PurchaseSchemeProductList { get; set; } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs index 3ffb384..b97b8da 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace BBWYB.Server.Model.Dto +namespace BBWYB.Server.Model.Dto { public class InputPurchaseSchemeProductRequest { @@ -11,17 +7,37 @@ namespace BBWYB.Server.Model.Dto /// public string ProductId { get; set; } /// - /// 店铺商品Skull + /// 店铺商品SkuId /// public string SkuId { get; set; } /// - /// 采购商品id + /// 采购商品Id /// public string PurchaseProductId { get; set; } /// /// 采购链接 /// public string PurchaseUrl { get; set; } + + /// + /// 采购商Id + /// + public string PurchaserId { get; set; } + + /// + /// 采购商Id + /// + public string PurchaserId2 { get; set; } + + /// + /// 采购商名称 + /// + public string PurchaserName { get; set; } + /// + /// 采购商发货地 + /// + public string PurchaserLocation { get; set; } + public IList PurchaseSchemeProductSkuList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs index fda1121..b89d7e4 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs @@ -15,24 +15,24 @@ namespace BBWYB.Server.Model.Dto /// 采购实际成本 /// public decimal? RealCost { get; set; } - /// - /// 采购商Id - /// - public string PurchaserId { get; set; } + ///// + ///// 采购商Id + ///// + //public string PurchaserId { get; set; } - /// - /// 采购商Id - /// - public string PurchaserId2 { get; set; } + ///// + ///// 采购商Id + ///// + //public string PurchaserId2 { get; set; } - /// - /// 采购商名称 - /// - public string PurchaserName { get; set; } - /// - /// 采购商发货地 - /// - public string PurchaserLocation { get; set; } + ///// + ///// 采购商名称 + ///// + //public string PurchaserName { get; set; } + ///// + ///// 采购商发货地 + ///// + //public string PurchaserLocation { get; set; } /// /// 采购平台 /// diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs index 59e2088..8924508 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs @@ -18,14 +18,14 @@ namespace BBWYB.Server.Model.Dto public IList SkuIdList { get; set; } - /// - /// 采购商Id, 可空 - /// - public string PurchaserId { get; set; } + ///// + ///// 采购商Id, 可空 + ///// + //public string PurchaserId { get; set; } - /// - /// 采购平台 - /// - public Enums.Platform? PurchasePlatform { get; set; } + ///// + ///// 采购平台 + ///// + //public Enums.Platform? PurchasePlatform { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs index 0123956..288e9f2 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs @@ -6,6 +6,14 @@ namespace BBWYB.Server.Model.Dto { public class PurchaseSchemeProductResponse : Model.Db.PurchaseSchemeProduct { + public string PurchaserName { get; set; } + + public string PurchaserId2 { get; set; } + + public string PurchaserLocation { get; set; } + + public Enums.Platform? PurchasePlatform { get; set; } + public new List PurchaseSchemeProductSkuList { get; set; } public PurchaseSchemeProductResponse() diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs index f322e0a..e1c617b 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs @@ -6,17 +6,20 @@ namespace BBWYB.Server.Model.Dto { public class PurchaseSchemeResponse : PurchaseScheme { - public string PurchaserName { get; set; } + //public string PurchaserName { get; set; } - public string PurchaserId2 { get; set; } + //public string PurchaserId2 { get; set; } - public string PurchaserLocation { get; set; } + //public string PurchaserLocation { get; set; } public new List PurchaseSchemeProductList { get; set; } + public List PurchaserList { get; set; } + public PurchaseSchemeResponse() { PurchaseSchemeProductList = new List(); + PurchaserList = new List(); } } }