Browse Source

处理冲突

AddValidOverTime
shanji 2 years ago
parent
commit
e3230d284a
  1. 10
      BBWY.Client/APIServices/BatchPurchaseService.cs
  2. 11
      BBWY.Client/APIServices/LogisticsService.cs
  3. 1
      BBWY.Client/App.xaml.cs
  4. 15
      BBWY.Client/Models/APIModel/Response/Logistics/StoreResponse.cs
  5. 16
      BBWY.Client/Models/Enums.cs
  6. 11
      BBWY.Client/Models/QiKu/PackSkuConfig.cs
  7. 49
      BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs
  8. 105
      BBWY.Client/ViewModels/QiKu/PackSkuSplitConfigViewModel.cs
  9. 9
      BBWY.Client/ViewModels/ViewModelLocator.cs
  10. 2
      BBWY.Client/Views/BatchPurchase/BatchPurchaseOrderList.xaml
  11. 132
      BBWY.Client/Views/BatchPurchase/PackSkuConfigWindow.xaml
  12. 44
      BBWY.Client/Views/BatchPurchase/PackSkuConfigWindow.xaml.cs
  13. 50
      BBWY.Client/Views/BatchPurchase/PackSkuSplitCountAndStoreWindow.xaml
  14. 64
      BBWY.Client/Views/BatchPurchase/PackSkuSplitCountAndStoreWindow.xaml.cs
  15. 2
      BBWY.Client/Views/MainWindow.xaml
  16. 75
      BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs
  17. 9
      BBWY.Server.Model/Dto/Request/PurchaseOrderV2/BatchPurchase/BatchPurchaseCreateOrderRequest.cs
  18. 34
      BBWY.Server.Model/Dto/Request/QiKu/PackSkuConfigRequest.cs
  19. 9
      BBWY.Server.Model/Dto/Request/Stock/StoreRequest.cs

10
BBWY.Client/APIServices/BatchPurchaseService.cs

@ -1,4 +1,5 @@
using BBWY.Client.Models;
using BBWY.Client.Models.QiKu;
using BBWY.Common.Http;
using BBWY.Common.Models;
using System;
@ -71,7 +72,8 @@ namespace BBWY.Client.APIServices
PurchaseOrderMode purchaseOrderMode,
IList<PurchaseAccount> purchaseAccountList,
string extensions,
string remark)
string remark,
IList<PackSkuConfig> packSkuConfigList)
{
var productParamList = new List<object>();
foreach (var productSkuWithScheme in productSkuWithSchemeList)
@ -93,8 +95,7 @@ namespace BBWY.Client.APIServices
BelongSkuTitle = productSkuWithScheme.Title,
BelongLogo = productSkuWithScheme.Logo,
BelongQuantity = productSkuWithScheme.Quantity,
BelongPurchaseSchemeId = productSkuWithScheme.PurchaseSchemeId,
BelongPurchaseSchemeId = productSkuWithScheme.PurchaseSchemeId
});
}
}
@ -109,7 +110,8 @@ namespace BBWY.Client.APIServices
remark,
autoPay,
globalContext.User.Shop.ShopId,
globalContext.User.Shop.ShopName
globalContext.User.Shop.ShopName,
packSkuConfigList
}, null, HttpMethod.Post);
}

11
BBWY.Client/APIServices/LogisticsService.cs

@ -20,5 +20,16 @@ namespace BBWY.Client.APIServices
globalContext.User.Shop.AppToken
}, null, HttpMethod.Post);
}
public ApiResponse<IList<StoreResponse>> GetStoreList()
{
return SendRequest<IList<StoreResponse>>(globalContext.BBYWApiHost, "api/vender/GetStoreHouseList", new
{
globalContext.User.Shop.Platform,
globalContext.User.Shop.AppKey,
globalContext.User.Shop.AppSecret,
globalContext.User.Shop.AppToken
}, null, HttpMethod.Post);
}
}
}

1
BBWY.Client/App.xaml.cs

@ -122,6 +122,7 @@ namespace BBWY.Client
serviceCollection.AddTransient<EditServiceOrderViewModel>();
serviceCollection.AddTransient<BatchPurchaseCreateNewOrderViewModel>();
serviceCollection.AddTransient<BatchPurchaseAddProductSkuViewModel>();
serviceCollection.AddTransient<PackSkuSplitConfigViewModel>();
#region 注册拳探SDK相关类
serviceCollection.AddSingleton<QuanTanProductClient>();

