shanji 3 years ago
parent
commit
aa1fa7f20e
  1. 5
      BBWY.Client/APIServices/StatisticsService.cs
  2. 9
      BBWY.Client/Models/APIModel/Response/Statistics/OrderCountStatisticsResponse.cs
  3. 21
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  4. 24
      BBWY.Client/Views/Order/OrderList.xaml
  5. 14
      BBWY.Server.API/Controllers/StatisticsController.cs
  6. 2
      BBWY.Server.Business/Order/OrderBusiness.cs
  7. 29
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs
  8. 9
      BBWY.Server.Model/Dto/Response/Statistics/OrderCountStatisticsResponse.cs

5
BBWY.Client/APIServices/StatisticsService.cs

@ -27,5 +27,10 @@ namespace BBWY.Client.APIServices
}, },
null, HttpMethod.Post); null, HttpMethod.Post);
} }
public ApiResponse<OrderCountStatisticsResponse> GetOrderCountStatistics(long shopId, DateTime startDate, DateTime endDate)
{
return SendRequest<OrderCountStatisticsResponse>(globalContext.BBYWApiHost, "Api/Statistics/GetOrderCountStatistics", $"shopId={shopId}&startDate={startDate:yyyy-MM-dd}&endDate={endDate:yyyy-MM-dd}", null, HttpMethod.Get);
}
} }
} }

9
BBWY.Client/Models/APIModel/Response/Statistics/OrderCountStatisticsResponse.cs

@ -0,0 +1,9 @@
namespace BBWY.Client.Models
{
public class OrderCountStatisticsResponse
{
public long WaitPurchaseCount { get; set; }
public long ExceptionCount { get; set; }
}
}

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

