Browse Source

1.关联代发订单

qianyi
shanji 3 years ago
parent
commit
53396aff71
  1. 29
      BBWY.Client/APIServices/OrderService.cs
  2. 4
      BBWY.Client/App.xaml.cs
  3. 11
      BBWY.Client/BBWY.Client.csproj
  4. 19
      BBWY.Client/Models/APIModel/Response/Order/OrderDropShippingResponse.cs
  5. 5
      BBWY.Client/Models/APIModel/Response/Order/OrderResponse.cs
  6. 1
      BBWY.Client/Models/MappingProfile.cs
  7. 5
      BBWY.Client/Models/Order/Order.cs
  8. 22
      BBWY.Client/Models/Order/OrderDropShipping.cs
  9. 45
      BBWY.Client/Models/Order/RelationPurchaseOrderSku.cs
  10. 2
      BBWY.Client/ViewModels/MainViewModel.cs
  11. 73
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  12. 55
      BBWY.Client/Views/Order/OrderList.xaml
  13. 141
      BBWY.Client/Views/Order/RelationPurchaseOrder.xaml
  14. 56
      BBWY.Client/Views/Order/RelationPurchaseOrder.xaml.cs
  15. 10
      BBWY.Server.API/Controllers/OrderController.cs
  16. 15
      BBWY.Server.API/Controllers/TestController.cs
  17. 193
      BBWY.Server.Business/Order/OrderBusiness.cs
  18. 32
      BBWY.Server.Model/Db/Order/Order.cs
  19. 58
      BBWY.Server.Model/Db/Order/OrderDropShipping.cs
  20. 8
      BBWY.Server.Model/Dto/Request/Order/OrderDropShippingRequest.cs
  21. 22
      BBWY.Server.Model/Dto/Request/Order/RelationPurchaseOrderRequest.cs
  22. 5
      BBWY.Server.Model/Dto/Request/Order/SearchOrderRequest.cs
  23. 8
      BBWY.Server.Model/Dto/Response/Order/OrderDropShippingResponse.cs
  24. 5
      BBWY.Server.Model/Dto/Response/Order/OrderResponse.cs
  25. 10
      BBWY.Server.Model/MappingProfiles.cs

29
BBWY.Client/APIServices/OrderService.cs

@ -2,6 +2,7 @@
using BBWY.Common.Http; using BBWY.Common.Http;
using BBWY.Common.Models; using BBWY.Common.Models;
using System; using System;
using System.Collections.Generic;
using System.Net.Http; using System.Net.Http;
namespace BBWY.Client.APIServices namespace BBWY.Client.APIServices
@ -21,8 +22,12 @@ namespace BBWY.Client.APIServices
string productNo, string productNo,
string waybill, string waybill,
string contactName, string contactName,
int pageIndex, int pageSize, int pageIndex,
long shopId) int pageSize,
long shopId,
bool onlyDF,
bool excludeSD,
bool excludeCanceled)
{ {
return SendRequest<OrderListResponse>(globalContext.BBYWApiHost, "api/order/getOrderList", new return SendRequest<OrderListResponse>(globalContext.BBYWApiHost, "api/order/getOrderList", new
{ {
@ -36,7 +41,10 @@ namespace BBWY.Client.APIServices
sku, sku,
productNo, productNo,
waybill, waybill,
contactName contactName,
onlyDF,
excludeSD,
excludeCanceled
}, null, HttpMethod.Post); }, null, HttpMethod.Post);
} }
@ -125,5 +133,20 @@ namespace BBWY.Client.APIServices
AppToken = globalContext.User.Shop.AppToken AppToken = globalContext.User.Shop.AppToken
}, null, HttpMethod.Post); }, null, HttpMethod.Post);
} }
/// <summary>
/// 关联代发订单
/// </summary>
/// <param name="orderDropShipping"></param>
/// <param name="relationPurchaseOrderSkuList"></param>
/// <returns></returns>
public ApiResponse<object> RelationPurchaseOrder(OrderDropShipping orderDropShipping, IList<RelationPurchaseOrderSku> relationPurchaseOrderSkuList)
{
return SendRequest<object>(globalContext.BBYWApiHost, "api/order/RelationPurchaseOrder", new
{
orderDropShipping,
relationPurchaseOrderSkuList
}, null, HttpMethod.Post);
}
} }
} }

4
BBWY.Client/App.xaml.cs

@ -1,4 +1,5 @@
using BBWY.Client.Models; using BBWY.Client.Models;
using BBWY.Client.ViewModels;
using BBWY.Common.Extensions; using BBWY.Common.Extensions;
using BBWY.Common.Http; using BBWY.Common.Http;
using BBWY.Common.Models; using BBWY.Common.Models;
@ -42,9 +43,6 @@ namespace BBWY.Client
serviceCollection.AddHttpClient(); serviceCollection.AddHttpClient();
serviceCollection.AddSingleton<RestApiService>(); serviceCollection.AddSingleton<RestApiService>();
serviceCollection.AddSingleton(gl); serviceCollection.AddSingleton(gl);
//serviceCollection.AddSingleton<MainViewModel>();
//serviceCollection.AddSingleton<WareManagerViewModel>();
//serviceCollection.AddSingleton<WareStockViewModel>();
serviceCollection.BatchRegisterServices(new Assembly[] { Assembly.Load("BBWY.Client") }, typeof(IDenpendency)); serviceCollection.BatchRegisterServices(new Assembly[] { Assembly.Load("BBWY.Client") }, typeof(IDenpendency));
serviceCollection.AddMapper(new MappingProfile()); serviceCollection.AddMapper(new MappingProfile());

11
BBWY.Client/BBWY.Client.csproj

@ -15,6 +15,13 @@
<PlatformTarget>x64</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<Compile Remove="Extensions\**" />
<EmbeddedResource Remove="Extensions\**" />
<None Remove="Extensions\**" />
<Page Remove="Extensions\**" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<None Remove="BBWYAppSettings.json" /> <None Remove="BBWYAppSettings.json" />
<None Remove="Resources\Images\defaultItem.png" /> <None Remove="Resources\Images\defaultItem.png" />
@ -51,8 +58,4 @@
</Resource> </Resource>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Extensions\" />
</ItemGroup>
</Project> </Project>

19
BBWY.Client/Models/APIModel/Response/Order/OrderDropShippingResponse.cs

@ -0,0 +1,19 @@
namespace BBWY.Client.Models
{
public class OrderDropShippingResponse
{
public string OrderId { get; set; }
public string BuyerAccount { get; set; }
public decimal DeliveryFreight { get; set; }
public decimal PurchaseAmount { get; set; }
public string PurchaseOrderId { get; set; }
public Platform? PurchasePlatform { get; set; }
public string SellerAccount { get; set; }
}
}