15
BBWY.Client/Models/APIModel/Response/Logistics/StoreResponse.cs

@ -1,9 +1,18 @@
namespace BBWY.Client.Models
using System;
namespace BBWY.Client.Models
{
public class StoreResponse
{
public string StoreId { get; set; }
public DateTime? CreateTime { get; set; }
public string Id { get; set; }
public string Name { get; set; }
public Platform Platform { get; set; }
public StockStatus Status { get; set; }
public string StoreName { get; set; }
public StockType Type { get; set; }
}
}

16
BBWY.Client/Models/Enums.cs

@ -402,4 +402,20 @@
= 2,
= 3
}
/// <summary>
/// 京东仓库类型 1商家仓 2京东仓
/// </summary>
public enum StockType
{
= 1, = 2
}
/// <summary>
/// 仓库状态 0暂停,1使用
/// </summary>
public enum StockStatus
{
= 0, 使 = 1
}
}

11
BBWY.Client/Models/QiKu/PackSkuConfig.cs

@ -1,7 +1,14 @@
namespace BBWY.Client.Models.QiKu
using System.Collections.ObjectModel;
namespace BBWY.Client.Models.QiKu
{
public class PackSkuConfig : NotifyObject
{
public PackSkuConfig()
{
PackSkuSplitConfigList = new ObservableCollection<PackSkuSplitConfig>();
}
private int splitCount;
public string SkuId { get; set; }
@ -19,6 +26,8 @@
/// 分箱数量
/// </summary>
public int SplitCount { get => splitCount; set { Set(ref splitCount, value); } }
public ObservableCollection<PackSkuSplitConfig> PackSkuSplitConfigList { get; set; }
}
public class PackSkuSplitConfig : NotifyObject

49
BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs

@ -1,5 +1,6 @@
using BBWY.Client.APIServices;
using BBWY.Client.Models;
using BBWY.Client.Models.QiKu;
using BBWY.Client.Views.BatchPurchase;
using BBWY.Common.Trigger;
using GalaSoft.MvvmLight.Command;
@ -76,8 +77,6 @@ namespace BBWY.Client.ViewModels
public ICommand SubtractQuantityCommand { get; set; }
public ICommand NextCommand { get; set; }
public BatchPurchaseCreateNewOrderViewModel(PurchaseProductAPIService purchaseProductAPIService,
PurchaseService purchaseService,
GlobalContext globalContext,
@ -90,7 +89,6 @@ namespace BBWY.Client.ViewModels
ProductSkuWithSchemeList = new ObservableCollection<ProductSkuWithScheme>();
FastCreateOrderCommand = new RelayCommand(FastCreateOrder);
NextCommand = new RelayCommand(Next);
PreviewOrderCommand = new RelayCommand(PreviewOrder);
AddProductSkuCommand = new RelayCommand(AddProductSku);
DeleteProductSkuWithSchemeCommand = new RelayCommand<ProductSkuWithScheme>(DeleteProductSkuWithScheme);
@ -197,6 +195,22 @@ namespace BBWY.Client.ViewModels
return;
}
IList<PackSkuConfig> packSkuConfigList = null;
var isContainsQT = ProductSkuWithSchemeList.Any(ps => ps.PurchasePlatform == Platform.);
if (isContainsQT)
{
var packWindow = new PackSkuConfigWindow(ProductSkuWithSchemeList.Where(ps => ps.PurchasePlatform == Platform.).Select(ps => new PackSkuConfig()
{
Logo = ps.Logo,
SkuId = ps.SkuId,
Title = ps.Title,
PurchaseCount = ps.Quantity
}).ToList());
if (packWindow.ShowDialog() != true)
return;
packSkuConfigList = packWindow.GetPackSkuConfigList();
}
IsLoading = true;
Task.Factory.StartNew(() => batchPurchaseService.CreateOrder(ProductSkuWithSchemeList,
@ -214,7 +228,8 @@ namespace BBWY.Client.ViewModels
this.PurchaseOrderMode,
globalContext.User.Shop.PurchaseAccountList,
this.extensions,
this.PurchaseRemark)).ContinueWith(t =>
this.PurchaseRemark,
packSkuConfigList)).ContinueWith(t =>
{
IsLoading = false;
var response = t.Result;
@ -379,30 +394,6 @@ namespace BBWY.Client.ViewModels
purchaseSchemeProductSku.ItemTotal--;
}
private void Next()
{
if (IsLoading)
return;
if (TotalAmount == 0)
{
MessageBox.Show("总金额为0不能提交订单", "提示");
return;
}
if (string.IsNullOrEmpty(Mobile) ||
string.IsNullOrEmpty(Address) ||
string.IsNullOrEmpty(City) ||
string.IsNullOrEmpty(Province) ||
string.IsNullOrEmpty(County) ||
string.IsNullOrEmpty(Town) ||
string.IsNullOrEmpty(ContactName))
{
MessageBox.Show("收货人信息不全", "下单");
return;
}
}
}
}

