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 {