@ -50,6 +50,8 @@ namespace BBWY.Client.ViewModels
private bool includeExceptionOrder; private bool includeExceptionOrder;
private decimal currentConditionsTotalProfit; private decimal currentConditionsTotalProfit;
private string searchServiceId; private string searchServiceId;
private long waitPurchaseOrderCount;
private long exceptionOrderCount;
public IList<Order> OrderList { get; set; } public IList<Order> OrderList { get; set; }
@ -137,6 +139,9 @@ namespace BBWY.Client.ViewModels
/// </summary> /// </summary>
public bool IncludeExceptionOrder { get => includeExceptionOrder; set { Set(ref includeExceptionOrder, value); } } public bool IncludeExceptionOrder { get => includeExceptionOrder; set { Set(ref includeExceptionOrder, value); } }
public long WaitPurchaseOrderCount { get => waitPurchaseOrderCount; set { Set(ref waitPurchaseOrderCount, value); } }
public long ExceptionOrderCount { get => exceptionOrderCount; set { Set(ref exceptionOrderCount , value); } }
public OrderListViewModel(OrderService orderService, StatisticsService statisticsService, AfterOrderService afterOrderService, GlobalContext globalContext, ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel) public OrderListViewModel(OrderService orderService, StatisticsService statisticsService, AfterOrderService afterOrderService, GlobalContext globalContext, ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel)
{ {
random = new Random(); random = new Random();
@ -200,6 +205,7 @@ namespace BBWY.Client.ViewModels
EditAfterSaleOrderRefundPurchaseAmountCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrderRefundPurchaseAmount); EditAfterSaleOrderRefundPurchaseAmountCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrderRefundPurchaseAmount);
FindAfterSaleOrderCommand = new RelayCommand<object>(FindAfterSaleOrder); FindAfterSaleOrderCommand = new RelayCommand<object>(FindAfterSaleOrder);
SearchOrderCommand.Execute(null); SearchOrderCommand.Execute(null);
Task.Factory.StartNew(LoadOrderCount);
} }
private void InitSearchParam() private void InitSearchParam()
@ -239,8 +245,7 @@ namespace BBWY.Client.ViewModels
{ {
InitSearchParam(); InitSearchParam();
this.OrderState = orderState; this.OrderState = orderState;
//if (orderState != null) Task.Factory.StartNew(LoadOrderCount);
// IncludeAfterOrder = false;
Task.Factory.StartNew(() => LoadOrder(1)); //选择状态查询订单 Task.Factory.StartNew(() => LoadOrder(1)); //选择状态查询订单
} }
@ -248,6 +253,7 @@ namespace BBWY.Client.ViewModels
{ {
InitSearchParam(); InitSearchParam();
IncludeExceptionOrder = true; IncludeExceptionOrder = true;
Task.Factory.StartNew(LoadOrderCount);
Task.Factory.StartNew(() => LoadOrder(1)); Task.Factory.StartNew(() => LoadOrder(1));
} }
@ -255,6 +261,7 @@ namespace BBWY.Client.ViewModels
{ {
InitSearchParam(); InitSearchParam();
IncludeAfterOrder = true; IncludeAfterOrder = true;
Task.Factory.StartNew(LoadOrderCount);
Task.Factory.StartNew(() => LoadOrder(1)); Task.Factory.StartNew(() => LoadOrder(1));
} }
@ -333,7 +340,6 @@ namespace BBWY.Client.ViewModels
LoadNormalOrder(pageIndex); LoadNormalOrder(pageIndex);
} }
private void LoadNormalOrder(int pageIndex) private void LoadNormalOrder(int pageIndex)
{ {
IsLoading = true; IsLoading = true;
@ -419,6 +425,15 @@ namespace BBWY.Client.ViewModels
_ = response.Data.Map(ToDayOrderAchievement); _ = response.Data.Map(ToDayOrderAchievement);
} }
private void LoadOrderCount()
{
var response = statisticsService.GetOrderCountStatistics(globalContext.User.Shop.ShopId, DateTime.Now.Date.AddMonths(-1), DateTime.Now.Date);
if (!response.Success)
return;
WaitPurchaseOrderCount = response.Data.WaitPurchaseCount;
ExceptionOrderCount = response.Data.ExceptionCount;
}
private void DecodeConsignee(Order order) private void DecodeConsignee(Order order)
{ {
var plaintextMobile = string.Empty; var plaintextMobile = string.Empty;

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

@ -75,10 +75,18 @@
</MultiBinding> </MultiBinding>
</c:BButton.Foreground> </c:BButton.Foreground>
</c:BButton> </c:BButton>
<c:BButton Content="等待采购" Width="100" <c:BButton Width="100"
Background="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=等待采购:#8080FF:#F2F2F2}" Background="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=等待采购:#8080FF:#F2F2F2}"
Foreground="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=等待采购:White:#4A4A4A}" Foreground="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=等待采购:White:#4A4A4A}"
Command="{Binding SetOrderStateCommand}" CommandParameter="{x:Static cmodel:OrderState.等待采购}"/> Command="{Binding SetOrderStateCommand}" CommandParameter="{x:Static cmodel:OrderState.等待采购}">
<c:BButton.Content>
<TextBlock>
<Run Text="等待采购"/>
<Run Text="{Binding WaitPurchaseOrderCount,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"
Foreground="{StaticResource Text.Pink}"/>
</TextBlock>
</c:BButton.Content>
</c:BButton>
<c:BButton Content="待出库" Width="100" <c:BButton Content="待出库" Width="100"
Background="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=待出库:#8080FF:#F2F2F2}" Background="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=待出库:#8080FF:#F2F2F2}"
Foreground="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=待出库:White:#4A4A4A}" Foreground="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=待出库:White:#4A4A4A}"
@ -103,10 +111,18 @@
Background="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=已取消:#8080FF:#F2F2F2}" Background="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=已取消:#8080FF:#F2F2F2}"
Foreground="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=已取消:White:#4A4A4A}" Foreground="{Binding OrderState,Converter={StaticResource objConverter},ConverterParameter=已取消:White:#4A4A4A}"
Command="{Binding SetOrderStateCommand}" CommandParameter="{x:Static cmodel:OrderState.已取消}"/> Command="{Binding SetOrderStateCommand}" CommandParameter="{x:Static cmodel:OrderState.已取消}"/>
<c:BButton Content="异常单" Width="100" <c:BButton Width="100"
Background="{Binding IncludeExceptionOrder,Converter={StaticResource objConverter},ConverterParameter=true:#8080FF:#F2F2F2}" Background="{Binding IncludeExceptionOrder,Converter={StaticResource objConverter},ConverterParameter=true:#8080FF:#F2F2F2}"
Foreground="{Binding IncludeExceptionOrder,Converter={StaticResource objConverter},ConverterParameter=true:White:#4A4A4A}" Foreground="{Binding IncludeExceptionOrder,Converter={StaticResource objConverter},ConverterParameter=true:White:#4A4A4A}"
Command="{Binding SetIncludeExceptionOrderCommand}"/> Command="{Binding SetIncludeExceptionOrderCommand}">
<c:BButton.Content>
<TextBlock>
<Run Text="异常单"/>
<Run Text="{Binding ExceptionOrderCount,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"
Foreground="{StaticResource Text.Pink}"/>
</TextBlock>
</c:BButton.Content>
</c:BButton>
<c:BButton Content="售后单" Width="100" <c:BButton Content="售后单" Width="100"
Background="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:#8080FF:#F2F2F2}" Background="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:#8080FF:#F2F2F2}"
Foreground="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:White:#4A4A4A}" Foreground="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:White:#4A4A4A}"

14
BBWY.Server.API/Controllers/StatisticsController.cs

@ -2,6 +2,7 @@
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;
using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace BBWY.Server.API.Controllers namespace BBWY.Server.API.Controllers
@ -48,5 +49,18 @@ namespace BBWY.Server.API.Controllers
{ {
return statisticsBusiness.XingXiangStatistics(xingXiangSearchOrderRequest); return statisticsBusiness.XingXiangStatistics(xingXiangSearchOrderRequest);
} }
/// <summary>
/// bbwy订单选项卡数量统计
/// </summary>
/// <param name="shopId"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
[HttpGet]
public OrderCountStatisticsResponse GetOrderCountStatistics([FromQuery]long shopId, [FromQuery]DateTime startDate, [FromQuery]DateTime endDate)
{
return statisticsBusiness.GetOrderCountStatistics(shopId, startDate, endDate);
}
} }
} }

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