105
BBWY.Client/ViewModels/QiKu/PackSkuSplitConfigViewModel.cs

@ -0,0 +1,105 @@
using BBWY.Client.APIServices;
using BBWY.Client.Models;
using BBWY.Client.Models.QiKu;
using BBWY.Client.Views.BatchPurchase;
using GalaSoft.MvvmLight.Command;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Input;
namespace BBWY.Client.ViewModels
{
public class PackSkuSplitConfigViewModel : BaseVM
{
public IList<PackSkuConfig> PackSkuConfigList { get; set; }
private IList<StoreResponse> storeList;
public ICommand SetSplitCountCommand { get; set; }
public ICommand SetPackCountAndStoreCommand { get; set; }
public ICommand SaveCommand { get; set; }
private LogisticsService logisticsService;
public PackSkuSplitConfigViewModel(LogisticsService logisticsService)
{
this.logisticsService = logisticsService;
SetSplitCountCommand = new RelayCommand<PackSkuConfig>(SetSplitCount);
SetPackCountAndStoreCommand = new RelayCommand<PackSkuSplitConfig>(SetPackCountAndStore);
SaveCommand = new RelayCommand(Save);
PackSkuConfigList = new ObservableCollection<PackSkuConfig>();
}
public void SetData(IList<PackSkuConfig> packSkuConfigList)
{
foreach (var item in packSkuConfigList)
PackSkuConfigList.Add(item);
}
public IList<PackSkuConfig> GetPackSkuConfigList()
{
return PackSkuConfigList;
}
private void SetSplitCount(PackSkuConfig packSkuConfig)
{
if (packSkuConfig.SplitCount <= 0)
{
MessageBox.Show("份数不正确");
return;
}
packSkuConfig.PackSkuSplitConfigList.Clear();
for (var i = 1; i <= packSkuConfig.SplitCount; i++)
{
packSkuConfig.PackSkuSplitConfigList.Add(new PackSkuSplitConfig()
{
Index = i,
PackCount = 0
});
}
}
private void SetPackCountAndStore(PackSkuSplitConfig packSkuSplitConfig)
{
if (storeList == null)
{
var response = logisticsService.GetStoreList();
if (!response.Success)
{
MessageBox.Show(response.Msg, "获取仓库");
return;
}
storeList = response.Data;
}
var w = new PackSkuSplitCountAndStoreWindow(packSkuSplitConfig.PackCount, packSkuSplitConfig.Store, storeList);
if (w.ShowDialog() == true)
{
packSkuSplitConfig.PackCount = w.Quantity;
packSkuSplitConfig.Store = w.Store;
}
}
private void Save()
{
if (PackSkuConfigList.Any(s => s.PackSkuSplitConfigList.Count() == 0 ||
s.PackSkuSplitConfigList.Any(sp => sp.PackCount <= 0)))
{
MessageBox.Show("装箱设置不正确", "提示");
return;
}
if (PackSkuConfigList.Any(s => s.PurchaseCount != s.PackSkuSplitConfigList.Sum(sp => sp.PackCount)))
{
MessageBox.Show("打包份数总数与采购数量不相等", "提示");
return;
}
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(true, "PackSkuConfigWindowClose");
}
}
}

9
BBWY.Client/ViewModels/ViewModelLocator.cs

