Commit 4a0295e7 by guanzhenshan

完善数据仓销量分析报表,增加sku维度明细,增加总销售字段

parent 60cbf7ca
...@@ -8,8 +8,11 @@ namespace Bailun.DC.Common ...@@ -8,8 +8,11 @@ namespace Bailun.DC.Common
{ {
public class GlobalConfig public class GlobalConfig
{ {
#if DEBUG
public static string ConnectionString = "server=gz-cdb-kp7s5i79.sql.tencentcdb.com;port=61691;database=bailun_datacenter;uid=root;password=#7kfnymAM$Y9-Ntf;"; public static string ConnectionString = "server=gz-cdb-kp7s5i79.sql.tencentcdb.com;port=61691;database=bailun_datacenter;uid=root;password=#7kfnymAM$Y9-Ntf;";
#else
public static string ConnectionString = "server=10.0.8.15;port=3306;database=bailun_datacenter;uid=root;password=#7kfnymAM$Y9-Ntf;";
#endif
public static string OAUrl = "http://www.bailuntec.com"; public static string OAUrl = "http://www.bailuntec.com";
/// <summary> /// <summary>
......
...@@ -4,6 +4,9 @@ using System.Text; ...@@ -4,6 +4,9 @@ using System.Text;
namespace Bailun.DC.Models.Warehouse namespace Bailun.DC.Models.Warehouse
{ {
/// <summary>
/// 数据仓sku销量分析
/// </summary>
public class dc_mid_skuwarehouse_sales public class dc_mid_skuwarehouse_sales
{ {
public int id { get; set; } public int id { get; set; }
...@@ -176,5 +179,9 @@ namespace Bailun.DC.Models.Warehouse ...@@ -176,5 +179,9 @@ namespace Bailun.DC.Models.Warehouse
/// </summary> /// </summary>
public DateTime? createtime { get; set; } public DateTime? createtime { get; set; }
/// <summary>
/// 销量合计
/// </summary>
public int salecount { get; set; }
} }
} }
...@@ -409,7 +409,7 @@ namespace Bailun.DC.Services ...@@ -409,7 +409,7 @@ namespace Bailun.DC.Services
/// <param name="warehousecode">仓库编码</param> /// <param name="warehousecode">仓库编码</param>
/// <param name="total">符合条件的总记录数</param> /// <param name="total">符合条件的总记录数</param>
/// <returns></returns> /// <returns></returns>
public List<dc_mid_warehouse_redundancy> ListWarehouseRedundancy(BtTableParameter request, string warehousetype, string warehousecode,ref int total) public List<dc_mid_warehouse_redundancy> ListWarehouseRedundancy(BtTableParameter request, string warehousetype, string warehousecode,DateTime? day,ref int total)
{ {
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString)) using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{ {
...@@ -419,7 +419,7 @@ namespace Bailun.DC.Services ...@@ -419,7 +419,7 @@ namespace Bailun.DC.Services
} }
var sqlparam = new DynamicParameters(); var sqlparam = new DynamicParameters();
var sql = "select * from dc_mid_warehouse_redundancy t1 "; var sql = "select t1.* from dc_mid_warehouse_redundancy t1 ";
if (!string.IsNullOrEmpty(warehousetype)) if (!string.IsNullOrEmpty(warehousetype))
{ {
...@@ -427,7 +427,13 @@ namespace Bailun.DC.Services ...@@ -427,7 +427,13 @@ namespace Bailun.DC.Services
sqlparam.Add("warehousetype", warehousetype); sqlparam.Add("warehousetype", warehousetype);
} }
sql+= "where t1.day = '" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "'"; sql+= " where 1=1 ";
if (day.HasValue)
{
sql += " and t1.day=@day";
sqlparam.Add("day", day.Value.ToString("yyyy-MM-dd"));
}
if (!string.IsNullOrEmpty(warehousecode)) if (!string.IsNullOrEmpty(warehousecode))
{ {
...@@ -435,7 +441,7 @@ namespace Bailun.DC.Services ...@@ -435,7 +441,7 @@ namespace Bailun.DC.Services
sqlparam.Add("code", warehousecode); sqlparam.Add("code", warehousecode);
} }
var obj = cn.Page<dc_mid_warehouse_redundancy>(request.pageIndex, request.limit, sql, ref total); var obj = cn.Page<dc_mid_warehouse_redundancy>(request.pageIndex, request.limit, sql, ref total,sqlparam);
return obj.AsList(); return obj.AsList();
} }
...@@ -447,7 +453,7 @@ namespace Bailun.DC.Services ...@@ -447,7 +453,7 @@ namespace Bailun.DC.Services
/// <param name="warehousetype"></param> /// <param name="warehousetype"></param>
/// <param name="warehousecode"></param> /// <param name="warehousecode"></param>
/// <returns></returns> /// <returns></returns>
public dc_mid_warehouse_redundancy ListWarehouseRedundancyCount(string warehousetype, string warehousecode) public dc_mid_warehouse_redundancy ListWarehouseRedundancyCount(string warehousetype, string warehousecode,DateTime? day)
{ {
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString)) using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{ {
...@@ -465,7 +471,13 @@ namespace Bailun.DC.Services ...@@ -465,7 +471,13 @@ namespace Bailun.DC.Services
sqlparam.Add("warehousetype", warehousetype); sqlparam.Add("warehousetype", warehousetype);
} }
sql += "where t1.day = '" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "'"; sql += " where 1=1 ";
if (day.HasValue)
{
sql += " and t1.day=@day";
sqlparam.Add("day", day.Value.ToString("yyyy-MM-dd"));
}
if (!string.IsNullOrEmpty(warehousecode)) if (!string.IsNullOrEmpty(warehousecode))
{ {
...@@ -473,7 +485,7 @@ namespace Bailun.DC.Services ...@@ -473,7 +485,7 @@ namespace Bailun.DC.Services
sqlparam.Add("code", warehousecode); sqlparam.Add("code", warehousecode);
} }
var obj = cn.QueryFirstOrDefault<dc_mid_warehouse_redundancy>(sql); var obj = cn.QueryFirstOrDefault<dc_mid_warehouse_redundancy>(sql,sqlparam);
return obj; return obj;
} }
...@@ -484,7 +496,7 @@ namespace Bailun.DC.Services ...@@ -484,7 +496,7 @@ namespace Bailun.DC.Services
/// </summary> /// </summary>
/// <param name="warehousecode"></param> /// <param name="warehousecode"></param>
/// <returns></returns> /// <returns></returns>
public List<List<dc_mid_skuwarehouse_redundancy>> GetSkuRedundancy(string warehousecode) public List<List<dc_mid_skuwarehouse_redundancy>> GetSkuRedundancy(string warehousecode,DateTime day)
{ {
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString)) using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{ {
...@@ -494,16 +506,16 @@ namespace Bailun.DC.Services ...@@ -494,16 +506,16 @@ namespace Bailun.DC.Services
} }
//前100冗余金额sku分析 //前100冗余金额sku分析
var sql1 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='"+warehousecode+ "' and day='"+DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")+ "' order by redundancy_amount desc limit 100"; var sql1 = "select * 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分析 //前100冗余个数sku分析
var sql2 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "' order by redundancy_product_count desc limit 100"; var sql2 = "select * 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分析 //前100个数动销最快sku分析
var sql3 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "' order by productsale_rate desc limit 100"; var sql3 = "select * 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分析 //前100金额动销最快sku分析
var sql4 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "' order by saleamount_rate desc limit 100"; var sql4 = "select * from dc_mid_skuwarehouse_redundancy where warehouse_code='" + warehousecode + "' and day='" + day.ToString("yyyy-MM-dd") + "' order by saleamount_rate desc limit 100";
var obj1 = cn.Query<dc_mid_skuwarehouse_redundancy>(sql1); var obj1 = cn.Query<dc_mid_skuwarehouse_redundancy>(sql1);
var obj2 = cn.Query<dc_mid_skuwarehouse_redundancy>(sql2); var obj2 = cn.Query<dc_mid_skuwarehouse_redundancy>(sql2);
...@@ -521,5 +533,34 @@ namespace Bailun.DC.Services ...@@ -521,5 +533,34 @@ namespace Bailun.DC.Services
} }
} }
/// <summary>
/// 获取仓库前两个月的冗余数据
/// </summary>
/// <param name="warehousecode">仓库编码</param>
/// <param name="start">开始日期</param>
/// <param name="end">结束日期</param>
/// <returns></returns>
public List<dc_mid_warehouse_redundancy> ListOver60DaysWarehouseRedundancy(string warehousecode, DateTime start, DateTime end)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var sqlparam = new DynamicParameters();
var sql = "select * from dc_mid_warehouse_redundancy where warehouse_code=@code and day>=@startday and day<=@endday order by day";
sqlparam.Add("code", warehousecode);
sqlparam.Add("startday", start);
sqlparam.Add("endday", end);
var obj = cn.Query<dc_mid_warehouse_redundancy>(sql, sqlparam);
return obj.AsList();
}
}
} }
} }
...@@ -157,16 +157,14 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers ...@@ -157,16 +157,14 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
/// <param name="warehousetype">仓库类型</param> /// <param name="warehousetype">仓库类型</param>
/// <param name="code">仓库编码</param> /// <param name="code">仓库编码</param>
/// <returns></returns> /// <returns></returns>
public string WarehouseRedundancyJson(BtTableParameter parameter, string warehousetype, string code) public string WarehouseRedundancyJson(BtTableParameter parameter, string warehousetype, string code,DateTime? day)
{ {
var total = 0; var total = 0;
var services = new Services.WareHouseServices(); var services = new Services.WareHouseServices();
var obj = services.ListWarehouseRedundancy(parameter, warehousetype, code, ref total); var obj = services.ListWarehouseRedundancy(parameter, warehousetype, code,day, ref total);
var count_obj = services.ListWarehouseRedundancyCount(warehousetype, code);
var count_obj = services.ListWarehouseRedundancyCount(warehousetype, code,day);
var list = obj.Select(a => new { var list = obj.Select(a => new {
a.warehouse_code, a.warehouse_code,
a.warehouse_name, a.warehouse_name,
...@@ -219,9 +217,11 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers ...@@ -219,9 +217,11 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
/// </summary> /// </summary>
/// <param name="warehousecode"></param> /// <param name="warehousecode"></param>
/// <returns></returns> /// <returns></returns>
public ActionResult SkuRedundancy(string warehousecode) public ActionResult SkuRedundancy(string warehousecode,DateTime? day,string warehousename)
{ {
ViewBag.warehousecode = warehousecode; ViewBag.warehousecode = warehousecode;
ViewBag.day = day.HasValue ? day.Value.ToString("yyyy-MM-dd") : "";
ViewBag.warehousename = warehousename;
return View(); return View();
} }
...@@ -231,14 +231,89 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers ...@@ -231,14 +231,89 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
/// <param name="warehousecode"></param> /// <param name="warehousecode"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public JsonResult SkuRedundancyJson(string warehousecode) public JsonResult SkuRedundancyJson(string warehousecode,DateTime day)
{ {
var services = new Services.WareHouseServices(); var services = new Services.WareHouseServices();
var obj = services.GetSkuRedundancy(warehousecode); var obj = services.GetSkuRedundancy(warehousecode,day);
return Json(obj); return Json(obj);
} }
/// <summary>
/// 仓库历史冗余图表展示
/// </summary>
/// <returns></returns>
public ActionResult WHRedundancyChart(string warehousecode,DateTime day,string col,string colname,string warehousename)
{
ViewBag.warehousecode = warehousecode;
ViewBag.day = day.ToString("yyyy-MM-dd");
ViewBag.col = col;
ViewBag.colname = colname;
ViewBag.warehousename = warehousename;
return View();
}
/// <summary>
/// 获取过去两个月的历史数据
/// </summary>
/// <param name="warehousecode">仓库编码</param>
/// <param name="day">结束日期</param>
/// <returns></returns>
[HttpPost]
public JsonResult WHRedundancyChartJson(string warehousecode, DateTime day,string col)
{
var startDay = day.AddDays(-60);
var obj = new Services.WareHouseServices().ListOver60DaysWarehouseRedundancy(warehousecode, startDay, day);
var colname = new List<string>();
var colval = new List<decimal>();
for (var i = 0; i < 61; i++)
{
var item = obj.Where(a => a.day == startDay.AddDays(i)).FirstOrDefault();
colname.Add(startDay.AddDays(i).ToString("MM-dd"));
if (item == null)
{
colval.Add(0);
}
else
{
var propertys = item.GetType().GetProperties();
foreach (var a in propertys)
{
if (a.Name == col)
{
var value = a.GetValue(item, null);
try
{
var b = decimal.Parse(value.ToString());
if (a.Name.IndexOf("比例") > 0)
{
b *= 100;
}
colval.Add(b);
}
catch
{
colval.Add(0);
}
break;
}
}
}
}
return Json(new {
col = colname,
val = colval
});
}
} }
} }
\ No newline at end of file

@{
ViewData["Title"] = "数据仓Sku销售分销";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
}
<div class="row">
<div class="col-sm-12">
<div class="ibox-content m-b-sm border-bottom">
<form id="toolbar">
<div class="form-inline" style="line-height:40px;">
<input type="hidden" id="warehousecode" name="warehousecode" value="@ViewBag.warehousecode" />
<div class="form-group">
<label>统计日期</label>
<input id="start" name="start" class="form-control" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" placeholder="请选择统计开始日期" />-
<input id="end" name="end" class="form-control" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" placeholder="请选择统计结束日期" />
</div>
<div class="form-group">
<label>开发时间</label>
<input id="devstart" name="devstart" class="form-control" value="@ViewBag.devstart" placeholder="开发开始时间" />-
<input id="devend" name="devend" class="form-control" value="@ViewBag.devend" placeholder="开发结束时间" />
</div>
<div class="form-group">
<label>销量</label>
<input id="startcount" name="startcount" class="form-control" placeholder="sku销量开始" value="@ViewBag.startcount" />-
<input id="endcount" name="endcount" class="form-control" placeholder="sku销量结束" value="@ViewBag.endcount" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
</div>
</div>
</form>
</div>
<div class="ibox-content m-b-sm border-bottom">
<table id="roletable" style="table-layout:fixed;"></table>
</div>
</div>
</div>
@section css{
<style>
.mules {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
}
@section scripts{
<script type="text/javascript">
var tb;
$(document).ready(function () {
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 160));
list();
laydate.render({ elem: '#start' });
laydate.render({ elem: '#end' });
laydate.render({ elem: '#devstart' });
laydate.render({ elem: '#devend' });
})
function list() {
var columns = [
{
field: 'bailun_sku', title: 'Sku', width: '110', sortable: false, iscount: false
},
{
field: 'bailun_sku_name', title: 'sku名称', width: '180', sortable: false, iscount: false, formatter: function (idx, data) {
return '<div class="mules" title="' + data.bailun_sku_name + '">' + data.bailun_sku_name + '</div>';
}
},
{
field: 'warehouse_name', title: '仓库名称', width: '190', sortable: false, iscount: true
},
{ field: 'stock_count', title: '库存数量', width: '110', sortable: true, iscount: true },
{ field: 'stock_amount', title: '库存金额', width: '120', sortable: true, iscount: true },
{ field: 'aliexpress_salecount', title: '速卖通销量', width: '130', sortable: true, iscount: true },
{ field: 'aliexpress_saleamount', title: '速卖通销售额', width: '130', sortable: true, iscount: true },
{ field: 'amazon_salecount', title: '亚马逊销量', width: '120', sortable: true, iscount: true },
{ field: 'amazon_saleamount', title: '亚马逊销售额', width: '120', sortable: true, iscount: true },
{ field: 'fba_salecount', title: 'FBA销量', width: '120', sortable: true, iscount: true },
{ field: 'fba_saleamount', title: 'FBA销售额', width: '120', sortable: true, iscount: true },
{ field: 'ebay_salecount', title: 'Ebay销量', width: '120', sortable: true, iscount: true },
{ field: 'ebay_saleamount', title: 'Ebay销售额', width: '120', sortable: true, iscount: true },
{ field: 'wish_salecount', title: 'Wish销量', width: '120', sortable: true, iscount: true },
{ field: 'wish_saleamount', title: 'Wish销售额', width: '120', sortable: true, iscount: true },
{ field: 'amazon2B_salecount', title: '亚马逊2B销量', width: '130', sortable: true, iscount: true },
{ field: 'amazon2B_saleamount', title: '亚马逊2B销售额', width: '150', sortable: true, iscount: true },
{ field: 'jollychic_salecount', title: 'jollychic销量', width: '120', sortable: true, iscount: true },
{ field: 'jollychic_saleamount', title: 'jollychic销售额', width: '140', sortable: true, iscount: true },
{ field: 'joom_salecount', title: 'Joom销量', width: '120', sortable: true, iscount: true },
{ field: 'joom_saleamount', title: 'Joom销售额', width: '130', sortable: true, iscount: true },
{ field: 'marketing_salecount', title: 'Marketing销量', width: '140', sortable: true, iscount: true },
{ field: 'marketing_saleamount', title: 'Marketing销售额', width: '160', sortable: true, iscount: true },
{ field: 'mymall_salecount', title: 'mymall销量', width: '120', sortable: true, iscount: true },
{ field: 'mymall_saleamount', title: 'mymall销售额', width: '130', sortable: true, iscount: true },
{ field: 'opensky_salecount', title: 'opensky销量', width: '120', sortable: true, iscount: true },
{ field: 'opensky_saleamount', title: 'opensky销售额', width: '140', sortable: true, iscount: true },
{ field: 'priceminister_salecount', title: 'priceminister销量', width: '150', sortable: true, iscount: true },
{ field: 'priceminister_saleamount', title: 'priceminister销售额', width: '160', sortable: true, iscount: true },
{ field: 'qoo10_salecount', title: 'qoo10销量', width: '120', sortable: true, iscount: true },
{ field: 'qoo10_saleamount', title: 'qoo10销售额', width: '140', sortable: true, iscount: true },
{ field: 'shopee_salecount', title: 'shopee销量', width: '120', sortable: true, iscount: true },
{ field: 'shopee_saleamount', title: 'shopee销售额', width: '140', sortable: true, iscount: true },
{ field: 'shopify_salecount', title: 'shopify销量', width: '120', sortable: true, iscount: true },
{ field: 'shopify_saleamount', title: 'shopify销售额', width: '130', sortable: true, iscount: true },
{ field: 'walmart_salecount', title: 'walmart销量', width: '120', sortable: true, iscount: true },
{ field: 'walmart_saleamount', title: 'walmart销售额', width: '130', sortable: true, iscount: true },
{ field: 'salecount', title: '总销量', width: '120', sortable: true, iscount: true },
];
var url = '@Url.Content("~/Reports/Inventory/SkuWarehouseSaleReportJson")' + '?' + $("#toolbar").serialize();
if (tb == undefined) {
tb = OnlyTable("roletable", columns, url, "", {
showfooter: true, loadsuccess: function (d) {
//替换汇总行的相关列值
var tr = $('.fixed-table-footer').find('tr');
for (var c in columns) {
var key = columns[c].field;
if (columns[c].iscount) {
for (var v in d.count_row) {
if (key == v) {
tr.find('td').eq(c).children('div').first().html(d.count_row[v]);
break;
}
}
}
}
}
});
}
else {
tb.bootstrapTable('refresh', { url: url });
}
}
</script>
}
...@@ -2,11 +2,27 @@ ...@@ -2,11 +2,27 @@
@{ @{
ViewData["Title"] = "SkuRedundancy"; ViewData["Title"] = "SkuRedundancy";
Layout = "~/Pages/Shared/_MainLayout.cshtml"; Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "库存", "库存分析报表",ViewBag.warehousecode+" 库存冗余分析" }; ViewBag.Nav = new string[] { "库存", "库存分析报表", ViewBag.warehousename + " 库存冗余分析" };
} }
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<div class="ibox-content m-b-sm border-bottom">
<form id="toolbar">
<div class="form-inline" style="line-height:40px;">
<div class="form-group">
<label>&nbsp;</label>
<input id="day" name="day" class="form-control" value="@(ViewBag.day)" placeholder="请选择日期" />
</div>
<div class="form-group">
<label>&nbsp;</label>
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
</div>
</div>
</form>
</div>
<div class="tabs-container"> <div class="tabs-container">
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li class="active"> <li class="active">
...@@ -25,7 +41,7 @@ ...@@ -25,7 +41,7 @@
<div class="tab-content"> <div class="tab-content">
<div id="tab-1" class="tab-pane active"> <div id="tab-1" class="tab-pane active">
<div class="panel-body"> <div class="panel-body">
<table class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;"> <table id="t1" class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<thead> <thead>
<tr> <tr>
<th>sku</th> <th>sku</th>
...@@ -41,15 +57,13 @@ ...@@ -41,15 +57,13 @@
<th>冗余金额比例</th> <th>冗余金额比例</th>
</tr> </tr>
</thead> </thead>
<tbody id="tb1"> <tbody id="tb1"></tbody>
</tbody>
</table> </table>
</div> </div>
</div> </div>
<div id="tab-2" class="tab-pane"> <div id="tab-2" class="tab-pane">
<div class="panel-body"> <div class="panel-body">
<table class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;"> <table id="t2" class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<thead> <thead>
<tr> <tr>
<th>sku</th> <th>sku</th>
...@@ -71,7 +85,7 @@ ...@@ -71,7 +85,7 @@
</div> </div>
<div id="tab-3" class="tab-pane"> <div id="tab-3" class="tab-pane">
<div class="panel-body"> <div class="panel-body">
<table class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;"> <table id="t3" class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<thead> <thead>
<tr> <tr>
<th>sku</th> <th>sku</th>
...@@ -89,15 +103,13 @@ ...@@ -89,15 +103,13 @@
<th>缺货数</th> <th>缺货数</th>
</tr> </tr>
</thead> </thead>
<tbody id="tb3"> <tbody id="tb3"></tbody>
</tbody>
</table> </table>
</div> </div>
</div> </div>
<div id="tab-4" class="tab-pane"> <div id="tab-4" class="tab-pane">
<div class="panel-body"> <div class="panel-body">
<table class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;"> <table id="t4" class="table table-hover table-bordered table-condensed table-striped" style="table-layout:fixed;">
<thead> <thead>
<tr> <tr>
<th>sku</th> <th>sku</th>
...@@ -115,9 +127,7 @@ ...@@ -115,9 +127,7 @@
<th>缺货数</th> <th>缺货数</th>
</tr> </tr>
</thead> </thead>
<tbody id="tb4"> <tbody id="tb4"></tbody>
</tbody>
</table> </table>
</div> </div>
</div> </div>
...@@ -127,23 +137,46 @@ ...@@ -127,23 +137,46 @@
</div> </div>
@section css{ @section css{
<style>
.tablesorter-headerDesc {
background-position: right;
background-repeat: no-repeat;
padding-right: 30px;
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=' );
}
.tablesorter-headerAsc {
background-position: right;
background-repeat: no-repeat;
padding-right: 30px;
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==');
}
</style>
} }
@section scripts{ @section scripts{
<script src="~/js/jquery.tablesorter.min.js" type="text/javascript"></script>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function () { $(document).ready(function () {
laydate.render({ elem: '#day' });
list(); list();
}) })
var indexload; var indexload;
function list() { function list() {
indexload = layer.load(); indexload = layer.load();
var day = $('#day').val();
if (day == '') {
layer.msg('请选择日期');
return false;
}
$.submit({ $.submit({
type:'POST', type:'POST',
url: '@Url.Content("~/Reports/Warehouse/SkuRedundancyJson")', url: '@Url.Content("~/Reports/Warehouse/SkuRedundancyJson")',
paramData: 'warehousecode=@(ViewBag.warehousecode)', paramData: 'warehousecode=@(ViewBag.warehousecode)' + '&day=' + day,
func: function (result) { func: function (result) {
layer.close(indexload); layer.close(indexload);
if (result != undefined && result != null && result.length == 4) { if (result != undefined && result != null && result.length == 4) {
...@@ -169,7 +202,8 @@ ...@@ -169,7 +202,8 @@
} }
$('#tb' + (parseInt(i) + 1)).append(shtml); $('#tb' + (parseInt(i) + 1)).append(shtml);
$('#t' + (parseInt(i) + 1)).trigger("destroy");
$('#t' + (parseInt(i) + 1)).tablesorter();
} }
else if(i>1 && i<4){ //前100个数动销最快sku分析,前100金额动销最快sku分析 else if(i>1 && i<4){ //前100个数动销最快sku分析,前100金额动销最快sku分析
var shtml = ''; var shtml = '';
...@@ -205,6 +239,8 @@ ...@@ -205,6 +239,8 @@
} }
$('#tb' + (parseInt(i) + 1)).append(shtml); $('#tb' + (parseInt(i) + 1)).append(shtml);
$('#t' + (parseInt(i) + 1)).trigger("destroy");
$('#t' + (parseInt(i) + 1)).tablesorter();
} }
} }
} }
......

