From 628e502ecc35239697885df6ddf21057a45d1ff3 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 11 Aug 2023 01:08:31 +0800 Subject: [PATCH 1/9] =?UTF-8?q?1.=E7=BC=96=E8=BE=91/=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88=E6=8E=A5=E5=8F=A3=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=A4=9A=E5=95=86=E5=AE=B6=202.=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=A4=9A=E5=95=86=E5=AE=B6=EF=BC=8C=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=B1=82=E5=A2=9E=E5=8A=A0=E5=95=86=E5=AE=B6?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=8C=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=B1=82=E5=A2=9E=E5=8A=A0=E5=95=86=E5=AE=B6=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=203.=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E6=8E=A5=E5=8F=A3=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E5=95=86=E5=AE=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 2 +- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 196 ++++++++++-------- BBWYB.Server.Model/BBWYB.Server.Model.csproj | 4 + .../Db/PurchaseScheme/PurchaseScheme.cs | 14 +- .../InputPurchaseSchemeProductRequest.cs | 30 ++- .../InputPurchaseSchemeRequest.cs | 32 +-- .../PurchaseScheme/QuerySchemeRequest.cs | 16 +- .../PurchaseSchemeProductResponse.cs | 8 + .../PurchaseScheme/PurchaseSchemeResponse.cs | 9 +- 9 files changed, 187 insertions(+), 124 deletions(-) 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(); } } } From e8a83a3b9102cc58e898a00e7c4fd97182849947 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 11 Aug 2023 10:48:55 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=AE=9A=E4=B9=89=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E9=85=8D=E4=BB=B6=E6=AF=94=E4=BE=8B=E8=AF=B7=E6=B1=82=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Db/PurchaseScheme/Purchaseschemeproductsku.cs | 6 ++++++ .../PurchaseScheme/EditPurchaseRatioRequest.cs | 11 +++++++++++ 2 files changed, 17 insertions(+) create mode 100644 BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs index 4a9e837..af819ee 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs @@ -46,6 +46,12 @@ namespace BBWYB.Server.Model.Db /// public long SkuPurchaseSchemeId { get; set; } + /// + /// 采购比例 + /// + [Column(DbType = "int(1)", IsNullable = true)] + public int? PurchaseRatio { get; set; } + } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs new file mode 100644 index 0000000..2e09843 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs @@ -0,0 +1,11 @@ +namespace BBWYB.Server.Model.Dto +{ + public class EditPurchaseRatioRequest + { + public long SchemeId { get; set; } + + public string SkuId { get; set; } + + public string PurchaseSkuId { get; set; } + } +} From 1f2f43b981c5d48e52371d56dd3206f8e0b23364 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 12 Aug 2023 01:32:50 +0800 Subject: [PATCH 3/9] 1 --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 58 ++++++++++++------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index d91f624..3bee9f6 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -36,6 +36,7 @@ namespace BBWYB.Server.Business private Lazy jdBusinessLazy; private Lazy opPlatformClientFactoryLazy; private Lazy venderBusinessLazy; + private Lazy purchaseSchemeBusinessLazy; private PP_PlatformClientFactory ppPlatformClientFactory => pplatformClientFactoryLazy.Value; private TaskSchedulerManager taskSchedulerManager => taskSchedulerManagerLazy.Value; @@ -50,6 +51,8 @@ namespace BBWYB.Server.Business private JDBusiness jdBusiness => jdBusinessLazy.Value; + private PurchaseSchemeBusiness purchaseSchemeBusiness => purchaseSchemeBusinessLazy.Value; + private IList cantPurchaseOrderStateList; public PurchaseOrderBusiness(IFreeSql fsql, @@ -68,6 +71,7 @@ namespace BBWYB.Server.Business jdBusinessLazy = new Lazy(() => serviceProvider.GetService()); opPlatformClientFactoryLazy = new Lazy(() => serviceProvider.GetService()); venderBusinessLazy = new Lazy(() => serviceProvider.GetService()); + purchaseSchemeBusinessLazy = new Lazy(() => serviceProvider.GetService()); cantPurchaseOrderStateList = new List() { Enums.OrderState.已取消, @@ -1113,6 +1117,10 @@ namespace BBWYB.Server.Business if (request.PurchasePlatform != Enums.Platform.阿里巴巴) return null; + var order = fsql.Select(request.OrderId).ToOne(); + if (order == null) + throw new BusinessException("订单不存在"); + var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.PurchasePlatform); var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() { @@ -1143,24 +1151,34 @@ 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 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, + SkuIdList = skuIds + }); + if (purchaseSchemeList.Count() == 0) + throw new BusinessException("未匹配到采购方案"); #endregion #region 匹配采购单所使用到的采购方案 @@ -1199,8 +1217,6 @@ namespace BBWYB.Server.Business { var currentPurchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) .Sum(p => p.ProductAmount); - //var currentPurchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) - // .Sum(p => p.Quantity); var currentPurchaseSkuTotalQuantity = cargoParamList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) .Sum(p => p.Quantity); @@ -2611,7 +2627,7 @@ namespace BBWYB.Server.Business if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 && state == "QianShou" && order.OrderState == Enums.OrderState.待验收 && - inStoreOrderCheckTaskList != null && + inStoreOrderCheckTaskList != null && !inStoreOrderCheckTaskList.Any(x => x.OrderId == order.Id)) { insertInStoreOrderCheckTaskList.Add(new InStoreOrderCheckTask() From ba1c2d978ccf7086308c33a65b0c691240368f3a Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 12 Aug 2023 02:15:11 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E5=8C=B9=E9=85=8D=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=9C=AA=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrder/PurchaseOrderBusiness.cs | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 3bee9f6..a4eed99 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -1182,25 +1182,42 @@ namespace BBWYB.Server.Business #endregion #region 匹配采购单所使用到的采购方案 - var assocationOrderCostDetailList = new List(); - var purchaseSchemeGroups = purchaseSchemeSkuList.GroupBy(s => s.SkuPurchaseSchemeId); var cargoParamList = new List(); - foreach (var schemeGroup in purchaseSchemeGroups) + foreach (var scheme in purchaseSchemeList) { - var schemePurchaseSkuList = schemeGroup.ToList(); - if (schemePurchaseSkuList.Any(psku => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == psku.PurchaseSkuId) == 0)) + var samePurchaserProductList = scheme.PurchaseSchemeProductList.Where(psp => psp.PurchaserId == purchaserId).ToList(); + if (samePurchaserProductList.Count() == 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 - })); + foreach (var schemeProduct in samePurchaserProductList) + { + + } } + 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) 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 5/9] =?UTF-8?q?=E5=85=B3=E8=81=94=E9=A2=84=E8=A7=88?= =?UTF-8?q?=EF=BC=8C=E5=85=B3=E8=81=94=E9=87=87=E8=B4=AD=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E5=A4=9A=E9=87=87=E8=B4=AD=E5=95=86=E7=9A=84?= =?UTF-8?q?=E9=87=87=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) { From 39d1bc2703cb1af73d8693bcf4bf97fc3e3a5e2c Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 13 Aug 2023 12:46:49 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E5=A4=9A=E5=95=86=E5=AE=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWYB.Client/App.xaml.cs | 1 + BBWYB.Client/GlobalContext.cs | 2 +- .../Response/PurchaseSchemeProductResponse.cs | 10 + .../Response/PurchaseSchemeResponse.cs | 36 +-- .../Models/PurchaseScheme/PurchaseScheme.cs | 28 ++- .../PurchaseScheme/PurchaseSchemeProduct.cs | 13 +- BBWYB.Client/ViewModels/MainViewModel.cs | 16 +- .../Order/ChoosePurchaseSchemeViewModel.cs | 18 +- .../Purchase/OnlinePurchaseViewModel.cs | 4 +- .../Ware/BindingPurchaseProductViewModel.cs | 229 ++++++++++++------ .../ViewModels/Ware/WareManagerViewModel.cs | 228 ++++++++++------- .../Views/Ware/BindingPurchaseProduct.xaml | 2 +- .../Views/Ware/BindingPurchaseProduct.xaml.cs | 19 +- BBWYB.Client/Views/Ware/WareManager.xaml | 57 ++++- BBWYB.Client/appsettings.json | 4 +- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 37 ++- .../InputPurchaseSchemeProductSkuRequest.cs | 5 + .../PurchaseScheme/QuerySchemeRequest.cs | 16 +- .../PurchaseSchemeProductResponse.cs | 6 +- 19 files changed, 473 insertions(+), 258 deletions(-) diff --git a/BBWYB.Client/App.xaml.cs b/BBWYB.Client/App.xaml.cs index 9f2d3f5..9b29706 100644 --- a/BBWYB.Client/App.xaml.cs +++ b/BBWYB.Client/App.xaml.cs @@ -79,6 +79,7 @@ namespace BBWYB.Client serviceCollection.AddTransient(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); + serviceCollection.AddTransient(); serviceCollection.AddMapper(new MappingProfile()); ServiceProvider = serviceCollection.BuildServiceProvider(); base.OnStartup(e); diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs index dcc7452..373eabc 100644 --- a/BBWYB.Client/GlobalContext.cs +++ b/BBWYB.Client/GlobalContext.cs @@ -22,7 +22,7 @@ namespace BBWYB.Client { public GlobalContext() { - BBWYBApiVersion = "10030"; + BBWYBApiVersion = "10031"; } private User user; diff --git a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs index 712aaaf..995aa88 100644 --- a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs @@ -13,6 +13,16 @@ namespace BBWYB.Client.Models public string SkuId { get; set; } public long SkuPurchaseSchemeId { get; set; } public long UserId { get; set; } + + public string PurchaserName { get; set; } + + public string PurchaserId { get; set; } + public string PurchaserId2 { get; set; } + + public string PurchaserLocation { get; set; } + + public Platform? PurchasePlatform { get; set; } + public List PurchaseSchemeProductSkuList { get; set; } } diff --git a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs index b010fef..01dc224 100644 --- a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs @@ -11,20 +11,20 @@ namespace BBWYB.Client.Models /// public decimal? DefaultCost { get; set; } public string ProductId { get; set; } - /// - /// 采购商Id - /// - public string PurchaserId { get; set; } + ///// + ///// 采购商Id + ///// + //public string PurchaserId { get; set; } - /// - /// 采购商Id - /// - public string PurchaserId2 { get; set; } - public string PurchaserName { get; set; } - /// - /// 发货地 - /// - public string PurchaserLocation { get; set; } + ///// + ///// 采购商Id + ///// + //public string PurchaserId2 { get; set; } + //public string PurchaserName { get; set; } + ///// + ///// 发货地 + ///// + //public string PurchaserLocation { get; set; } /// /// 采购实际成本 /// @@ -32,10 +32,10 @@ namespace BBWYB.Client.Models public string SkuId { get; set; } public long ShopId { get; set; } - /// - /// 采购平台 - /// - public Platform PurchasePlatform { get; set; } + ///// + ///// 采购平台 + ///// + //public Platform PurchasePlatform { get; set; } /// /// 最后采购时间 @@ -43,6 +43,8 @@ namespace BBWYB.Client.Models public DateTime? LastPurchaseTime { get; set; } public List PurchaseSchemeProductList { get; set; } + + public List PurchaserList { get; set; } } } diff --git a/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs index 3d5ad1c..45c82e3 100644 --- a/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; namespace BBWYB.Client.Models { @@ -21,10 +22,10 @@ namespace BBWYB.Client.Models public decimal DefaultCost { get => defaultCost; set { SetProperty(ref defaultCost, value); } } public decimal RealCost { get => realCost; set { SetProperty(ref realCost, value); } } - public string PurchaserId { get; set; } - public string PurchaserId2 { get; set; } + //public string PurchaserId { get; set; } + //public string PurchaserId2 { get; set; } public string PurchaserName { get; set; } - public string PurchaserLocation { get; set; } + //public string PurchaserLocation { get; set; } public string PurchaseProductId1 { get; set; } public int PurchaseProductSkuCount1 { get; set; } public string PurchaseProductId2 { get; set; } @@ -37,7 +38,7 @@ namespace BBWYB.Client.Models /// /// 采购平台 /// - public Platform PurchasePlatform { get; set; } + //public Platform PurchasePlatform { get; set; } /// /// 最后采购时间 @@ -49,9 +50,12 @@ namespace BBWYB.Client.Models /// public IList PurchaseSchemeProductList { get; set; } + public List PurchaserList { get; set; } + public PurchaseScheme() { PurchaseSchemeProductList = new ObservableCollection(); + PurchaserList = new List(); } /// @@ -68,13 +72,17 @@ namespace BBWYB.Client.Models ProductId = apiModel.ProductId, SkuId = apiModel.SkuId, DefaultCost = apiModel.DefaultCost ?? 0, - RealCost = apiModel.RealCost ?? 0, - PurchaserId = apiModel.PurchaserId, - PurchaserName = apiModel.PurchaserName, - PurchaserLocation = apiModel.PurchaserLocation, - PurchasePlatform = apiModel.PurchasePlatform + RealCost = apiModel.RealCost ?? 0 + //PurchaserId = apiModel.PurchaserId, + //PurchaserName = apiModel.PurchaserName, + //PurchaserLocation = apiModel.PurchaserLocation, + //PurchasePlatform = apiModel.PurchasePlatform }; - + foreach (var p in apiModel.PurchaserList) + { + model.PurchaserList.Add(p); + } + model.PurchaserName = model.PurchaserList.Count() == 1 ? model.PurchaserList[0].Name : $"{model.PurchaserList[0].Name}等{model.PurchaserList.Count()}个采购商"; foreach (var apiProduct in apiModel.PurchaseSchemeProductList) { model.PurchaseSchemeProductList.Add(PurchaseSchemeProduct.Convert(apiProduct)); diff --git a/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs index 16bc54e..052bbca 100644 --- a/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs +++ b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs @@ -28,6 +28,12 @@ namespace BBWYB.Client.Models public string PurchaseUrl { get => purchaseUrl; set { SetProperty(ref purchaseUrl, value); } } public string PurchaseProductId { get => purchaseProductId; set => purchaseProductId = value; } + public string PurchaserId { get; set; } + public string PurchaserId2 { get; set; } + public string PurchaserLocation { get; set; } + public string PurchaserName { get; set; } + public Platform PurchasePlatform { get; set; } + public bool IsEditing { get => isEditing; @@ -79,7 +85,12 @@ namespace BBWYB.Client.Models ProductId = apiModel.ProductId, SkuId = apiModel.SkuId, PurchaseProductId = apiModel.PurchaseProductId, - PurchaseUrl = apiModel.PurchaseUrl + PurchaseUrl = apiModel.PurchaseUrl, + PurchaserId = apiModel.PurchaserId, + PurchaserId2 = apiModel.PurchaserId2, + PurchaserName = apiModel.PurchaserName, + PurchasePlatform = apiModel.PurchasePlatform.Value, + PurchaserLocation = apiModel.PurchaserLocation }; model.SelectedSkuIdList.AddRange(apiModel.PurchaseSchemeProductSkuList.Select(s => s.PurchaseSkuId)); return model; diff --git a/BBWYB.Client/ViewModels/MainViewModel.cs b/BBWYB.Client/ViewModels/MainViewModel.cs index 233aafa..766958f 100644 --- a/BBWYB.Client/ViewModels/MainViewModel.cs +++ b/BBWYB.Client/ViewModels/MainViewModel.cs @@ -87,14 +87,14 @@ namespace BBWYB.Client.ViewModels { App.Current.Dispatcher.Invoke(() => { - MenuList.Add(new MenuModel() - { - Name = "订单管理", - ChildList = new List() - { - new MenuModel(){ Name="订单列表",Url="/Views/Order/OrderList.xaml" } - } - }); + //MenuList.Add(new MenuModel() + //{ + // Name = "订单管理", + // ChildList = new List() + // { + // new MenuModel(){ Name="订单列表",Url="/Views/Order/OrderList.xaml" } + // } + //}); MenuList.Add(new MenuModel() { Name = "商品管理", diff --git a/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs b/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs index b445e3c..b5c3b97 100644 --- a/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs +++ b/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs @@ -117,17 +117,17 @@ namespace BBWYB.Client.ViewModels if (!isResponse) return; isResponse = false; - var purchaserId = skuGroup.SelectedScheme.PurchaserId; + //var purchaserId = skuGroup.SelectedScheme.PurchaserId; - foreach (var otherSkuGroup in SkuGroup) - { - if (otherSkuGroup.SkuId == skuGroup.SkuId) - continue; + //foreach (var otherSkuGroup in SkuGroup) + //{ + // if (otherSkuGroup.SkuId == skuGroup.SkuId) + // continue; - var samePurchaseScheme = otherSkuGroup.SchemeList.FirstOrDefault(s => s.PurchaserId == purchaserId); - if (samePurchaseScheme != null) - otherSkuGroup.SelectedScheme = samePurchaseScheme; - } + // var samePurchaseScheme = otherSkuGroup.SchemeList.FirstOrDefault(s => s.PurchaserId == purchaserId); + // if (samePurchaseScheme != null) + // otherSkuGroup.SelectedScheme = samePurchaseScheme; + //} isResponse = true; } diff --git a/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs b/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs index 5358607..ed49682 100644 --- a/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs +++ b/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs @@ -135,8 +135,8 @@ namespace BBWYB.Client.ViewModels Logo = orderSku.Logo, Price = orderSku.Price.Value, ProductId = scheme.ProductId, - PurchasePlatform = scheme.PurchasePlatform, - PurchaserId = scheme.PurchaserId, + //PurchasePlatform = scheme.PurchasePlatform, + //PurchaserId = scheme.PurchaserId, PurchaserName = scheme.PurchaserName, PurchaseSchemeId = scheme.Id, Quantity = orderSku.ItemTotal, diff --git a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs index 85775b6..26cb3c9 100644 --- a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs @@ -4,9 +4,11 @@ using BBWYB.Client.Views.Ware; using BBWYB.Common.Models; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; +using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text.RegularExpressions; using System.Threading; @@ -16,17 +18,17 @@ using System.Windows.Input; namespace BBWYB.Client.ViewModels { - public class BindingPurchaseProductViewModel : BaseVM, IDenpendency + public class BindingPurchaseProductViewModel : BaseVM { #region Properties private GlobalContext globalContext; private PurchaseService purchaseService; private PurchaseProductAPIService purchaseProductAPIService; - private string purchaserName; + //private string purchaserName; private bool isLoading; - - private Platform purchasePlatform; + private long? schemeId; + //private Platform purchasePlatform; private IDictionary urlPatternDictionary; @@ -34,15 +36,18 @@ namespace BBWYB.Client.ViewModels public IList ProductSkuList { get; set; } - public string PurchaserId { get; set; } + //public string PurchaserId { get; set; } + + //public string PurchaserId2 { get; set; } - public string PurchaserId2 { get; set; } + //public string PurchaserName { get => purchaserName; set { SetProperty(ref purchaserName, value); } } + //public string PurchaserLocation { get; set; } - public string PurchaserName { get => purchaserName; set { SetProperty(ref purchaserName, value); } } - public string PurchaserLocation { get; set; } public bool IsLoading { get => isLoading; set { SetProperty(ref isLoading, value); } } - public Platform PurchasePlatform { get => purchasePlatform; set { SetProperty(ref purchasePlatform, value); } } + public long? SchemeId { get => schemeId; set { SetProperty(ref schemeId, value); } } + + //public Platform PurchasePlatform { get => purchasePlatform; set { SetProperty(ref purchasePlatform, value); } } #endregion @@ -86,68 +91,130 @@ namespace BBWYB.Client.ViewModels { Platform.阿里巴巴,@"^(https://detail.1688.com/offer/(\d+).html)[^\s]*" }, //{ Platform.拳探, @"^(https://qt.qiyue666.com/goods_detail/(\d+))(\?\w*)?$" } }; + ProductSkuList = new ObservableCollection(); } - public void SetData(IList productSkuList, string purchaserId, string purchaserId2, string purchaserName, Platform purchasePlatform) + //public void SetData(IList productSkuList, string purchaserId, string purchaserId2, string purchaserName, Platform purchasePlatform) + //{ + // this.ProductSkuList = productSkuList; + // //this.Product = product; + // this.PurchaserId = purchaserId; + // this.PurchaserId2 = purchaserId2; + // this.PurchaserName = purchaserName; + // this.PurchasePlatform = purchasePlatform; + //} + + public void SetData(IList productSkuList, long? schemeId) { - this.ProductSkuList = productSkuList; + foreach (var productSku in productSkuList) + ProductSkuList.Add(productSku); + this.SchemeId = schemeId; //this.Product = product; - this.PurchaserId = purchaserId; - this.PurchaserId2 = purchaserId2; - this.PurchaserName = purchaserName; - this.PurchasePlatform = purchasePlatform; + //this.PurchaserId = purchaserId; + //this.PurchaserId2 = purchaserId2; + //this.PurchaserName = purchaserName; + //this.PurchasePlatform = purchasePlatform; } protected override void Load() { - if (!string.IsNullOrEmpty(PurchaserId)) + if (this.SchemeId != null) { IsLoading = true; - Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(ProductSkuList.Select(s => s.Id).ToList(), PurchaserId, globalContext.User.Shop.ShopId, purchasePlatform: PurchasePlatform)).ContinueWith(r => - { - var apiResponse = r.Result; - if (!apiResponse.Success) - { - App.Current.Dispatcher.BeginInvoke((Action)delegate - { - MessageBox.Show(apiResponse.Msg, "查询采购方案"); - }); - IsLoading = false; - return; - } - - var purchaseSchemeList = apiResponse.Data; - - var waitList = new List(); - foreach (var sku in ProductSkuList) - { - //当前SKU下当前采购商的采购方案 - var apiScheme = purchaseSchemeList.FirstOrDefault(s => s.SkuId == sku.Id && s.PurchaserId == PurchaserId); - - if (apiScheme == null) - continue; - - sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme); - var ewh = new ManualResetEvent(false); - waitList.Add(ewh); - - Task.Factory.StartNew(() => - { - foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList) - { - purchaseSchemeProduct.IsEditing = false; - LoadPurchaseProduct(sku.SelectedPurchaseScheme.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _); - } - ewh.Set(); - ewh.Dispose(); - }); - } - WaitHandle.WaitAll(waitList.ToArray()); - IsLoading = false; - }); + var skuIdList = ProductSkuList.Select(s => s.Id).ToList(); + var sku = ProductSkuList.FirstOrDefault(); + Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(skuIdList, shopId: globalContext.User.Shop.ShopId, schemeId: SchemeId)).ContinueWith(r => + { + var apiResponse = r.Result; + if (!apiResponse.Success) + { + App.Current.Dispatcher.BeginInvoke((Action)delegate + { + MessageBox.Show(apiResponse.Msg, "查询采购方案"); + }); + IsLoading = false; + return; + } + + var purchaseSchemeList = apiResponse.Data; + var apiScheme = purchaseSchemeList.FirstOrDefault(); + if (apiScheme == null) + { + IsLoading = false; + return; + } + sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme); + var ewh = new ManualResetEvent(false); + + var waitList = new List(); + waitList.Add(ewh); + + Task.Factory.StartNew(() => + { + foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList) + { + purchaseSchemeProduct.IsEditing = false; + LoadPurchaseProduct(purchaseSchemeProduct.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _); + } + ewh.Set(); + ewh.Dispose(); + }); + WaitHandle.WaitAll(waitList.ToArray()); + IsLoading = false; + }); } } + //protected override void Load() + //{ + // if (!string.IsNullOrEmpty(PurchaserId)) + // { + // IsLoading = true; + // Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(ProductSkuList.Select(s => s.Id).ToList(), PurchaserId, globalContext.User.Shop.ShopId, purchasePlatform: PurchasePlatform)).ContinueWith(r => + // { + // var apiResponse = r.Result; + // if (!apiResponse.Success) + // { + // App.Current.Dispatcher.BeginInvoke((Action)delegate + // { + // MessageBox.Show(apiResponse.Msg, "查询采购方案"); + // }); + // IsLoading = false; + // return; + // } + + // var purchaseSchemeList = apiResponse.Data; + + // var waitList = new List(); + // foreach (var sku in ProductSkuList) + // { + // //当前SKU下当前采购商的采购方案 + // var apiScheme = purchaseSchemeList.FirstOrDefault(s => s.SkuId == sku.Id && s.PurchaserId == PurchaserId); + + // if (apiScheme == null) + // continue; + + // sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme); + // var ewh = new ManualResetEvent(false); + // waitList.Add(ewh); + + // Task.Factory.StartNew(() => + // { + // foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList) + // { + // purchaseSchemeProduct.IsEditing = false; + // LoadPurchaseProduct(sku.SelectedPurchaseScheme.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _); + // } + // ewh.Set(); + // ewh.Dispose(); + // }); + // } + // WaitHandle.WaitAll(waitList.ToArray()); + // IsLoading = false; + // }); + // } + //} + public void LoadPurchaseProduct(Platform platform, PurchaseSchemeProduct purchaseSchemeProduct, string purchaseProductId, Func checkPurchaserFunc, out string errorMsg) { errorMsg = string.Empty; @@ -180,10 +247,15 @@ namespace BBWYB.Client.ViewModels return; } - PurchaserId = data.Value.purchaser.Id; - PurchaserId2 = data.Value.purchaser.Id2; - PurchaserName = data.Value.purchaser.Name; - PurchaserLocation = data.Value.purchaser.Location; + purchaseSchemeProduct.PurchaserId = data.Value.purchaser.Id; + purchaseSchemeProduct.PurchaserId2 = data.Value.purchaser.Id2; + purchaseSchemeProduct.PurchaserName = data.Value.purchaser.Name; + purchaseSchemeProduct.PurchaserLocation = data.Value.purchaser.Location; + + //PurchaserId = data.Value.purchaser.Id; + //PurchaserId2 = data.Value.purchaser.Id2; + //PurchaserName = data.Value.purchaser.Name; + //PurchaserLocation = data.Value.purchaser.Location; App.Current.Dispatcher.BeginInvoke((Action)delegate { @@ -214,8 +286,7 @@ namespace BBWYB.Client.ViewModels productSku.SelectedPurchaseScheme = new PurchaseScheme() { ProductId = productSku.ProductId, - SkuId = productSku.Id, - PurchasePlatform = PurchasePlatform + SkuId = productSku.Id }; } else if (productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Count >= 4) @@ -229,7 +300,8 @@ namespace BBWYB.Client.ViewModels Id = DateTime.Now.ToFileTime(), IsEditing = true, ProductId = productSku.ProductId, - SkuId = productSku.Id + SkuId = productSku.Id, + PurchasePlatform = Platform.阿里巴巴 //B端写死只能1688 }); } @@ -237,8 +309,8 @@ namespace BBWYB.Client.ViewModels { var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId); productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Remove(purchaseSchemeProduct); - if (!ProductSkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count > 0)) - PurchaserId = string.Empty; + //if (!ProductSkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count > 0)) + // PurchaserId = string.Empty; } /// @@ -254,7 +326,7 @@ namespace BBWYB.Client.ViewModels return; } - urlPatternDictionary.TryGetValue(PurchasePlatform, out string pattern); + urlPatternDictionary.TryGetValue(purchaseSchemeProduct.PurchasePlatform, out string pattern); var match = Regex.Match(purchaseSchemeProduct.PurchaseUrl, pattern); if (!match.Success) @@ -276,13 +348,13 @@ namespace BBWYB.Client.ViewModels Task.Factory.StartNew(() => { - LoadPurchaseProduct(sku.SelectedPurchaseScheme.PurchasePlatform, purchaseSchemeProduct, purchaseProductId, (p) => + LoadPurchaseProduct(purchaseSchemeProduct.PurchasePlatform, purchaseSchemeProduct, purchaseProductId, (p) => { - if (sku.PurchaseSchemeList.Any(s => s.Id != sku.SelectedPurchaseScheme.Id && s.PurchaserId == p)) - return $"sku{sku.Id}的采购方案中已存在相同的采购商"; //同一个sku中的采购方案不能有相同的采购商 + //if (sku.PurchaseSchemeList.Any(s => s.Id != sku.SelectedPurchaseScheme.Id && s.PurchaserId == p)) + // return $"sku{sku.Id}的采购方案中已存在相同的采购商"; //同一个sku中的采购方案不能有相同的采购商 - if (!string.IsNullOrEmpty(PurchaserId) && p != PurchaserId) //同一批操作的sku必须为相同的采购商 - return "采购商必须相同"; + //if (!string.IsNullOrEmpty(PurchaserId) && p != PurchaserId) //同一批操作的sku必须为相同的采购商 + // return "采购商必须相同"; return string.Empty; }, out string errorMsg); @@ -319,10 +391,10 @@ namespace BBWYB.Client.ViewModels purchaseSchemeProduct.IsEditing = false; var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId); - productSku.SelectedPurchaseScheme.PurchaserId = PurchaserId; - productSku.SelectedPurchaseScheme.PurchaserId2 = PurchaserId2; - productSku.SelectedPurchaseScheme.PurchaserName = PurchaserName; - productSku.SelectedPurchaseScheme.PurchaserLocation = PurchaserLocation; + //productSku.SelectedPurchaseScheme.PurchaserId = PurchaserId; + //productSku.SelectedPurchaseScheme.PurchaserId2 = PurchaserId2; + //productSku.SelectedPurchaseScheme.PurchaserName = PurchaserName; + //productSku.SelectedPurchaseScheme.PurchaserLocation = PurchaserLocation; productSku.SelectedPurchaseScheme.DefaultCost = productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Sum(p => p.PurchaseSchemeProductSkuList.Count() == 0 ? 0 : p.PurchaseSchemeProductSkuList.Sum(s => s.Price)); } @@ -385,12 +457,13 @@ namespace BBWYB.Client.ViewModels private void Closing(System.ComponentModel.CancelEventArgs e) { - PurchaserId = PurchaserName = string.Empty; + this.SchemeId = null; //clear data foreach (var sku in ProductSkuList) { sku.SelectedPurchaseScheme = null; } + this.ProductSkuList.Clear(); //Product = null; e.Cancel = false; } diff --git a/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs b/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs index 5661f0a..52b0f7c 100644 --- a/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs +++ b/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs @@ -20,7 +20,7 @@ namespace BBWYB.Client.ViewModels #region Properties private PurchaseService purchaseService; private ProductService productService; - private BindingPurchaseProductViewModel bindingPurchaseProduct; + //private BindingPurchaseProductViewModel bindingPurchaseProduct; private GlobalContext globalContext; private bool isLoading; private int pageIndex = 1; @@ -45,22 +45,32 @@ namespace BBWYB.Client.ViewModels #endregion #region Commands - public ICommand AddPurchaserCommand { get; set; } - public ICommand EditPurchaserCommand { get; set; } - public ICommand DeletePurchaserCommand { get; set; } + //public ICommand AddPurchaserCommand { get; set; } + //public ICommand EditPurchaserCommand { get; set; } + //public ICommand DeletePurchaserCommand { get; set; } public ICommand SearchCommand { get; set; } public ICommand ProductPageIndexChangedCommand { get; set; } public ICommand SwitchPurchasePlatformCommand { get; set; } + + public ICommand AddSchemeCommand { get; set; } + + public ICommand EditSchemeCommand { get; set; } + + public ICommand DeleteSchemeCommand { get; set; } #endregion #region Methods public WareManagerViewModel(GlobalContext globalContext, BindingPurchaseProductViewModel bindingPurchaseProduct, PurchaseService purchaseService, ProductService productService) { PageSize = 5; - AddPurchaserCommand = new RelayCommand(AddPurchaser); - EditPurchaserCommand = new RelayCommand(EditPurchaser); - DeletePurchaserCommand = new RelayCommand(DeletePurchaser); + //AddPurchaserCommand = new RelayCommand(AddPurchaser); + //EditPurchaserCommand = new RelayCommand(EditPurchaser); + //DeletePurchaserCommand = new RelayCommand(DeletePurchaser); + AddSchemeCommand = new RelayCommand(AddScheme); + EditSchemeCommand = new RelayCommand(EditScheme); + DeleteSchemeCommand = new RelayCommand(DeleteScheme); + SwitchPurchasePlatformCommand = new RelayCommand(SwitchPurchasePlatform); SearchCommand = new RelayCommand(() => { @@ -71,7 +81,7 @@ namespace BBWYB.Client.ViewModels this.purchaseService = purchaseService; this.productService = productService; this.globalContext = globalContext; - this.bindingPurchaseProduct = bindingPurchaseProduct; + //this.bindingPurchaseProduct = bindingPurchaseProduct; ProductList = new ObservableCollection(); Task.Factory.StartNew(() => LoadWare(1)); } @@ -164,7 +174,7 @@ namespace BBWYB.Client.ViewModels { foreach (var p in productList) ProductList.Add(p); - ExtractPurchaser(); + //ExtractPurchaser(); //使滚动条保持顶部 //Messenger.Default.Send(string.Empty, "WareManager_ProductListScrollToTop"); WeakReferenceMessenger.Default.Send(new Message_WareManager_ProductListScrollToTop(null)); @@ -227,96 +237,142 @@ namespace BBWYB.Client.ViewModels /// /// 提取SKU中的采购商到商品的采购商列表中 /// - private void ExtractPurchaser(string productId = "") + //private void ExtractPurchaser(string productId = "") + //{ + // var productList = string.IsNullOrEmpty(productId) ? ProductList : ProductList.Where(p => p.Id == productId); + // foreach (var product in productList) + // { + // product.PurchaserList.Clear(); + // foreach (var sku in product.SkuList) + // { + // if (sku.PurchaseSchemeList.Count() > 0) + // { + // foreach (var pscheme in sku.PurchaseSchemeList) + // { + // var purchaser = product.PurchaserList.FirstOrDefault(purchaser => purchaser.Id == pscheme.PurchaserId); + // if (purchaser == null) + // { + // purchaser = new Purchaser() + // { + // Id = pscheme.PurchaserId, + // Id2 = pscheme.PurchaserId2, + // Name = pscheme.PurchaserName, + // ProductId = product.Id + // }; + // product.PurchaserList.Add(purchaser); + // } + // purchaser.SkuUseCount++; + // } + // } + // } + // } + //} + + //private void AddPurchaser(Product product) + //{ + // if (product.PurchaserList.Count >= 5) + // { + // MessageBox.Show("一个SPU内最多允许5个采购商"); + // return; + // } + + // OpenBindingView(product, string.Empty, string.Empty, string.Empty); + //} + + //private void EditPurchaser(Purchaser purchaser) + //{ + // var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId); + // OpenBindingView(product, purchaser.Id, purchaser.Id2, purchaser.Name); + //} + + //private void DeletePurchaser(Purchaser purchaser) + //{ + // if (MessageBox.Show("确认删除该采购商吗?", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK) + // return; + // IsLoading = true; + // Task.Factory.StartNew(() => + // { + // var response = purchaseService.DeletePurchaser(purchaser.ProductId, purchaser.Id); + // IsLoading = false; + // if (response.Success) + // { + // App.Current.Dispatcher.BeginInvoke((Action)delegate + // { + // var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId); + // if (product != null) + // { + // foreach (var sku in product.SkuList) + // { + // var deleteScheme = sku.PurchaseSchemeList.FirstOrDefault(s => s.PurchaserId == purchaser.Id); + // if (deleteScheme != null) + // sku.PurchaseSchemeList.Remove(deleteScheme); + // } + // product.PurchaserList.Remove(purchaser); + // } + // MessageBox.Show("采购商删除成功", "提示"); + // }); + // } + // else + // { + // App.Current.Dispatcher.BeginInvoke((Action)delegate + // { + // MessageBox.Show(response.Msg, "采购商删除"); + // }); + // } + // }); + //} + + private void AddScheme(Product product) { - var productList = string.IsNullOrEmpty(productId) ? ProductList : ProductList.Where(p => p.Id == productId); - foreach (var product in productList) - { - product.PurchaserList.Clear(); - foreach (var sku in product.SkuList) - { - if (sku.PurchaseSchemeList.Count() > 0) - { - foreach (var pscheme in sku.PurchaseSchemeList) - { - var purchaser = product.PurchaserList.FirstOrDefault(purchaser => purchaser.Id == pscheme.PurchaserId); - if (purchaser == null) - { - purchaser = new Purchaser() - { - Id = pscheme.PurchaserId, - Id2 = pscheme.PurchaserId2, - Name = pscheme.PurchaserName, - ProductId = product.Id - }; - product.PurchaserList.Add(purchaser); - } - purchaser.SkuUseCount++; - } - } - } - } - } - - private void AddPurchaser(Product product) - { - if (product.PurchaserList.Count >= 5) - { - MessageBox.Show("一个SPU内最多允许5个采购商"); - return; - } - - OpenBindingView(product, string.Empty, string.Empty, string.Empty); + OpenBindingView(product, string.Empty, null); } - private void EditPurchaser(Purchaser purchaser) + private void EditScheme(PurchaseScheme purchaseScheme) { - var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId); - OpenBindingView(product, purchaser.Id, purchaser.Id2, purchaser.Name); + var product = ProductList.FirstOrDefault(p => p.Id == purchaseScheme.ProductId); + OpenBindingView(product, purchaseScheme.SkuId, purchaseScheme.Id); } - private void DeletePurchaser(Purchaser purchaser) + private void DeleteScheme(PurchaseScheme purchaseScheme) { - if (MessageBox.Show("确认删除该采购商吗?", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK) + if (MessageBox.Show("确定删除该采购方案吗?", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK) return; IsLoading = true; - Task.Factory.StartNew(() => - { - var response = purchaseService.DeletePurchaser(purchaser.ProductId, purchaser.Id); - IsLoading = false; - if (response.Success) - { - App.Current.Dispatcher.BeginInvoke((Action)delegate - { - var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId); - if (product != null) + Task.Factory.StartNew(() => purchaseService.DeletePurchaseScheme(purchaseScheme.Id)) + .ContinueWith(t => { - foreach (var sku in product.SkuList) + IsLoading = false; + var response = t.Result; + if (!response.Success) { - var deleteScheme = sku.PurchaseSchemeList.FirstOrDefault(s => s.PurchaserId == purchaser.Id); - if (deleteScheme != null) - sku.PurchaseSchemeList.Remove(deleteScheme); + App.Current.Dispatcher.BeginInvoke((Action)delegate + { + MessageBox.Show(response.Msg, "删除采购方案"); + }); + return; } - product.PurchaserList.Remove(purchaser); - } - MessageBox.Show("采购商删除成功", "提示"); - }); - } - else - { - App.Current.Dispatcher.BeginInvoke((Action)delegate - { - MessageBox.Show(response.Msg, "采购商删除"); - }); - } - }); + App.Current.Dispatcher.Invoke(() => + { + var product = ProductList.FirstOrDefault(p => p.Id == purchaseScheme.ProductId); + if (product != null) + { + var sku = product.SkuList.FirstOrDefault(s => s.Id == purchaseScheme.SkuId); + if (sku != null) + { + sku.PurchaseSchemeList.Remove(purchaseScheme); + } + } + MessageBox.Show("采购方案删除成功", "提示"); + }); + }); } - private void OpenBindingView(Product product, string purchaserId, string purchaserId2, string purchaserName) + private void OpenBindingView(Product product, string skuId, long? schemeId) { - var skuList = product.SkuList; - bindingPurchaseProduct.SetData(skuList, purchaserId, purchaserId2, purchaserName, product.SelectedPurchasePlatformModel); - var bindingView = new BindingPurchaseProduct(); + var skuList = string.IsNullOrEmpty(skuId) ? product.SkuList : product.SkuList.Where(s => s.Id == skuId).ToList(); + //bindingPurchaseProduct.SetData(skuList, purchaserId, purchaserId2, purchaserName, product.SelectedPurchasePlatformModel); + //bindingPurchaseProduct.SetData(); + var bindingView = new BindingPurchaseProduct(skuList, schemeId); var r = bindingView.ShowDialog(); if (r == true) { @@ -328,7 +384,7 @@ namespace BBWYB.Client.ViewModels IsLoading = false; App.Current.Dispatcher.BeginInvoke((Action)delegate { - ExtractPurchaser(product.Id); + //ExtractPurchaser(product.Id); }); }); } @@ -345,7 +401,7 @@ namespace BBWYB.Client.ViewModels Task.Factory.StartNew(() => LoadPurchaseScheme(product.SkuList, platform)) .ContinueWith(t => { - App.Current.Dispatcher.Invoke(() => ExtractPurchaser(productId)); + //App.Current.Dispatcher.Invoke(() => ExtractPurchaser(productId)); IsLoading = false; }); } diff --git a/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml b/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml index b1ab4a4..31fdd4a 100644 --- a/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml +++ b/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml @@ -25,7 +25,7 @@ - + public partial class BindingPurchaseProduct : BWindow { - public BindingPurchaseProduct() + private BindingPurchaseProductViewModel bindingVM; + public BindingPurchaseProduct(IList productSkuList, long? schemeId) { InitializeComponent(); - //Messenger.Default.Register(this, "BindingPurchaseProduct_Close", (x) => - // { - // this.Dispatcher.Invoke(() => - // { - // this.DialogResult = x; - // this.Close(); - // }); - // }); - + bindingVM = this.DataContext as BindingPurchaseProductViewModel; + bindingVM.SetData(productSkuList, schemeId); WeakReferenceMessenger.Default.Register(this, (o, x) => { this.Dispatcher.Invoke(() => diff --git a/BBWYB.Client/Views/Ware/WareManager.xaml b/BBWYB.Client/Views/Ware/WareManager.xaml index 505200b..c19224b 100644 --- a/BBWYB.Client/Views/Ware/WareManager.xaml +++ b/BBWYB.Client/Views/Ware/WareManager.xaml @@ -42,7 +42,7 @@ - + @@ -79,7 +79,7 @@ - + - + @@ -110,8 +110,11 @@ - + + + - + @@ -177,6 +180,8 @@ + + + + + + + + + + + + + + + + + + + + + @@ -216,7 +249,9 @@ - + + + @@ -269,7 +304,7 @@ - - + --> - + { if (newPurchaserList.Count > 0) @@ -152,20 +158,35 @@ namespace BBWYB.Server.Business /// /// /// - public IList GetPurchaseSchemeList(QuerySchemeRequest querySchemeRequest) + public IList GetPurchaseSchemeList(QuerySchemeRequest request) { var select = fsql.Select(); - if (querySchemeRequest.SchemeId != null && querySchemeRequest.SchemeId != 0) - select = select.Where(ps => ps.Id == querySchemeRequest.SchemeId); - else if (querySchemeRequest.SchemeIdList != null && querySchemeRequest.SchemeIdList.Count() > 0) - select = select.Where(ps => querySchemeRequest.SchemeIdList.Contains(ps.Id)); + if (request.SchemeId != null && request.SchemeId != 0) + select = select.Where(ps => ps.Id == request.SchemeId); + else if (request.SchemeIdList != null && request.SchemeIdList.Count() > 0) + select = select.Where(ps => request.SchemeIdList.Contains(ps.Id)); else { - 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)); + select = select.WhereIf(request.ShopId != null && request.ShopId != 0, ps => ps.ShopId == request.ShopId) + .WhereIf(request.SkuIdList != null && request.SkuIdList.Count() > 0, ps => request.SkuIdList.Contains(ps.SkuId)); + + if (request.PurchasePlatform != null || !string.IsNullOrEmpty(request.PurchaserId)) + { + //var childSelect = fsql.Select() + // .InnerJoin((psp, p) => psp.PurchaserId == p.Id) + // .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform) + // .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId); + //select = select.Where(ps => childSelect.Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); + + select = select.Where(ps => fsql.Select() + .InnerJoin((psp, p) => psp.PurchaserId == p.Id) + .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform) + .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId) + .Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); + } //.WhereIf(querySchemeRequest.PurchasePlatform != null, ps => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform); } - + var sql = select.ToSql(); var purchaseSchemeList = select.ToList(); diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs index 9bdfd77..14b9bb5 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs @@ -21,5 +21,10 @@ /// 采购Ske SpecId (1688独有) /// public string PurchaseSkuSpecId { get; set; } + + /// + /// 采购配比 + /// + public int? PurchaseRatio { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs index 8924508..59e2088 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 288e9f2..15c33cf 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.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 PurchaseSchemeProductResponse : Model.Db.PurchaseSchemeProduct { From 9f7373c97eb39fc4fc8730c6bee8d520ff057db0 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 14 Aug 2023 01:46:20 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E6=94=AF=E6=8C=81=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E9=87=87=E8=B4=AD=E9=85=8D=E4=BB=B6=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 29 ++++++++++++++----- .../PurchaseScheme/QuerySchemeRequest.cs | 9 ++++-- .../PurchaseSchemeProductSkuResponse.cs | 21 ++++++++++---- 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 931a9b2..8e15c73 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -154,7 +154,7 @@ namespace BBWYB.Server.Business } /// - /// 获取采购方案(不含采购配配件基本信息) + /// 获取采购方案 /// /// /// @@ -172,19 +172,12 @@ namespace BBWYB.Server.Business if (request.PurchasePlatform != null || !string.IsNullOrEmpty(request.PurchaserId)) { - //var childSelect = fsql.Select() - // .InnerJoin((psp, p) => psp.PurchaserId == p.Id) - // .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform) - // .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId); - //select = select.Where(ps => childSelect.Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); - select = select.Where(ps => fsql.Select() .InnerJoin((psp, p) => psp.PurchaserId == p.Id) .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform) .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId) .Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any()); } - //.WhereIf(querySchemeRequest.PurchasePlatform != null, ps => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform); } var sql = select.ToSql(); var purchaseSchemeList = select.ToList(); @@ -247,6 +240,26 @@ namespace BBWYB.Server.Business } } #endregion + + #region 获取采购方案基本信息 + if (request.IncludePurchaseSkuBasicInfo == 1) + { + foreach (var schemeProduct in schemeProductList) + { + try + { + var basicInfo = GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest() + { + + }); + } + catch + { + + } + } + } + #endregion } } return purchaseSchemeList; diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs index 59e2088..0c2c4f1 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs @@ -19,13 +19,18 @@ namespace BBWYB.Server.Model.Dto public IList SkuIdList { get; set; } /// - /// 采购商Id, 可空 + /// 采购商Id, 只要其中一个采购商品满足采购商条件则命中查询 /// public string PurchaserId { get; set; } /// - /// 采购平台 + /// 采购平台, 只要其中一个采购商品满足平台条件则命中查询 /// public Enums.Platform? PurchasePlatform { get; set; } + + /// + /// 是否包含采购配件的基本信息(单价,Logo,标题等) 是=1 否=0或null + /// + public int? IncludePurchaseSkuBasicInfo { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs index 7374eaa..30942ea 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs @@ -1,10 +1,21 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace BBWYB.Server.Model.Dto +namespace BBWYB.Server.Model.Dto { public class PurchaseSchemeProductSkuResponse : Model.Db.PurchaseSchemeProductSku { + + /// + /// 采购SKU标题 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 + /// + public string PurchaseSkuTitle { get; set; } + + /// + /// 采购SKULogo 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 + /// + public string PurchaseSkuLogo { get; set; } + + /// + /// 采购SKU单价 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值 + /// + public decimal? PurchaseSkuPrice { get; set; } } } From f96dbdacb409e08c9df21cebde1e369f6d826b25 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 14 Aug 2023 09:45:50 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E6=94=AF=E6=8C=81=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E9=87=87=E8=B4=AD=E9=85=8D=E4=BB=B6=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseScheme/PurchaseSchemeBusiness.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 8e15c73..633cfb4 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -250,8 +250,24 @@ namespace BBWYB.Server.Business { var basicInfo = GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest() { - + FirstApiMode = Enums.PurchaseProductAPIMode.Spider, + PriceMode = Enums.PurchaseOrderMode.批发, + Platform = schemeProduct.PurchasePlatform ?? Enums.Platform.阿里巴巴, + PurchaseProductId = schemeProduct.PurchaseProductId }); + if (basicInfo != null) + { + foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList) + { + var basicSku = basicInfo.ItemList.FirstOrDefault(x => x.PurchaseSkuId == schemeProductSku.PurchaseSkuId); + if (basicSku != null) + { + schemeProductSku.PurchaseSkuTitle = basicSku.Title; + schemeProductSku.PurchaseSkuPrice = basicSku.Price; + schemeProductSku.PurchaseSkuLogo = basicSku.Logo; + } + } + } } catch { From e8d95171183156980fe9d30f2d9d5e6b5fbc3318 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 14 Aug 2023 11:20:27 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E9=85=8D=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PurchaseSchemeController.cs | 10 ++++++++++ .../PurchaseScheme/PurchaseSchemeBusiness.cs | 11 ++++++++++- .../PurchaseScheme/EditPurchaseRatioRequest.cs | 4 +++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 673114c..1444c88 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -101,5 +101,15 @@ namespace BBWYB.Server.API.Controllers { return purchaseSchemeBusiness.RefreshPurchaseScheme(request); } + + /// + /// 修改采购配件比例 + /// + /// + [HttpPost] + public void EditPurchaseRatio([FromBody]EditPurchaseRatioRequest request) + { + purchaseSchemeBusiness.EditPurchaseRatio(request); + } } } diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index c0a5923..68ec95e 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -384,6 +384,15 @@ namespace BBWYB.Server.Business return list; } - + public void EditPurchaseRatio(EditPurchaseRatioRequest request) + { + if (request.Ratio < 1) + request.Ratio = 1; + fsql.Update().Set(pss => pss.PurchaseRatio, request.Ratio) + .Where(pss => pss.SkuPurchaseSchemeId == request.SchemeId && + pss.SkuId == request.SkuId && + pss.PurchaseSkuId == request.PurchaseSkuId) + .ExecuteAffrows(); + } } } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs index 2e09843..0eebc71 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseRatioRequest.cs @@ -4,8 +4,10 @@ { public long SchemeId { get; set; } - public string SkuId { get; set; } + public string SkuId { get; set; } public string PurchaseSkuId { get; set; } + + public int Ratio { get; set; } } }