5
BBWY.Client/Models/APIModel/Response/Order/OrderResponse.cs

@ -134,6 +134,11 @@ namespace BBWY.Client.Models
/// 订单成本明细列表 /// 订单成本明细列表
/// </summary> /// </summary>
public IList<OrderCostDetailResponse> OrderCostDetailList { get; set; } public IList<OrderCostDetailResponse> OrderCostDetailList { get; set; }
/// <summary>
/// 代发信息
/// </summary>
public OrderDropShippingResponse OrderDropShipping { get; set; }
} }
public class OrderListResponse public class OrderListResponse

1
BBWY.Client/Models/MappingProfile.cs

@ -6,6 +6,7 @@ namespace BBWY.Client.Models
{ {
public MappingProfile() public MappingProfile()
{ {
CreateMap<OrderDropShippingResponse, OrderDropShipping>();
CreateMap<OrderCostDetailResponse, OrderCostDetail>(); CreateMap<OrderCostDetailResponse, OrderCostDetail>();
CreateMap<OrderCouponResponse, OrderCoupon>(); CreateMap<OrderCouponResponse, OrderCoupon>();
CreateMap<OrderCostResponse, OrderCost>(); CreateMap<OrderCostResponse, OrderCost>();

5
BBWY.Client/Models/Order/Order.cs

@ -156,6 +156,11 @@ namespace BBWY.Client.Models
/// </summary> /// </summary>
public IList<OrderCostDetailGroup> OrderCostDetailGroupList { get; set; } public IList<OrderCostDetailGroup> OrderCostDetailGroupList { get; set; }
/// <summary>
/// 代发信息
/// </summary>
public OrderDropShipping OrderDropShipping { get; set; }
public void ConvertOrderCostDetailToGroup() public void ConvertOrderCostDetailToGroup()
{ {
if (OrderCostDetailList == null || OrderCostDetailList.Count() == 0) if (OrderCostDetailList == null || OrderCostDetailList.Count() == 0)

22
BBWY.Client/Models/Order/OrderDropShipping.cs

@ -0,0 +1,22 @@
namespace BBWY.Client.Models
{
public class OrderDropShipping : NotifyObject
{
public string OrderId { get; set; }
public string BuyerAccount { get => buyerAccount; set { Set(ref buyerAccount, value); } }
public string SellerAccount { get => sellerAccount; set { Set(ref sellerAccount, value); } }
public decimal DeliveryFreight { get => deliveryFreight; set { Set(ref deliveryFreight, value); } }
public string PurchaseOrderId { get => purchaseOrderId; set { Set(ref purchaseOrderId, value); } }
public Platform PurchasePlatform { get => purchasePlatform; set { Set(ref purchasePlatform, value); } }
public decimal PurchaseAmount { get => purchaseAmount; set { Set(ref purchaseAmount, value); } }
private string buyerAccount;
private string sellerAccount;
private decimal deliveryFreight;
private string purchaseOrderId;
private Platform purchasePlatform;
private decimal purchaseAmount;
}
}

45
BBWY.Client/Models/Order/RelationPurchaseOrderSku.cs

@ -0,0 +1,45 @@
using Newtonsoft.Json;
using System;
namespace BBWY.Client.Models
{
public class RelationPurchaseOrderSku : NotifyObject
{
private decimal singleSkuAmount;
private decimal skuAmount;
public string ProductId { get; set; }
public string SkuId { get; set; }
public string Logo { get; set; }
public int Quantity { get; set; }
public string Title { get; set; }
public decimal SingleSkuAmount
{
get => singleSkuAmount;
set
{
if (Set(ref singleSkuAmount, value))
SkuAmount = SingleSkuAmount * Quantity;
}
}
public decimal SkuAmount
{
get => skuAmount;
set
{
if (Set(ref skuAmount, value))
OnSkuAmountChanged?.Invoke();
}
}
[JsonIgnore]
public Action OnSkuAmountChanged { get; set; }
}
}

2
BBWY.Client/ViewModels/MainViewModel.cs

@ -124,7 +124,7 @@ namespace BBWY.Client.ViewModels
// Platform = Platform.京东, // Platform = Platform.京东,
// AppKey = "120EA9EC65AB017567D78CC1139EEEA5", // AppKey = "120EA9EC65AB017567D78CC1139EEEA5",
// AppSecret = "866a9877f5f24b03b537483b4defe75d", // AppSecret = "866a9877f5f24b03b537483b4defe75d",
// AppToken = "d8433fb2a4994484b5d9e5a5896a6dfdmyjj" //d202f5eaf1c041dbbe2630363c6151eadiwm,8241a17cb2ae4d0db88b47a399dce22edi0m // AppToken = "d8433fb2a4994484b5d9e5a5896a6dfdmyjj" //10388155
// } // }
//}; //};

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

@ -35,6 +35,9 @@ namespace BBWY.Client.ViewModels
private string searchProductNo; private string searchProductNo;
private string searchContactName; private string searchContactName;
private string searchWaybill; private string searchWaybill;
private bool onlyDF;
private bool excludeSD;
private bool excludeCanceled;
private Random random; private Random random;
private GlobalContext globalContext; private GlobalContext globalContext;
@ -62,6 +65,10 @@ namespace BBWY.Client.ViewModels
public string SearchContactName { get => searchContactName; set { Set(ref searchContactName, value); } } public string SearchContactName { get => searchContactName; set { Set(ref searchContactName, value); } }
public string SearchWaybill { get => searchWaybill; set { Set(ref searchWaybill, value); } } public string SearchWaybill { get => searchWaybill; set { Set(ref searchWaybill, value); } }
public bool OnlyDF { get => onlyDF; set { Set(ref onlyDF, value); } }
public bool ExcludeSD { get => excludeSD; set { Set(ref excludeSD, value); } }
public bool ExcludeCanceled { get => excludeCanceled; set { Set(ref excludeCanceled, value); } }
public ToDayOrderAchievement ToDayOrderAchievement { get; set; } public ToDayOrderAchievement ToDayOrderAchievement { get; set; }
public ICommand SetOrderStateCommand { get; set; } public ICommand SetOrderStateCommand { get; set; }
@ -137,7 +144,7 @@ namespace BBWY.Client.ViewModels
private void LoadOrder(int pageIndex) private void LoadOrder(int pageIndex)
{ {
IsLoading = true; IsLoading = true;
Thread.Sleep(random.Next(1000, 2000)); Thread.Sleep(random.Next(500, 2000));
var response = orderService.GetOrderList(SearchOrderId, var response = orderService.GetOrderList(SearchOrderId,
StartDate, StartDate,
EndDate, EndDate,
@ -148,7 +155,10 @@ namespace BBWY.Client.ViewModels
SearchContactName, SearchContactName,
pageIndex, pageIndex,
pageSize, pageSize,
globalContext.User.Shop.ShopId); globalContext.User.Shop.ShopId,
OnlyDF,
ExcludeSD,
ExcludeCanceled);
if (!response.Success) if (!response.Success)
{ {
IsLoading = false; IsLoading = false;
@ -221,6 +231,41 @@ namespace BBWY.Client.ViewModels
sd.Closed += Sd_Closed; sd.Closed += Sd_Closed;
sd.ShowDialog(); sd.ShowDialog();
} }
else if (storageType == StorageType.)
{
var relationPurchaseOrder = new RelationPurchaseOrder(orderId, null, order.ItemList.Select(osku => new RelationPurchaseOrderSku()
{
Logo = osku.Logo,
ProductId = osku.ProductId,
SkuId = osku.Id,
Quantity = osku.ItemTotal,
Title = osku.Title
}).ToList());
relationPurchaseOrder.Closed += RelationPurchaseOrder_Closed;
relationPurchaseOrder.ShowDialog();
}
}
private void RelationPurchaseOrder_Closed(object sender, EventArgs e)
{
var relationPurchaseOrder = sender as RelationPurchaseOrder;
if (relationPurchaseOrder.DialogResult != true)
return;
var orderDropShipping = relationPurchaseOrder.OrderDropShipping;
var relationPurchaseOrderSkuList = relationPurchaseOrder.RelationPurchaseOrderSkuList;
IsLoading = true;
Task.Factory.StartNew(() => orderService.RelationPurchaseOrder(orderDropShipping, relationPurchaseOrderSkuList))
.ContinueWith(r =>
{
var response = r.Result;
if (!response.Success)
{
IsLoading = false;
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "关联采购订单"));
return;
}
LoadOrder(PageIndex); //手动计算成功刷新订单列表
});
} }
private void Sd_Closed(object sender, EventArgs e) private void Sd_Closed(object sender, EventArgs e)
@ -261,18 +306,32 @@ namespace BBWY.Client.ViewModels
{ {
if (order.StorageType == null) if (order.StorageType == null)
return; return;
if (order.StorageType != StorageType.SD) if (order.StorageType == StorageType.)
{ {
var calculationCostType = new ChooseCalculationCostType(order.Id, order.StorageType.Value, false); var relationPurchaseOrder = new RelationPurchaseOrder(order.Id, order.OrderDropShipping, order.ItemList.Select(osku => new RelationPurchaseOrderSku()
calculationCostType.Closed += ChooseCalculationCostType_Closed; {
calculationCostType.ShowDialog(); Logo = osku.Logo,
ProductId = osku.ProductId,
SkuId = osku.Id,
Quantity = osku.ItemTotal,
Title = osku.Title,
SingleSkuAmount = (order.OrderCostDetailList.FirstOrDefault(ocd => ocd.SkuId == osku.Id)?.SkuAmount / osku.ItemTotal) ?? 0
}).ToList());
relationPurchaseOrder.Closed += RelationPurchaseOrder_Closed;
relationPurchaseOrder.ShowDialog();
} }
else else if (order.StorageType == StorageType.SD)
{ {
var sd = new SD(order.Id, false); var sd = new SD(order.Id, false);
sd.Closed += Sd_Closed; sd.Closed += Sd_Closed;
sd.ShowDialog(); sd.ShowDialog();
} }
else
{
var calculationCostType = new ChooseCalculationCostType(order.Id, order.StorageType.Value, false);
calculationCostType.Closed += ChooseCalculationCostType_Closed;
calculationCostType.ShowDialog();
}
} }
private void ChooseCalculationCostType_Closed(object sender, EventArgs e) private void ChooseCalculationCostType_Closed(object sender, EventArgs e)

55
BBWY.Client/Views/Order/OrderList.xaml

@ -223,9 +223,9 @@
<Border Grid.Row="4" Background="{StaticResource Border.Background}"> <Border Grid.Row="4" Background="{StaticResource Border.Background}">
<StackPanel Orientation="Horizontal" > <StackPanel Orientation="Horizontal" >
<CheckBox Content="仅显示代发订单" Margin="5,0,0,0"/> <CheckBox Content="仅显示代发订单" Margin="5,0,0,0" IsChecked="{Binding OnlyDF,Mode=OneWayToSource,UpdateSourceTrigger=PropertyChanged}"/>
<CheckBox Content="过滤SD订单" Margin="5,0,0,0"/> <CheckBox Content="过滤SD订单" Margin="5,0,0,0" IsChecked="{Binding ExcludeSD,Mode=OneWayToSource,UpdateSourceTrigger=PropertyChanged}"/>
<CheckBox Content="过滤已取消" Margin="5,0,0,0"/> <CheckBox Content="过滤已取消" Margin="5,0,0,0" IsChecked="{Binding ExcludeCanceled,Mode=OneWayToSource,UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel> </StackPanel>
</Border> </Border>
@ -438,6 +438,33 @@
</ListBox.ItemTemplate> </ListBox.ItemTemplate>
</ListBox> </ListBox>
<StackPanel x:Name="sp_df" Grid.Column="2" VerticalAlignment="Center"
HorizontalAlignment="Center" Margin="0,0,0,10" Visibility="Collapsed">
<TextBlock>
<Run Text="采购平台"/>
<Run Text="{Binding OrderDropShipping.PurchasePlatform}"/>
</TextBlock>
<TextBlock>
<Run Text="买家账号"/>
<Run Text="{Binding OrderDropShipping.BuyerAccount}"/>
</TextBlock>
<TextBlock>
<Run Text="卖家账号"/>
<Run Text="{Binding OrderDropShipping.SellerAccount}"/>
</TextBlock>
<StackPanel Orientation="Horizontal">
<TextBlock>
<Run Text="采购单号"/>
<Run Text="{Binding OrderDropShipping.PurchaseOrderId}"/>
</TextBlock>
<c:BButton Content="复制" Style="{StaticResource LinkButton}" VerticalAlignment="Center"/>
</StackPanel>
<TextBlock>
<Run Text="采购金额"/>
<Run Text="{Binding OrderDropShipping.PurchaseAmount}"/>
</TextBlock>
</StackPanel>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="2" HorizontalAlignment="Right"/> <Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="2" HorizontalAlignment="Right"/>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="3" HorizontalAlignment="Right"/> <Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="3" HorizontalAlignment="Right"/>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="4" HorizontalAlignment="Right"/> <Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="4" HorizontalAlignment="Right"/>
@ -644,6 +671,16 @@
CommandParameter="{Binding }" Margin="5,0,0,0"/> CommandParameter="{Binding }" Margin="5,0,0,0"/>
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
<c:BButton x:Name="btn_outStore" Content="出库" Grid.Column="5" VerticalAlignment="Bottom"
Foreground="{StaticResource Text.Color}"
HorizontalAlignment="Stretch"
Background="White"
Margin="0,0,1,0"
Height="25"
Visibility="Collapsed"/>
<Border Height="1" Background="{StaticResource Border.Brush}" Grid.Column="5" VerticalAlignment="Bottom" Margin="0,0,0,25"
Visibility="{Binding Visibility,ElementName=btn_outStore}"/>
<TextBlock Text="{Binding OrderState}" Grid.Column="6" <TextBlock Text="{Binding OrderState}" Grid.Column="6"
HorizontalAlignment="Center" HorizontalAlignment="Center"
@ -700,6 +737,18 @@
<DataTrigger Binding="{Binding StorageType}" Value="SD"> <DataTrigger Binding="{Binding StorageType}" Value="SD">
<Setter TargetName="sp_purchaseAmount" Property="Visibility" Value="Collapsed"/> <Setter TargetName="sp_purchaseAmount" Property="Visibility" Value="Collapsed"/>
</DataTrigger> </DataTrigger>
<DataTrigger Binding="{Binding StorageType}" Value="代发">
<Setter TargetName="sp_df" Property="Visibility" Value="Visible"/>
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding StorageType}" Value="代发"/>
<Condition Binding="{Binding OrderState}" Value="待出库"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter TargetName="btn_outStore" Property="Visibility" Value="Visible"/>
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</DataTemplate.Triggers> </DataTemplate.Triggers>
</DataTemplate> </DataTemplate>
</ListBox.ItemTemplate> </ListBox.ItemTemplate>

141
BBWY.Client/Views/Order/RelationPurchaseOrder.xaml

@ -0,0 +1,141 @@
<c:BWindow x:Class="BBWY.Client.Views.Order.RelationPurchaseOrder"
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.Order"
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
xmlns:cmodel="clr-namespace:BBWY.Client.Models"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="关联采购订单"
Height="500" Width="500"
Style="{StaticResource bwstyle}"
MinButtonVisibility="Collapsed"
MaxButtonVisibility="Collapsed">
<c:BWindow.Resources>
<ObjectDataProvider x:Key="PlatformProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="cmodel:Platform"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</c:BWindow.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="0.3*"/>
<RowDefinition Height="0.7*"/>
<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>
<Grid Grid.Row="1" Margin="5,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.12*"/>
<ColumnDefinition Width="0.35*"/>
<ColumnDefinition Width="0.18*"/>
<ColumnDefinition Width="0.35*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="订单编号" HorizontalAlignment="Right" VerticalAlignment="Center"/>
<TextBlock Text="{Binding OrderDropShipping.OrderId}" Grid.Column="1" VerticalAlignment="Center" Margin="5,0,0,0"/>
<TextBlock Text="采购平台" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="1"/>
<ComboBox ItemsSource="{Binding Source={StaticResource PlatformProvider}}"
Grid.Row="1" Grid.Column="1"
SelectedItem="{Binding OrderDropShipping.PurchasePlatform}"
DisplayMemberPath="."
Height="25"
Margin="5,0,0,0"
VerticalContentAlignment="Center"/>
<TextBlock Text="采购订单号" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="1" Grid.Column="2"/>
<c:BTextBox Text="{Binding OrderDropShipping.PurchaseOrderId}" Grid.Row="1" Grid.Column="3" Height="25" Margin="5,0,0,0"/>
<TextBlock Text="买家账号" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="2"/>
<c:BTextBox Text="{Binding OrderDropShipping.BuyerAccount}" Grid.Row="2" Grid.Column="1" Height="25" Margin="5,0,0,0"/>
<TextBlock Text="卖家账号" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="2" Grid.Column="2"/>
<c:BTextBox Text="{Binding OrderDropShipping.SellerAccount}" Grid.Row="2" Grid.Column="3" Height="25" Margin="5,0,0,0"/>
<TextBlock Text="采购金额" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="3"/>
<c:BTextBox Text="{Binding OrderDropShipping.PurchaseAmount,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}" Grid.Row="3" Grid.Column="1" Height="25" Margin="5,0,0,0" IsEnabled="false" DisableBgColor="{StaticResource TextBox.Disable.BgColor}"/>
<TextBlock Text="邮费" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="3" Grid.Column="2"/>
<c:BTextBox Text="{Binding OrderDropShipping.DeliveryFreight}" Grid.Row="3" Grid.Column="3" Height="25" Margin="5,0,0,0"/>
</Grid>
<Grid Grid.Row="2" Margin="5,0">
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Grid.ColumnSpan="4" Background="{StaticResource Border.Background}"
BorderThickness="1" BorderBrush="{StaticResource Border.Brush}"/>
<TextBlock Text="商品信息" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="单价" Grid.Column="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="数量" Grid.Column="2" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="金额" Grid.Column="3" Style="{StaticResource middleTextBlock}"/>
<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="2"/>
</Grid>
<ListBox x:Name="listbox_ordersku" Grid.Row="1"
ItemsSource="{Binding RelationPurchaseOrderSkuList}"
Style="{StaticResource NoScrollViewListBoxStyle}"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
BorderBrush="{StaticResource Border.Brush}"
BorderThickness="1,0,1,1">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="90" Width="{Binding ActualWidth,ElementName=listbox_ordersku}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<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="2"/>
<StackPanel Orientation="Horizontal">
<c:BAsyncImage UrlSource="{Binding Logo}"
Width="80" DecodePixelWidth="80" Margin="5,0,0,0"/>
<TextBlock Text="{Binding Title}" Grid.Column="1" VerticalAlignment="Center" Margin="5,0,0,0"
TextWrapping="Wrap"/>
</StackPanel>
<c:BTextBox Grid.Column="1" Margin="5,0" Text="{Binding SingleSkuAmount,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="{Binding Quantity}" Grid.Column="2" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding SkuAmount,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}" Grid.Column="3" Style="{StaticResource middleTextBlock}"/>
<Border VerticalAlignment="Bottom" Height="1" Background="{StaticResource Border.Brush}" Grid.ColumnSpan="4"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
<c:BButton x:Name="btn_Save" Content="保存" Grid.Row="3" Width="60" HorizontalAlignment="Right" Margin="0,0,8,0"
Click="btn_Save_Click"/>
</Grid>
</c:BWindow>

56
BBWY.Client/Views/Order/RelationPurchaseOrder.xaml.cs

@ -0,0 +1,56 @@
using BBWY.Client.Models;
using BBWY.Controls;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
namespace BBWY.Client.Views.Order
{
/// <summary>
/// RelationPurchaseOrder.xaml 的交互逻辑
/// </summary>
public partial class RelationPurchaseOrder : BWindow
{
public OrderDropShipping OrderDropShipping { get; set; }
public IList<RelationPurchaseOrderSku> RelationPurchaseOrderSkuList { get; set; }
public RelationPurchaseOrder(string orderId, OrderDropShipping orderDropShipping, IList<RelationPurchaseOrderSku> relationPurchaseOrderSkuList)
{
InitializeComponent();
this.DataContext = this;
OrderDropShipping = new OrderDropShipping() { OrderId = orderId };
if (orderDropShipping != null)
{
OrderDropShipping.BuyerAccount = orderDropShipping.BuyerAccount;
OrderDropShipping.PurchaseAmount = orderDropShipping.PurchaseAmount;
OrderDropShipping.PurchaseOrderId = orderDropShipping.PurchaseOrderId;
OrderDropShipping.DeliveryFreight = orderDropShipping.DeliveryFreight;
OrderDropShipping.PurchasePlatform = orderDropShipping.PurchasePlatform;
OrderDropShipping.SellerAccount = orderDropShipping.SellerAccount;
}
this.RelationPurchaseOrderSkuList = relationPurchaseOrderSkuList;
foreach (var sku in RelationPurchaseOrderSkuList)
sku.OnSkuAmountChanged = OnSkuAmountChanged;
}
private void OnSkuAmountChanged()
{
OrderDropShipping.PurchaseAmount = RelationPurchaseOrderSkuList.Sum(sku => sku.SkuAmount);
}
private void btn_Save_Click(object sender, System.Windows.RoutedEventArgs e)
{
if (string.IsNullOrEmpty(OrderDropShipping.PurchaseOrderId) ||
string.IsNullOrEmpty(OrderDropShipping.SellerAccount) ||
string.IsNullOrEmpty(OrderDropShipping.BuyerAccount) ||
OrderDropShipping.PurchaseAmount == 0)
{
MessageBox.Show("关联订单信息不全", "提示");
return;
}
this.DialogResult = true;
this.Close();
}
}
}

10
BBWY.Server.API/Controllers/OrderController.cs

@ -68,6 +68,16 @@ namespace BBWY.Server.API.Controllers
orderBusiness.SDCalculationCost(sdCalculationCostRequest); orderBusiness.SDCalculationCost(sdCalculationCostRequest);
} }
/// <summary>
/// 关联采购单
/// </summary>
/// <param name="relationPurchaseOrderRequest"></param>
[HttpPost]
public void RelationPurchaseOrder([FromBody] RelationPurchaseOrderRequest relationPurchaseOrderRequest)
{
orderBusiness.RelationPurchaseOrder(relationPurchaseOrderRequest);
}
/// <summary> /// <summary>
/// 订单同步 /// 订单同步
/// </summary> /// </summary>

15
BBWY.Server.API/Controllers/TestController.cs

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Http; using BBWY.Server.Model.Db;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -7,9 +8,10 @@ namespace BBWY.Server.API.Controllers
{ {
public class TestController : BaseApiController public class TestController : BaseApiController
{ {
public TestController(IHttpContextAccessor httpContextAccessor) : base(httpContextAccessor) private IFreeSql fsql;
public TestController(IHttpContextAccessor httpContextAccessor, IFreeSql fsql) : base(httpContextAccessor)
{ {
this.fsql = fsql;
} }
[HttpGet] [HttpGet]
@ -22,5 +24,12 @@ namespace BBWY.Server.API.Controllers
DateTime.Now.ToString() DateTime.Now.ToString()
}; };
} }
[HttpGet("{orderId}")]
public decimal SumNoExists([FromRoute] string orderId)
{
var a = fsql.Select<OrderCoupon>().Where(oc => oc.OrderId == orderId).ToAggregate(g => g.Sum(g.Key.CouponPrice) );
return a;
}
} }
} }