@ -62,7 +62,7 @@ namespace BBWY.Server.Business
.WhereIf(searchOrderRequest.EndDate != null, (o, ocs, oct) => o.StartTime <= searchOrderRequest.EndDate) .WhereIf(searchOrderRequest.EndDate != null, (o, ocs, oct) => o.StartTime <= searchOrderRequest.EndDate)
.WhereIf(searchOrderRequest.IncludeExceptionOrder, (o, ocs, oct) => o.StorageType != null && o.StorageType != Enums.StorageType.SD && .WhereIf(searchOrderRequest.IncludeExceptionOrder, (o, ocs, oct) => o.StorageType != null && o.StorageType != Enums.StorageType.SD &&
(oct.PurchaseAmount == 0M || (oct.PurchaseAmount == 0M ||
oct.PurchaseAmount + oct.DeliveryExpressFreight < o.OrderSellerPrice + o.FreightPrice)) oct.PurchaseAmount + oct.DeliveryExpressFreight > o.OrderSellerPrice + o.FreightPrice))
//.WhereIf(searchOrderRequest.IsContainsAfterSaleOrder != null, (o, ocs, oct) => o.IsAfterSaleOrder == searchOrderRequest.IsContainsAfterSaleOrder) //.WhereIf(searchOrderRequest.IsContainsAfterSaleOrder != null, (o, ocs, oct) => o.IsAfterSaleOrder == searchOrderRequest.IsContainsAfterSaleOrder)
.WhereIf(searchOrderRequest.OnlyDF, (o, ocs, oct) => o.StorageType == Enums.StorageType.) .WhereIf(searchOrderRequest.OnlyDF, (o, ocs, oct) => o.StorageType == Enums.StorageType.)
.WhereIf(searchOrderRequest.ExcludeCanceled, (o, ocs, oct) => o.OrderState != Enums.OrderState.) .WhereIf(searchOrderRequest.ExcludeCanceled, (o, ocs, oct) => o.OrderState != Enums.OrderState.)

29
BBWY.Server.Business/Statistics/StatisticsBusiness.cs

@ -244,5 +244,34 @@ namespace BBWY.Server.Business
}; };
} }
/// <summary>
/// bbwy订单选项卡数量统计
/// </summary>
/// <param name="shopId"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
public OrderCountStatisticsResponse GetOrderCountStatistics(long shopId, DateTime startDate, DateTime endDate)
{
startDate = startDate.Date;
endDate = endDate.Date.AddDays(1).AddSeconds(-1);
var response = new OrderCountStatisticsResponse();
response.WaitPurchaseCount = fsql.Select<Order>().Where(o => o.ShopId == shopId &&
o.StartTime >= startDate &&
o.StartTime <= endDate &&
o.OrderState == Enums.OrderState.).Count();
response.ExceptionCount = fsql.Select<Order, OrderCost>().LeftJoin((o, oc) => o.Id == oc.OrderId)
.Where((o, oc) => o.StartTime >= startDate &&
o.StartTime <= endDate &&
o.StorageType != null && o.StorageType != Enums.StorageType.SD &&
(oc.PurchaseAmount == 0M ||
oc.PurchaseAmount +
oc.DeliveryExpressFreight >
o.OrderSellerPrice +
o.FreightPrice)).Count();
return response;
}
} }
} }

9
BBWY.Server.Model/Dto/Response/Statistics/OrderCountStatisticsResponse.cs

@ -0,0 +1,9 @@
namespace BBWY.Server.Model.Dto
{
public class OrderCountStatisticsResponse
{
public long WaitPurchaseCount { get; set; }
public long ExceptionCount { get; set; }
}
}
Loading…
Cancel
Save