Browse Source

新增共享采购商接口

客户端选择采购商逻辑调整
qianyi
shanji 3 years ago
parent
commit
1c6415bfe4
  1. 8
      BBWY.Client/APIServices/PurchaseService.cs
  2. 2
      BBWY.Client/Models/Product/Purchaser.cs
  3. 109
      BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs
  4. 4
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  5. 16
      BBWY.Client/Views/Order/ChooseDFType.xaml.cs
  6. 6
      BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml
  7. 12
      BBWY.Server.API/Controllers/PurchaseSchemeController.cs
  8. 27
      BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

8
BBWY.Client/APIServices/PurchaseService.cs

@ -27,15 +27,15 @@ namespace BBWY.Client.APIServices
} }
/// <summary> /// <summary>
/// 获取采购方案 /// 获取共有采购商
/// </summary> /// </summary>
/// <param name="skuId"></param> /// <param name="skuId"></param>
/// <param name="shopId"></param> /// <param name="shopId"></param>
/// <returns></returns> /// <returns></returns>
public ApiResponse<IList<PurchaseSchemeResponse>> GetPurchaseSchemeList(IList<string> skuIdList, long shopId) public ApiResponse<IList<Purchaser>> GetSharePurchaser(IList<string> skuIdList, long shopId)
{ {
return SendRequest<IList<PurchaseSchemeResponse>>(globalContext.BBYWApiHost, return SendRequest<IList<Purchaser>>(globalContext.BBYWApiHost,
"api/PurchaseScheme/GetPurchaseSchemeList", "api/PurchaseScheme/GetSharePurchaser",
new { skuIdList, shopId }, new { skuIdList, shopId },
null, null,
HttpMethod.Post); HttpMethod.Post);

2
BBWY.Client/Models/Product/Purchaser.cs

@ -17,5 +17,7 @@
public int SkuUseCount { get => skuUseCount; set { Set(ref skuUseCount, value); } } public int SkuUseCount { get => skuUseCount; set { Set(ref skuUseCount, value); } }
public string ProductId { get; set; } public string ProductId { get; set; }
public string Location { get; set; }
} }
} }

109
BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs

