diff --git a/BBWY.Client/APIServices/PurchaseService.cs b/BBWY.Client/APIServices/PurchaseService.cs index 97af13d9..b8f32a3b 100644 --- a/BBWY.Client/APIServices/PurchaseService.cs +++ b/BBWY.Client/APIServices/PurchaseService.cs @@ -27,15 +27,15 @@ namespace BBWY.Client.APIServices } /// - /// 获取采购方案 + /// 获取共有采购商 /// /// /// /// - public ApiResponse> GetPurchaseSchemeList(IList skuIdList, long shopId) + public ApiResponse> GetSharePurchaser(IList skuIdList, long shopId) { - return SendRequest>(globalContext.BBYWApiHost, - "api/PurchaseScheme/GetPurchaseSchemeList", + return SendRequest>(globalContext.BBYWApiHost, + "api/PurchaseScheme/GetSharePurchaser", new { skuIdList, shopId }, null, HttpMethod.Post); diff --git a/BBWY.Client/Models/Product/Purchaser.cs b/BBWY.Client/Models/Product/Purchaser.cs index feee5aea..850c56c0 100644 --- a/BBWY.Client/Models/Product/Purchaser.cs +++ b/BBWY.Client/Models/Product/Purchaser.cs @@ -17,5 +17,7 @@ public int SkuUseCount { get => skuUseCount; set { Set(ref skuUseCount, value); } } public string ProductId { get; set; } + + public string Location { get; set; } } } diff --git a/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs b/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs index 784be9b3..1db56288 100644 --- a/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs +++ b/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs @@ -1,6 +1,5 @@ using BBWY.Client.APIServices; using BBWY.Client.Models; -using BBWY.Client.Views.Purchase; using BBWY.Common.Models; using GalaSoft.MvvmLight.Command; using System.Collections.Generic; @@ -16,96 +15,84 @@ namespace BBWY.Client.ViewModels { private PurchaseService purchaseService; private GlobalContext globalContext; - private BindingPurchaseProductViewModel bindingPurchaseProduct; - public string SkuId { get; set; } - public string SkuName { get; set; } - public string OrderId { get; set; } + private Order order; - public int ItemTotal { get; set; } - public Consignee Consignee { get; set; } + public IList PurchaserList { get; set; } - public IList PurchaseSchemeList { get; set; } - - public ICommand DeleteCommand { get; set; } - public ICommand EditCommand { get; set; } + //public ICommand DeleteCommand { get; set; } + //public ICommand EditCommand { get; set; } public ICommand PreviewPurchaseCommand { get; set; } - public ChoosePurchaseSchemeViewModel(PurchaseService purchaseService, GlobalContext globalContext, BindingPurchaseProductViewModel bindingPurchaseProduct) + public ChoosePurchaseSchemeViewModel(PurchaseService purchaseService, GlobalContext globalContext) { this.purchaseService = purchaseService; this.globalContext = globalContext; - this.bindingPurchaseProduct = bindingPurchaseProduct; - PurchaseSchemeList = new ObservableCollection(); - DeleteCommand = new RelayCommand(Delete); - EditCommand = new RelayCommand(Edit); - PreviewPurchaseCommand = new RelayCommand(PreviewPurchase); + this.PurchaserList = new ObservableCollection(); + //DeleteCommand = new RelayCommand(Delete); + //EditCommand = new RelayCommand(Edit); + PreviewPurchaseCommand = new RelayCommand(PreviewPurchase); } protected override void Load() { - PurchaseSchemeList.Clear(); - Task.Factory.StartNew(() => LoadPurchaseScheme(SkuId)); + PurchaserList.Clear(); + Task.Factory.StartNew(() => LoadPurchaser()); } protected override void Unload() { - this.ItemTotal = 0; - this.OrderId = this.SkuId = this.SkuName = string.Empty; - this.Consignee = null; - PurchaseSchemeList.Clear(); + this.order = null; + PurchaserList.Clear(); } - public void SetData(string orderId, string skuId, string skuName, int itemTotal, Consignee consignee) + public void SetData(Order order) { - this.OrderId = orderId; - this.SkuId = skuId; - this.SkuName = skuName; - this.ItemTotal = itemTotal; - this.Consignee = consignee; + this.order = order; } - public void LoadPurchaseScheme(string skuId) + public void LoadPurchaser() { - var purchaseSchemeResponse = purchaseService.GetPurchaseSchemeList(new string[] { skuId }, globalContext.User.Shop.ShopId); - if (!purchaseSchemeResponse.Success) + var skuIdList = order.ItemList.Select(osku => osku.Id).ToList(); + var purchaserResponse = purchaseService.GetSharePurchaser(skuIdList, globalContext.User.Shop.ShopId); + if (!purchaserResponse.Success) { - App.Current.Dispatcher.Invoke(() => MessageBox.Show(purchaseSchemeResponse.Msg, "获取采购方案")); + App.Current.Dispatcher.Invoke(() => MessageBox.Show(purchaserResponse.Msg, "获取采购商")); return; } App.Current.Dispatcher.Invoke(() => { - foreach (var apiModel in purchaseSchemeResponse.Data) PurchaseSchemeList.Add(PurchaseScheme.Convert(apiModel)); + foreach (var p in purchaserResponse.Data) PurchaserList.Add(p); }); } - public void Delete(PurchaseScheme purchaseScheme) - { - Task.Factory.StartNew(() => purchaseService.DeletePurchaseScheme(purchaseScheme.Id)).ContinueWith(r => - { - var response = r.Result; - if (response.Success) - App.Current.Dispatcher.Invoke(() => PurchaseSchemeList.Remove(purchaseScheme)); - else - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "删除采购方案")); - }); - } + //public void Delete(PurchaseScheme purchaseScheme) + //{ + // Task.Factory.StartNew(() => purchaseService.DeletePurchaseScheme(purchaseScheme.Id)).ContinueWith(r => + // { + // var response = r.Result; + // if (response.Success) + // App.Current.Dispatcher.Invoke(() => PurchaseSchemeList.Remove(purchaseScheme)); + // else + // App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "删除采购方案")); + // }); + //} - public void Edit(PurchaseScheme purchaseScheme) - { - var skuList = new List() - { - new ProductSku(){ Id=purchaseScheme.SkuId,ProductId=purchaseScheme.ProductId, Title=SkuName} - }; - bindingPurchaseProduct.SetData(skuList, purchaseScheme.PurchaserId, purchaseScheme.PurchaserName); - var bindingView = new Views.Ware.BindingPurchaseProduct(); - var r = bindingView.ShowDialog(); - if (r == true) - Task.Factory.StartNew(() => LoadPurchaseScheme(SkuId)); - } + //public void Edit(PurchaseScheme purchaseScheme) + //{ + // var skuList = new List() + // { + // new ProductSku(){ Id=purchaseScheme.SkuId,ProductId=purchaseScheme.ProductId, Title=SkuName} + // }; + // bindingPurchaseProduct.SetData(skuList, purchaseScheme.PurchaserId, purchaseScheme.PurchaserName); + // var bindingView = new Views.Ware.BindingPurchaseProduct(); + // var r = bindingView.ShowDialog(); + // if (r == true) + // Task.Factory.StartNew(() => LoadPurchaseScheme(SkuId)); + //} - public void PreviewPurchase(PurchaseScheme purchaseScheme) + public void PreviewPurchase(Purchaser purchaser) { var count = globalContext.User.Shop.PurchaseAccountList == null ? 0 : globalContext.User.Shop.PurchaseAccountList.Count(); if (count > 1) @@ -114,9 +101,9 @@ namespace BBWY.Client.ViewModels } else if (count == 1) { - GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(null, "ChoosePurchaseScheme_Close"); - var p = new _1688Purchase(this.OrderId, this.ItemTotal, purchaseScheme, globalContext.User.Shop.PurchaseAccountList[0], this.Consignee); - p.ShowDialog(); + //var p = new _1688Purchase(this.OrderId, this.ItemTotal, purchaseScheme, globalContext.User.Shop.PurchaseAccountList[0], this.Consignee); + //p.ShowDialog(); + //GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(null, "ChoosePurchaseScheme_Close"); } else { diff --git a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs index 86b6e134..cabb2d6e 100644 --- a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs +++ b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs @@ -297,7 +297,7 @@ namespace BBWY.Client.ViewModels } else if (storageType == StorageType.代发) { - var chooseDFType = new ChooseDFType(order.ItemList.Count > 1); + var chooseDFType = new ChooseDFType(); if (chooseDFType.ShowDialog() != true) return; @@ -316,7 +316,7 @@ namespace BBWY.Client.ViewModels } else if (chooseDFType.DFType == DFType.在线采购) { - choosePurchaseSchemeViewModel.SetData(order.Id, order.ItemList[0].Id, order.ItemList[0].Title, order.ItemList[0].ItemTotal, order.Consignee); + choosePurchaseSchemeViewModel.SetData(order); var choosePurchaseScheme = new ChoosePurchaseScheme(); choosePurchaseScheme.ShowDialog(); } diff --git a/BBWY.Client/Views/Order/ChooseDFType.xaml.cs b/BBWY.Client/Views/Order/ChooseDFType.xaml.cs index 2f0b55a0..71a7487d 100644 --- a/BBWY.Client/Views/Order/ChooseDFType.xaml.cs +++ b/BBWY.Client/Views/Order/ChooseDFType.xaml.cs @@ -11,22 +11,22 @@ namespace BBWY.Client.Views.Order public DFType DFType { get; private set; } - private bool isDisablePurchaseOnline; + //private bool isDisablePurchaseOnline; - public ChooseDFType(bool isDisablePurchaseOnline) + public ChooseDFType() { InitializeComponent(); - this.isDisablePurchaseOnline = isDisablePurchaseOnline; + //this.isDisablePurchaseOnline = isDisablePurchaseOnline; this.Loaded += ChooseDFType_Loaded; } private void ChooseDFType_Loaded(object sender, System.Windows.RoutedEventArgs e) { - if (isDisablePurchaseOnline) - { - btn_purchase.IsEnabled = false; - btn_purchase.DisableText = "采购商品"; - } + //if (isDisablePurchaseOnline) + //{ + // btn_purchase.IsEnabled = false; + // btn_purchase.DisableText = "采购商品"; + //} } diff --git a/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml b/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml index 904179b1..506167d3 100644 --- a/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml +++ b/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml @@ -31,12 +31,12 @@ + ItemsSource="{Binding PurchaserList}"> - - diff --git a/BBWY.Server.API/Controllers/PurchaseSchemeController.cs b/BBWY.Server.API/Controllers/PurchaseSchemeController.cs index 513fcef1..af31251c 100644 --- a/BBWY.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWY.Server.API/Controllers/PurchaseSchemeController.cs @@ -1,4 +1,5 @@ using BBWY.Server.Business; +using BBWY.Server.Model.Db; using BBWY.Server.Model.Dto; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -55,5 +56,16 @@ namespace BBWY.Server.API.Controllers { purchaseSchemeBusiness.DeletePurchaseScheme(schemeId); } + + /// + /// 查询共有采购商 + /// + /// + /// + [HttpPost] + public IList GetSharePurchaser([FromBody] QuerySchemeRequest querySchemeRequest) + { + return purchaseSchemeBusiness.GetSharePurchaser(querySchemeRequest); + } } } diff --git a/BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 6da31188..7d70d058 100644 --- a/BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -29,7 +29,7 @@ namespace BBWY.Server.Business { if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) throw new BusinessException("非法参数"); - if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) || + if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) || string.IsNullOrEmpty(p.PurchaserName) || string.IsNullOrEmpty(p.PurchaserLocation))) throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); @@ -180,13 +180,32 @@ namespace BBWY.Server.Business } /// - /// 获取共有采购商 + /// 获取共同拥有的采购商 /// /// /// 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)