diff --git a/BBWY.Client/APIServices/PurchaseService.cs b/BBWY.Client/APIServices/PurchaseService.cs
index 91e1dcba..97af13d9 100644
--- a/BBWY.Client/APIServices/PurchaseService.cs
+++ b/BBWY.Client/APIServices/PurchaseService.cs
@@ -17,11 +17,11 @@ namespace BBWY.Client.APIServices
///
///
///
- public ApiResponse> GetPurchaseSchemeList(IList productIdList, string purchaserId, long shopId)
+ public ApiResponse> GetPurchaseSchemeList(IList skuIdList, string purchaserId, long shopId)
{
return SendRequest>(globalContext.BBYWApiHost,
"api/PurchaseScheme/GetPurchaseSchemeList",
- new { productIdList, purchaserId, shopId },
+ new { skuIdList, purchaserId, shopId },
null,
HttpMethod.Post);
}
@@ -32,11 +32,11 @@ namespace BBWY.Client.APIServices
///
///
///
- public ApiResponse> GetPurchaseSchemeList(string skuId, long shopId)
+ public ApiResponse> GetPurchaseSchemeList(IList skuIdList, long shopId)
{
return SendRequest>(globalContext.BBYWApiHost,
"api/PurchaseScheme/GetPurchaseSchemeList",
- new { skuId, shopId },
+ new { skuIdList, shopId },
null,
HttpMethod.Post);
}
diff --git a/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs b/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs
index b6ba39ee..2bc6cd50 100644
--- a/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs
+++ b/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs
@@ -20,6 +20,7 @@ namespace BBWY.Client.ViewModels
public ICommand DeleteCommand { get; set; }
+ public ICommand EditCommand { get; set; }
public ChoosePurchaseSchemeViewModel(PurchaseService purchaseService, GlobalContext globalContext)
{
@@ -27,25 +28,26 @@ namespace BBWY.Client.ViewModels
this.globalContext = globalContext;
PurchaseSchemeList = new ObservableCollection();
DeleteCommand = new RelayCommand(Delete);
+ EditCommand = new RelayCommand(Edit);
}
protected override void Load()
{
PurchaseSchemeList.Clear();
- Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(SkuId, globalContext.User.Shop.ShopId)).ContinueWith(t =>
- {
- var r = t.Result;
- if (!r.Success)
- {
- App.Current.Dispatcher.Invoke(() => MessageBox.Show(r.Msg, "获取采购方案"));
- return;
- }
-
- App.Current.Dispatcher.Invoke(() =>
- {
- foreach (var apiModel in r.Data) PurchaseSchemeList.Add(PurchaseScheme.Convert(apiModel));
- });
- });
+ Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(new string[] { SkuId }, globalContext.User.Shop.ShopId)).ContinueWith(t =>
+ {
+ var r = t.Result;
+ if (!r.Success)
+ {
+ App.Current.Dispatcher.Invoke(() => MessageBox.Show(r.Msg, "获取采购方案"));
+ return;
+ }
+
+ App.Current.Dispatcher.Invoke(() =>
+ {
+ foreach (var apiModel in r.Data) PurchaseSchemeList.Add(PurchaseScheme.Convert(apiModel));
+ });
+ });
}
protected override void Unload()
@@ -55,6 +57,18 @@ namespace BBWY.Client.ViewModels
}
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)
{
}
diff --git a/BBWY.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs b/BBWY.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs
index 041ad975..6876c687 100644
--- a/BBWY.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs
+++ b/BBWY.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs
@@ -25,7 +25,10 @@ namespace BBWY.Client.ViewModels
private string purchaserName;
private bool isLoading;
- public Product Product { get; set; }
+ //public Product Product { get; set; }
+
+ public IList ProductSkuList { get; set; }
+
public string PurchaserId { get; set; }
public string PurchaserName { get => purchaserName; set { Set(ref purchaserName, value); } }
public string PurchaserLocation { get; set; }
@@ -64,9 +67,10 @@ namespace BBWY.Client.ViewModels
SavePurchaseSchemeCommand = new RelayCommand(SavePurchaseScheme);
}
- public void SetData(Product product, string purchaserId, string purchaserName)
+ public void SetData(IList productSkuList, string purchaserId, string purchaserName)
{
- this.Product = product;
+ this.ProductSkuList = productSkuList;
+ //this.Product = product;
this.PurchaserId = purchaserId;
this.PurchaserName = purchaserName;
}
@@ -76,48 +80,48 @@ namespace BBWY.Client.ViewModels
if (!string.IsNullOrEmpty(PurchaserId))
{
IsLoading = true;
- Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(new List() { Product.Id }, PurchaserId, globalContext.User.Shop.ShopId)).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 Product.SkuList)
- {
+ Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(ProductSkuList.Select(s => s.Id).ToList(), PurchaserId, globalContext.User.Shop.ShopId)).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(purchaseSchemeProduct);
- }
- ewh.Set();
- ewh.Dispose();
- });
- }
- WaitHandle.WaitAll(waitList.ToArray());
- IsLoading = false;
- });
+ 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(purchaseSchemeProduct);
+ }
+ ewh.Set();
+ ewh.Dispose();
+ });
+ }
+ WaitHandle.WaitAll(waitList.ToArray());
+ IsLoading = false;
+ });
}
}
@@ -230,7 +234,7 @@ namespace BBWY.Client.ViewModels
{
productSku.SelectedPurchaseScheme = new PurchaseScheme()
{
- ProductId = Product.Id,
+ ProductId = productSku.ProductId,
SkuId = productSku.Id
};
}
@@ -250,9 +254,9 @@ namespace BBWY.Client.ViewModels
private void RemovePurchaseSchemeProduct(PurchaseSchemeProduct purchaseSchemeProduct)
{
- var productSku = Product.SkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId);
+ var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId);
productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Remove(purchaseSchemeProduct);
- if (!Product.SkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count > 0))
+ if (!ProductSkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count > 0))
PurchaserId = string.Empty;
}
@@ -274,7 +278,7 @@ namespace BBWY.Client.ViewModels
MessageBox.Show("未能识别的url");
return;
}
- var sku = Product.SkuList.FirstOrDefault(s => s.Id == purchaseSchemeProduct.SkuId);
+ var sku = ProductSkuList.FirstOrDefault(s => s.Id == purchaseSchemeProduct.SkuId);
var purchaseUrl = match.Groups[1].Value;
if (sku.SelectedPurchaseScheme.PurchaseSchemeProductList.Any(p => p.PurchaseUrl == purchaseUrl))
{
@@ -342,7 +346,7 @@ namespace BBWY.Client.ViewModels
}
purchaseSchemeProduct.IsEditing = false;
- var productSku = Product.SkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId);
+ var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId);
productSku.SelectedPurchaseScheme.PurchaserId = PurchaserId;
productSku.SelectedPurchaseScheme.PurchaserName = PurchaserName;
productSku.SelectedPurchaseScheme.PurchaserLocation = PurchaserLocation;
@@ -357,24 +361,24 @@ namespace BBWY.Client.ViewModels
private void SavePurchaseScheme()
{
- if (!Product.SkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count != 0))
+ if (!ProductSkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count != 0))
{
MessageBox.Show("没有需要保存的数据,如需删除该采购商所有数据请返回采购商列表进行删除", "提示");
return;
}
- var hasNoReady = Product.SkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Any(p => p.IsEditing));
+ var hasNoReady = ProductSkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Any(p => p.IsEditing));
if (hasNoReady)
{
MessageBox.Show("存在未保存的数据", "提示");
return;
}
- var addPurchaseSchemeList = Product.SkuList.Where(s => s.SelectedPurchaseScheme != null &&
+ var addPurchaseSchemeList = ProductSkuList.Where(s => s.SelectedPurchaseScheme != null &&
s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count > 0 &&
s.SelectedPurchaseScheme.Id == 0)
.Select(s => s.SelectedPurchaseScheme).ToList();
- var editPurchaseSchemeList = Product.SkuList.Where(s => s.SelectedPurchaseScheme != null &&
+ var editPurchaseSchemeList = ProductSkuList.Where(s => s.SelectedPurchaseScheme != null &&
s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count > 0 &&
s.SelectedPurchaseScheme.Id != 0)
.Select(s => s.SelectedPurchaseScheme).ToList();
@@ -409,11 +413,11 @@ namespace BBWY.Client.ViewModels
{
PurchaserId = PurchaserName = string.Empty;
//clear data
- foreach (var sku in Product.SkuList)
+ foreach (var sku in ProductSkuList)
{
sku.SelectedPurchaseScheme = null;
}
- Product = null;
+ //Product = null;
e.Cancel = false;
}
diff --git a/BBWY.Client/ViewModels/Ware/WareManagerViewModel.cs b/BBWY.Client/ViewModels/Ware/WareManagerViewModel.cs
index d2d6c315..beba19b2 100644
--- a/BBWY.Client/ViewModels/Ware/WareManagerViewModel.cs
+++ b/BBWY.Client/ViewModels/Ware/WareManagerViewModel.cs
@@ -143,7 +143,10 @@ namespace BBWY.Client.ViewModels
#endregion
#region 加载采购方案
- LoadPurchaseScheme(productList);
+ var skuList = new List();
+ foreach (var p in productList)
+ skuList.AddRange(p.SkuList);
+ LoadPurchaseScheme(skuList);
#endregion
App.Current.Dispatcher.BeginInvoke((Action)delegate
@@ -185,9 +188,9 @@ namespace BBWY.Client.ViewModels
/// 加载采购方案
///
///
- private void LoadPurchaseScheme(IList productList)
+ private void LoadPurchaseScheme(IList skuList)
{
- var response = purchaseService.GetPurchaseSchemeList(productList.Select(p => p.Id).ToList(), string.Empty, globalContext.User.Shop.ShopId);
+ var response = purchaseService.GetPurchaseSchemeList(skuList.Select(s => s.Id).ToList(), string.Empty, globalContext.User.Shop.ShopId);
if (!response.Success)
{
App.Current.Dispatcher.BeginInvoke((Action)delegate { MessageBox.Show(response.Msg, "获取采购方案"); });
@@ -198,16 +201,13 @@ namespace BBWY.Client.ViewModels
App.Current.Dispatcher.Invoke(() =>
{
- foreach (var p in productList)
+ foreach (var s in skuList)
{
- foreach (var s in p.SkuList)
- {
- s.PurchaseSchemeList.Clear();
- var currentSchemeList = schemeList.Where(scheme => scheme.SkuId == s.Id);
- if (currentSchemeList.Count() > 0)
- foreach (var scheme in currentSchemeList)
- s.PurchaseSchemeList.Add(PurchaseScheme.Convert(scheme));
- }
+ s.PurchaseSchemeList.Clear();
+ var currentSchemeList = schemeList.Where(scheme => scheme.SkuId == s.Id);
+ if (currentSchemeList.Count() > 0)
+ foreach (var scheme in currentSchemeList)
+ s.PurchaseSchemeList.Add(PurchaseScheme.Convert(scheme));
}
});
@@ -297,7 +297,8 @@ namespace BBWY.Client.ViewModels
private void OpenBindingView(Product product, string purchaserId, string purchaserName)
{
- bindingPurchaseProduct.SetData(product, purchaserId, purchaserName);
+ var skuList = product.SkuList;
+ bindingPurchaseProduct.SetData(skuList, purchaserId, purchaserName);
var bindingView = new Views.Ware.BindingPurchaseProduct();
var r = bindingView.ShowDialog();
if (r == true)
@@ -306,7 +307,7 @@ namespace BBWY.Client.ViewModels
Task.Factory.StartNew(() =>
{
IsLoading = true;
- LoadPurchaseScheme(new List() { product });
+ LoadPurchaseScheme(skuList);
IsLoading = false;
App.Current.Dispatcher.BeginInvoke((Action)delegate
{
diff --git a/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml b/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml
index 02c0d25f..2cfb6a11 100644
--- a/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml
+++ b/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml
@@ -50,7 +50,9 @@
+ Background="#02A7F0"
+ Command="{Binding DataContext.EditCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
+ CommandParameter="{Binding }"/>
-
diff --git a/BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
index 83420052..279a7b25 100644
--- a/BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
+++ b/BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
@@ -120,9 +120,8 @@ namespace BBWY.Server.Business
{
var purchaseSchemeList = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id)
.Where((ps, p) => ps.ShopId == querySchemeRequest.ShopId)
- .WhereIf(querySchemeRequest.ProductIdList != null && querySchemeRequest.ProductIdList.Count() > 0, (ps, p) => querySchemeRequest.ProductIdList.Contains(ps.ProductId))
+ .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(!string.IsNullOrEmpty(querySchemeRequest.SkuId), (ps, p) => ps.SkuId == querySchemeRequest.SkuId)
.ToList((ps, p) => new PurchaseSchemeResponse()
{
Id = ps.Id,
diff --git a/BBWY.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWY.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
index c8c84ea0..b3c92353 100644
--- a/BBWY.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
+++ b/BBWY.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
@@ -8,13 +8,11 @@ namespace BBWY.Server.Model.Dto
{
public long ShopId { get; set; }
- public IList ProductIdList { get; set; }
+ public IList SkuIdList { get; set; }
///
/// 采购商Id, 可空
///
public string PurchaserId { get; set; }
-
- public string SkuId { get; set; }
}
}