Browse Source

订单导出

qianyi
shanji 3 years ago
parent
commit
f73ec89617
  1. 12
      BBWY.Server.API/Controllers/OrderController.cs
  2. 78
      BBWY.Server.Business/Order/OrderBusiness.cs
  3. 3
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs
  4. 70
      BBWY.Server.Model/Dto/Response/Order/ExportOrderResponse.cs

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

@ -2,6 +2,7 @@
using BBWY.Server.Model.Dto;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace BBWY.Server.API.Controllers
@ -27,6 +28,17 @@ namespace BBWY.Server.API.Controllers
return orderBusiness.GetOrderList(searchOrderRequest);
}
/// <summary>
/// 订单导出
/// </summary>
/// <param name="searchOrderRequest"></param>
/// <returns></returns>
[HttpPost]
public IList<ExportOrderResponse> ExportOrderList([FromBody] SearchOrderRequest searchOrderRequest)
{
return orderBusiness.ExportOrderList(searchOrderRequest);
}
/// <summary>
/// 获取单个订单详情
/// </summary>

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

@ -168,6 +168,84 @@ namespace BBWY.Server.Business
return response;
}
public IList<ExportOrderResponse> ExportOrderList(SearchOrderRequest searchOrderRequest)
{
if (searchOrderRequest.OrderState == Enums.OrderState.)
searchOrderRequest.ExcludeCanceled = false;
if (searchOrderRequest.EndDate != null)
searchOrderRequest.EndDate = searchOrderRequest.EndDate.Value.Date.AddDays(1).AddSeconds(-1);
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))
{
select = select.Where((o, ocs, oct, ods) => o.Id == searchOrderRequest.OrderId);
}
else
{
if (!string.IsNullOrEmpty(searchOrderRequest.Sku) || !string.IsNullOrEmpty(searchOrderRequest.ProductNo))
{
var childSelect = fsql.Select<OrderSku>().As("osku")
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.Sku) == false, osku => osku.SkuId == searchOrderRequest.Sku)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.ProductNo) == false, osku => osku.ProductNo == searchOrderRequest.ProductNo);
select = select.Where((o, ocs, oct, ods) => childSelect.Where(osku => osku.OrderId == o.Id).Any());
}
select = select.WhereIf(searchOrderRequest.OrderState != null, (o, ocs, oct, ods) => o.OrderState == searchOrderRequest.OrderState)
.WhereIf(searchOrderRequest.StartDate != null, (o, ocs, oct, ods) => o.StartTime >= searchOrderRequest.StartDate)
.WhereIf(searchOrderRequest.EndDate != null, (o, ocs, oct, ods) => o.StartTime <= searchOrderRequest.EndDate)
.WhereIf(searchOrderRequest.OnlyDF, (o, ocs, oct, ods) => o.StorageType == Enums.StorageType.)
.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, ods) => o.ShopId == searchOrderRequest.ShopId)
.OrderByDescending((o, ocs, oct, ods) => o.StartTime);
var orderSourceList = select.ToList((o, ocs, oct, ods) => new ExportOrderResponse()
{
OrderId = o.Id,
FreightPrice = o.FreightPrice,
OrderTotalPrice = o.OrderTotalPrice,
OrderStartTime = o.StartTime.Value,
StorageType = o.StorageType,
ConsigneeStr = ocs.ContactName + "|" + ocs.Mobile + "|" + ocs.Province + ocs.City + ocs.County + ocs.Address,
DeliveryExpressFreight = oct.DeliveryExpressFreight,
PlatformCommissionAmount = oct.PlatformCommissionAmount,
Profit = oct.Profit,
TotalCost = oct.SDCommissionAmount + oct.PlatformCommissionAmount + oct.PurchaseAmount + oct.DeliveryExpressFreight,
PurchaseOrderIds = ods.PurchaseOrderId,
OrderState = o.OrderState.Value
});
var orderIdList = orderSourceList.Select(o => o.OrderId).ToList();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList();
var orderCostDetailGroup = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId)).GroupBy(ocd => ocd.OrderId).ToList(g => new
{
OrderId = g.Key,
SkuAmount = g.Sum(g.Value.SkuAmount),
FirstFreight = g.Sum(g.Value.FirstFreight),
StorageAmount = g.Sum(g.Value.StorageAmount)
});
foreach (var order in orderSourceList)
{
var statistics = orderCostDetailGroup.FirstOrDefault(g => g.OrderId == order.OrderId);
order.FirstFreight = statistics?.FirstFreight ?? 0M;
order.PurchaseSkuAmount = statistics?.SkuAmount ?? 0M;
order.StorageAmount = statistics?.StorageAmount ?? 0M;
order.SkuIds = string.Join("|", orderSkuList.Where(osku => osku.OrderId == order.OrderId));
order.ProfitRatio = order.TotalCost == 0 ? 0 : Math.Round(order.Profit / order.TotalCost * 100, 2);
}
return orderSourceList;
}
public OrderResponse GetOrderById(string orderId)
{
var order = fsql.Select<Order, OrderConsignee, OrderCost, OrderDropShipping>().LeftJoin((o, ocs, oct, ods) => o.Id == ocs.OrderId)

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

@ -91,9 +91,10 @@ namespace BBWY.Server.Business
xxRespose.Profit += profit;
if (order.StorageType == Enums.StorageType.SD)
{
var sdCommissionAmount = order.SDCommissionAmount.Value / skuCount * group.Count();
xxRespose.SDOrderCount++;
xxRespose.SDOrderAmount += procutAmount;
xxRespose.SDOrderCost += purchaseAmount + deliveryFreight + commissionAmount;
xxRespose.SDOrderCost += purchaseAmount + deliveryFreight + commissionAmount + sdCommissionAmount;
}
}
}

70
BBWY.Server.Model/Dto/Response/Order/ExportOrderResponse.cs

@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace BBWY.Server.Model.Dto
{
public class ExportOrderResponse
{
public string OrderId { get; set; }
public DateTime OrderStartTime { get; set; }
public string SkuIds { get; set; }
/// <summary>
/// 代发订单号
/// </summary>
public string PurchaseOrderIds { get; set; }
/// <summary>
/// 订单总额
/// </summary>
public decimal OrderTotalPrice { get; set; }
/// <summary>
/// 采购金额
/// </summary>
public decimal PurchaseSkuAmount { get; set; }
/// <summary>
/// 头程费用
/// </summary>
public decimal FirstFreight { get; set; }
/// <summary>
/// 仓储费
/// </summary>
public decimal StorageAmount { get; set; }
/// <summary>
/// 发货快递费
/// </summary>
public decimal DeliveryExpressFreight { get; set; }
/// <summary>
/// 平台扣点金额
/// </summary>
public decimal PlatformCommissionAmount { get; set; }
/// <summary>
/// 补差金额(用户支付)
/// </summary>
public decimal FreightPrice { get; set; }
/// <summary>
/// 总成本
/// </summary>
public decimal TotalCost { get; set; }
public decimal Profit { get; set; }
public decimal ProfitRatio { get; set; }
public string ConsigneeStr { get; set; }
public Enums.StorageType? StorageType { get; set; }
public Enums.OrderState OrderState { get; set; }
}
}
Loading…
Cancel
Save