Browse Source

多商家

yijia
shanji 2 years ago
parent
commit
39d1bc2703
  1. 1
      BBWYB.Client/App.xaml.cs
  2. 2
      BBWYB.Client/GlobalContext.cs
  3. 10
      BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs
  4. 36
      BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs
  5. 28
      BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs
  6. 13
      BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs
  7. 16
      BBWYB.Client/ViewModels/MainViewModel.cs
  8. 18
      BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs
  9. 4
      BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs
  10. 169
      BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs
  11. 224
      BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs
  12. 2
      BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml
  13. 19
      BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml.cs
  14. 51
      BBWYB.Client/Views/Ware/WareManager.xaml
  15. 4
      BBWYB.Client/appsettings.json
  16. 37
      BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
  17. 5
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs
  18. 16
      BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
  19. 6
      BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs

1
BBWYB.Client/App.xaml.cs

@ -79,6 +79,7 @@ namespace BBWYB.Client
serviceCollection.AddTransient<OnlinePurchaseViewModel>(); serviceCollection.AddTransient<OnlinePurchaseViewModel>();
serviceCollection.AddTransient<EditPriceViewModel>(); serviceCollection.AddTransient<EditPriceViewModel>();
serviceCollection.AddTransient<UpdatePurchaseTaskViewModel>(); serviceCollection.AddTransient<UpdatePurchaseTaskViewModel>();
serviceCollection.AddTransient<BindingPurchaseProductViewModel>();
serviceCollection.AddMapper(new MappingProfile()); serviceCollection.AddMapper(new MappingProfile());
ServiceProvider = serviceCollection.BuildServiceProvider(); ServiceProvider = serviceCollection.BuildServiceProvider();
base.OnStartup(e); base.OnStartup(e);

2
BBWYB.Client/GlobalContext.cs

@ -22,7 +22,7 @@ namespace BBWYB.Client
{ {
public GlobalContext() public GlobalContext()
{ {
BBWYBApiVersion = "10030"; BBWYBApiVersion = "10031";
} }
private User user; private User user;

10
BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs

@ -13,6 +13,16 @@ namespace BBWYB.Client.Models
public string SkuId { get; set; } public string SkuId { get; set; }
public long SkuPurchaseSchemeId { get; set; } public long SkuPurchaseSchemeId { get; set; }
public long UserId { 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<PurchaseSchemeProductSkuResponse> PurchaseSchemeProductSkuList { get; set; } public List<PurchaseSchemeProductSkuResponse> PurchaseSchemeProductSkuList { get; set; }
} }

36
BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs

@ -11,20 +11,20 @@ namespace BBWYB.Client.Models
/// </summary> /// </summary>
public decimal? DefaultCost { get; set; } public decimal? DefaultCost { get; set; }
public string ProductId { get; set; } public string ProductId { get; set; }
/// <summary> ///// <summary>
/// 采购商Id ///// 采购商Id
/// </summary> ///// </summary>
public string PurchaserId { get; set; } //public string PurchaserId { get; set; }
/// <summary> ///// <summary>
/// 采购商Id ///// 采购商Id
/// </summary> ///// </summary>
public string PurchaserId2 { get; set; } //public string PurchaserId2 { get; set; }
public string PurchaserName { get; set; } //public string PurchaserName { get; set; }
/// <summary> ///// <summary>
/// 发货地 ///// 发货地
/// </summary> ///// </summary>
public string PurchaserLocation { get; set; } //public string PurchaserLocation { get; set; }
/// <summary> /// <summary>
/// 采购实际成本 /// 采购实际成本
/// </summary> /// </summary>
@ -32,10 +32,10 @@ namespace BBWYB.Client.Models
public string SkuId { get; set; } public string SkuId { get; set; }
public long ShopId { get; set; } public long ShopId { get; set; }
/// <summary> ///// <summary>
/// 采购平台 ///// 采购平台
/// </summary> ///// </summary>
public Platform PurchasePlatform { get; set; } //public Platform PurchasePlatform { get; set; }
/// <summary> /// <summary>
/// 最后采购时间 /// 最后采购时间
@ -43,6 +43,8 @@ namespace BBWYB.Client.Models
public DateTime? LastPurchaseTime { get; set; } public DateTime? LastPurchaseTime { get; set; }
public List<PurchaseSchemeProductResponse> PurchaseSchemeProductList { get; set; } public List<PurchaseSchemeProductResponse> PurchaseSchemeProductList { get; set; }
public List<Purchaser> PurchaserList { get; set; }
} }
} }

28
BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs

@ -2,6 +2,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq;
namespace BBWYB.Client.Models namespace BBWYB.Client.Models
{ {
@ -21,10 +22,10 @@ namespace BBWYB.Client.Models
public decimal DefaultCost { get => defaultCost; set { SetProperty(ref defaultCost, value); } } public decimal DefaultCost { get => defaultCost; set { SetProperty(ref defaultCost, value); } }
public decimal RealCost { get => realCost; set { SetProperty(ref realCost, value); } } public decimal RealCost { get => realCost; set { SetProperty(ref realCost, value); } }
public string PurchaserId { get; set; } //public string PurchaserId { get; set; }
public string PurchaserId2 { get; set; } //public string PurchaserId2 { get; set; }
public string PurchaserName { get; set; } public string PurchaserName { get; set; }
public string PurchaserLocation { get; set; } //public string PurchaserLocation { get; set; }
public string PurchaseProductId1 { get; set; } public string PurchaseProductId1 { get; set; }
public int PurchaseProductSkuCount1 { get; set; } public int PurchaseProductSkuCount1 { get; set; }
public string PurchaseProductId2 { get; set; } public string PurchaseProductId2 { get; set; }
@ -37,7 +38,7 @@ namespace BBWYB.Client.Models
/// <summary> /// <summary>
/// 采购平台 /// 采购平台
/// </summary> /// </summary>
public Platform PurchasePlatform { get; set; } //public Platform PurchasePlatform { get; set; }
/// <summary> /// <summary>
/// 最后采购时间 /// 最后采购时间
@ -49,9 +50,12 @@ namespace BBWYB.Client.Models
/// </summary> /// </summary>
public IList<PurchaseSchemeProduct> PurchaseSchemeProductList { get; set; } public IList<PurchaseSchemeProduct> PurchaseSchemeProductList { get; set; }
public List<Purchaser> PurchaserList { get; set; }
public PurchaseScheme() public PurchaseScheme()
{ {
PurchaseSchemeProductList = new ObservableCollection<PurchaseSchemeProduct>(); PurchaseSchemeProductList = new ObservableCollection<PurchaseSchemeProduct>();
PurchaserList = new List<Purchaser>();
} }
/// <summary> /// <summary>
@ -68,13 +72,17 @@ namespace BBWYB.Client.Models
ProductId = apiModel.ProductId, ProductId = apiModel.ProductId,
SkuId = apiModel.SkuId, SkuId = apiModel.SkuId,
DefaultCost = apiModel.DefaultCost ?? 0, DefaultCost = apiModel.DefaultCost ?? 0,
RealCost = apiModel.RealCost ?? 0, RealCost = apiModel.RealCost ?? 0
PurchaserId = apiModel.PurchaserId, //PurchaserId = apiModel.PurchaserId,
PurchaserName = apiModel.PurchaserName, //PurchaserName = apiModel.PurchaserName,
PurchaserLocation = apiModel.PurchaserLocation, //PurchaserLocation = apiModel.PurchaserLocation,
PurchasePlatform = apiModel.PurchasePlatform //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) foreach (var apiProduct in apiModel.PurchaseSchemeProductList)
{ {
model.PurchaseSchemeProductList.Add(PurchaseSchemeProduct.Convert(apiProduct)); model.PurchaseSchemeProductList.Add(PurchaseSchemeProduct.Convert(apiProduct));

13
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 PurchaseUrl { get => purchaseUrl; set { SetProperty(ref purchaseUrl, value); } }
public string PurchaseProductId { get => purchaseProductId; set => purchaseProductId = 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 public bool IsEditing
{ {
get => isEditing; get => isEditing;
@ -79,7 +85,12 @@ namespace BBWYB.Client.Models
ProductId = apiModel.ProductId, ProductId = apiModel.ProductId,
SkuId = apiModel.SkuId, SkuId = apiModel.SkuId,
PurchaseProductId = apiModel.PurchaseProductId, 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)); model.SelectedSkuIdList.AddRange(apiModel.PurchaseSchemeProductSkuList.Select(s => s.PurchaseSkuId));
return model; return model;

16
BBWYB.Client/ViewModels/MainViewModel.cs

@ -87,14 +87,14 @@ namespace BBWYB.Client.ViewModels
{ {
App.Current.Dispatcher.Invoke(() => App.Current.Dispatcher.Invoke(() =>
{ {
MenuList.Add(new MenuModel() //MenuList.Add(new MenuModel()
{ //{
Name = "订单管理", // Name = "订单管理",
ChildList = new List<MenuModel>() // ChildList = new List<MenuModel>()
{ // {
new MenuModel(){ Name="订单列表",Url="/Views/Order/OrderList.xaml" } // new MenuModel(){ Name="订单列表",Url="/Views/Order/OrderList.xaml" }
} // }
}); //});
MenuList.Add(new MenuModel() MenuList.Add(new MenuModel()
{ {
Name = "商品管理", Name = "商品管理",

18
BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs

@ -117,17 +117,17 @@ namespace BBWYB.Client.ViewModels
if (!isResponse) if (!isResponse)
return; return;
isResponse = false; isResponse = false;
var purchaserId = skuGroup.SelectedScheme.PurchaserId; //var purchaserId = skuGroup.SelectedScheme.PurchaserId;
foreach (var otherSkuGroup in SkuGroup) //foreach (var otherSkuGroup in SkuGroup)
{ //{
if (otherSkuGroup.SkuId == skuGroup.SkuId) // if (otherSkuGroup.SkuId == skuGroup.SkuId)
continue; // continue;
var samePurchaseScheme = otherSkuGroup.SchemeList.FirstOrDefault(s => s.PurchaserId == purchaserId); // var samePurchaseScheme = otherSkuGroup.SchemeList.FirstOrDefault(s => s.PurchaserId == purchaserId);
if (samePurchaseScheme != null) // if (samePurchaseScheme != null)
otherSkuGroup.SelectedScheme = samePurchaseScheme; // otherSkuGroup.SelectedScheme = samePurchaseScheme;
} //}
isResponse = true; isResponse = true;
} }

4
BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs

@ -135,8 +135,8 @@ namespace BBWYB.Client.ViewModels
Logo = orderSku.Logo, Logo = orderSku.Logo,
Price = orderSku.Price.Value, Price = orderSku.Price.Value,
ProductId = scheme.ProductId, ProductId = scheme.ProductId,
PurchasePlatform = scheme.PurchasePlatform, //PurchasePlatform = scheme.PurchasePlatform,
PurchaserId = scheme.PurchaserId, //PurchaserId = scheme.PurchaserId,
PurchaserName = scheme.PurchaserName, PurchaserName = scheme.PurchaserName,
PurchaseSchemeId = scheme.Id, PurchaseSchemeId = scheme.Id,
Quantity = orderSku.ItemTotal, Quantity = orderSku.ItemTotal,

169
BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs

@ -4,9 +4,11 @@ using BBWYB.Client.Views.Ware;
using BBWYB.Common.Models; using BBWYB.Common.Models;
using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
@ -16,17 +18,17 @@ using System.Windows.Input;
namespace BBWYB.Client.ViewModels namespace BBWYB.Client.ViewModels
{ {
public class BindingPurchaseProductViewModel : BaseVM, IDenpendency public class BindingPurchaseProductViewModel : BaseVM
{ {
#region Properties #region Properties
private GlobalContext globalContext; private GlobalContext globalContext;
private PurchaseService purchaseService; private PurchaseService purchaseService;
private PurchaseProductAPIService purchaseProductAPIService; private PurchaseProductAPIService purchaseProductAPIService;
private string purchaserName; //private string purchaserName;
private bool isLoading; private bool isLoading;
private long? schemeId;
private Platform purchasePlatform; //private Platform purchasePlatform;
private IDictionary<Platform, string> urlPatternDictionary; private IDictionary<Platform, string> urlPatternDictionary;
@ -34,15 +36,18 @@ namespace BBWYB.Client.ViewModels
public IList<ProductSku> ProductSkuList { get; set; } public IList<ProductSku> 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 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 #endregion
@ -86,24 +91,39 @@ namespace BBWYB.Client.ViewModels
{ Platform.,@"^(https://detail.1688.com/offer/(\d+).html)[^\s]*" }, { Platform.,@"^(https://detail.1688.com/offer/(\d+).html)[^\s]*" },
//{ Platform.拳探, @"^(https://qt.qiyue666.com/goods_detail/(\d+))(\?\w*)?$" } //{ Platform.拳探, @"^(https://qt.qiyue666.com/goods_detail/(\d+))(\?\w*)?$" }
}; };
ProductSkuList = new ObservableCollection<ProductSku>();
} }
public void SetData(IList<ProductSku> productSkuList, string purchaserId, string purchaserId2, string purchaserName, Platform purchasePlatform) //public void SetData(IList<ProductSku> 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<ProductSku> productSkuList, long? schemeId)
{ {
this.ProductSkuList = productSkuList; foreach (var productSku in productSkuList)
ProductSkuList.Add(productSku);
this.SchemeId = schemeId;
//this.Product = product; //this.Product = product;
this.PurchaserId = purchaserId; //this.PurchaserId = purchaserId;
this.PurchaserId2 = purchaserId2; //this.PurchaserId2 = purchaserId2;
this.PurchaserName = purchaserName; //this.PurchaserName = purchaserName;
this.PurchasePlatform = purchasePlatform; //this.PurchasePlatform = purchasePlatform;
} }
protected override void Load() protected override void Load()
{ {
if (!string.IsNullOrEmpty(PurchaserId)) if (this.SchemeId != null)
{ {
IsLoading = true; IsLoading = true;
Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(ProductSkuList.Select(s => s.Id).ToList(), PurchaserId, globalContext.User.Shop.ShopId, purchasePlatform: PurchasePlatform)).ContinueWith(r => 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; var apiResponse = r.Result;
if (!apiResponse.Success) if (!apiResponse.Success)
@ -117,18 +137,16 @@ namespace BBWYB.Client.ViewModels
} }
var purchaseSchemeList = apiResponse.Data; var purchaseSchemeList = apiResponse.Data;
var apiScheme = purchaseSchemeList.FirstOrDefault();
var waitList = new List<EventWaitHandle>();
foreach (var sku in ProductSkuList)
{
//当前SKU下当前采购商的采购方案
var apiScheme = purchaseSchemeList.FirstOrDefault(s => s.SkuId == sku.Id && s.PurchaserId == PurchaserId);
if (apiScheme == null) if (apiScheme == null)
continue; {
IsLoading = false;
return;
}
sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme); sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme);
var ewh = new ManualResetEvent(false); var ewh = new ManualResetEvent(false);
var waitList = new List<EventWaitHandle>();
waitList.Add(ewh); waitList.Add(ewh);
Task.Factory.StartNew(() => Task.Factory.StartNew(() =>
@ -136,18 +154,67 @@ namespace BBWYB.Client.ViewModels
foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList) foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList)
{ {
purchaseSchemeProduct.IsEditing = false; purchaseSchemeProduct.IsEditing = false;
LoadPurchaseProduct(sku.SelectedPurchaseScheme.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _); LoadPurchaseProduct(purchaseSchemeProduct.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _);
} }
ewh.Set(); ewh.Set();
ewh.Dispose(); ewh.Dispose();
}); });
}
WaitHandle.WaitAll(waitList.ToArray()); WaitHandle.WaitAll(waitList.ToArray());
IsLoading = false; 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<EventWaitHandle>();
// 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<string, string> checkPurchaserFunc, out string errorMsg) public void LoadPurchaseProduct(Platform platform, PurchaseSchemeProduct purchaseSchemeProduct, string purchaseProductId, Func<string, string> checkPurchaserFunc, out string errorMsg)
{ {
errorMsg = string.Empty; errorMsg = string.Empty;
@ -180,10 +247,15 @@ namespace BBWYB.Client.ViewModels
return; return;
} }
PurchaserId = data.Value.purchaser.Id; purchaseSchemeProduct.PurchaserId = data.Value.purchaser.Id;
PurchaserId2 = data.Value.purchaser.Id2; purchaseSchemeProduct.PurchaserId2 = data.Value.purchaser.Id2;
PurchaserName = data.Value.purchaser.Name; purchaseSchemeProduct.PurchaserName = data.Value.purchaser.Name;
PurchaserLocation = data.Value.purchaser.Location; 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 App.Current.Dispatcher.BeginInvoke((Action)delegate
{ {
@ -214,8 +286,7 @@ namespace BBWYB.Client.ViewModels
productSku.SelectedPurchaseScheme = new PurchaseScheme() productSku.SelectedPurchaseScheme = new PurchaseScheme()
{ {
ProductId = productSku.ProductId, ProductId = productSku.ProductId,
SkuId = productSku.Id, SkuId = productSku.Id
PurchasePlatform = PurchasePlatform
}; };
} }
else if (productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Count >= 4) else if (productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Count >= 4)
@ -229,7 +300,8 @@ namespace BBWYB.Client.ViewModels
Id = DateTime.Now.ToFileTime(), Id = DateTime.Now.ToFileTime(),
IsEditing = true, IsEditing = true,
ProductId = productSku.ProductId, 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); var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId);
productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Remove(purchaseSchemeProduct); productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Remove(purchaseSchemeProduct);
if (!ProductSkuList.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; // PurchaserId = string.Empty;
} }
/// <summary> /// <summary>
@ -254,7 +326,7 @@ namespace BBWYB.Client.ViewModels
return; return;
} }
urlPatternDictionary.TryGetValue(PurchasePlatform, out string pattern); urlPatternDictionary.TryGetValue(purchaseSchemeProduct.PurchasePlatform, out string pattern);
var match = Regex.Match(purchaseSchemeProduct.PurchaseUrl, pattern); var match = Regex.Match(purchaseSchemeProduct.PurchaseUrl, pattern);
if (!match.Success) if (!match.Success)
@ -276,13 +348,13 @@ namespace BBWYB.Client.ViewModels
Task.Factory.StartNew(() => 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)) //if (sku.PurchaseSchemeList.Any(s => s.Id != sku.SelectedPurchaseScheme.Id && s.PurchaserId == p))
return $"sku{sku.Id}的采购方案中已存在相同的采购商"; //同一个sku中的采购方案不能有相同的采购商 // return $"sku{sku.Id}的采购方案中已存在相同的采购商"; //同一个sku中的采购方案不能有相同的采购商
if (!string.IsNullOrEmpty(PurchaserId) && p != PurchaserId) //同一批操作的sku必须为相同的采购商 //if (!string.IsNullOrEmpty(PurchaserId) && p != PurchaserId) //同一批操作的sku必须为相同的采购商
return "采购商必须相同"; // return "采购商必须相同";
return string.Empty; return string.Empty;
}, out string errorMsg); }, out string errorMsg);
@ -319,10 +391,10 @@ namespace BBWYB.Client.ViewModels
purchaseSchemeProduct.IsEditing = false; purchaseSchemeProduct.IsEditing = false;
var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId); var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId);
productSku.SelectedPurchaseScheme.PurchaserId = PurchaserId; //productSku.SelectedPurchaseScheme.PurchaserId = PurchaserId;
productSku.SelectedPurchaseScheme.PurchaserId2 = PurchaserId2; //productSku.SelectedPurchaseScheme.PurchaserId2 = PurchaserId2;
productSku.SelectedPurchaseScheme.PurchaserName = PurchaserName; //productSku.SelectedPurchaseScheme.PurchaserName = PurchaserName;
productSku.SelectedPurchaseScheme.PurchaserLocation = PurchaserLocation; //productSku.SelectedPurchaseScheme.PurchaserLocation = PurchaserLocation;
productSku.SelectedPurchaseScheme.DefaultCost = productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Sum(p => p.PurchaseSchemeProductSkuList.Count() == 0 ? 0 : p.PurchaseSchemeProductSkuList.Sum(s => s.Price)); 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) private void Closing(System.ComponentModel.CancelEventArgs e)
{ {
PurchaserId = PurchaserName = string.Empty; this.SchemeId = null;
//clear data //clear data
foreach (var sku in ProductSkuList) foreach (var sku in ProductSkuList)
{ {
sku.SelectedPurchaseScheme = null; sku.SelectedPurchaseScheme = null;
} }
this.ProductSkuList.Clear();
//Product = null; //Product = null;
e.Cancel = false; e.Cancel = false;
} }