193
BBWY.Server.Business/Order/OrderBusiness.cs

@ -43,11 +43,15 @@ namespace BBWY.Server.Business
public OrderListResponse GetOrderList(SearchOrderRequest searchOrderRequest) public OrderListResponse GetOrderList(SearchOrderRequest searchOrderRequest)
{ {
var select = fsql.Select<Order, OrderConsignee, OrderCost>().LeftJoin((o, ocs, oct) => o.Id == ocs.OrderId) if (searchOrderRequest.OrderState == Enums.OrderState.)
.LeftJoin((o, ocs, oct) => o.Id == oct.OrderId); searchOrderRequest.ExcludeCanceled = false;
var select = fsql.Select<Order, OrderConsignee, OrderCost, OrderDropShipping>().LeftJoin((o, ocs, oct, ods) => o.Id == ocs.OrderId)
.LeftJoin((o, ocs, oct, ods) => o.Id == oct.OrderId)
.LeftJoin((o, ocs, oct, ods) => o.Id == ods.OrderId);
if (!string.IsNullOrEmpty(searchOrderRequest.OrderId)) if (!string.IsNullOrEmpty(searchOrderRequest.OrderId))
{ {
select = select.Where((o, ocs, oct) => o.Id == searchOrderRequest.OrderId); select = select.Where((o, ocs, oct, ods) => o.Id == searchOrderRequest.OrderId);
} }
else else
{ {
@ -56,24 +60,27 @@ namespace BBWY.Server.Business
var childSelect = fsql.Select<OrderSku>().As("osku") var childSelect = fsql.Select<OrderSku>().As("osku")
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.Sku) == false, osku => osku.SkuId == searchOrderRequest.Sku) .WhereIf(string.IsNullOrEmpty(searchOrderRequest.Sku) == false, osku => osku.SkuId == searchOrderRequest.Sku)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.ProductNo) == false, osku => osku.ProductNo == searchOrderRequest.ProductNo); .WhereIf(string.IsNullOrEmpty(searchOrderRequest.ProductNo) == false, osku => osku.ProductNo == searchOrderRequest.ProductNo);
select = select.Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any()); select = select.Where((o, ocs, oct, ods) => childSelect.Where(osku => osku.OrderId == o.Id).Any());
} }
select = select.WhereIf(searchOrderRequest.OrderState != null, (o, ocs, oct) => o.OrderState == searchOrderRequest.OrderState) select = select.WhereIf(searchOrderRequest.OrderState != null, (o, ocs, oct, ods) => o.OrderState == searchOrderRequest.OrderState)
.WhereIf(searchOrderRequest.StartDate != null, (o, ocs, oct) => o.StartTime >= searchOrderRequest.StartDate) .WhereIf(searchOrderRequest.StartDate != null, (o, ocs, oct, ods) => o.StartTime >= searchOrderRequest.StartDate)
.WhereIf(searchOrderRequest.EndDate != null, (o, ocs, oct) => o.StartTime <= searchOrderRequest.EndDate) .WhereIf(searchOrderRequest.EndDate != null, (o, ocs, oct, ods) => o.StartTime <= searchOrderRequest.EndDate)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.ContactName) == false, (o, ocs, oct) => ocs.ContactName == searchOrderRequest.ContactName) .WhereIf(searchOrderRequest.OnlyDF, (o, ocs, oct, ods) => o.StorageType == Enums.StorageType.)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.Waybill) == false, (o, ocs, oct) => o.WaybillNo.Contains(searchOrderRequest.Waybill)); //这一步可能比较慢 .WhereIf(searchOrderRequest.ExcludeCanceled, (o, ocs, oct, ods) => o.OrderState != Enums.OrderState.)
.WhereIf(searchOrderRequest.ExcludeSD && !searchOrderRequest.OnlyDF, (o, ocs, oct, ods) => o.StorageType == null || o.StorageType != Enums.StorageType.SD)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.ContactName) == false, (o, ocs, oct, ods) => ocs.ContactName == searchOrderRequest.ContactName)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.Waybill) == false, (o, ocs, oct, ods) => o.WaybillNo == searchOrderRequest.Waybill);
} }
select = select.Where((o, ocs, oct) => o.ShopId == searchOrderRequest.ShopId) select = select.Where((o, ocs, oct, ods) => o.ShopId == searchOrderRequest.ShopId)
.OrderByDescending((o, ocs, oct) => o.StartTime) .OrderByDescending((o, ocs, oct, ods) => o.StartTime)
.Count(out var total) .Count(out var total)
.Page(searchOrderRequest.PageIndex, searchOrderRequest.PageSize); .Page(searchOrderRequest.PageIndex, searchOrderRequest.PageSize);
var sql = select.ToSql(); var sql = select.ToSql();
var orderSourceList = select.ToList((o, ocs, oct) => new Order() var orderSourceList = select.ToList((o, ocs, oct, ods) => new Order()
{ {
Id = o.Id, Id = o.Id,
BuyerRemark = o.BuyerRemark, BuyerRemark = o.BuyerRemark,
@ -114,7 +121,13 @@ namespace BBWY.Server.Business
Profit = oct.Profit, Profit = oct.Profit,
PurchaseAmount = oct.PurchaseAmount, PurchaseAmount = oct.PurchaseAmount,
IsManualEdited = oct.IsManualEdited, IsManualEdited = oct.IsManualEdited,
SDCommissionAmount = oct.SDCommissionAmount SDCommissionAmount = oct.SDCommissionAmount,
BuyerAccount = ods.BuyerAccount,
DeliveryFreight = ods.DeliveryFreight,
PurchaseOrderId = ods.PurchaseOrderId,
PurchasePlatform = ods.PurchasePlatform,
SellerAccount = ods.SellerAccount,
}); });
var orderList = orderSourceList.Map<IList<OrderResponse>>(); var orderList = orderSourceList.Map<IList<OrderResponse>>();
@ -194,7 +207,9 @@ namespace BBWY.Server.Business
var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == autoCalculationCostRequest.OrderId).ToList(); var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == autoCalculationCostRequest.OrderId).ToList();
var orderSkuIds = orderSkus.Select(osku => osku.SkuId).ToList(); var orderSkuIds = orderSkus.Select(osku => osku.SkuId).ToList();
var purchaserOrders = fsql.Select<PurchaseOrder>().Where(po => po.RemainingQuantity != 0 && orderSkuIds.Contains(po.SkuId)).ToList(); var purchaserOrders = fsql.Select<PurchaseOrder>().Where(po => po.StorageType == autoCalculationCostRequest.StorageType &&
po.RemainingQuantity != 0 &&
orderSkuIds.Contains(po.SkuId)).ToList();
if (purchaserOrders.Count() == 0) if (purchaserOrders.Count() == 0)
throw new BusinessException("库存为零不能自动计算成本"); throw new BusinessException("库存为零不能自动计算成本");
@ -465,6 +480,155 @@ namespace BBWY.Server.Business
}); });
} }
/// <summary>
/// 关联外部订单
/// </summary>
/// <param name="relationPurchaseOrderRequest"></param>
public void RelationPurchaseOrder(RelationPurchaseOrderRequest relationPurchaseOrderRequest)
{
var dbOrder = fsql.Select<Order>(relationPurchaseOrderRequest.OrderDropShipping.OrderId).ToOne();
if (dbOrder == null)
throw new BusinessException($"订单号{relationPurchaseOrderRequest.OrderDropShipping.OrderId}不存在");
IInsert<OrderDropShipping> insertOrderDropShipping = null;
IUpdate<OrderDropShipping> updateOrderDropShipping = null;
IInsert<OrderCost> insertOrderCost = null;
IUpdate<OrderCost> updateOrderCost = null;
IDelete<PurchaseOrder> deletePurchaseOrder = null;
IDelete<OrderCostDetail> deleteOrderCostDetail = null;
List<PurchaseOrder> insertPurchaseOrderList = new List<PurchaseOrder>();
List<OrderCostDetail> insertOrderCostDetailList = new List<OrderCostDetail>();
#region 代发信息表
var orderDropShipping = relationPurchaseOrderRequest.OrderDropShipping.Map<OrderDropShipping>();
if (fsql.Select<OrderDropShipping>(relationPurchaseOrderRequest.OrderDropShipping.OrderId).Any())
updateOrderDropShipping = fsql.Update<OrderDropShipping>().SetSource(orderDropShipping);
else
{
orderDropShipping.CreateTime = DateTime.Now;
insertOrderDropShipping = fsql.Insert(orderDropShipping);
}
#endregion
#region 采购单表
var oldPourchaseIdList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == relationPurchaseOrderRequest.OrderDropShipping.OrderId)
.ToList(ocd => ocd.PurchaseOrderPKId);
deletePurchaseOrder = fsql.Delete<PurchaseOrder>().Where(po => oldPourchaseIdList.Contains(po.Id));
insertPurchaseOrderList.AddRange(relationPurchaseOrderRequest.RelationPurchaseOrderSkuList.Select(x => new PurchaseOrder()
{
Id = idGenerator.NewLong(),
CreateTime = DateTime.Now,
ProductId = x.ProductId,
PurchaseMethod = Enums.PurchaseMethod.线,
StorageType = Enums.StorageType.,
PurchaseOrderId = relationPurchaseOrderRequest.OrderDropShipping.PurchaseOrderId,
PurchasePlatform = relationPurchaseOrderRequest.OrderDropShipping.PurchasePlatform,
PurchaseQuantity = x.Quantity,
RemainingQuantity = 0,
ShopId = dbOrder.ShopId,
SkuId = x.SkuId,
SingleConsumableAmount = 0,
SingleFirstFreight = 0,
SingleFreight = 0,
SingleOperationAmount = 0,
SingleStorageAmount = 0,
SingleSkuAmount = x.SingleSkuAmount,
SingleDeliveryFreight = 0
}));
#endregion
#region 订单成本表
var orderCost = fsql.Select<OrderCost>(relationPurchaseOrderRequest.OrderDropShipping.OrderId).ToOne();
if (orderCost != null)
{
orderCost.DeliveryExpressFreight = relationPurchaseOrderRequest.OrderDropShipping.DeliveryFreight;
orderCost.PurchaseAmount = relationPurchaseOrderRequest.OrderDropShipping.PurchaseAmount;
orderCost.Profit = dbOrder.OrderSellerPrice +
dbOrder.FreightPrice -
orderCost.PurchaseAmount -
orderCost.DeliveryExpressFreight -
orderCost.PlatformCommissionAmount;
updateOrderCost = fsql.Update<OrderCost>().SetSource(orderCost).IgnoreColumns(oc => new
{
oc.CreateTime,
oc.SDCommissionAmount,
oc.PlatformCommissionAmount,
oc.PlatformCommissionRatio
});
}
else
{
var preferentialAmount = fsql.Select<OrderCoupon>().Where(oc => oc.OrderId == relationPurchaseOrderRequest.OrderDropShipping.OrderId)
.ToAggregate(g => g.Sum(g.Key.CouponPrice));
orderCost = new OrderCost()
{
OrderId = relationPurchaseOrderRequest.OrderDropShipping.OrderId,
CreateTime = DateTime.Now,
DeliveryExpressFreight = relationPurchaseOrderRequest.OrderDropShipping.DeliveryFreight,
PlatformCommissionRatio = 0.05M,
SDCommissionAmount = 0,
PurchaseAmount = relationPurchaseOrderRequest.RelationPurchaseOrderSkuList.Sum(s => s.SingleSkuAmount * s.Quantity),
PlatformCommissionAmount = dbOrder.OrderSellerPrice * 0.05M,
PreferentialAmount = preferentialAmount,
IsManualEdited = true
};
orderCost.Profit = dbOrder.OrderSellerPrice +
dbOrder.FreightPrice -
orderCost.PurchaseAmount -
orderCost.DeliveryExpressFreight -
orderCost.PlatformCommissionAmount;
insertOrderCost = fsql.Insert(orderCost);
}
#endregion
#region 订单成本明细表
var oldOrderCostDetailIdList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == relationPurchaseOrderRequest.OrderDropShipping.OrderId)
.ToList(ocd => ocd.Id);
deleteOrderCostDetail = fsql.Delete<OrderCostDetail>().Where(ocd => oldOrderCostDetailIdList.Contains(ocd.Id));
insertOrderCostDetailList.AddRange(relationPurchaseOrderRequest.RelationPurchaseOrderSkuList.Select(x => new OrderCostDetail()
{
Id = idGenerator.NewLong(),
ConsumableAmount = 0,
CreateTime = DateTime.Now,
DeductionQuantity = x.Quantity,
DeliveryExpressFreight = 0,
FirstFreight = 0,
OperationAmount = 0,
OrderId = relationPurchaseOrderRequest.OrderDropShipping.OrderId,
ProductId = x.ProductId,
PurchaseFreight = 0,
SkuAmount = x.SingleSkuAmount * x.Quantity,
SkuId = x.SkuId,
StorageAmount = 0,
TotalCost = x.SingleSkuAmount * x.Quantity,
UnitCost = x.SingleSkuAmount,
PurchaseOrderPKId = insertPurchaseOrderList.FirstOrDefault(po => po.SkuId == x.SkuId).Id
}));
#endregion
fsql.Transaction(() =>
{
deletePurchaseOrder?.ExecuteAffrows();
deleteOrderCostDetail?.ExecuteAffrows();
insertOrderDropShipping?.ExecuteAffrows();
updateOrderDropShipping?.ExecuteAffrows();
insertOrderCost?.ExecuteAffrows();
updateOrderCost?.ExecuteAffrows();
fsql.Insert(insertPurchaseOrderList).ExecuteAffrows();
fsql.Insert(insertOrderCostDetailList).ExecuteAffrows();
if (dbOrder.StorageType != Enums.StorageType.)
{
fsql.Update<Order>(relationPurchaseOrderRequest.OrderDropShipping.OrderId)
.Set(o => o.StorageType, Enums.StorageType.)
.SetIf(dbOrder.OrderState == Enums.OrderState., o => o.OrderState, Enums.OrderState.)
.ExecuteAffrows();
}
});
}
public void SyncOrder(long shopId, string orderId) public void SyncOrder(long shopId, string orderId)
{ {
#region 获取店铺信息; #region 获取店铺信息;
@ -774,6 +938,7 @@ namespace BBWY.Server.Business
#region 扣减库存, 计算成本 #region 扣减库存, 计算成本
if (dbOrder.StorageType != null && if (dbOrder.StorageType != null &&
dbOrder.StorageType != Enums.StorageType.SD && dbOrder.StorageType != Enums.StorageType.SD &&
dbOrder.StorageType != Enums.StorageType. &&
orderState != null && orderState != null &&
orderState != Enums.OrderState. && orderState != Enums.OrderState. &&
orderState != Enums.OrderState.) orderState != Enums.OrderState.)

32
BBWY.Server.Model/Db/Order/Order.cs

@ -212,6 +212,38 @@ namespace BBWY.Server.Model.Db
[Column(IsIgnore = true)] [Column(IsIgnore = true)]
public bool? IsDecode { get; set; } public bool? IsDecode { get; set; }
#endregion #endregion
#region 代发信息
/// <summary>
/// 买家账号
/// </summary>
[Column(IsIgnore = true)]
public string BuyerAccount { get; set; }
/// <summary>
/// 发货运费
/// </summary>
[Column(IsIgnore = true)]
public decimal DeliveryFreight { get; set; } = 0.00M;
/// <summary>
/// 采购单号
/// </summary>
[Column(IsIgnore = true)]
public string PurchaseOrderId { get; set; }
/// <summary>
/// 采购平台
/// </summary>
[Column(IsIgnore = true)]
public Enums.Platform? PurchasePlatform { get; set; }
/// <summary>
/// 卖家账号
/// </summary>
[Column(IsIgnore = true)]
public string SellerAccount { get; set; }
#endregion
} }
} }

