Commit 6eb2888a by zhoujinhui

周负利润数据完善

parent 610d5333
......@@ -930,5 +930,24 @@ where t1.`code`=@code limit 1
var response_json = HttpHelper.Request(url, RequestType.GET, timeout: 1000 * 60 * 30);
return response_json.ToObj<api_bailun_character_response_dto>().result;
}
/// <summary>
/// 获取pds销量
/// </summary>
/// <param name="skus"></param>
/// <returns></returns>
public static List<PdsProviderProductSalesDto> GetPdsProviderProductSales(List<string> skus)
{
try
{
var url = ConfigHelper.GetValue("PdsProductsales");
var response_json = HttpHelper.Request(url, RequestType.POST, skus.ToJson(), entype: "application/json", timeout: 1000 * 60 * 30);
return response_json.ToObj<List<PdsProviderProductSalesDto>>();
}
catch (Exception)
{
return new List<PdsProviderProductSalesDto>();
}
}
}
}
......@@ -15,12 +15,21 @@ namespace AutoTurnOver.DB
StringBuilder sql = new StringBuilder();
sql.Append(@" SELECT t1.*,t2.sku_title_cn FROM dc_auto_week_negative_profit_details AS t1
LEFT JOIN dc_base_sku AS t2 ON t2.bailun_sku = t1.bailun_sku
WHERE 1 = 1 ORDER BY t1.create_date_time DESC ");
WHERE 1 = 1 ");
if (!string.IsNullOrWhiteSpace(m.bailun_sku))
{
sql.Append($" AND t1.bailun_sku = '{m.bailun_sku}' ");
}
sql.Append(" ORDER BY t1.create_date_time DESC ");
try
{
if (limit > 0 && offset > 0)
{
var obj = _connection.Page<week_negative_profit_details_page_output_dto>(offset, limit, sql.ToString(), ref total);
return obj.AsList();
}
return _connection.Query<week_negative_profit_details_page_output_dto>(sql.ToString()).ToList();
}
catch (Exception)
{
return new List<week_negative_profit_details_page_output_dto>();
......@@ -47,24 +56,42 @@ namespace AutoTurnOver.DB
/// <param name="limit"></param>
/// <param name="total"></param>
/// <returns></returns>
public static List<dc_report_gmv_extend> GetGmvPageList(int offset, int limit, ref int total)
public static List<query_week_negative_profit_dto> GetGmvPageList(DateTime startTime, DateTime endtime, int offset, int limit, ref int total)
{
StringBuilder sql = new StringBuilder();
sql.Append(@"
SELECT t1.bailun_sku,SUM(t1.amount_sales_usd_7)AS amount_sales_usd_7,SUM(t1.bailun_sku_quantity_ordered_7)AS bailun_sku_quantity_ordered_7,
SUM(t1.bailun_sku_quantity_ordered_7*t2.unit_price)AS bailun_sku_quantity_ordered_30
sql.Append($@"
SELECT t1.bailun_sku,t3.declare_title_cn,SUM(t1.amount_sales_usd_7)AS amount_sales_usd_7,
SUM(t1.bailun_sku_quantity_ordered_7)AS bailun_sku_quantity_ordered_7,
SUM(t1.bailun_sku_quantity_ordered_7*t3.unit_price)AS weekly_cost_of_sales,
CASE WHEN t2.weekly_refunds_num>0 THEN t2.weekly_refunds_num ELSE 0 END AS weekly_refunds_num,
CASE WHEN t2.weekly_refund_amount>0 THEN t2.weekly_refund_amount ELSE 0 END AS weekly_refund_amount,
CASE WHEN t4.profit_total>0 THEN t4.profit_total ELSE 0 END AS profit_total,
CASE WHEN t4.amount_shipping>0 THEN t4.amount_shipping ELSE 0 END AS amount_shipping,
CASE WHEN t4.profit_rate>0 THEN t4.profit_rate ELSE 0 END AS profit_rate
FROM dc_report_gmv_extend AS t1
LEFT JOIN dc_base_sku AS t2 ON t2.bailun_sku = t1.bailun_sku
WHERE 1=1 GROUP BY bailun_sku
LEFT JOIN (
SELECT bailun_sku,SUM(bailun_sku_quantity_refund)AS weekly_refunds_num,
SUM(bailun_sku_quantity_refund*bailun_sku_unit_price)AS weekly_refund_amount
FROM dc_base_crm_refund WHERE refund_time>='{startTime}' AND refund_time<'{endtime}' GROUP BY bailun_sku
)AS t2 ON t2.bailun_sku = t1.bailun_sku
INNER JOIN dc_base_sku AS t3 ON t3.bailun_sku = t1.bailun_sku
LEFT JOIN(SELECT bailun_sku,
SUM(profit_total)profit_total,SUM(amount_shipping)amount_shipping,SUM(profit_rate)AS profit_rate FROM dc_base_oms_sku_30
WHERE gmt_create>= '{startTime}' AND gmt_create< '{endtime}'
and has_fba_s = 0 and has_delete = 0 and has_scalp = 0
and has_buyer_remark = 0 and has_platsku_remark = 0 and has_innersale = 0 and bailun_order_status !='Canceled'
and platform_order_type != '手工单' GROUP BY bailun_sku)AS t4 ON t4.bailun_sku = t1.bailun_sku
WHERE t1.sales_reset_date>='{startTime}' AND t1.sales_reset_date<'{endtime}' AND t1.bailun_sku_quantity_ordered_7>0
GROUP BY t1.bailun_sku ORDER BY t1.bailun_sku ASC
");
try
{
var obj = _connection.Page<dc_report_gmv_extend>(offset, limit, sql.ToString(), ref total);
var obj = _connection.Page<query_week_negative_profit_dto>(offset, limit, sql.ToString(), ref total);
return obj.AsList();
}
catch (Exception)
{
return new List<dc_report_gmv_extend>();
return new List<query_week_negative_profit_dto>();
}
}
......
......@@ -26,7 +26,16 @@ namespace AutoTurnOver.DB
sql.Append(@" SELECT t1.*,t2.product_code,t3.warehouse_name FROM dc_auto_week_redundancy_details AS t1
INNER JOIN dc_base_sku AS t2 ON t2.bailun_sku = t1.bailun_sku
LEFT JOIN dc_base_warehouse AS t3 ON t3.warehouse_code = t1.warehouse_code
WHERE 1=1 ORDER BY t1.create_date_time DESC ");
WHERE 1=1 ");
if (!string.IsNullOrWhiteSpace(m.bailun_sku))
{
sql.Append($" AND t1.bailun_sku = '{m.bailun_sku}' ");
}
if (!string.IsNullOrWhiteSpace(m.warehousecode))
{
sql.Append($" AND t1.warehouse_code = '{m.warehousecode}' ");
}
sql.Append(" ORDER BY t1.create_date_time DESC ");
try
{
if (limit > 0)
......
......@@ -28,13 +28,26 @@ namespace AutoTurnOver.DB
FROM dc_auto_week_shortage_details AS t1
LEFT JOIN dc_base_warehouse AS t3 ON t3.warehouse_code = t1.warehouse_code
LEFT JOIN dc_base_sku AS t2 ON t2.bailun_sku = t1.bailun_sku
WHERE 1=1 ORDER BY t1.create_date_time DESC
WHERE 1=1
");
if (!string.IsNullOrWhiteSpace(m.bailun_sku))
{
sql.Append($" AND t1.bailun_sku = '{m.bailun_sku}' ");
}
if (!string.IsNullOrWhiteSpace(m.warehousecode))
{
sql.Append($" AND t1.warehouse_code = '{m.warehousecode}' ");
}
sql.Append(" ORDER BY t1.create_date_time DESC ");
try
{
if(limit > 0)
{
var obj = _connection.Page<week_shortage_details_page_output_dto>(offset, limit, sql.ToString(), ref total);
return obj.AsList();
}
return _connection.Query<week_shortage_details_page_output_dto>(sql.ToString()).AsList();
}
catch (Exception)
{
return new List<week_shortage_details_page_output_dto>();
......@@ -87,7 +100,9 @@ namespace AutoTurnOver.DB
{
StringBuilder sql = new StringBuilder();
sql.Append($@"
SELECT t1.*,t3.first_inbound_date,t4.bailun_sku_quantity_ordered FROM(
SELECT t1.*,t3.first_inbound_date,t4.bailun_sku_quantity_ordered,t5.history_sevenday_sales_ebay,t6.bailun_inner_sku,
(( case when t5.average_overdue> 0 then t5.average_overdue else 1 end ) * t5.quantity_safe_inventory ) as 'quantity_safe'
FROM(
SELECT bailun_sku,warehouse_code,MAX(gmt_out_stock_modified) AS gmt_out_stock_modified FROM dc_mid_transit
WHERE gmt_out_stock_modified>= '{startTime}' AND gmt_out_stock_modified< '{endtime}' GROUP BY bailun_sku,warehouse_code
) AS t1
......@@ -98,7 +113,9 @@ namespace AutoTurnOver.DB
and has_fba_s = 0 and has_delete = 0 and has_scalp = 0
and has_buyer_remark = 0 and has_platsku_remark = 0 and has_innersale = 0 and bailun_order_status !='Canceled'
and platform_order_type != '手工单' GROUP BY bailun_sku,warehouse_code
)AS t4 ON t4.bailun_sku = t1.bailun_sku AND t4.warehouse_code = t1.warehouse_code");
)AS t4 ON t4.bailun_sku = t1.bailun_sku AND t4.warehouse_code = t1.warehouse_code
LEFT JOIN dc_auto_turnover AS t5 ON t5.bailun_sku = t1.bailun_sku AND t5.warehouse_code = t1.warehouse_code
LEFT JOIN dc_base_sku AS t6 ON t6.bailun_sku = t1.bailun_sku ");
try
{
var obj = _connection.Page<gmt_out_stock_page_output_dto>(offset, limit, sql.ToString(), ref total);
......
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models.ApiDto
{
/// <summary>
/// PDS销量
/// </summary>
public class PdsProviderProductSalesDto
{
/// <summary>
/// 内部商品编码
/// </summary>
public string ProductCode { get; set; }
/// <summary>
/// PDS 开发竞品Item
/// </summary>
public string ProductItemId { get; set; }
/// <summary>
/// 平台站点
/// </summary>
public string PlatAndSite { get; set; }
/// <summary>
/// Ana 市场模糊7日销量
/// </summary>
public decimal? AnaMarketVagueSevenThSales { get; set; }
/// <summary>
/// 第一销售平台7日(源始平台)
/// </summary>
public decimal? FirstSalesPlatSevenTh { get; set; }
/// <summary>
/// 第二销售平台7日
/// </summary>
public decimal? SecondSalesPlatSevenTh { get; set; }
/// <summary>
/// 当前商品Sku编码列表
/// </summary>
public List<string> ProductSkuCodeList { get; set; } = new List<string>();
}
}
......@@ -36,5 +36,20 @@ namespace AutoTurnOver.Models.ApiDto.WeeklyStatistics
/// 采购数量
/// </summary>
public int? purchase_num { get; set; }
/// <summary>
/// 过去7天日均
/// </summary>
public decimal? history_sevenday_sales_ebay { get; set; }
/// <summary>
/// 内部编码sku
/// </summary>
public string bailun_inner_sku { get; set; }
/// <summary>
/// 安全库存
/// </summary>
public decimal? quantity_safe { get; set; }
}
}
namespace AutoTurnOver.Models.ApiDto.WeeklyStatistics
{
public class query_week_negative_profit_dto
{
/// <summary>
///
/// </summary>
public string bailun_sku { get; set; }
/// <summary>
///
/// </summary>
public string declare_title_cn { get; set; }
/// <summary>
/// 周销售额
/// </summary>
public decimal amount_sales_usd_7 { get; set; }
/// <summary>
/// 周销售数量
/// </summary>
public decimal bailun_sku_quantity_ordered_7 { get; set; }
/// <summary>
/// 周销售成本
/// </summary>
public decimal weekly_cost_of_sales { get; set; }
/// <summary>
/// 周退款数
/// </summary>
public int weekly_refunds_num { get; set; }
/// <summary>
/// 周总退款额
/// </summary>
public decimal weekly_refund_amount { get; set; }
/// <summary>
/// 销售利润
/// </summary>
public decimal profit_total { get; set; }
/// <summary>
/// 运费
/// </summary>
public decimal amount_shipping { get; set; }
/// <summary>
/// 利润率
/// </summary>
public decimal profit_rate { get; set; }
}
}
......@@ -40,7 +40,7 @@ namespace AutoTurnOver.Models
/// <summary>
/// 过去7天日均
/// </summary>
public int seven_days_average { get; set; }
public decimal seven_days_average { get; set; }
/// <summary>
/// 缺货时间
......@@ -55,22 +55,22 @@ namespace AutoTurnOver.Models
/// <summary>
/// ana市场模糊7日均
/// </summary>
public int ana_seven_days_average { get; set; }
public decimal ana_seven_days_average { get; set; }
/// <summary>
/// 第一销售平台7日均
/// </summary>
public int first_sales_platform_average { get; set; }
public decimal first_sales_platform_average { get; set; }
/// <summary>
/// 第二销售平台7日均
/// </summary>
public int second_sales_platform_average { get; set; }
public decimal second_sales_platform_average { get; set; }
/// <summary>
/// 安全库存
/// </summary>
public int safety_stock { get; set; }
public decimal safety_stock { get; set; }
/// <summary>
/// 数据开始时间
......
......@@ -58,10 +58,12 @@ namespace AutoTurnOver.Services
{
int limit = 20;
int total = 0;
DateTime startTime = DateHelper.GetWeekFirstDayMon(DateTime.Now);
DateTime endtime = DateHelper.GetWeekLastDaySun(DateTime.Now).AddDays(1).AddMilliseconds(-1);
for (int i = 1; i < 10000; i++)
{
int offset = (i - 1) * limit;
var dataList = dc_auto_week_negative_profit_details_dao.GetGmvPageList(offset, limit, ref total);
var dataList = dc_auto_week_negative_profit_details_dao.GetGmvPageList(startTime, endtime, offset, limit, ref total);
if (dataList.Count <= 0) break;
foreach (var item in dataList)
{
......@@ -70,7 +72,12 @@ namespace AutoTurnOver.Services
bailun_sku = item.bailun_sku,
weekly_sales = Convert.ToInt32(item.bailun_sku_quantity_ordered_7),
weekly_gmv = item.amount_sales_usd_7,
weekly_cost = item.bailun_sku_quantity_ordered_30,
weekly_cost = item.weekly_cost_of_sales,
weekly_refunds_num = item.weekly_refunds_num,
weekly_refund_amount = item.weekly_refund_amount,
amount_of_profit = item.profit_total,
profit_margin = item.profit_rate,
refund_rate = item.weekly_refund_amount>0? Math.Round(item.weekly_refund_amount / item.amount_sales_usd_7,2):0,
create_date_time = DateTime.Now,
start_date = DateHelper.GetWeekFirstDayMon(DateTime.Now.AddDays(-1)),
end_date = DateHelper.GetWeekLastDaySun(DateTime.Now.AddDays(-1))
......@@ -129,10 +136,13 @@ namespace AutoTurnOver.Services
var dataList = dc_auto_week_shortage_dao.GetGmtOutStockPageList(startTime, endtime, offset, limit, ref total);
if (dataList.Count <= 0) break;
var skus = dataList.Select(x => x.bailun_sku).ToList();
var bailun_inner_skus = dataList.Where(x => !string.IsNullOrWhiteSpace(x.bailun_inner_sku)).Select(x => x.bailun_inner_sku).ToList();
var resultList = ApiUtility.GetPdsProviderProductSales(bailun_inner_skus);
var findPurchases = dc_auto_week_shortage_dao.GetSkuPurchaseList(skus, startTime, endtime);
foreach (var item in dataList)
{
var purchaseModel = findPurchases.FirstOrDefault(x => x.bailun_sku == item.bailun_sku);
var pdsModel = resultList.FirstOrDefault(x => x.ProductCode == item.bailun_sku) ?? new Models.ApiDto.PdsProviderProductSalesDto();
var model = new Models.dc_auto_week_shortage_details
{
create_date_time = DateTime.Now,
......@@ -141,8 +151,14 @@ namespace AutoTurnOver.Services
last_synch_time = DateTime.Now,
warehouse_code = item.warehouse_code,
warehousing_time = item.first_inbound_date,
historical_sales_quantity = item.bailun_sku_quantity_ordered??0,
historical_purchase_quantity = purchaseModel?.purchase_num??0,
historical_sales_quantity = item.bailun_sku_quantity_ordered ?? 0,
historical_purchase_quantity = purchaseModel?.purchase_num ?? 0,
pds_item_id = pdsModel.ProductItemId,
first_sales_platform_average = pdsModel.FirstSalesPlatSevenTh ?? 0,
second_sales_platform_average = pdsModel.SecondSalesPlatSevenTh ?? 0,
ana_seven_days_average = pdsModel.AnaMarketVagueSevenThSales ?? 0,
seven_days_average = item.history_sevenday_sales_ebay??0,
safety_stock = item.quantity_safe??0,
start_date = DateHelper.GetWeekFirstDayMon(DateTime.Now.AddDays(-1)),
end_date = DateHelper.GetWeekLastDaySun(DateTime.Now.AddDays(-1))
};
......
......@@ -20,5 +20,6 @@
"pps-sys": {
"review": "https://pps.bailuntec.com/Api/amazon/analyze/Download/GetReviewInfoBy",
"pps_sell_product": "http://pps.bailuntec.com/WalmartApi/Publish/GetWithSellProductAsync"
}
},
"PdsProductsales": "http://doc.bailuntec.com:6032/providerwmsproductsales"
}
......@@ -13,5 +13,6 @@
"pps-sys": {
"review": "https://pps.bailuntec.com/Api/amazon/analyze/Download/GetReviewInfoBy",
"pps_sell_product": "http://pps.bailuntec.com/WalmartApi/Publish/GetWithSellProductAsync"
}
},
"PdsProductsales": "http://doc.bailuntec.com:6032/providerwmsproductsales"
}
\ No newline at end of file
......@@ -20,5 +20,6 @@
"pps-sys": {
"review": "https://pps.bailuntec.com/Api/amazon/analyze/Download/GetReviewInfoBy",
"pps_sell_product": "http://pps.bailuntec.com/WalmartApi/Publish/GetWithSellProductAsync"
}
},
"PdsProductsales": "http://doc.bailuntec.com:6032/providerwmsproductsales"
}
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