Commit 8e171ad1 by 泽锋 李

新增当前页导出

parent 3dbed57b
...@@ -587,6 +587,11 @@ namespace AutoTurnOver.Models ...@@ -587,6 +587,11 @@ namespace AutoTurnOver.Models
public decimal history_thirtyday_sales_walmart { get; set; } public decimal history_thirtyday_sales_walmart { get; set; }
} }
public class ana_search_dto: Condition_AutoTurnOver
{
public int page { get; set; }
public int rows { get; set; }
}
public class Condition_AutoTurnOver public class Condition_AutoTurnOver
{ {
......
...@@ -719,7 +719,7 @@ namespace AutoTurnOver.Services ...@@ -719,7 +719,7 @@ namespace AutoTurnOver.Services
} }
public string ProfitAnalysisExport(Condition_AutoTurnOver m, out int orows) public string ProfitAnalysisExport(ana_search_dto m, out int orows)
{ {
try try
{ {
...@@ -727,90 +727,92 @@ namespace AutoTurnOver.Services ...@@ -727,90 +727,92 @@ namespace AutoTurnOver.Services
var fileName = AppContext.BaseDirectory + $@"周转利润分析-{DateTime.Now.ToString("yyyyMMddHHmmss")}{Guid.NewGuid()}.csv"; var fileName = AppContext.BaseDirectory + $@"周转利润分析-{DateTime.Now.ToString("yyyyMMddHHmmss")}{Guid.NewGuid()}.csv";
int page = 1; int page = 1;
int rows = 100000; int rows = 100000;
orows = 0;
while (true) if (m.page > 0)
{ {
int total = 0; page = m.page;
var offset = (page - 1) * rows; rows = m.rows;
var limit = rows; }
var list = ProfitAnalysis(m, offset, limit, ref total, "", "");
orows += list.Count(); orows = 0;
if (list == null || list.Count <= 0) break; int total = 0;
var offset = (page - 1) * rows;
DataTable table = new DataTable(); var limit = rows;
string[] cols = new string[] { "sku","产品名称","商品编码", "国家", "仓库类型", "仓库", "默认调拨方式", "180天日均", "90天日均", "30天日均","7天日均","加权日均销量","预测日均销量", "采购单价", "单位重量", "实际建议周转数", var list = ProfitAnalysis(m, offset, limit, ref total, "", "");
orows += list.Count();
DataTable table = new DataTable();
string[] cols = new string[] { "sku","产品名称","商品编码", "国家", "仓库类型", "仓库", "默认调拨方式", "180天日均", "90天日均", "30天日均","7天日均","加权日均销量","预测日均销量", "采购单价", "单位重量", "实际建议周转数",
"实际建议周转金额", "实际周转数", "实际周转运费", "实际运费单价", "海运周转数(推荐海运)", "海运周转金额", "海运周转运费", "空运周转数(推荐空运)", "空运周转金额", "实际建议周转金额", "实际周转数", "实际周转运费", "实际运费单价", "海运周转数(推荐海运)", "海运周转金额", "海运周转运费", "空运周转数(推荐空运)", "空运周转金额",
"空运周转运费","实际-海运运费差值", "实际-海运周转采购金额差值" ,"实际-空运运费差值", "实际-空运周转采购金额差值", "海运-空运运费差值", "海运-空运周转采购金额差值", "安全库存数量", "空运周转天数", "实际周转天数", "空运周转运费","实际-海运运费差值", "实际-海运周转采购金额差值" ,"实际-空运运费差值", "实际-空运周转采购金额差值", "海运-空运运费差值", "海运-空运周转采购金额差值", "安全库存数量", "空运周转天数", "实际周转天数",
"海运周转天数", "30天预测销量海运运费-实际周转运费金额", "30天预测销量空运运费-实际周转运费金额", "30天预测销量空运运费-海运周转运费金额" "海运周转天数", "30天预测销量海运运费-实际周转运费金额", "30天预测销量空运运费-实际周转运费金额", "30天预测销量空运运费-海运周转运费金额"
, "差值(实际-海运)/实际周转采购金额占比" , "差值(海运-空运)/实际周转采购金额占比" , "差值(空运-实际)/实际周转采购金额占比" , "差值(实际-海运)/实际周转采购金额占比" , "差值(海运-空运)/实际周转采购金额占比" , "差值(空运-实际)/实际周转采购金额占比"
, "海运与实际运费差额/库存差额" , "空运与实际运费差额/库存差额" , "30天销量海运与实际运费差额/库存金额" , "30天销量空运与实际运费差额/库存金额" , "补海运周转数","补海运周转金额" , "海运与实际运费差额/库存差额" , "空运与实际运费差额/库存差额" , "30天销量海运与实际运费差额/库存金额" , "30天销量空运与实际运费差额/库存金额" , "补海运周转数","补海运周转金额"
}; };
foreach (var item in cols) foreach (var item in cols)
{ {
table.Columns.Add(item); table.Columns.Add(item);
}
foreach (var itemData in list)
{
DataRow row = table.NewRow();
row["sku"] = itemData.bailun_sku;
row["产品名称"] = itemData.product_name;
row["商品编码"] = itemData.product_code;
row["国家"] = itemData.country;
row["仓库类型"] = itemData.warehouse_type;
row["仓库"] = itemData.warehouse_name;
row["默认调拨方式"] = itemData.transport_type;
row["实际周转天数"] = itemData.turnover_days;
row["180天日均"] = itemData.sales_avg_180;
row["90天日均"] = itemData.sales_avg_90;
row["30天日均"] = itemData.sales_avg_30;
row["7天日均"] = itemData.sales_avg_7;
row["加权日均销量"] = itemData.daily_weighted_sales;
row["预测日均销量"] = itemData.forecast_daily_weighted_sales;
row["采购单价"] = itemData.unit_price;
row["单位重量"] = itemData.weight;
row["实际建议周转数"] = itemData.quantity_final_advise;
row["实际建议周转金额"] = itemData.quantity_final_advise_amount;
row["实际周转数"] = itemData.turnover;
row["实际周转运费"] = itemData.freight_price;
row["实际运费单价"] = itemData.freight_unit_price;
row["海运周转数(推荐海运)"] = itemData.quantity_final_advise_ocean;
row["海运周转金额"] = itemData.quantity_final_advise_ocean_amount;
row["海运周转运费"] = itemData.freight_price_ocean;
row["空运周转数(推荐空运)"] = itemData.quantity_final_advise_air;
row["空运周转金额"] = itemData.quantity_final_advise_air_amount;
row["空运周转运费"] = itemData.freight_price_air;
row["实际-海运运费差值"] = itemData.freight_price_ocean_difference_amount;
row["实际-海运周转采购金额差值"] = itemData.quantity_final_ocean_difference_amount;
row["实际-空运运费差值"] = itemData.freight_price_air_difference_amount;
row["实际-空运周转采购金额差值"] = itemData.quantity_final_air_difference_amount;
row["海运-空运运费差值"] = itemData.freight_price_ocean_air_difference;
row["海运-空运周转采购金额差值"] = itemData.quantity_final__ocean_air_difference_amount;
row["安全库存数量"] = itemData.quantity_safe_inventory;
row["空运周转天数"] = itemData.turnover_days_air;
row["海运周转天数"] = itemData.turnover_days_ocean;
row["30天预测销量海运运费-实际周转运费金额"] = itemData.freight_price_ocean_30_difference;
row["30天预测销量空运运费-实际周转运费金额"] = itemData.freight_price_air_30_difference;
row["30天预测销量空运运费-海运周转运费金额"] = itemData.freight_price_air_ocean_30_difference;
row["差值(实际-海运)/实际周转采购金额占比"] = itemData.freight_price_ocean_difference_amount_radio;
row["差值(海运-空运)/实际周转采购金额占比"] = itemData.freight_price_ocean_air_difference_radio;
row["差值(空运-实际)/实际周转采购金额占比"] = itemData.freight_price_air_difference_amount_radio;
row["海运与实际运费差额/库存差额"] = itemData.freight_stock_amount_ocean;
row["空运与实际运费差额/库存差额"] = itemData.freight_stock_amount_air;
row["30天销量海运与实际运费差额/库存金额"] = itemData.freight_stock_amount_ocean_30;
row["30天销量空运与实际运费差额/库存金额"] = itemData.freight_stock_amount_air_30;
row["补海运周转数"] = itemData.ocean_purchase;
row["补海运周转金额"] = itemData.ocean_purchase_amount;
table.Rows.Add(row);
}
CsvFileHelper.SaveCSV(table, fileName, page == 1);
page++;
} }
foreach (var itemData in list)
{
DataRow row = table.NewRow();
row["sku"] = itemData.bailun_sku;
row["产品名称"] = itemData.product_name;
row["商品编码"] = itemData.product_code;
row["国家"] = itemData.country;
row["仓库类型"] = itemData.warehouse_type;
row["仓库"] = itemData.warehouse_name;
row["默认调拨方式"] = itemData.transport_type;
row["实际周转天数"] = itemData.turnover_days;
row["180天日均"] = itemData.sales_avg_180;
row["90天日均"] = itemData.sales_avg_90;
row["30天日均"] = itemData.sales_avg_30;
row["7天日均"] = itemData.sales_avg_7;
row["加权日均销量"] = itemData.daily_weighted_sales;
row["预测日均销量"] = itemData.forecast_daily_weighted_sales;
row["采购单价"] = itemData.unit_price;
row["单位重量"] = itemData.weight;
row["实际建议周转数"] = itemData.quantity_final_advise;
row["实际建议周转金额"] = itemData.quantity_final_advise_amount;
row["实际周转数"] = itemData.turnover;
row["实际周转运费"] = itemData.freight_price;
row["实际运费单价"] = itemData.freight_unit_price;
row["海运周转数(推荐海运)"] = itemData.quantity_final_advise_ocean;
row["海运周转金额"] = itemData.quantity_final_advise_ocean_amount;
row["海运周转运费"] = itemData.freight_price_ocean;
row["空运周转数(推荐空运)"] = itemData.quantity_final_advise_air;
row["空运周转金额"] = itemData.quantity_final_advise_air_amount;
row["空运周转运费"] = itemData.freight_price_air;
row["实际-海运运费差值"] = itemData.freight_price_ocean_difference_amount;
row["实际-海运周转采购金额差值"] = itemData.quantity_final_ocean_difference_amount;
row["实际-空运运费差值"] = itemData.freight_price_air_difference_amount;
row["实际-空运周转采购金额差值"] = itemData.quantity_final_air_difference_amount;
row["海运-空运运费差值"] = itemData.freight_price_ocean_air_difference;
row["海运-空运周转采购金额差值"] = itemData.quantity_final__ocean_air_difference_amount;
row["安全库存数量"] = itemData.quantity_safe_inventory;
row["空运周转天数"] = itemData.turnover_days_air;
row["海运周转天数"] = itemData.turnover_days_ocean;
row["30天预测销量海运运费-实际周转运费金额"] = itemData.freight_price_ocean_30_difference;
row["30天预测销量空运运费-实际周转运费金额"] = itemData.freight_price_air_30_difference;
row["30天预测销量空运运费-海运周转运费金额"] = itemData.freight_price_air_ocean_30_difference;
row["差值(实际-海运)/实际周转采购金额占比"] = itemData.freight_price_ocean_difference_amount_radio;
row["差值(海运-空运)/实际周转采购金额占比"] = itemData.freight_price_ocean_air_difference_radio;
row["差值(空运-实际)/实际周转采购金额占比"] = itemData.freight_price_air_difference_amount_radio;
row["海运与实际运费差额/库存差额"] = itemData.freight_stock_amount_ocean;
row["空运与实际运费差额/库存差额"] = itemData.freight_stock_amount_air;
row["30天销量海运与实际运费差额/库存金额"] = itemData.freight_stock_amount_ocean_30;
row["30天销量空运与实际运费差额/库存金额"] = itemData.freight_stock_amount_air_30;
row["补海运周转数"] = itemData.ocean_purchase;
row["补海运周转金额"] = itemData.ocean_purchase_amount;
table.Rows.Add(row);
}
CsvFileHelper.SaveCSV(table, fileName, page == 1);
return fileName; return fileName;
......
...@@ -154,10 +154,10 @@ namespace AutoTurnOver.Services ...@@ -154,10 +154,10 @@ namespace AutoTurnOver.Services
public async Task<string> DownloadProfitAnalysis(string par_json, dc_task_download download_data) public async Task<string> DownloadProfitAnalysis(string par_json, dc_task_download download_data)
{ {
Condition_AutoTurnOver search_data = par_json.ToObject<Condition_AutoTurnOver>(); ana_search_dto search_data = par_json.ToObject<ana_search_dto>();
Console.WriteLine("DownloadStock - 开始生成文件"); Console.WriteLine("DownloadStock - 开始生成文件");
var rows = 0; var rows = 0;
var memory = new SkuAutoTurnServices().ProfitAnalysisExport(search_data,out rows); var memory = new SkuAutoTurnServices().ProfitAnalysisExport(search_data, out rows);
download_data.rows = rows; download_data.rows = rows;
Console.WriteLine("DownloadStock - 开始生成上传文件"); Console.WriteLine("DownloadStock - 开始生成上传文件");
var fileData = await AutoTurnOver.Utility.QiNiuCloudHelper.UploadSectioningAsync(memory); var fileData = await AutoTurnOver.Utility.QiNiuCloudHelper.UploadSectioningAsync(memory);
......
...@@ -105,12 +105,12 @@ namespace AutoTurnOver.Controllers ...@@ -105,12 +105,12 @@ namespace AutoTurnOver.Controllers
return new JsonResult(list == null || list.Count <= 0 ? new dc_report_profit_analysis_dto() : list[0]); return new JsonResult(list == null || list.Count <= 0 ? new dc_report_profit_analysis_dto() : list[0]);
} }
public JsonResult ExportProfitAnalysis([FromQuery] dc_base_stock_search_dto search_data) public JsonResult ExportProfitAnalysis([FromQuery] ana_search_dto search_data)
{ {
try try
{ {
var user = AutoUtility.GetUser(); var user = AutoUtility.GetUser();
dc_task_download_dao.PushData<dc_base_stock_search_dto>(new dc_task_download dc_task_download_dao.PushData<ana_search_dto>(new dc_task_download
{ {
parameter = search_data.ToJson(), parameter = search_data.ToJson(),
task_name = "利润最大化分析" task_name = "利润最大化分析"
...@@ -124,6 +124,7 @@ namespace AutoTurnOver.Controllers ...@@ -124,6 +124,7 @@ namespace AutoTurnOver.Controllers
} }
[HttpGet] [HttpGet]
[BrowseLog("Bailun_aims", "触发【百伦自动周转系统】->【自动周转列表】->【空运海运利润计算】->【搜索】页面", 0)] [BrowseLog("Bailun_aims", "触发【百伦自动周转系统】->【自动周转列表】->【空运海运利润计算】->【搜索】页面", 0)]
public JsonResult TransferProfitList(string bailun_sku, string warehouse_code) public JsonResult TransferProfitList(string bailun_sku, string warehouse_code)
......
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