58
BBWY.Server.Model/Db/Order/OrderDropShipping.cs

@ -0,0 +1,58 @@
using FreeSql.DataAnnotations;
using System;
namespace BBWY.Server.Model.Db
{
/// <summary>
/// 代发信息表
/// </summary>
[Table(Name = "orderdropshipping", DisableSyncStructure = true)]
public partial class OrderDropShipping
{
[Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
public string OrderId { get; set; }
/// <summary>
/// 买家账号
/// </summary>
[Column(StringLength = 50)]
public string BuyerAccount { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 发货运费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal DeliveryFreight { get; set; } = 0.00M;
/// <summary>
/// 采购金额
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal PurchaseAmount { get; set; } = 0.00M;
/// <summary>
/// 采购单号
/// </summary>
[Column(StringLength = 50)]
public string PurchaseOrderId { get; set; }
/// <summary>
/// 采购平台
/// </summary>
[Column(DbType = "int(1)", MapType = typeof(int?))]
public Enums.Platform? PurchasePlatform { get; set; }
/// <summary>
/// 卖家账号
/// </summary>
[Column(StringLength = 50)]
public string SellerAccount { get; set; }
}
}

8
BBWY.Server.Model/Dto/Request/Order/OrderDropShippingRequest.cs

@ -0,0 +1,8 @@
using BBWY.Server.Model.Db;
namespace BBWY.Server.Model.Dto
{
public class OrderDropShippingRequest : OrderDropShipping
{
}
}

22
BBWY.Server.Model/Dto/Request/Order/RelationPurchaseOrderRequest.cs

@ -0,0 +1,22 @@
using System.Collections.Generic;
namespace BBWY.Server.Model.Dto
{
public class RelationPurchaseOrderRequest
{
public OrderDropShippingRequest OrderDropShipping { get; set; }
public IList<RelationPurchaseOrderSkuRequest> RelationPurchaseOrderSkuList { get; set; }
}
public class RelationPurchaseOrderSkuRequest
{
public string ProductId { get; set; }
public string SkuId { get; set; }
public decimal SingleSkuAmount { get; set; }
public int Quantity { get; set; }
}
}

5
BBWY.Server.Model/Dto/Request/Order/SearchOrderRequest.cs

@ -47,5 +47,10 @@ namespace BBWY.Server.Model.Dto
/// 排除刷单 /// 排除刷单
/// </summary> /// </summary>
public bool ExcludeSD { get; set; } public bool ExcludeSD { get; set; }
/// <summary>
/// 过滤已取消
/// </summary>
public bool ExcludeCanceled { get; set; }
} }
} }

8
BBWY.Server.Model/Dto/Response/Order/OrderDropShippingResponse.cs

@ -0,0 +1,8 @@
using BBWY.Server.Model.Db;
namespace BBWY.Server.Model.Dto
{
public class OrderDropShippingResponse: OrderDropShipping
{
}
}

5
BBWY.Server.Model/Dto/Response/Order/OrderResponse.cs

@ -148,6 +148,11 @@ namespace BBWY.Server.Model.Dto
/// 订单成本明细列表 /// 订单成本明细列表
/// </summary> /// </summary>
public IList<OrderCostDetailResponse> OrderCostDetailList { get; set; } public IList<OrderCostDetailResponse> OrderCostDetailList { get; set; }
/// <summary>
/// 代发信息
/// </summary>
public OrderDropShippingResponse OrderDropShipping { get; set; }
} }
public class OrderListResponse public class OrderListResponse

10
BBWY.Server.Model/MappingProfiles.cs

@ -24,6 +24,7 @@ namespace BBWY.Server.Model
CreateMap<AddPurchaseOrderRequest, PurchaseOrder>(); CreateMap<AddPurchaseOrderRequest, PurchaseOrder>();
CreateMap<PurchaseOrder, PurchaseOrderResponse>(); CreateMap<PurchaseOrder, PurchaseOrderResponse>();
CreateMap<OrderDropShippingRequest, OrderDropShipping>();
CreateMap<OrderCostDetail, OrderCostDetailResponse>(); CreateMap<OrderCostDetail, OrderCostDetailResponse>();
CreateMap<OrderConsignee, ConsigneeResponse>(); CreateMap<OrderConsignee, ConsigneeResponse>();
CreateMap<OrderCost, OrderCostResponse>(); CreateMap<OrderCost, OrderCostResponse>();
@ -49,7 +50,14 @@ namespace BBWY.Server.Model
.ForPath(t => t.OrderCost.PlatformCommissionRatio, opt => opt.MapFrom(f => f.PlatformCommissionRatio ?? 0)) .ForPath(t => t.OrderCost.PlatformCommissionRatio, opt => opt.MapFrom(f => f.PlatformCommissionRatio ?? 0))
.ForPath(t => t.OrderCost.PreferentialAmount, opt => opt.MapFrom(f => f.PreferentialAmount)) .ForPath(t => t.OrderCost.PreferentialAmount, opt => opt.MapFrom(f => f.PreferentialAmount))
.ForPath(t => t.OrderCost.IsManualEdited, opt => opt.MapFrom(f => f.IsManualEdited)) .ForPath(t => t.OrderCost.IsManualEdited, opt => opt.MapFrom(f => f.IsManualEdited))
.ForPath(t => t.OrderCost.SDCommissionAmount, opt => opt.MapFrom(f => f.SDCommissionAmount)); .ForPath(t => t.OrderCost.SDCommissionAmount, opt => opt.MapFrom(f => f.SDCommissionAmount))
.ForPath(t => t.OrderDropShipping.PurchaseAmount, opt => opt.MapFrom(f => f.PurchaseAmount))
.ForPath(t => t.OrderDropShipping.PurchaseOrderId, opt => opt.MapFrom(f => f.PurchaseOrderId))
.ForPath(t => t.OrderDropShipping.OrderId, opt => opt.MapFrom(f => f.Id))
.ForPath(t => t.OrderDropShipping.DeliveryFreight, opt => opt.MapFrom(f => f.DeliveryFreight))
.ForPath(t => t.OrderDropShipping.PurchasePlatform, opt => opt.MapFrom(f => f.PurchasePlatform))
.ForPath(t => t.OrderDropShipping.BuyerAccount, opt => opt.MapFrom(f => f.BuyerAccount))
.ForPath(t => t.OrderDropShipping.SellerAccount, opt => opt.MapFrom(f => f.SellerAccount));
} }
} }

Loading…
Cancel
Save