@{
ViewData["Title"] = "仓库历史冗余分析数据";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
}
<div class="row">
<div class="col-sm-12">
<div id="chart-contain" style="width:100%;height:550px;">
</div>
</div>
</div>
@section scripts{
<script src="~/js/echarts.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
getData();
})
function getData() {
$.submit({
type:'POST',
url: '@Url.Content("~/Reports/Warehouse/WHRedundancyChartJson")',
paramData: 'warehousecode=@(ViewBag.warehousecode)&day=@(ViewBag.day)&col=@(ViewBag.col)',
func: function (result) {
if (result) {
showChart('@Html.Raw(ViewBag.warehousename)'+'仓库冗余前两个月的数据', result.col, result.val);
}
}
})
}
function showChart(title,category,vals) {
option = {
title: {
text: title
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['@Html.Raw(ViewBag.colname)']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: category
},
yAxis: {
type: 'value'
},
series: [
{
name: '@Html.Raw(ViewBag.colname)',
type: 'line',
stack: '总量',
data: vals
}
]
};
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('chart-contain'));
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
</script>
}
...@@ -69,6 +69,11 @@ ...@@ -69,6 +69,11 @@
</a> </a>
</li> </li>
<li> <li>
<a class="J_menuItem" href="@Url.Content("~/Reports/Inventory/WarehouseSaleReport")" data-index="0" style="padding-left:74px;">
<span class="nav-label">数据仓销量分析</span>
</a>
</li>
<li>
<a class="J_menuItem" href="@Url.Content("~/Reports/Warehouse/LogicWarehouse")" data-index="0" style="padding-left:74px;">逻辑仓库</a> <a class="J_menuItem" href="@Url.Content("~/Reports/Warehouse/LogicWarehouse")" data-index="0" style="padding-left:74px;">逻辑仓库</a>
</li> </li>
<li> <li>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
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