Commit 557e4f78 by guanzhenshan

调整库存冗余报表,增加在途数

parent 9c3385d0
......@@ -168,5 +168,10 @@ namespace Bailun.DC.Models.Warehouse
/// 冗余sku个数比例
/// </summary>
public decimal redundancy_sku_rate { get; set; }
/// <summary>
/// 在途数
/// </summary>
public int onway_count { get; set; }
}
}
......@@ -50,5 +50,9 @@ namespace Bailun.DC.Models.Warehouse
public DateTime createtime { get; set; }
/// <summary>
/// 在途数
/// </summary>
public int onway_count { get; set; }
}
}
......@@ -91,5 +91,15 @@ namespace Bailun.DC.Models.Warehouse
/// </summary>
public decimal? thirtyday_average_sales { get; set; }
/// <summary>
/// 采购在途数
/// </summary>
public int? quantity_purchase { get; set; }
/// <summary>
/// 调拨在途数
/// </summary>
public int? quantity_transfer { get; set; }
}
}
......@@ -360,7 +360,7 @@ namespace Bailun.DC.Services
tb.Columns.Add("stockout");
tb.Columns.Add("day");
tb.Columns.Add("createtime");
tb.Columns.Add("onway_count");
var page = 1;
var pagesize = 100000;
var listcount = cn.QueryFirstOrDefault<int>("select count(id) from dc_base_stock");
......@@ -369,36 +369,41 @@ namespace Bailun.DC.Services
while (page == 1 || (resultcount <= pagesize && resultcount != 0))
{
var strlimit = (((page - 1) * pagesize) + "," + pagesize);
var liststock = cn.Query<Models.Warehouse.mWarehouseRedundancy>($@"select t1.bailun_sku,t1.warehouse_code,t1.usable_stock,t2.sku_title_cn,t2.unit_price,t3.warehouse_name,t4.quantity,t5.quantity_out_stock,t6.oneday_total_sales,t6.threeday_total_sales,t6.sevenday_total_sales,t6.fourteenday_total_sales,t6.thirtyday_total_sales,t6.threeday_average_sales,t6.sevenday_average_sales,t6.fourteenday_average_sales,t6.thirtyday_average_sales from dc_base_stock t1
var liststock = cn.Query<Models.Warehouse.mWarehouseRedundancy>($@"select t1.bailun_sku,t1.warehouse_code,t1.usable_stock,t2.sku_title_cn,t2.unit_price,t3.warehouse_name,t4.quantity,t5.quantity_out_stock,t6.oneday_total_sales,t6.threeday_total_sales,t6.sevenday_total_sales,t6.fourteenday_total_sales,t6.thirtyday_total_sales,t6.threeday_average_sales,t6.sevenday_average_sales,t6.fourteenday_average_sales,t6.thirtyday_average_sales,t7.quantity_purchase,t7.quantity_transfer from dc_base_stock t1
join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku
join dc_base_warehouse t3 on t1.warehouse_code=t3.warehouse_code
left join dc_auto_forecast_fluctuation t4 on t1.bailun_sku=t4.bailun_sku and t4.type=3 and t1.warehouse_code=t4.warehouse_code -- 仓库冗余
left join dc_mid_transit t5 on t1.bailun_sku=t5.bailun_sku and t1.warehouse_code=t5.warehouse_code
left join dc_daily_sales t6 on t1.bailun_sku=t6.bailun_sku and t6.record_date='{DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")}' and t1.warehouse_code=t6.warehouse_code limit {strlimit}", null, null, true, 30 * 60);
left join dc_daily_sales t6 on t1.bailun_sku=t6.bailun_sku and t6.record_date='{DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")}' and t1.warehouse_code=t6.warehouse_code
left join dc_daily_transit t7 on t1.bailun_sku=t7.bailun_sku and t1.warehouse_code=t7.warehouse_code and t7.record_time='{DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")}'
limit {strlimit}", null, null, true, 30 * 60);
resultcount = liststock.AsList().Count;
page++;
foreach (var item in liststock)
{
var onwaycount = (item.quantity_purchase ?? 0 + item.quantity_transfer ?? 0);
var stockcount = (item.usable_stock + onwaycount); //可用库存+在途数
var row = tb.NewRow();
row["id"] = 0;
row["bailun_sku"] = item.bailun_sku;
row["bailun_sku_name"] = item.sku_title_cn;
row["warehouse_code"] = item.warehouse_code;
row["warehouse_name"] = item.warehouse_name;
row["productcount"] = item.usable_stock;
row["amount_total"] = item.usable_stock * item.unit_price;
row["productcount"] = stockcount;
row["amount_total"] = stockcount * item.unit_price;
row["daily_productsale_count"] = item.sevenday_average_sales ?? 0;
row["dailysale_amount"] = (item.sevenday_total_sales ?? 0) * item.unit_price;
row["productsale_rate"] = item.usable_stock > 0 ? (item.sevenday_average_sales ?? 0) / item.usable_stock * 7 : 0;
row["saleamount_rate"] = item.usable_stock > 0 ? (item.sevenday_average_sales ?? 0) / item.usable_stock * 7 : 0;
row["productsale_rate"] = stockcount > 0 ? (item.sevenday_average_sales ?? 0) / stockcount : 0;
row["saleamount_rate"] = stockcount > 0 ? (item.sevenday_average_sales ?? 0) / stockcount : 0;
row["redundancy_product_count"] = item.quantity ?? 0;
row["redundancy_product_rate"] = item.usable_stock > 0 ? (item.quantity ?? 0) / item.usable_stock : 0;
row["redundancy_product_rate"] = stockcount > 0 ? (item.quantity ?? 0) / stockcount : 0;
row["redundancy_amount"] = (item.quantity ?? 0) * item.unit_price;
row["redundancy_amount_rate"] = item.usable_stock > 0 ? (item.quantity ?? 0) / item.usable_stock : 0;
row["redundancy_amount_rate"] = stockcount > 0 ? (item.quantity ?? 0) / stockcount : 0;
row["yesterdaysale_amount"] = (item.oneday_total_sales ?? 0) * item.unit_price;
row["yesterdaysale_count"] = (item.oneday_total_sales ?? 0);
......@@ -408,14 +413,14 @@ namespace Bailun.DC.Services
row["sale_14d_avg"] = (item.fourteenday_average_sales ?? 0) / 14;
row["sale_30d_avg"] = (item.thirtyday_average_sales ?? 0) / 30;
row["day_turnover_rate"] = item.usable_stock > 0 ? item.oneday_total_sales ?? 0 / item.usable_stock : 0;
row["week_turnover_rate"] = item.usable_stock > 0 ? (item.sevenday_average_sales ?? 0) / item.usable_stock * 7 : 0;
row["month_turnover_rate"] = item.usable_stock > 0 ? (item.thirtyday_average_sales ?? 0) / item.usable_stock * 30 : 0;
row["day_turnover_rate"] = stockcount > 0 ? item.oneday_total_sales ?? 0 / stockcount : 0;
row["week_turnover_rate"] = stockcount > 0 ? (item.sevenday_average_sales ?? 0) / stockcount * 7 : 0;
row["month_turnover_rate"] = stockcount > 0 ? (item.thirtyday_average_sales ?? 0) / stockcount * 30 : 0;
row["stockout"] = item.quantity_out_stock ?? 0;
row["day"] = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
row["createtime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
row["onway_count"] = onwaycount;
tb.Rows.Add(row);
}
......
......@@ -556,16 +556,16 @@ namespace Bailun.DC.Services
}
//前100冗余金额sku分析
var sql1 = "select bailun_sku,productcount,amount_total,daily_productsale_count,productsale_rate,dailysale_amount,saleamount_rate,redundancy_product_count,redundancy_product_rate,redundancy_amount,redundancy_amount_rate from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by redundancy_amount desc limit 100";
var sql1 = "select bailun_sku,productcount,amount_total,daily_productsale_count,productsale_rate,dailysale_amount,saleamount_rate,redundancy_product_count,redundancy_product_rate,redundancy_amount,redundancy_amount_rate,onway_count from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by redundancy_amount desc limit 100";
//前100冗余个数sku分析
var sql2 = "select bailun_sku,productcount,amount_total,daily_productsale_count,productsale_rate,dailysale_amount,saleamount_rate,redundancy_product_count,redundancy_product_rate,redundancy_amount,redundancy_amount_rate from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by redundancy_product_count desc limit 100";
var sql2 = "select bailun_sku,productcount,amount_total,daily_productsale_count,productsale_rate,dailysale_amount,saleamount_rate,redundancy_product_count,redundancy_product_rate,redundancy_amount,redundancy_amount_rate,onway_count from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by redundancy_product_count desc limit 100";
//前100个数动销最快sku分析
var sql3 = "select bailun_sku,productcount,amount_total,yesterdaysale_count,yesterdaysale_amount,sale_3d_avg,sale_7d_avg,sale_14d_avg,sale_30d_avg,day_turnover_rate,week_turnover_rate,month_turnover_rate,stockout from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by productsale_rate desc limit 100";
var sql3 = "select bailun_sku,productcount,amount_total,yesterdaysale_count,yesterdaysale_amount,sale_3d_avg,sale_7d_avg,sale_14d_avg,sale_30d_avg,day_turnover_rate,week_turnover_rate,month_turnover_rate,stockout,onway_count from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by productsale_rate desc limit 100";
//前100金额动销最快sku分析
var sql4 = "select bailun_sku,productcount,amount_total,yesterdaysale_count,yesterdaysale_amount,sale_3d_avg,sale_7d_avg,sale_14d_avg,sale_30d_avg,day_turnover_rate,week_turnover_rate,month_turnover_rate,stockout from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by saleamount_rate desc limit 100";
var sql4 = "select bailun_sku,productcount,amount_total,yesterdaysale_count,yesterdaysale_amount,sale_3d_avg,sale_7d_avg,sale_14d_avg,sale_30d_avg,day_turnover_rate,week_turnover_rate,month_turnover_rate,stockout,onway_count from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by saleamount_rate desc limit 100";
var list = new List<dc_mid_skuwarehouse_redundancy>();
......
......@@ -183,7 +183,8 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
saleamount_rate = ((a.saleamount_rate??0)*100).ToString("N4"),
skucount = (a.skucount??0).ToString("N0"),
skusales_count = (a.skusales_count??0).ToString("N2"),
skusales_rate = ((a.skusales_rate??0)*100).ToString("N4")
skusales_rate = ((a.skusales_rate??0)*100).ToString("N4"),
onway_count = a.onway_count.ToString("N0"),
});
return JsonConvert.SerializeObject(new {
......@@ -206,7 +207,8 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
saleamount_rate = ((count_obj.saleamount_rate ?? 0) * 100).ToString("N4"),
skucount = (count_obj.skucount ?? 0).ToString("N0"),
skusales_count = (count_obj.skusales_count ?? 0).ToString("N2"),
skusales_rate = ((count_obj.skusales_rate ?? 0) * 100).ToString("N4")
skusales_rate = ((count_obj.skusales_rate ?? 0) * 100).ToString("N4"),
onway_count = count_obj.onway_count.ToString("N0"),
}
});
}
......
......@@ -136,9 +136,9 @@
paramData: '',
func: function (result) {
if (result != null && result != undefined) {
$('#saleaccount').html('<option value="">选择帐号</option>');
$('#account').html('<option value="">选择帐号</option>');
for (var i = 0; i < result.length; i++) {
$('#saleaccount').append('<option value="' + result[i] + '">' + result[i]+'</option>');
$('#account').append('<option value="' + result[i] + '">' + result[i]+'</option>');
}
}
}
......
......@@ -45,6 +45,7 @@
<tr>
<th>sku</th>
<th>产品个数</th>
<th>在途数</th>
<th>库存总金额</th>
<th>日销产品个数</th>
<th>动销产品比例</th>
......@@ -67,6 +68,7 @@
<tr>
<th>sku</th>
<th>产品个数</th>
<th>在途数</th>
<th>库存总金额</th>
<th>日销产品个数</th>
<th>动销产品比例</th>
......@@ -89,6 +91,7 @@
<tr>
<th>sku</th>
<th>产品个数</th>
<th>在途数</th>
<th>库存总金额</th>
<th>昨日销量</th>
<th>昨日销售金额</th>
......@@ -113,6 +116,7 @@
<tr>
<th>sku</th>
<th>产品个数</th>
<th>在途数</th>
<th>库存总金额</th>
<th>昨日销量</th>
<th>昨日销售金额</th>
......@@ -182,13 +186,14 @@
if (result != undefined && result != null && result.length == 4) {
for (var i in result) {
var obj = result[i];
var s = '';
if (i < 2) { //前100冗余金额sku分析,前100冗余个数sku分析模版
var shtml = '';
for (var o in obj) {
shtml += '<tr><td>' + obj[o].bailun_sku + '</td>';
shtml += '<tr><td><a href="http://pro.bailuntec.com/proMgr/productMgr?skuCode=' + obj[o].bailun_sku + '" target="_blank" >' + obj[o].bailun_sku+ '</a></td>';
shtml += '<td>' + obj[o].productcount + '</td>';
shtml += '<td>' + obj[o].onway_count + '</td>';
shtml += '<td>' + obj[o].amount_total + '</td>';
shtml += '<td>' + obj[o].daily_productsale_count + '</td>';
shtml += '<td>' + obj[o].productsale_rate + '</td>';
......@@ -208,8 +213,9 @@
else if(i>1 && i<4){ //前100个数动销最快sku分析,前100金额动销最快sku分析
var shtml = '';
for (var o in obj) {
shtml += '<tr><td>' + obj[o].bailun_sku + '</td>';
shtml += '<tr><td><a href="http://pro.bailuntec.com/proMgr/productMgr?skuCode=' + obj[o].bailun_sku + '" target="_blank" >' + obj[o].bailun_sku + '</a></td>';
shtml += '<td>' + obj[o].productcount + '</td>';
shtml += '<td>' + obj[o].onway_count + '</td>';
shtml += '<td>' + obj[o].amount_total + '</td>';
shtml += '<td>' + obj[o].yesterdaysale_count + '</td>';
shtml += '<td>' + obj[o].yesterdaysale_amount + '</td>';
......@@ -260,8 +266,9 @@
if (i < 2) { //前100冗余金额sku分析,前100冗余个数sku分析模版
var shtml = '';
for (var o in obj) {
shtml += '<tr><td>' + obj[o].bailun_sku + '</td>';
shtml += '<tr><td><a href="http://pro.bailuntec.com/proMgr/productMgr?skuCode=' + obj[o].bailun_sku + '" target="_blank" >' + obj[o].bailun_sku + '</a></td>';
shtml += '<td>' + obj[o].productcount + '</td>';
shtml += '<td>' + obj[o].onway_count + '</td>';
shtml += '<td>' + obj[o].amount_total + '</td>';
shtml += '<td>' + obj[o].daily_productsale_count + '</td>';
shtml += '<td>' + obj[o].productsale_rate + '</td>';
......@@ -281,8 +288,9 @@
else if (i > 1 && i < 4) { //前100个数动销最快sku分析,前100金额动销最快sku分析
var shtml = '';
for (var o in obj) {
shtml += '<tr><td>' + obj[o].bailun_sku + '</td>';
shtml += '<tr><td><a href="http://pro.bailuntec.com/proMgr/productMgr?skuCode=' + obj[o].bailun_sku + '" target="_blank" >' + obj[o].bailun_sku + '</a></td>';
shtml += '<td>' + obj[o].productcount + '</td>';
shtml += '<td>' + obj[o].onway_count + '</td>';
shtml += '<td>' + obj[o].amount_total + '</td>';
shtml += '<td>' + obj[o].yesterdaysale_count + '</td>';
shtml += '<td>' + obj[o].yesterdaysale_amount + '</td>';
......
......@@ -94,6 +94,11 @@
}
},
{
field: 'onway_count', title: '在途数', width: '110', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div style="cursor:pointer;" onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'onway_count\',\'在途数\',\'' + data.warehouse_name + '\')" >' + data.onway_count + '</div>';
}
},
{
field: 'amount_total', title: '总金额', width: '130', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div style="cursor:pointer;" onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'amount_total\',\'总金额\',\'' + data.warehouse_name + '\')" >' + data.amount_total + '</div>';
}
......
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