@ -1,6 +1,5 @@
using BBWY.Client.APIServices; using BBWY.Client.APIServices;
using BBWY.Client.Models; using BBWY.Client.Models;
using BBWY.Client.Views.Purchase;
using BBWY.Common.Models; using BBWY.Common.Models;
using GalaSoft.MvvmLight.Command; using GalaSoft.MvvmLight.Command;
using System.Collections.Generic; using System.Collections.Generic;
@ -16,96 +15,84 @@ namespace BBWY.Client.ViewModels
{ {
private PurchaseService purchaseService; private PurchaseService purchaseService;
private GlobalContext globalContext; private GlobalContext globalContext;
private BindingPurchaseProductViewModel bindingPurchaseProduct; private Order order;
public string SkuId { get; set; }
public string SkuName { get; set; }
public string OrderId { get; set; }
public int ItemTotal { get; set; } public IList<Purchaser> PurchaserList { get; set; }
public Consignee Consignee { get; set; }
public IList<PurchaseScheme> PurchaseSchemeList { get; set; }
//public ICommand DeleteCommand { get; set; }
public ICommand DeleteCommand { get; set; } //public ICommand EditCommand { get; set; }
public ICommand EditCommand { get; set; }
public ICommand PreviewPurchaseCommand { 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.purchaseService = purchaseService;
this.globalContext = globalContext; this.globalContext = globalContext;
this.bindingPurchaseProduct = bindingPurchaseProduct; this.PurchaserList = new ObservableCollection<Purchaser>();
PurchaseSchemeList = new ObservableCollection<PurchaseScheme>(); //DeleteCommand = new RelayCommand<PurchaseScheme>(Delete);
DeleteCommand = new RelayCommand<PurchaseScheme>(Delete); //EditCommand = new RelayCommand<PurchaseScheme>(Edit);
EditCommand = new RelayCommand<PurchaseScheme>(Edit); PreviewPurchaseCommand = new RelayCommand<Purchaser>(PreviewPurchase);
PreviewPurchaseCommand = new RelayCommand<PurchaseScheme>(PreviewPurchase);
} }
protected override void Load() protected override void Load()
{ {
PurchaseSchemeList.Clear(); PurchaserList.Clear();
Task.Factory.StartNew(() => LoadPurchaseScheme(SkuId)); Task.Factory.StartNew(() => LoadPurchaser());
} }
protected override void Unload() protected override void Unload()
{ {
this.ItemTotal = 0; this.order = null;
this.OrderId = this.SkuId = this.SkuName = string.Empty; PurchaserList.Clear();
this.Consignee = null;
PurchaseSchemeList.Clear();
} }
public void SetData(string orderId, string skuId, string skuName, int itemTotal, Consignee consignee) public void SetData(Order order)
{ {
this.OrderId = orderId; this.order = order;
this.SkuId = skuId;
this.SkuName = skuName;
this.ItemTotal = itemTotal;
this.Consignee = consignee;
} }
public void LoadPurchaseScheme(string skuId) public void LoadPurchaser()
{ {
var purchaseSchemeResponse = purchaseService.GetPurchaseSchemeList(new string[] { skuId }, globalContext.User.Shop.ShopId); var skuIdList = order.ItemList.Select(osku => osku.Id).ToList();
if (!purchaseSchemeResponse.Success) 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; return;
} }
App.Current.Dispatcher.Invoke(() => 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) //public void Delete(PurchaseScheme purchaseScheme)
{ //{
Task.Factory.StartNew(() => purchaseService.DeletePurchaseScheme(purchaseScheme.Id)).ContinueWith(r => // Task.Factory.StartNew(() => purchaseService.DeletePurchaseScheme(purchaseScheme.Id)).ContinueWith(r =>
{ // {
var response = r.Result; // var response = r.Result;
if (response.Success) // if (response.Success)
App.Current.Dispatcher.Invoke(() => PurchaseSchemeList.Remove(purchaseScheme)); // App.Current.Dispatcher.Invoke(() => PurchaseSchemeList.Remove(purchaseScheme));
else // else
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "删除采购方案")); // App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "删除采购方案"));
}); // });
} //}
public void Edit(PurchaseScheme purchaseScheme) //public void Edit(PurchaseScheme purchaseScheme)
{ //{
var skuList = new List<ProductSku>() // var skuList = new List<ProductSku>()
{ // {
new ProductSku(){ Id=purchaseScheme.SkuId,ProductId=purchaseScheme.ProductId, Title=SkuName} // new ProductSku(){ Id=purchaseScheme.SkuId,ProductId=purchaseScheme.ProductId, Title=SkuName}
}; // };
bindingPurchaseProduct.SetData(skuList, purchaseScheme.PurchaserId, purchaseScheme.PurchaserName); // bindingPurchaseProduct.SetData(skuList, purchaseScheme.PurchaserId, purchaseScheme.PurchaserName);
var bindingView = new Views.Ware.BindingPurchaseProduct(); // var bindingView = new Views.Ware.BindingPurchaseProduct();
var r = bindingView.ShowDialog(); // var r = bindingView.ShowDialog();
if (r == true) // if (r == true)
Task.Factory.StartNew(() => LoadPurchaseScheme(SkuId)); // 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(); var count = globalContext.User.Shop.PurchaseAccountList == null ? 0 : globalContext.User.Shop.PurchaseAccountList.Count();
if (count > 1) if (count > 1)
@ -114,9 +101,9 @@ namespace BBWY.Client.ViewModels
} }
else if (count == 1) else if (count == 1)
{ {
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<object>(null, "ChoosePurchaseScheme_Close"); //var p = new _1688Purchase(this.OrderId, this.ItemTotal, purchaseScheme, globalContext.User.Shop.PurchaseAccountList[0], this.Consignee);
var p = new _1688Purchase(this.OrderId, this.ItemTotal, purchaseScheme, globalContext.User.Shop.PurchaseAccountList[0], this.Consignee); //p.ShowDialog();
p.ShowDialog(); //GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<object>(null, "ChoosePurchaseScheme_Close");
} }
else else
{ {

4
BBWY.Client/ViewModels/Order/OrderListViewModel.cs

@ -297,7 +297,7 @@ namespace BBWY.Client.ViewModels
} }
else if (storageType == StorageType.) else if (storageType == StorageType.)
{ {
var chooseDFType = new ChooseDFType(order.ItemList.Count > 1); var chooseDFType = new ChooseDFType();
if (chooseDFType.ShowDialog() != true) if (chooseDFType.ShowDialog() != true)
return; return;
@ -316,7 +316,7 @@ namespace BBWY.Client.ViewModels
} }
else if (chooseDFType.DFType == DFType.线) 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(); var choosePurchaseScheme = new ChoosePurchaseScheme();
choosePurchaseScheme.ShowDialog(); choosePurchaseScheme.ShowDialog();
} }

16
BBWY.Client/Views/Order/ChooseDFType.xaml.cs