@ -294,5 +294,14 @@ namespace BBWY.Client.ViewModels
return s.ServiceProvider.GetRequiredService<PublishTaskViewModel>();
}
}
public PackSkuSplitConfigViewModel PackSkuConfig
{
get
{
using var s = sp.CreateScope();
return s.ServiceProvider.GetRequiredService<PackSkuSplitConfigViewModel>();
}
}
}
}

2
BBWY.Client/Views/BatchPurchase/BatchPurchaseOrderList.xaml

@ -202,7 +202,7 @@
<c:BButton Content="{Binding Id}" Style="{StaticResource LinkButton}"
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding Id}" Margin="5,0,0,0"/>
<c:BButton x:Name="btn_orderState" Content="{Binding OrderState}" Margin="5,0,0,0" Height="25" Padding="5,0" Background="{StaticResource Text.Link.Color}"/>
<c:BButton x:Name="btn_orderState" Content="{Binding OrderState}" Margin="5,0,0,0" Height="25" Padding="5,0" Background="{Binding OrderState,ConverterParameter=已取消:#EC808D:#02A7F0,Converter={StaticResource objConverter}}"/>
<Border Width="1" Margin="5,5,0,5" Background="{StaticResource Border.Brush}"/>
<StackPanel x:Name="txt_consignee" Margin="5,0,0,0" Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="下单账号:"/>

132
BBWY.Client/Views/BatchPurchase/PackSkuConfigWindow.xaml

@ -0,0 +1,132 @@
<c:BWindow x:Class="BBWY.Client.Views.BatchPurchase.PackSkuConfigWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BBWY.Client.Views.BatchPurchase"
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d"
Title="PackSkuConfigWindow" Height="500" Width="1024"
MinButtonVisibility="Collapsed"
MaxButtonVisibility="Collapsed"
Style="{StaticResource bwstyle}"
DataContext="{Binding PackSkuConfig,Source={StaticResource Locator}}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}"
Background="{StaticResource Border.Background}">
<TextBlock Text="分箱与落仓" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ListBox x:Name="listbox"
ItemsSource="{Binding PackSkuConfigList}"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
BorderBrush="{StaticResource Border.Brush}"
BorderThickness="1,0,0,0"
Grid.Row="1">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth,ElementName=listbox,Converter={StaticResource widthConverter},ConverterParameter=3}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<!--{Binding Logo}-->
<c:BAsyncImage UrlSource="{Binding Logo}"
Width="130" DecodePixelWidth="130"
VerticalAlignment="Top" Margin="0,5,0,5"
Cursor="Hand"/>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock VerticalAlignment="Center" Margin="5,0,0,0">
<Run Text="SKU:"/>
<Run Text="{Binding SkuId}"/>
</TextBlock>
<TextBlock VerticalAlignment="Center" Grid.Column="1" Margin="5,0,0,0">
<Run Text="采购数量:"/>
<Run Text="{Binding PurchaseCount}"/>
</TextBlock>
<TextBlock VerticalAlignment="Center" Margin="5,0,5,0" Grid.Row="1">
<Run Text="SKU名称:"/>
<Run Text="{Binding Title}"/>
</TextBlock>
<StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="1" Margin="5,0,0,0">
<TextBlock Text="份数:" VerticalAlignment="Center"/>
<c:BTextBox Text="{Binding SplitCount}" Width="40" Margin="5,0" Height="25"/>
<c:BButton Command="{Binding DataContext.SetSplitCountCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding }"
Content="设置"
Style="{StaticResource LinkButton}"/>
</StackPanel>
<ListBox Grid.Row="2" Grid.ColumnSpan="2"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
BorderThickness="1,1,0,1"
BorderBrush="{StaticResource Border.Brush}"
ItemsSource="{Binding PackSkuSplitConfigList}"
Width="Auto"
Margin="5,0,0,6"
HorizontalAlignment="Left"
Visibility="{Binding SplitCount,ConverterParameter=0:Collapsed:Visible,Converter={StaticResource objConverter}}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="120" Height="80">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Index,StringFormat=第\{0\}份}" Style="{StaticResource middleTextBlock}"/>
<c:BButton Content="设置" Style="{StaticResource LinkButton}" Grid.Row="1"
Command="{Binding DataContext.SetPackCountAndStoreCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}}}"
CommandParameter="{Binding }"/>
<TextBlock Grid.Row="2" Style="{StaticResource middleTextBlock}">
<Run Text="{Binding PackCount,StringFormat=\{0\}件}"/>
<Run Text="{Binding Store.Name}"/>
</TextBlock>
<Border Width="1" Grid.RowSpan="3" HorizontalAlignment="Right"
Background="{StaticResource Border.Brush}"/>
<Border Height="1" Background="{StaticResource Border.Brush}"
VerticalAlignment="Bottom"/>
<Border Height="1" Background="{StaticResource Border.Brush}"
VerticalAlignment="Bottom" Grid.Row="1"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
<Border Grid.ColumnSpan="2" VerticalAlignment="Bottom" Height="1" Background="{StaticResource Border.Brush}"/>
<Border HorizontalAlignment="Right" Width="1" Background="{StaticResource Border.Brush}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<c:BButton Content="提交订单" Width="80" HorizontalAlignment="Right" Grid.Row="2"
Command="{Binding SaveCommand}" Margin="0,0,5,0"/>
</Grid>
</c:BWindow>

44
BBWY.Client/Views/BatchPurchase/PackSkuConfigWindow.xaml.cs

@ -0,0 +1,44 @@
using BBWY.Client.Models.QiKu;
using BBWY.Client.ViewModels;
using BBWY.Controls;
using System.Collections.Generic;
namespace BBWY.Client.Views.BatchPurchase
{
/// <summary>
/// PackSkuConfigWindow.xaml 的交互逻辑
/// </summary>
public partial class PackSkuConfigWindow : BWindow
{
private PackSkuSplitConfigViewModel vm;
public PackSkuConfigWindow(IList<PackSkuConfig> list)
{
InitializeComponent();
vm = this.DataContext as PackSkuSplitConfigViewModel;
vm.SetData(list);
this.Loaded += PackSkuConfigWindow_Loaded;
this.Unloaded += PackSkuConfigWindow_Unloaded;
}
private void PackSkuConfigWindow_Unloaded(object sender, System.Windows.RoutedEventArgs e)
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Unregister(this);
}
private void PackSkuConfigWindow_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<bool>(this, "PackSkuConfigWindowClose", (r) =>
{
this.DialogResult = r;
this.Close();
});
}
public IList<PackSkuConfig> GetPackSkuConfigList()
{
return vm.GetPackSkuConfigList();
}
}
}

50
BBWY.Client/Views/BatchPurchase/PackSkuSplitCountAndStoreWindow.xaml

@ -0,0 +1,50 @@
<c:BWindow x:Class="BBWY.Client.Views.BatchPurchase.PackSkuSplitCountAndStoreWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BBWY.Client.Views.BatchPurchase"
mc:Ignorable="d"
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
Title="PackSkuSplitCountAndStoreWindow" Height="160" Width="250"
Style="{StaticResource bwstyle}"
MinButtonVisibility="Collapsed"
MaxButtonVisibility="Collapsed">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="5"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}"
Background="{StaticResource Border.Background}"
Grid.ColumnSpan="2">
<TextBlock Text="装箱设置" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<TextBlock Text="件数:" HorizontalAlignment="Right" VerticalAlignment="Center"
Grid.Row="2"/>
<c:BTextBox x:Name="txtQuantity" Grid.Column="1" Grid.Row="2" VerticalAlignment="Center"
Margin="5,0,10,0"/>
<TextBlock Text="落仓去向:" HorizontalAlignment="Right" VerticalAlignment="Center"
Grid.Row="3"/>
<ComboBox x:Name="cbx_stroeList" Grid.Row="3" Grid.Column="1" Height="30"
Margin="5,0,10,0"
DisplayMemberPath="Name"
VerticalContentAlignment="Center"/>
<c:BButton x:Name="btn_save" Content="保存" Width="80" HorizontalAlignment="Right" Grid.Row="4"
Margin="0,0,5,0" Click="btn_save_Click"
Grid.Column="1"/>
</Grid>
</c:BWindow>

64
BBWY.Client/Views/BatchPurchase/PackSkuSplitCountAndStoreWindow.xaml.cs

