Commit 5edb3450 by guanzhenshan

增加获取sku的销售数量、销售额、利润接口

parent 4d72aa27
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.Api
{
public class requestGetSkuSaleCount
{
public List<string> skus { get; set; }
public DateTime start { get; set; }
public DateTime? end { get; set; }
public string platform { get; set; }
}
}
...@@ -9,11 +9,24 @@ namespace Bailun.DC.Models.Stock ...@@ -9,11 +9,24 @@ namespace Bailun.DC.Models.Stock
/// </summary> /// </summary>
public class mSkuStock public class mSkuStock
{ {
/// <summary>
///
/// </summary>
public string bailun_sku { get; set; } public string bailun_sku { get; set; }
/// <summary>
/// 仓库编码
/// </summary>
public string warehouse_code { get; set; } public string warehouse_code { get; set; }
/// <summary>
/// 可用库存
/// </summary>
public int usable_stock { get; set; } public int usable_stock { get; set; }
/// <summary>
/// 占用库存
/// </summary>
public int occupy_stock { get; set; }
} }
} }
...@@ -559,11 +559,7 @@ namespace Bailun.DC.Services ...@@ -559,11 +559,7 @@ namespace Bailun.DC.Services
s += item.c_id + ","; s += item.c_id + ",";
GetChildrenCategory(list, item.c_id, ref s); GetChildrenCategory(list, item.c_id, ref s);
} }
} }
} }
#region 汇率实体 ExchangeRate #region 汇率实体 ExchangeRate
......
...@@ -1252,7 +1252,31 @@ namespace Bailun.DC.Services ...@@ -1252,7 +1252,31 @@ namespace Bailun.DC.Services
#endregion #endregion
#region 库存
/// <summary>
/// 获取sku的实时总库存
/// </summary>
/// <param name="skus"></param>
/// <returns></returns>
public List<mSkuStock> ListStock(List<string> skus)
{
var sql = $"select bailun_sku,sum(usable_stock) usable_stock,sum(occupy_stock) occupy_stock from dc_base_stock where bailun_sku in ('{string.Join("','",skus)}')";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString_read))
{
if(cn.State== ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<mSkuStock>(sql).AsList();
return obj;
}
}
#endregion
} }
} }
using Bailun.DC.Models.Orders;
using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using Dapper;
namespace Bailun.DC.Services
{
public class SkuOrderServices
{
/// <summary>
/// 获取sku的销量、销售额、利润数据
/// </summary>
/// <param name="skus"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <param name="platform"></param>
/// <returns></returns>
public List<dc_base_oms_sku> ListSkuSaleCount(List<string> skus, DateTime start, DateTime? end, string platform)
{
var sql = $@"select t1.platform_type,t1.bailun_sku,sum(t1.bailun_sku_quantity_ordered) as bailun_sku_quantity_ordered,sum(t1.amount_sales*t1.seller_order_exchange_rate*t1.bailun_sku_quantity_ordered) as amount_sales,sum(t1.profit_total*t1.bailun_sku_quantity_ordered) as profit_total from dc_base_oms_sku t1
where t1.has_delete=0 and t1.company_id=1 and t1.has_scalp=0 and t1.has_innersale=0 and t1.bailun_interception_status in ('None','Failed') and t1.bailun_order_status!='Canceled' and ((t1.platform_type!='FBA' and t1.bailun_order_status!='CantHandle') or t1.platform_type='FBA') and t1.paid_time>='{start.ToString("yyyy-MM-dd")}'
";
sql += $" and t1.bailun_sku in ('{string.Join("','",skus)}')";
if (end.HasValue)
{
sql += $" and t1.paid_time<'{end.Value.AddDays(1).ToString("yyyy-MM-dd")}'";
}
if (!string.IsNullOrWhiteSpace(platform))
{
sql += $" and t1.platform_type='{platform}'";
}
sql += " group by t1.platform_type,t1.bailun_sku";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString_read))
{
if(cn.State== System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<dc_base_oms_sku>(sql);
return obj.AsList();
}
}
}
}
...@@ -1002,9 +1002,77 @@ namespace Bailun.DC.Web.Controllers ...@@ -1002,9 +1002,77 @@ namespace Bailun.DC.Web.Controllers
}); });
} }
}
/// <summary>
/// 获取sku的销售数量、销售额、利润
/// </summary>
/// <param name="skus"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <param name="platform"></param>
/// <returns></returns>
[HttpPost]
public JsonResult GetSkuSaleCount([FromBody] Models.Api.requestGetSkuSaleCount m)
{
try
{
var objSkuOrder = new Services.SkuOrderServices().ListSkuSaleCount(m.skus, m.start, m.end, m.platform);
var objSkuStock = new Services.InventoryServices().ListStock(m.skus);
if (string.IsNullOrEmpty(m.platform))
{
var obj = m.skus.Select(a => new
{
bailun_sku = a,
salecount = objSkuOrder.Where(o => o.bailun_sku == a)?.Sum(b => b.bailun_sku_quantity_ordered) ?? 0,
saleamount = objSkuOrder.Where(o => o.bailun_sku == a)?.Sum(b => b.amount_sales) ?? 0,
profit = objSkuOrder.Where(o => o.bailun_sku == a)?.Sum(b => b.profit_total) ?? 0,
stock = objSkuStock.Where(s => s.bailun_sku == a)?.Sum(b => b.occupy_stock + b.usable_stock) ?? 0,
platform = ""
});
return Json(new
{
success = true,
msg = "",
data = obj
});
}
else
{
var obj = m.skus.Select(a => new
{
bailun_sku = a,
salecount = objSkuOrder.Where(o => o.bailun_sku == a && o.platform_type == m.platform)?.Sum(b => b.bailun_sku_quantity_ordered) ?? 0,
saleamount = objSkuOrder.Where(o => o.bailun_sku == a && o.platform_type == m.platform)?.Sum(b => b.amount_sales) ?? 0,
profit = objSkuOrder.Where(o => o.bailun_sku == a && o.platform_type == m.platform)?.Sum(b => b.profit_total) ?? 0,
stock = objSkuStock.Where(s => s.bailun_sku == a)?.Sum(b => b.occupy_stock + b.usable_stock) ?? 0,
platform = m.platform
});
return Json(new
{
success = true,
msg = "",
data = obj
});
}
}
catch (Exception ex)
{
return Json(new {
success = false,
msg = ex.Message,
});
}
} }
//public JsonResult TestInsertBuyer() //public JsonResult TestInsertBuyer()
//{ //{
// using (var read = new System.IO.StreamReader(@"C:\Allan\百伦\2020年之前的客户.csv")) // using (var read = new System.IO.StreamReader(@"C:\Allan\百伦\2020年之前的客户.csv"))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment