diff --git a/BBWY.Client/Models/APIModel/Response/BatchPurchase/ProductSkuWithSchemeResponse.cs b/BBWY.Client/Models/APIModel/Response/BatchPurchase/ProductSkuWithSchemeResponse.cs index 675dab4f..f4e0efbc 100644 --- a/BBWY.Client/Models/APIModel/Response/BatchPurchase/ProductSkuWithSchemeResponse.cs +++ b/BBWY.Client/Models/APIModel/Response/BatchPurchase/ProductSkuWithSchemeResponse.cs @@ -33,7 +33,7 @@ namespace BBWY.Client.Models public string PurchaserId { get; set; } - public string PurchaseName { get; set; } + public string PurchaserName { get; set; } public Platform? PurchasePlatform { get; set; } } diff --git a/BBWY.Client/Models/BatchPurchase/ProductSkuWithScheme.cs b/BBWY.Client/Models/BatchPurchase/ProductSkuWithScheme.cs index a2f70666..bef28ddd 100644 --- a/BBWY.Client/Models/BatchPurchase/ProductSkuWithScheme.cs +++ b/BBWY.Client/Models/BatchPurchase/ProductSkuWithScheme.cs @@ -34,7 +34,7 @@ namespace BBWY.Client.Models public string PurchaserId { get; set; } - public string PurchaseName { get; set; } + public string PurchaserName { get; set; } public Platform? PurchasePlatform { get; set; } diff --git a/BBWY.Client/ViewModels/BaseVM.cs b/BBWY.Client/ViewModels/BaseVM.cs index a657101c..28a6ae70 100644 --- a/BBWY.Client/ViewModels/BaseVM.cs +++ b/BBWY.Client/ViewModels/BaseVM.cs @@ -2,6 +2,8 @@ using GalaSoft.MvvmLight.Command; using System.Windows.Input; using System; +using System.Windows; + namespace BBWY.Client.ViewModels { public class BaseVM : ViewModelBase @@ -12,11 +14,27 @@ namespace BBWY.Client.ViewModels public ICommand UnloadCommand { get; set; } + public ICommand CopyTextCommand { get; set; } + public BaseVM() { VMId = Guid.NewGuid(); LoadCommand = new RelayCommand(Load); UnloadCommand = new RelayCommand(Unload); + + CopyTextCommand = new RelayCommand(s => + { + try + { + Clipboard.SetText(s); + } + catch (Exception ex) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(ex); + Console.ResetColor(); + } + }); } public virtual void Refresh() diff --git a/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseAddProductSkuViewModel.cs b/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseAddProductSkuViewModel.cs index 7ea854e6..77ed9a55 100644 --- a/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseAddProductSkuViewModel.cs +++ b/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseAddProductSkuViewModel.cs @@ -116,7 +116,7 @@ namespace BBWY.Client.ViewModels #region 提取采购商 var purchaserList = list.Where(item => item.PurchaseSchemeId != 0) - .Select(item => new Purchaser() { Id = item.PurchaserId, Name = item.PurchaseName, Platform = item.PurchasePlatform.Value }) + .Select(item => new Purchaser() { Id = item.PurchaserId, Name = item.PurchaserName, Platform = item.PurchasePlatform.Value }) .Distinct(new PurchaserComparer()); #endregion diff --git a/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs b/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs index ed190fa5..58e02c81 100644 --- a/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs +++ b/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs @@ -1,11 +1,13 @@ using BBWY.Client.APIServices; using BBWY.Client.Models; using BBWY.Client.Views.BatchPurchase; +using BBWY.Common.Trigger; using GalaSoft.MvvmLight.Command; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; @@ -14,7 +16,10 @@ namespace BBWY.Client.ViewModels { public class BatchPurchaseCreateNewOrderViewModel : BaseVM { + private GlobalContext globalContext; private PurchaseProductAPIService purchaseProductAPIService; + private PurchaseService purchaseService; + private DelayTrigger delayTrigger; private bool isLoading; private decimal productAmount; @@ -58,14 +63,19 @@ namespace BBWY.Client.ViewModels public ICommand PreviewOrderCommand { get; set; } public ICommand AddProductSkuCommand { get; set; } - public BatchPurchaseCreateNewOrderViewModel(PurchaseProductAPIService purchaseProductAPIService) + public BatchPurchaseCreateNewOrderViewModel(PurchaseProductAPIService purchaseProductAPIService, PurchaseService purchaseService, GlobalContext globalContext) { + this.globalContext = globalContext; this.purchaseProductAPIService = purchaseProductAPIService; + this.purchaseService = purchaseService; ProductSkuWithSchemeList = new ObservableCollection(); FastCreateOrderCommand = new RelayCommand(FastCreateOrder); PreviewOrderCommand = new RelayCommand(PreviewOrder); AddProductSkuCommand = new RelayCommand(AddProductSku); + + this.delayTrigger = new DelayTrigger(); + this.delayTrigger.OnExecute = OnDelayTriggerExecute; } private void OnDelayTriggerExecute(string key) @@ -88,6 +98,7 @@ namespace BBWY.Client.ViewModels return; } + IsLoading = false; //IsLoading = true; //Task.Factory.StartNew(() => purchaseOrderService.PreviewPurchaseOrder(new Consignee() //{ @@ -190,11 +201,88 @@ namespace BBWY.Client.ViewModels private void AddProductSku() { var addProductSkuWindow = new BatchPurchaseAddProductSku(); - if (addProductSkuWindow.ShowDialog() == true) + if (addProductSkuWindow.ShowDialog() != true) + return; + + var newProductSkuWithSchemeList = addProductSkuWindow.SelectedProductSkuWithSchemeList; + var waitList = new List(); + foreach (var newProductSkuWithScheme in newProductSkuWithSchemeList) + { + if (ProductSkuWithSchemeList.Any(item => item.SkuId == newProductSkuWithScheme.SkuId)) + continue; + ProductSkuWithSchemeList.Add(newProductSkuWithScheme); + var ewh = new ManualResetEvent(false); + waitList.Add(ewh); + Task.Factory.StartNew(() => LoadPurchaseScheme(newProductSkuWithScheme, ewh)); + } + if (waitList.Count() == 0) + return; + IsLoading = true; + Task.Factory.StartNew(() => + { + WaitHandle.WaitAll(waitList.ToArray()); + PreviewOrder(); //预览订单 + }); + } + + private void LoadPurchaseScheme(ProductSkuWithScheme productSkuWithScheme, EventWaitHandle ewh) + { + try + { + #region 加载采购方案 + var purchaseSchemeResponse = purchaseService.GetPurchaseSchemeList(shopId: globalContext.User.Shop.ShopId, schemeId: productSkuWithScheme.PurchaseSchemeId); + if (!purchaseSchemeResponse.Success) + { + App.Current.Dispatcher.Invoke(() => MessageBox.Show($"方案Id{productSkuWithScheme.PurchaseSchemeId}\r\n{purchaseSchemeResponse.Msg}", "加载采购方案失败")); + return; + } + + var purchaseScheme = purchaseSchemeResponse.Data[0]; + #endregion + + #region 完善采购方案基本信息 + foreach (var purchaseSchemeProduct in purchaseScheme.PurchaseSchemeProductList) + { + var data = purchaseProductAPIService.GetProductInfo(productSkuWithScheme.PurchasePlatform.Value, + productSkuWithScheme.ProductId, + productSkuWithScheme.SkuId, + purchaseSchemeProduct.PurchaseProductId, + PurchaseOrderMode.批发, + PurchaseProductAPIMode.Spider); + + if (data != null && data.Value.purchaseSchemeProductSkus != null && data.Value.purchaseSchemeProductSkus.Count > 0) + { + App.Current.Dispatcher.Invoke(() => + { + foreach (var purchaseSchemeProductSku in data.Value.purchaseSchemeProductSkus) + { + if (purchaseSchemeProduct.PurchaseSchemeProductSkuList.Any(s => s.PurchaseSkuId == purchaseSchemeProductSku.PurchaseSkuId)) + { + productSkuWithScheme.PurchaseSchemeProductSkuList.Add(purchaseSchemeProductSku); + + purchaseSchemeProductSku.ItemTotal = productSkuWithScheme.Quantity; + purchaseSchemeProductSku.OnItemTotalChanged = OnItemTotalChanged; + } + } + }); + } + } + #endregion + } + catch { - var newProductSkuWithSchemeList = addProductSkuWindow.SelectedProductSkuWithSchemeList; } + finally + { + ewh.Set(); + } + } + + private void OnItemTotalChanged(int itemTotal) + { + Console.WriteLine($"OnItemTotalChanged {DateTime.Now} {itemTotal}"); + this.delayTrigger.SetKey(Guid.NewGuid().ToString()); } } } diff --git a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs index 0710aac1..b1701d92 100644 --- a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs +++ b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs @@ -105,8 +105,6 @@ namespace BBWY.Client.ViewModels public ICommand ExportCommand { get; set; } - public ICommand CopyTextCommand { get; set; } - public ICommand CopyOrderWaybillCommand { get; set; } public ICommand SetSearchDateCommand { get; set; } @@ -191,20 +189,6 @@ namespace BBWY.Client.ViewModels Task.Factory.StartNew(() => LoadOrder(1)); //手动点击查询订单 }); SyncOrderCommand = new RelayCommand(SyncOrder); - CopyTextCommand = new RelayCommand(s => - { - try - { - Clipboard.SetText(s); - } - catch (Exception ex) - { - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine(ex); - Console.ResetColor(); - } - } - ); CopyOrderWaybillCommand = new RelayCommand(o => Clipboard.SetText(o.WaybillNo)); SetSearchDateCommand = new RelayCommand(d => { diff --git a/BBWY.Client/Views/BatchPurchase/BatchCreateNewPurchaseOrder.xaml b/BBWY.Client/Views/BatchPurchase/BatchCreateNewPurchaseOrder.xaml index 68f92934..724f69b2 100644 --- a/BBWY.Client/Views/BatchPurchase/BatchCreateNewPurchaseOrder.xaml +++ b/BBWY.Client/Views/BatchPurchase/BatchCreateNewPurchaseOrder.xaml @@ -25,60 +25,174 @@ Background="{StaticResource Border.Background}"> + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -111,7 +225,7 @@ - + diff --git a/BBWY.Client/Views/BatchPurchase/BatchPurchaseAddProductSku.xaml b/BBWY.Client/Views/BatchPurchase/BatchPurchaseAddProductSku.xaml index 515368b7..75bbc381 100644 --- a/BBWY.Client/Views/BatchPurchase/BatchPurchaseAddProductSku.xaml +++ b/BBWY.Client/Views/BatchPurchase/BatchPurchaseAddProductSku.xaml @@ -106,20 +106,25 @@ Cursor="Hand"/> - - - - + + + + + Margin="0,17,0,0"> + + - + diff --git a/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs b/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs index 484027d5..9da4a474 100644 --- a/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs +++ b/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs @@ -46,7 +46,7 @@ namespace BBWY.Server.Business { PurchaseSchemeId = ps.Id, ps.PurchaserId, - PurchaseName = p.Name, + PurchaserName = p.Name, ps.PurchasePlatform, ps.SkuId }); @@ -82,7 +82,7 @@ namespace BBWY.Server.Business Price = productSku.Price, Title = productSku.Title, State = productSku.State, - PurchaseName = currentScheme.PurchaseName, + PurchaserName = currentScheme.PurchaserName, PurchasePlatform = currentScheme.PurchasePlatform, PurchaserId = currentScheme.PurchaserId, PurchaseSchemeId = currentScheme.PurchaseSchemeId @@ -90,19 +90,6 @@ namespace BBWY.Server.Business } } } - - - //var pruductSkuSchemeList = productSkuList.Map>(); - //foreach (var ps in pruductSkuSchemeList) - //{ - // var scheme = schemeList.FirstOrDefault(s => s.SkuId == ps.Id); - // if (scheme == null) - // continue; - // ps.PurchaseSchemeId = scheme.PurchaseSchemeId; - // ps.PurchaserId = scheme.PurchaserId; - // ps.PurchaseName = scheme.PurchaseName; - // ps.PurchasePlatform = scheme.PurchasePlatform; - //} return list; } diff --git a/BBWY.Server.Model/Dto/Response/PurchaseOrderV2/BatchPurchase/ProductSkuWithSchemeResponse.cs b/BBWY.Server.Model/Dto/Response/PurchaseOrderV2/BatchPurchase/ProductSkuWithSchemeResponse.cs index ca140c1c..c172f513 100644 --- a/BBWY.Server.Model/Dto/Response/PurchaseOrderV2/BatchPurchase/ProductSkuWithSchemeResponse.cs +++ b/BBWY.Server.Model/Dto/Response/PurchaseOrderV2/BatchPurchase/ProductSkuWithSchemeResponse.cs @@ -33,7 +33,7 @@ namespace BBWY.Server.Model.Dto public string PurchaserId { get; set; } - public string PurchaseName { get; set; } + public string PurchaserName { get; set; } public Enums.Platform? PurchasePlatform { get; set; } }