@ -0,0 +1,64 @@
using BBWY.Client.Models;
using BBWY.Controls;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
namespace BBWY.Client.Views.BatchPurchase
{
/// <summary>
/// PackSkuSplitCountAndStoreWindow.xaml 的交互逻辑
/// </summary>
public partial class PackSkuSplitCountAndStoreWindow : BWindow
{
public int Quantity { get; set; }
public StoreResponse Store { get; set; }
private IList<StoreResponse> storeList;
public PackSkuSplitCountAndStoreWindow(int quantity, StoreResponse store, IList<StoreResponse> storeList)
{
InitializeComponent();
this.Quantity = quantity;
this.Store = store;
this.storeList = storeList;
this.Loaded += PackSkuSplitCountAndStoreWindow_Loaded;
}
private void PackSkuSplitCountAndStoreWindow_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
this.txtQuantity.Text = Quantity.ToString();
this.cbx_stroeList.ItemsSource = storeList;
if (Store != null)
this.cbx_stroeList.SelectedItem = storeList.FirstOrDefault(s => s.Id == Store.Id);
else
this.cbx_stroeList.SelectedItem = storeList.FirstOrDefault();
}
private void btn_save_Click(object sender, System.Windows.RoutedEventArgs e)
{
if (!int.TryParse(txtQuantity.Text, out int q))
{
MessageBox.Show("件数不正确", "提示");
return;
}
if (q <= 0)
{
MessageBox.Show("件数不正确", "提示");
return;
}
if (cbx_stroeList.SelectedItem == null)
{
MessageBox.Show("请选择一个仓库", "提示");
return;
}
this.Quantity = q;
this.Store = cbx_stroeList.SelectedItem as StoreResponse;
this.DialogResult = true;
this.Close();
}
}
}

2
BBWY.Client/Views/MainWindow.xaml

@ -26,7 +26,7 @@
<!--<TextBlock Text="{Binding GlobalContext.User.TeamName}" Margin="5,0,0,0"/>
<TextBlock Text="{Binding GlobalContext.User.Shop.Platform}" Margin="5,0,0,0"/>-->
<TextBlock Text="{Binding GlobalContext.User.Shop.ShopName}" Margin="5,0,0,0"/>
<TextBlock Text="v10105" Margin="5,0,0,0"/>
<TextBlock Text="v10106" Margin="5,0,0,0"/>
</StackPanel>
</Border>
<Grid Grid.Row="1">

75
BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs

@ -1,4 +1,5 @@
using BBWY.Common.Models;
using BBWY.Common.Http;
using BBWY.Common.Models;
using BBWY.Server.Model;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Db.QK;
@ -9,6 +10,7 @@ using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Yitter.IdGenerator;
@ -19,18 +21,19 @@ namespace BBWY.Server.Business
{
private ProductBusiness productBusiness;
private IEnumerable<PlatformSDKBusiness> platformSDKBusinessList;
//private TaskSchedulerManager taskSchedulerManager;
private RestApiService restApiService;
public BatchPurchaseBusiness(IFreeSql fsql,
NLogManager nLogManager,
IIdGenerator idGenerator,
ProductBusiness productBusiness,
IEnumerable<PlatformSDKBusiness> platformSDKBusinessList) : base(fsql, nLogManager, idGenerator)
IEnumerable<PlatformSDKBusiness> platformSDKBusinessList,
RestApiService restApiService) : base(fsql, nLogManager, idGenerator)
{
this.productBusiness = productBusiness;
this.platformSDKBusinessList = platformSDKBusinessList;
this.restApiService = restApiService;
}
/// <summary>
@ -218,6 +221,7 @@ namespace BBWY.Server.Business
var successSkuIdList = new List<string>();
var failSkuList = new List<BatchCreareOrderFailDetail>();
var qikuPackSkuConfigRequestList = new List<object>();
var extJArray = JsonConvert.DeserializeObject<JArray>(request.Extensions);
var purchaseGroups = request.ProductParamList.GroupBy(p => p.PurchaserId);
@ -292,6 +296,10 @@ namespace BBWY.Server.Business
List<long> updatePurchaseTimeSchemeIdList = productParamList.Select(p => p.BelongPurchaseSchemeId).Distinct().ToList();
List<PurchaseOrderSku> insertPurchaseOrderSkuList = new List<PurchaseOrderSku>();
List<object> skuPackConfigList = null;
if (purchasePlatform == Enums.Platform.)
skuPackConfigList = new List<object>();
foreach (var belongSkuGroup in belongSkuGroups)
{
var firstProductParam = belongSkuGroup.FirstOrDefault();
@ -321,6 +329,26 @@ namespace BBWY.Server.Business
CreateTime = DateTime.Now
};
insertPurchaseOrderSkuList.Add(purchaseOrderSku);
if (purchasePlatform == Enums.Platform.)
{
var skuPackConfig = request.PackSkuConfigList?.FirstOrDefault(s => s.SkuId == firstProductParam.BelongSkuId);
if (skuPackConfig != null)
{
skuPackConfigList.Add(new
{
skuId = firstProductParam.BelongSkuId,
skuCount = skuPackConfig.PurchaseCount,
markMessage = string.Empty,
wareHourses = skuPackConfig.PackSkuSplitConfigList.Select(x => new
{
wareId = x.Store.Id,
wareName = x.Store.Name,
count = x.PackCount
})
});
}
}
}
var purchaseOrderV2 = new PurchaseOrderV2()
@ -358,6 +386,19 @@ namespace BBWY.Server.Business
fsql.Update<PurchaseScheme>(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows();
});
successSkuIdList.AddRange(belongSkuGroups.Select(g => g.Key));
if (purchasePlatform == Enums.Platform.)
{
qikuPackSkuConfigRequestList.Add(new
{
orderId = purchaseOrderV2.Id,
shopId = request.ShopId.ToString(),
originShopName = request.ShopName,
userName = purchaseAccount.AccountName,
platform = Enums.Platform.,
purchaseTaskModels = skuPackConfigList
});
}
}
catch (Exception ex)
{
@ -370,6 +411,30 @@ namespace BBWY.Server.Business
}
}
if (qikuPackSkuConfigRequestList.Count() > 0)
{
Task.Factory.StartNew(() =>
{
foreach (var qikuPackSkuConfigRequest in qikuPackSkuConfigRequestList)
{
try
{
var qikuResponse = restApiService.SendRequest("http://qiku.qiyue666.com/",
"api/PackPurchaseTask/PublicPurchaseTask",
qikuPackSkuConfigRequest,
null,
HttpMethod.Post);
if (qikuResponse.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception(qikuResponse.Content);
}
catch (Exception ex)
{
nLogManager.GetLogger($"发布打包任务-{request.ShopName}").Error(ex, JsonConvert.SerializeObject(qikuPackSkuConfigRequest));
}
}
});
}
return new BatchCreareOrderResponse()
{
FailSkuList = failSkuList,

9
BBWY.Server.Model/Dto/Request/PurchaseOrderV2/BatchPurchase/BatchPurchaseCreateOrderRequest.cs

@ -1,4 +1,6 @@
namespace BBWY.Server.Model.Dto
using System.Collections.Generic;
namespace BBWY.Server.Model.Dto
{
public class BatchPurchaseCreateOrderRequest : BatchPurchasePreviewOrderRequest
{
@ -18,6 +20,9 @@
public string AutoPay { get; set; }
/// <summary>
/// 打包设置
/// </summary>
public IList<PackSkuConfigRequest> PackSkuConfigList { get; set; }
}
}

34
BBWY.Server.Model/Dto/Request/QiKu/PackSkuConfigRequest.cs

@ -0,0 +1,34 @@
using System.Collections.Generic;
namespace BBWY.Server.Model.Dto
{
public class PackSkuConfigRequest
{
public PackSkuConfigRequest()
{
}
/// <summary>
/// 店铺Sku
/// </summary>
public string SkuId { get; set; }
/// <summary>
/// 采购数量
/// </summary>
public int PurchaseCount { get; set; }
public IList<PackSkuSplitConfigRequest> PackSkuSplitConfigList { get; set; }
}
public class PackSkuSplitConfigRequest
{
public int Index { get; set; }
public int PackCount { get; set; }
public StoreRequest Store { get; set; }
}
}

9
BBWY.Server.Model/Dto/Request/Stock/StoreRequest.cs

@ -0,0 +1,9 @@
namespace BBWY.Server.Model.Dto
{
public class StoreRequest
{
public string Id { get; set; }
public string Name { get; set; }
}
}
Loading…
Cancel
Save