@ -11,22 +11,22 @@ namespace BBWY.Client.Views.Order
public DFType DFType { get; private set; } public DFType DFType { get; private set; }
private bool isDisablePurchaseOnline; //private bool isDisablePurchaseOnline;
public ChooseDFType(bool isDisablePurchaseOnline) public ChooseDFType()
{ {
InitializeComponent(); InitializeComponent();
this.isDisablePurchaseOnline = isDisablePurchaseOnline; //this.isDisablePurchaseOnline = isDisablePurchaseOnline;
this.Loaded += ChooseDFType_Loaded; this.Loaded += ChooseDFType_Loaded;
} }
private void ChooseDFType_Loaded(object sender, System.Windows.RoutedEventArgs e) private void ChooseDFType_Loaded(object sender, System.Windows.RoutedEventArgs e)
{ {
if (isDisablePurchaseOnline) //if (isDisablePurchaseOnline)
{ //{
btn_purchase.IsEnabled = false; // btn_purchase.IsEnabled = false;
btn_purchase.DisableText = "采购商品"; // btn_purchase.DisableText = "采购商品";
} //}
} }

6
BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml

@ -31,12 +31,12 @@
<TextBlock Text="选择采购商" Style="{StaticResource middleTextBlock}"/> <TextBlock Text="选择采购商" Style="{StaticResource middleTextBlock}"/>
</Border> </Border>
<DataGrid Grid.Row="1" <DataGrid Grid.Row="1"
ItemsSource="{Binding PurchaseSchemeList}"> ItemsSource="{Binding PurchaserList}">
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Binding="{Binding PurchaserName}" Header="采购商" Width="1*" <DataGridTextColumn Binding="{Binding Name}" Header="采购商" Width="1*"
HeaderStyle="{StaticResource ColumnHeaderStyle_Center}" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}"
ElementStyle="{StaticResource middleTextBlock}"/> ElementStyle="{StaticResource middleTextBlock}"/>
<DataGridTextColumn Binding="{Binding PurchaserLocation}" Header="发货地" Width="120" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}" <DataGridTextColumn Binding="{Binding Location}" Header="发货地" Width="120" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}"
ElementStyle="{StaticResource middleTextBlock}"/> ElementStyle="{StaticResource middleTextBlock}"/>
<DataGridTemplateColumn Header="操作" Width="50" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}"> <DataGridTemplateColumn Header="操作" Width="50" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>

12
BBWY.Server.API/Controllers/PurchaseSchemeController.cs

@ -1,4 +1,5 @@
using BBWY.Server.Business; using BBWY.Server.Business;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@ -55,5 +56,16 @@ namespace BBWY.Server.API.Controllers
{ {
purchaseSchemeBusiness.DeletePurchaseScheme(schemeId); purchaseSchemeBusiness.DeletePurchaseScheme(schemeId);
} }
/// <summary>
/// 查询共有采购商
/// </summary>
/// <param name="querySchemeRequest"></param>
/// <returns></returns>
[HttpPost]
public IList<Purchaser> GetSharePurchaser([FromBody] QuerySchemeRequest querySchemeRequest)
{
return purchaseSchemeBusiness.GetSharePurchaser(querySchemeRequest);
}
} }
} }

27
BBWY.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

@ -29,7 +29,7 @@ namespace BBWY.Server.Business
{ {
if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0) if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)
throw new BusinessException("非法参数"); 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.PurchaserName) ||
string.IsNullOrEmpty(p.PurchaserLocation))) string.IsNullOrEmpty(p.PurchaserLocation)))
throw new BusinessException("新增方案中有采购商Id/Name/Location为空"); throw new BusinessException("新增方案中有采购商Id/Name/Location为空");
@ -180,13 +180,32 @@ namespace BBWY.Server.Business
} }
/// <summary> /// <summary>
/// 获取共有采购商 /// 获取共同拥采购商
/// </summary> /// </summary>
/// <param name="querySchemeRequest"></param> /// <param name="querySchemeRequest"></param>
/// <returns></returns> /// <returns></returns>
public IList<Purchaser> GetSharePurchaser(QuerySchemeRequest querySchemeRequest) public IList<Purchaser> GetSharePurchaser(QuerySchemeRequest querySchemeRequest)
{ {
var skuCount = querySchemeRequest.SkuIdList.Count();
var purchaseSchemeList = fsql.Select<PurchaseScheme, Purchaser>().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<string>();
foreach (var g in group)
{
if (g.Count() == skuCount)
sharePurchaserIdList.Add(g.Key);
}
if (sharePurchaserIdList.Count == 0)
return null;
return fsql.Select<Purchaser>().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList();
} }
public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest) public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)

Loading…
Cancel
Save