224
BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs

@ -20,7 +20,7 @@ namespace BBWYB.Client.ViewModels
#region Properties #region Properties
private PurchaseService purchaseService; private PurchaseService purchaseService;
private ProductService productService; private ProductService productService;
private BindingPurchaseProductViewModel bindingPurchaseProduct; //private BindingPurchaseProductViewModel bindingPurchaseProduct;
private GlobalContext globalContext; private GlobalContext globalContext;
private bool isLoading; private bool isLoading;
private int pageIndex = 1; private int pageIndex = 1;
@ -45,22 +45,32 @@ namespace BBWYB.Client.ViewModels
#endregion #endregion
#region Commands #region Commands
public ICommand AddPurchaserCommand { get; set; } //public ICommand AddPurchaserCommand { get; set; }
public ICommand EditPurchaserCommand { get; set; } //public ICommand EditPurchaserCommand { get; set; }
public ICommand DeletePurchaserCommand { get; set; } //public ICommand DeletePurchaserCommand { get; set; }
public ICommand SearchCommand { get; set; } public ICommand SearchCommand { get; set; }
public ICommand ProductPageIndexChangedCommand { get; set; } public ICommand ProductPageIndexChangedCommand { get; set; }
public ICommand SwitchPurchasePlatformCommand { get; set; } public ICommand SwitchPurchasePlatformCommand { get; set; }
public ICommand AddSchemeCommand { get; set; }
public ICommand EditSchemeCommand { get; set; }
public ICommand DeleteSchemeCommand { get; set; }
#endregion #endregion
#region Methods #region Methods
public WareManagerViewModel(GlobalContext globalContext, BindingPurchaseProductViewModel bindingPurchaseProduct, PurchaseService purchaseService, ProductService productService) public WareManagerViewModel(GlobalContext globalContext, BindingPurchaseProductViewModel bindingPurchaseProduct, PurchaseService purchaseService, ProductService productService)
{ {
PageSize = 5; PageSize = 5;
AddPurchaserCommand = new RelayCommand<Product>(AddPurchaser); //AddPurchaserCommand = new RelayCommand<Product>(AddPurchaser);
EditPurchaserCommand = new RelayCommand<Purchaser>(EditPurchaser); //EditPurchaserCommand = new RelayCommand<Purchaser>(EditPurchaser);
DeletePurchaserCommand = new RelayCommand<Purchaser>(DeletePurchaser); //DeletePurchaserCommand = new RelayCommand<Purchaser>(DeletePurchaser);
AddSchemeCommand = new RelayCommand<Product>(AddScheme);
EditSchemeCommand = new RelayCommand<PurchaseScheme>(EditScheme);
DeleteSchemeCommand = new RelayCommand<PurchaseScheme>(DeleteScheme);
SwitchPurchasePlatformCommand = new RelayCommand<object>(SwitchPurchasePlatform); SwitchPurchasePlatformCommand = new RelayCommand<object>(SwitchPurchasePlatform);
SearchCommand = new RelayCommand(() => SearchCommand = new RelayCommand(() =>
{ {
@ -71,7 +81,7 @@ namespace BBWYB.Client.ViewModels
this.purchaseService = purchaseService; this.purchaseService = purchaseService;
this.productService = productService; this.productService = productService;
this.globalContext = globalContext; this.globalContext = globalContext;
this.bindingPurchaseProduct = bindingPurchaseProduct; //this.bindingPurchaseProduct = bindingPurchaseProduct;
ProductList = new ObservableCollection<Product>(); ProductList = new ObservableCollection<Product>();
Task.Factory.StartNew(() => LoadWare(1)); Task.Factory.StartNew(() => LoadWare(1));
} }
@ -164,7 +174,7 @@ namespace BBWYB.Client.ViewModels
{ {
foreach (var p in productList) foreach (var p in productList)
ProductList.Add(p); ProductList.Add(p);
ExtractPurchaser(); //ExtractPurchaser();
//使滚动条保持顶部 //使滚动条保持顶部
//Messenger.Default.Send(string.Empty, "WareManager_ProductListScrollToTop"); //Messenger.Default.Send(string.Empty, "WareManager_ProductListScrollToTop");
WeakReferenceMessenger.Default.Send(new Message_WareManager_ProductListScrollToTop(null)); WeakReferenceMessenger.Default.Send(new Message_WareManager_ProductListScrollToTop(null));
@ -227,96 +237,142 @@ namespace BBWYB.Client.ViewModels
/// <summary> /// <summary>
/// 提取SKU中的采购商到商品的采购商列表中 /// 提取SKU中的采购商到商品的采购商列表中
/// </summary> /// </summary>
private void ExtractPurchaser(string productId = "") //private void ExtractPurchaser(string productId = "")
{ //{
var productList = string.IsNullOrEmpty(productId) ? ProductList : ProductList.Where(p => p.Id == productId); // var productList = string.IsNullOrEmpty(productId) ? ProductList : ProductList.Where(p => p.Id == productId);
foreach (var product in productList) // foreach (var product in productList)
{ // {
product.PurchaserList.Clear(); // product.PurchaserList.Clear();
foreach (var sku in product.SkuList) // foreach (var sku in product.SkuList)
{ // {
if (sku.PurchaseSchemeList.Count() > 0) // if (sku.PurchaseSchemeList.Count() > 0)
{ // {
foreach (var pscheme in sku.PurchaseSchemeList) // foreach (var pscheme in sku.PurchaseSchemeList)
{ // {
var purchaser = product.PurchaserList.FirstOrDefault(purchaser => purchaser.Id == pscheme.PurchaserId); // var purchaser = product.PurchaserList.FirstOrDefault(purchaser => purchaser.Id == pscheme.PurchaserId);
if (purchaser == null) // if (purchaser == null)
{ // {
purchaser = new Purchaser() // purchaser = new Purchaser()
{ // {
Id = pscheme.PurchaserId, // Id = pscheme.PurchaserId,
Id2 = pscheme.PurchaserId2, // Id2 = pscheme.PurchaserId2,
Name = pscheme.PurchaserName, // Name = pscheme.PurchaserName,
ProductId = product.Id // ProductId = product.Id
}; // };
product.PurchaserList.Add(purchaser); // product.PurchaserList.Add(purchaser);
} // }
purchaser.SkuUseCount++; // purchaser.SkuUseCount++;
} // }
} // }
} // }
} // }
} //}
private void AddPurchaser(Product product) //private void AddPurchaser(Product product)
{ //{
if (product.PurchaserList.Count >= 5) // if (product.PurchaserList.Count >= 5)
{ // {
MessageBox.Show("一个SPU内最多允许5个采购商"); // MessageBox.Show("一个SPU内最多允许5个采购商");
return; // return;
} // }
OpenBindingView(product, string.Empty, string.Empty, string.Empty); // OpenBindingView(product, string.Empty, string.Empty, string.Empty);
} //}
private void EditPurchaser(Purchaser purchaser) //private void EditPurchaser(Purchaser purchaser)
{ //{
var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId); // var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId);
OpenBindingView(product, purchaser.Id, purchaser.Id2, purchaser.Name); // OpenBindingView(product, purchaser.Id, purchaser.Id2, purchaser.Name);
} //}
private void DeletePurchaser(Purchaser purchaser) //private void DeletePurchaser(Purchaser purchaser)
{ //{
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)
// {
// 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)
{
OpenBindingView(product, string.Empty, null);
}
private void EditScheme(PurchaseScheme purchaseScheme)
{
var product = ProductList.FirstOrDefault(p => p.Id == purchaseScheme.ProductId);
OpenBindingView(product, purchaseScheme.SkuId, purchaseScheme.Id);
}
private void DeleteScheme(PurchaseScheme purchaseScheme)
{
if (MessageBox.Show("确定删除该采购方案吗?", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK)
return; return;
IsLoading = true; IsLoading = true;
Task.Factory.StartNew(() => Task.Factory.StartNew(() => purchaseService.DeletePurchaseScheme(purchaseScheme.Id))
.ContinueWith(t =>
{ {
var response = purchaseService.DeletePurchaser(purchaser.ProductId, purchaser.Id);
IsLoading = false; IsLoading = false;
if (response.Success) var response = t.Result;
if (!response.Success)
{ {
App.Current.Dispatcher.BeginInvoke((Action)delegate App.Current.Dispatcher.BeginInvoke((Action)delegate
{ {
var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId); MessageBox.Show(response.Msg, "删除采购方案");
});
return;
}
App.Current.Dispatcher.Invoke(() =>
{
var product = ProductList.FirstOrDefault(p => p.Id == purchaseScheme.ProductId);
if (product != null) if (product != null)
{ {
foreach (var sku in product.SkuList) var sku = product.SkuList.FirstOrDefault(s => s.Id == purchaseScheme.SkuId);
if (sku != null)
{ {
var deleteScheme = sku.PurchaseSchemeList.FirstOrDefault(s => s.PurchaserId == purchaser.Id); sku.PurchaseSchemeList.Remove(purchaseScheme);
if (deleteScheme != null)
sku.PurchaseSchemeList.Remove(deleteScheme);
} }
product.PurchaserList.Remove(purchaser);
} }
MessageBox.Show("采购商删除成功", "提示"); MessageBox.Show("采购方案删除成功", "提示");
}); });
}
else
{
App.Current.Dispatcher.BeginInvoke((Action)delegate
{
MessageBox.Show(response.Msg, "采购商删除");
});
}
}); });
} }
private void OpenBindingView(Product product, string purchaserId, string purchaserId2, string purchaserName) private void OpenBindingView(Product product, string skuId, long? schemeId)
{ {
var skuList = product.SkuList; 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(skuList, purchaserId, purchaserId2, purchaserName, product.SelectedPurchasePlatformModel);
var bindingView = new BindingPurchaseProduct(); //bindingPurchaseProduct.SetData();
var bindingView = new BindingPurchaseProduct(skuList, schemeId);
var r = bindingView.ShowDialog(); var r = bindingView.ShowDialog();
if (r == true) if (r == true)
{ {
@ -328,7 +384,7 @@ namespace BBWYB.Client.ViewModels
IsLoading = false; IsLoading = false;
App.Current.Dispatcher.BeginInvoke((Action)delegate 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)) Task.Factory.StartNew(() => LoadPurchaseScheme(product.SkuList, platform))
.ContinueWith(t => .ContinueWith(t =>
{ {
App.Current.Dispatcher.Invoke(() => ExtractPurchaser(productId)); //App.Current.Dispatcher.Invoke(() => ExtractPurchaser(productId));
IsLoading = false; IsLoading = false;
}); });
} }

2
BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml

@ -25,7 +25,7 @@
<RowDefinition Height="40"/> <RowDefinition Height="40"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
<Run Text="{Binding PurchaserName}"/> <Run Text="{Binding SchemeId}"/>
<Run Text="绑定采购商品"/> <Run Text="绑定采购商品"/>
</TextBlock> </TextBlock>
<ListBox x:Name="listbox_skuList" ItemsSource="{Binding ProductSkuList}" <ListBox x:Name="listbox_skuList" ItemsSource="{Binding ProductSkuList}"

19
BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml.cs

@ -1,6 +1,9 @@
using CommunityToolkit.Mvvm.Messaging; using BBWYB.Client.Models;
using BBWYB.Client.ViewModels;
using CommunityToolkit.Mvvm.Messaging;
using CommunityToolkit.Mvvm.Messaging.Messages; using CommunityToolkit.Mvvm.Messaging.Messages;
using SJ.Controls; using SJ.Controls;
using System.Collections.Generic;
using System.Windows; using System.Windows;
namespace BBWYB.Client.Views.Ware namespace BBWYB.Client.Views.Ware
@ -10,18 +13,12 @@ namespace BBWYB.Client.Views.Ware
/// </summary> /// </summary>
public partial class BindingPurchaseProduct : BWindow public partial class BindingPurchaseProduct : BWindow
{ {
public BindingPurchaseProduct() private BindingPurchaseProductViewModel bindingVM;
public BindingPurchaseProduct(IList<ProductSku> productSkuList, long? schemeId)
{ {
InitializeComponent(); InitializeComponent();
//Messenger.Default.Register<bool>(this, "BindingPurchaseProduct_Close", (x) => bindingVM = this.DataContext as BindingPurchaseProductViewModel;
// { bindingVM.SetData(productSkuList, schemeId);
// this.Dispatcher.Invoke(() =>
// {
// this.DialogResult = x;
// this.Close();
// });
// });
WeakReferenceMessenger.Default.Register<Message_BindingPurchaseProductClose>(this, (o, x) => WeakReferenceMessenger.Default.Register<Message_BindingPurchaseProductClose>(this, (o, x) =>
{ {
this.Dispatcher.Invoke(() => this.Dispatcher.Invoke(() =>

51
BBWYB.Client/Views/Ware/WareManager.xaml

@ -94,10 +94,10 @@
<RowDefinition Height="30"/> <RowDefinition Height="30"/>
<RowDefinition/> <RowDefinition/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <!--<Grid.ColumnDefinitions>
<ColumnDefinition/> <ColumnDefinition/>
<ColumnDefinition Width="280"/> <ColumnDefinition Width="280"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>-->
<Grid Background="#F2F2F2" Grid.ColumnSpan="2"> <Grid Background="#F2F2F2" Grid.ColumnSpan="2">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
@ -110,8 +110,11 @@
<Run Text="{Binding ProductItemNum}"/> <Run Text="{Binding ProductItemNum}"/>
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<c:BButton HorizontalAlignment="Right" Content="添加采购商" Width="110" <!--<c:BButton HorizontalAlignment="Right" Content="添加采购商" Width="110"
Command="{Binding DataContext.AddPurchaserCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" CommandParameter="{Binding }"/> Command="{Binding DataContext.AddPurchaserCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" CommandParameter="{Binding }"/>-->
<c:BButton HorizontalAlignment="Right" Content="添加采购方案" Width="110"
Command="{Binding DataContext.AddSchemeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" CommandParameter="{Binding }"/>
</Grid> </Grid>
<ListBox x:Name="listbox_sku" Grid.Row="1" ItemsSource="{Binding SkuList}" <ListBox x:Name="listbox_sku" Grid.Row="1" ItemsSource="{Binding SkuList}"
@ -126,7 +129,7 @@
Width="{Binding ActualWidth,ElementName=listbox_sku}"> Width="{Binding ActualWidth,ElementName=listbox_sku}">
<Grid Height="150"> <Grid Height="150">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="300"/> <ColumnDefinition Width="299"/>
<ColumnDefinition Width="80"/> <ColumnDefinition Width="80"/>
<ColumnDefinition/> <ColumnDefinition/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
@ -177,6 +180,8 @@
<ColumnDefinition Width="0.15*"/> <ColumnDefinition Width="0.15*"/>
<ColumnDefinition Width="0.1*"/> <ColumnDefinition Width="0.1*"/>
<ColumnDefinition Width="50"/> <ColumnDefinition Width="50"/>
<ColumnDefinition Width="170"/>
<ColumnDefinition Width="110"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Text="{Binding PurchaseProductId1}" Style="{StaticResource middleTextBlock}"/> <TextBlock Text="{Binding PurchaseProductId1}" Style="{StaticResource middleTextBlock}"/>
<TextBlock Grid.Column="1" Style="{StaticResource middleTextBlock}" <TextBlock Grid.Column="1" Style="{StaticResource middleTextBlock}"
@ -208,6 +213,34 @@
<!--毛利率--> <!--毛利率-->
</Border> </Border>
<TextBlock Grid.Column="9" Style="{StaticResource middleTextBlock}"
Text="{Binding PurchaserName}">
<TextBlock.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<ListBox Style="{StaticResource NoScrollViewListBoxStyle}"
ItemsSource="{Binding PurchaserList}"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
Foreground="{StaticResource Text.Color}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
<StackPanel Orientation="Horizontal" Grid.Column="10"
HorizontalAlignment="Center">
<c:BButton Style="{StaticResource LinkButton}"
Content="编辑"
Command="{Binding DataContext.EditSchemeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}" CommandParameter="{Binding }"/>
<c:BButton Style="{StaticResource LinkButton}"
Content="删除" Margin="10,0,0,0"
Command="{Binding DataContext.DeleteSchemeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}" CommandParameter="{Binding }"/>
</StackPanel>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/> <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="1"/> <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="1"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="2"/> <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="2"/>
@ -216,7 +249,9 @@
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="5"/> <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="5"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="6"/> <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="6"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="7"/> <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="7"/>
<Border Height="1" Grid.ColumnSpan="9" Background="{StaticResource Border.Brush}" VerticalAlignment="Bottom"/> <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="8"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="9"/>
<Border Height="1" Grid.ColumnSpan="11" Background="{StaticResource Border.Brush}" VerticalAlignment="Bottom"/>
</Grid> </Grid>
</DataTemplate> </DataTemplate>
</ListBox.ItemTemplate> </ListBox.ItemTemplate>
@ -269,7 +304,7 @@
</ListBox.ItemTemplate> </ListBox.ItemTemplate>
</ListBox> </ListBox>
<ListBox x:Name="listbox_purchaser" ItemsSource="{Binding PurchaserList}" <!--<ListBox x:Name="listbox_purchaser" ItemsSource="{Binding PurchaserList}"
Grid.Row="1" Grid.Column="1" Grid.Row="1" Grid.Column="1"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}" ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
Style="{StaticResource NoScrollViewListBoxStyle}" Style="{StaticResource NoScrollViewListBoxStyle}"
@ -310,7 +345,7 @@
</DataTemplate> </DataTemplate>
</ListBox.ItemTemplate> </ListBox.ItemTemplate>
</ListBox> </ListBox>-->
</Grid> </Grid>
</DataTemplate> </DataTemplate>

4
BBWYB.Client/appsettings.json

@ -1,6 +1,6 @@
{ {
// "BBWYApiHost": "http://localhost:5000", "BBWYApiHost": "http://localhost:5000",
"BBWYApiHost": "http://bbwyb.qiyue666.com", //"BBWYApiHost": "http://bbwyb.qiyue666.com",
"MDSApiHost": "http://mdsapi.qiyue666.com", "MDSApiHost": "http://mdsapi.qiyue666.com",
"BBWYCApiHost": "http://bbwytest.qiyue666.com", "BBWYCApiHost": "http://bbwytest.qiyue666.com",
"QKApiHost": "http://localhost:8080" "QKApiHost": "http://localhost:8080"

37
BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

@ -124,6 +124,12 @@ namespace BBWYB.Server.Business
} }
#endregion #endregion
foreach (var purchaseProductSku in addPurchaseSchemeProductSkuList)
{
if (purchaseProductSku.PurchaseRatio == null)
purchaseProductSku.PurchaseRatio = 1;
}
fsql.Transaction(() => fsql.Transaction(() =>
{ {
if (newPurchaserList.Count > 0) if (newPurchaserList.Count > 0)
@ -152,20 +158,35 @@ namespace BBWYB.Server.Business
/// </summary> /// </summary>
/// <param name="querySchemeRequest"></param> /// <param name="querySchemeRequest"></param>
/// <returns></returns> /// <returns></returns>
public IList<PurchaseSchemeResponse> GetPurchaseSchemeList(QuerySchemeRequest querySchemeRequest) public IList<PurchaseSchemeResponse> GetPurchaseSchemeList(QuerySchemeRequest request)
{ {
var select = fsql.Select<PurchaseScheme>(); var select = fsql.Select<PurchaseScheme>();
if (querySchemeRequest.SchemeId != null && querySchemeRequest.SchemeId != 0) if (request.SchemeId != null && request.SchemeId != 0)
select = select.Where(ps => ps.Id == querySchemeRequest.SchemeId); select = select.Where(ps => ps.Id == request.SchemeId);
else if (querySchemeRequest.SchemeIdList != null && querySchemeRequest.SchemeIdList.Count() > 0) else if (request.SchemeIdList != null && request.SchemeIdList.Count() > 0)
select = select.Where(ps => querySchemeRequest.SchemeIdList.Contains(ps.Id)); select = select.Where(ps => request.SchemeIdList.Contains(ps.Id));
else else
{ {
select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, ps => ps.ShopId == querySchemeRequest.ShopId) select = select.WhereIf(request.ShopId != null && request.ShopId != 0, ps => ps.ShopId == request.ShopId)
.WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, ps => querySchemeRequest.SkuIdList.Contains(ps.SkuId)); .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<PurchaseSchemeProduct, Purchaser>()
// .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<PurchaseSchemeProduct, Purchaser>()
.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); //.WhereIf(querySchemeRequest.PurchasePlatform != null, ps => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform);
} }
var sql = select.ToSql();
var purchaseSchemeList = select.ToList<PurchaseSchemeResponse>(); var purchaseSchemeList = select.ToList<PurchaseSchemeResponse>();

5
BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs

@ -21,5 +21,10 @@
/// 采购Ske SpecId (1688独有) /// 采购Ske SpecId (1688独有)
/// </summary> /// </summary>
public string PurchaseSkuSpecId { get; set; } public string PurchaseSkuSpecId { get; set; }
/// <summary>
/// 采购配比
/// </summary>
public int? PurchaseRatio { get; set; }
} }
} }

16
BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs

@ -18,14 +18,14 @@ namespace BBWYB.Server.Model.Dto
public IList<string> SkuIdList { get; set; } public IList<string> SkuIdList { get; set; }
///// <summary> /// <summary>
///// 采购商Id, 可空 /// 采购商Id, 可空
///// </summary> /// </summary>
//public string PurchaserId { get; set; } public string PurchaserId { get; set; }
///// <summary> /// <summary>
///// 采购平台 /// 采购平台
///// </summary> /// </summary>
//public Enums.Platform? PurchasePlatform { get; set; } public Enums.Platform? PurchasePlatform { get; set; }
} }
} }

6
BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs

@ -1,8 +1,4 @@
using System; namespace BBWYB.Server.Model.Dto
using System.Collections.Generic;
using System.Text;
namespace BBWYB.Server.Model.Dto
{ {
public class PurchaseSchemeProductResponse : Model.Db.PurchaseSchemeProduct public class PurchaseSchemeProductResponse : Model.Db.PurchaseSchemeProduct
{ {

Loading…
Cancel
Save