Commit 4a0295e7 by guanzhenshan

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

parent 60cbf7ca
......@@ -8,8 +8,11 @@ namespace Bailun.DC.Common
{
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;";
#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";
/// <summary>
......
......@@ -4,6 +4,9 @@ using System.Text;
namespace Bailun.DC.Models.Warehouse
{
/// <summary>
/// 数据仓sku销量分析
/// </summary>
public class dc_mid_skuwarehouse_sales
{
public int id { get; set; }
......@@ -176,5 +179,9 @@ namespace Bailun.DC.Models.Warehouse
/// </summary>
public DateTime? createtime { get; set; }
/// <summary>
/// 销量合计
/// </summary>
public int salecount { get; set; }
}
}
......@@ -8,6 +8,7 @@ using MySql.Data.MySqlClient;
using Bailun.DC.Models.Stock;
using MySql.Data;
using System.Data;
using Bailun.DC.Models.Warehouse;
namespace Bailun.DC.Services
{
......@@ -510,6 +511,7 @@ namespace Bailun.DC.Services
tb.Columns.Add("wish_saleamount");
tb.Columns.Add("day");
tb.Columns.Add("createtime");
tb.Columns.Add("salecount");
var page = 1;
var pagesize = 100000;
......@@ -597,6 +599,7 @@ namespace Bailun.DC.Services
row["wish_saleamount"] = item.wish_saleamount??0;
row["day"] = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
row["createtime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
row["salecount"] = (item.aliexpress_salecount ?? 0) + (item.amazon_salecount ?? 0) + (item.fba_salecount ?? 0) + (item.ebay_salecount ?? 0) + (item.amazon2B_salecount ?? 0) + (item.jollychic_salecount ?? 0) + (item.joom_salecount ?? 0) + (item.marketing_salecount ?? 0) + (item.mymall_salecount ?? 0) + (item.opensky_salecount ?? 0) + (item.priceminister_salecount ?? 0) + (item.qoo10_salecount ?? 0) + (item.shopee_salecount ?? 0) + (item.shopify_salecount ?? 0) + (item.walmart_salecount ?? 0) + (item.wish_salecount ?? 0);
tb.Rows.Add(row);
}
......@@ -660,5 +663,303 @@ namespace Bailun.DC.Services
return sb.ToString();
}
#region 数据仓sku销售分析
/// <summary>
/// 数据仓 sku销售分析 仓库维度
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehousecode">仓库编码</param>
/// <param name="startcount">销量开始</param>
/// <param name="endcount">销量结束</param>
/// <param name="devstart">开发开始时间</param>
/// <param name="devend">开发结束时间</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<Models.Warehouse.dc_mid_skuwarehouse_sales> ListWarehouseSales(Models.BtTableParameter parameter,string warehousetype,string warehousecode,int? startcount,int? endcount,DateTime? devstart,DateTime? devend,DateTime? start,DateTime? end, ref int total)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
var sqlparam = new DynamicParameters();
var sql = "select warehouse_code,warehouse_name,warehouse_type,sum(stock_count) stock_count,sum(stock_amount) stock_amount,sum(aliexpress_salecount) aliexpress_salecount,sum(aliexpress_saleamount) aliexpress_saleamount,sum(amazon_salecount) amazon_salecount, sum(amazon_saleamount) amazon_saleamount,sum(fba_salecount) fba_salecount,sum(fba_saleamount) fba_saleamount,sum(ebay_salecount) ebay_salecount,sum(ebay_saleamount) ebay_saleamount,sum(amazon2B_salecount) amazon2B_salecount,sum(amazon2B_saleamount) amazon2B_saleamount,sum(jollychic_salecount) jollychic_salecount,sum(jollychic_saleamount) jollychic_saleamount, sum(joom_salecount) joom_salecount,sum(joom_saleamount) joom_saleamount,sum(marketing_salecount) marketing_salecount,sum(marketing_saleamount) marketing_saleamount,sum(mymall_salecount) mymall_salecount,sum(mymall_saleamount) mymall_saleamount,sum(opensky_salecount) opensky_salecount,sum(opensky_saleamount) opensky_saleamount,sum(priceminister_salecount) priceminister_salecount,sum(priceminister_saleamount) priceminister_saleamount,sum(qoo10_salecount) qoo10_salecount,sum(qoo10_saleamount) qoo10_saleamount,sum(shopee_salecount) shopee_salecount,sum(shopee_saleamount) shopee_saleamount,sum(shopify_salecount) shopify_salecount,sum(shopify_saleamount) shopify_saleamount,sum(walmart_salecount) walmart_salecount,sum(walmart_saleamount) walmart_saleamount,sum(wish_salecount) wish_salecount,sum(wish_saleamount) wish_saleamount,sum(salecount) salecount from dc_mid_skuwarehouse_sales where 1=1 ";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " and warehouse_type=@warehouse_type";
sqlparam.Add("warehouse_type", warehousetype);
}
if (!string.IsNullOrEmpty(warehousecode))
{
sql += " and warehouse_code=@warehousecode";
sqlparam.Add("warehousecode", warehousecode);
}
if(devstart.HasValue)
{
sql += " and sku_developtime>=@devstart";
sqlparam.Add("devstart", devstart.Value);
}
if (devend.HasValue)
{
sql += " and sku_developtime<@devend";
sqlparam.Add("devend", devend.Value.AddDays(1));
}
if (startcount.HasValue)
{
sql += " and salecount>=@startcount";
sqlparam.Add("startcount", startcount.Value);
}
if (endcount.HasValue)
{
sql += " and salecount<@endcount";
sqlparam.Add("endcount", endcount.Value);
}
if (start.HasValue)
{
sql += " and day>=@start";
sqlparam.Add("start", start.Value);
}
if (end.HasValue)
{
sql += " and day<@end";
sqlparam.Add("end", end.Value.AddDays(1));
}
sql += " group by warehouse_code ";
if (!string.IsNullOrEmpty(parameter.sort))
{
sql += " order by "+parameter.sort+" "+parameter.order;
}
var obj = cn.Page<dc_mid_skuwarehouse_sales>(parameter.pageIndex, parameter.limit, sql, ref total, sqlparam);
return obj.AsList();
}
}
/// <summary>
/// 数据仓 sku销售分析 仓库维度 统计
/// </summary>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehousecode">仓库编码</param>
/// <param name="startcount">销量开始</param>
/// <param name="endcount">销量结束</param>
/// <param name="devstart">开发开始时间</param>
/// <param name="devend">开发结束时间</param>
/// <returns></returns>
public dc_mid_skuwarehouse_sales ListWarehouseSalesCount(string warehousetype, string warehousecode, int? startcount, int? endcount, DateTime? devstart, DateTime? devend,DateTime? start, DateTime? end)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
var sqlparam = new DynamicParameters();
var sql = "select sum(stock_count) stock_count,sum(stock_amount) stock_amount,sum(aliexpress_salecount) aliexpress_salecount,sum(aliexpress_saleamount) aliexpress_saleamount,sum(amazon_salecount) amazon_salecount, sum(amazon_saleamount) amazon_saleamount,sum(fba_salecount) fba_salecount,sum(fba_saleamount) fba_saleamount,sum(ebay_salecount) ebay_salecount,sum(ebay_saleamount) ebay_saleamount,sum(amazon2B_salecount) amazon2B_salecount,sum(amazon2B_saleamount) amazon2B_saleamount,sum(jollychic_salecount) jollychic_salecount,sum(jollychic_saleamount) jollychic_saleamount, sum(joom_salecount) joom_salecount,sum(joom_saleamount) joom_saleamount,sum(marketing_salecount) marketing_salecount,sum(marketing_saleamount) marketing_saleamount,sum(mymall_salecount) mymall_salecount,sum(mymall_saleamount) mymall_saleamount,sum(opensky_salecount) opensky_salecount,sum(opensky_saleamount) opensky_saleamount,sum(priceminister_salecount) priceminister_salecount,sum(priceminister_saleamount) priceminister_saleamount,sum(qoo10_salecount) qoo10_salecount,sum(qoo10_saleamount) qoo10_saleamount,sum(shopee_salecount) shopee_salecount,sum(shopee_saleamount) shopee_saleamount,sum(shopify_salecount) shopify_salecount,sum(shopify_saleamount) shopify_saleamount,sum(walmart_salecount) walmart_salecount,sum(walmart_saleamount) walmart_saleamount,sum(wish_salecount) wish_salecount,sum(wish_saleamount) wish_saleamount,sum(salecount) salecount from dc_mid_skuwarehouse_sales where 1=1 ";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " and warehouse_type=@warehouse_type";
sqlparam.Add("warehouse_type", warehousetype);
}
if (!string.IsNullOrEmpty(warehousecode))
{
sql += " and warehouse_code=@warehousecode";
sqlparam.Add("warehousecode", warehousecode);
}
if (devstart.HasValue)
{
sql += " and sku_developtime>=@devstart";
sqlparam.Add("devstart", devstart.Value);
}
if (devend.HasValue)
{
sql += " and sku_developtime<@devend";
sqlparam.Add("devend", devend.Value.AddDays(1));
}
if (startcount.HasValue)
{
sql += " and salecount>=@startcount";
sqlparam.Add("startcount", startcount.Value);
}
if (endcount.HasValue)
{
sql += " and salecount<@endcount";
sqlparam.Add("endcount", endcount.Value);
}
if (start.HasValue)
{
sql += " and day>=@start";
sqlparam.Add("start", start.Value);
}
if (end.HasValue)
{
sql += " and day<@end";
sqlparam.Add("end", end.Value.AddDays(1));
}
var obj = cn.QueryFirstOrDefault<dc_mid_skuwarehouse_sales>(sql,sqlparam);
return obj;
}
}
/// <summary>
/// 数据仓 销量分析报表 sku维度
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="warehousecode">仓库编码</param>
/// <param name="startcount">销量开始</param>
/// <param name="endcount">销量结束</param>
/// <param name="devstart">开发开始时间</param>
/// <param name="devend">开发结束时间</param>
/// <param name="start">统计开始时间</param>
/// <param name="end">统计结束时间</param>
/// <param name="total">符合条件的记录数</param>
/// <returns></returns>
public List<dc_mid_skuwarehouse_sales> ListSkuWarehouseSales(BtTableParameter parameter, string warehousecode, int? startcount, int? endcount, DateTime? devstart, DateTime? devend, DateTime? start, DateTime? end, ref int total)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
var sqlparam = new DynamicParameters();
var sql = "select * from dc_mid_skuwarehouse_sales where 1=1 ";
if (!string.IsNullOrEmpty(warehousecode))
{
sql += " and warehouse_code=@warehousecode";
sqlparam.Add("warehousecode", warehousecode);
}
if (devstart.HasValue)
{
sql += " and sku_developtime>=@devstart";
sqlparam.Add("devstart", devstart.Value);
}
if (devend.HasValue)
{
sql += " and sku_developtime<@devend";
sqlparam.Add("devend", devend.Value.AddDays(1));
}
if (startcount.HasValue)
{
sql += " and salecount>=@startcount";
sqlparam.Add("startcount", startcount.Value);
}
if (endcount.HasValue)
{
sql += " and salecount<@endcount";
sqlparam.Add("endcount", endcount.Value);
}
if (start.HasValue)
{
sql += " and day>=@start";
sqlparam.Add("start", start.Value);
}
if (end.HasValue)
{
sql += " and day<@end";
sqlparam.Add("end", end.Value.AddDays(1));
}
if (!string.IsNullOrEmpty(parameter.sort))
{
sql += " order by " + parameter.sort + " " + parameter.order;
}
var obj = cn.Page<dc_mid_skuwarehouse_sales>(parameter.pageIndex, parameter.limit, sql, ref total, sqlparam);
return obj.AsList();
}
}
/// <summary>
/// 数据仓 销量分析报表 sku维度 统计
/// </summary>
/// <param name="warehousecode">仓库编码</param>
/// <param name="startcount">销量开始</param>
/// <param name="endcount">销量结束</param>
/// <param name="devstart">开发开始时间</param>
/// <param name="devend">开发结束时间</param>
/// <param name="start">统计开始时间</param>
/// <param name="end">统计结束时间</param>
/// <returns></returns>
public dc_mid_skuwarehouse_sales ListSkuWarehouseSalesCount(string warehousecode, int? startcount, int? endcount, DateTime? devstart, DateTime? devend, DateTime? start, DateTime? end)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
var sqlparam = new DynamicParameters();
var sql = "select sum(stock_count) stock_count,sum(stock_amount) stock_amount,sum(aliexpress_salecount) aliexpress_salecount,sum(aliexpress_saleamount) aliexpress_saleamount,sum(amazon_salecount) amazon_salecount, sum(amazon_saleamount) amazon_saleamount,sum(fba_salecount) fba_salecount,sum(fba_saleamount) fba_saleamount,sum(ebay_salecount) ebay_salecount,sum(ebay_saleamount) ebay_saleamount,sum(amazon2B_salecount) amazon2B_salecount,sum(amazon2B_saleamount) amazon2B_saleamount,sum(jollychic_salecount) jollychic_salecount,sum(jollychic_saleamount) jollychic_saleamount, sum(joom_salecount) joom_salecount,sum(joom_saleamount) joom_saleamount,sum(marketing_salecount) marketing_salecount,sum(marketing_saleamount) marketing_saleamount,sum(mymall_salecount) mymall_salecount,sum(mymall_saleamount) mymall_saleamount,sum(opensky_salecount) opensky_salecount,sum(opensky_saleamount) opensky_saleamount,sum(priceminister_salecount) priceminister_salecount,sum(priceminister_saleamount) priceminister_saleamount,sum(qoo10_salecount) qoo10_salecount,sum(qoo10_saleamount) qoo10_saleamount,sum(shopee_salecount) shopee_salecount,sum(shopee_saleamount) shopee_saleamount,sum(shopify_salecount) shopify_salecount,sum(shopify_saleamount) shopify_saleamount,sum(walmart_salecount) walmart_salecount,sum(walmart_saleamount) walmart_saleamount,sum(wish_salecount) wish_salecount,sum(wish_saleamount) wish_saleamount,sum(salecount) salecount from dc_mid_skuwarehouse_sales where 1=1 ";
if (!string.IsNullOrEmpty(warehousecode))
{
sql += " and warehouse_code=@warehousecode";
sqlparam.Add("warehousecode", warehousecode);
}
if (devstart.HasValue)
{
sql += " and sku_developtime>=@devstart";
sqlparam.Add("devstart", devstart.Value);
}
if (devend.HasValue)
{
sql += " and sku_developtime<@devend";
sqlparam.Add("devend", devend.Value.AddDays(1));
}
if (startcount.HasValue)
{
sql += " and salecount>=@startcount";
sqlparam.Add("startcount", startcount.Value);
}
if (endcount.HasValue)
{
sql += " and salecount<@endcount";
sqlparam.Add("endcount", endcount.Value);
}
if (start.HasValue)
{
sql += " and day>=@start";
sqlparam.Add("start", start.Value);
}
if (end.HasValue)
{
sql += " and day<@end";
sqlparam.Add("end", end.Value.AddDays(1));
}
var obj = cn.QueryFirstOrDefault<dc_mid_skuwarehouse_sales>( sql, sqlparam);
return obj;
}
}
#endregion
}
}
......@@ -409,7 +409,7 @@ namespace Bailun.DC.Services
/// <param name="warehousecode">仓库编码</param>
/// <param name="total">符合条件的总记录数</param>
/// <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))
{
......@@ -419,7 +419,7 @@ namespace Bailun.DC.Services
}
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))
{
......@@ -427,7 +427,13 @@ namespace Bailun.DC.Services
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))
{
......@@ -435,7 +441,7 @@ namespace Bailun.DC.Services
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();
}
......@@ -447,7 +453,7 @@ namespace Bailun.DC.Services
/// <param name="warehousetype"></param>
/// <param name="warehousecode"></param>
/// <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))
{
......@@ -465,7 +471,13 @@ namespace Bailun.DC.Services
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))
{
......@@ -473,7 +485,7 @@ namespace Bailun.DC.Services
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;
}
......@@ -484,7 +496,7 @@ namespace Bailun.DC.Services
/// </summary>
/// <param name="warehousecode"></param>
/// <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))
{
......@@ -494,16 +506,16 @@ namespace Bailun.DC.Services
}
//前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分析
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分析
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分析
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 obj2 = cn.Query<dc_mid_skuwarehouse_redundancy>(sql2);
......@@ -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();
}
}
}
}
......@@ -304,5 +304,273 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
}
}
#region 数据仓销量分析报表
public ActionResult WarehouseSaleReport()
{
return View();
}
/// <summary>
/// 数据仓销量分析
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehousecode">仓库编码</param>
/// <param name="startcount">销量开始</param>
/// <param name="endcount">销量结束</param>
/// <param name="start">开发开始时间</param>
/// <param name="end">开发结束时间</param>
/// <returns></returns>
public string WarehouseSaleReportJson(Models.BtTableParameter parameter,string warehousetype,string warehousecode,int? startcount,int? endcount,DateTime? devstart,DateTime? devend,DateTime? start,DateTime? end)
{
var total = 0;
var services = new Services.InventoryServices();
var obj = services.ListWarehouseSales(parameter, warehousetype, warehousecode, startcount, endcount, devstart, devend,start,end, ref total);
var objCount = services.ListWarehouseSalesCount(warehousetype, warehousecode, startcount, endcount, devstart, devend,start,end);
var list = obj.Select(a => new {
aliexpress_saleamount = (a.aliexpress_saleamount??0).ToString("N2"),
aliexpress_salecount = (a.aliexpress_salecount??0).ToString("N0"),
amazon2B_saleamount = (a.amazon2B_saleamount??0).ToString("N2"),
amazon2B_salecount = (a.amazon2B_salecount??0).ToString("N0"),
amazon_saleamount = (a.amazon_saleamount??0).ToString("N2"),
amazon_salecount = (a.amazon_salecount??0).ToString("N0"),
ebay_saleamount = (a.ebay_saleamount??0).ToString("N2"),
ebay_salecount = (a.ebay_salecount??0).ToString("N0"),
fba_saleamount = (a.fba_saleamount??0).ToString("N2"),
fba_salecount = (a.fba_salecount??0).ToString("N0"),
jollychic_saleamount = (a.jollychic_saleamount??0).ToString("N2"),
jollychic_salecount = (a.jollychic_salecount??0).ToString("N0"),
joom_saleamount = (a.joom_saleamount??0).ToString("N2"),
joom_salecount = (a.joom_salecount??0).ToString("N0"),
marketing_saleamount = (a.marketing_saleamount??0).ToString("N2"),
marketing_salecount = (a.marketing_salecount??0).ToString("N0"),
mymall_saleamount = (a.mymall_saleamount??0).ToString("N2"),
mymall_salecount = (a.mymall_salecount??0).ToString("N0"),
opensky_saleamount = (a.opensky_saleamount??0).ToString("N2"),
opensky_salecount = (a.opensky_salecount??0).ToString("N0"),
priceminister_saleamount = (a.priceminister_saleamount??0).ToString("N2"),
priceminister_salecount = (a.priceminister_salecount??0).ToString("N0"),
qoo10_saleamount = (a.qoo10_saleamount??0).ToString("N2"),
qoo10_salecount = (a.qoo10_salecount??0).ToString("N0"),
shopee_saleamount = (a.shopee_saleamount??0).ToString("N2"),
shopee_salecount = (a.shopee_salecount??0).ToString("N0"),
shopify_saleamount = (a.shopify_saleamount??0).ToString("N2"),
shopify_salecount = (a.shopify_salecount??0).ToString("N0"),
stock_amount = (a.stock_amount??0).ToString("N2"),
stock_count = (a.stock_count).ToString("N0"),
walmart_saleamount = (a.walmart_saleamount??0).ToString("N2"),
walmart_salecount = (a.walmart_salecount??0).ToString("N0"),
a.warehouse_code,
a.warehouse_name,
a.warehouse_type,
wish_saleamount = (a.wish_saleamount??0).ToString("N2"),
wish_salecount = (a.wish_salecount??0).ToString("N0"),
salecount = a.salecount.ToString("N0"),
});
return JsonConvert.SerializeObject(new {
total = total,
rows = list,
count_row = new {
warehouse_name = "合计",
aliexpress_saleamount = (objCount.aliexpress_saleamount ?? 0).ToString("N2"),
aliexpress_salecount = (objCount.aliexpress_salecount ?? 0).ToString("N0"),
amazon2B_saleamount = (objCount.amazon2B_saleamount ?? 0).ToString("N2"),
amazon2B_salecount = (objCount.amazon2B_salecount ?? 0).ToString("N0"),
amazon_saleamount = (objCount.amazon_saleamount ?? 0).ToString("N2"),
amazon_salecount = (objCount.amazon_salecount ?? 0).ToString("N0"),
ebay_saleamount = (objCount.ebay_saleamount ?? 0).ToString("N2"),
ebay_salecount = (objCount.ebay_salecount ?? 0).ToString("N0"),
fba_saleamount = (objCount.fba_saleamount ?? 0).ToString("N2"),
fba_salecount = (objCount.fba_salecount ?? 0).ToString("N0"),
jollychic_saleamount = (objCount.jollychic_saleamount ?? 0).ToString("N2"),
jollychic_salecount = (objCount.jollychic_salecount ?? 0).ToString("N0"),
joom_saleamount = (objCount.joom_saleamount ?? 0).ToString("N2"),
joom_salecount = (objCount.joom_salecount ?? 0).ToString("N0"),
marketing_saleamount = (objCount.marketing_saleamount ?? 0).ToString("N2"),
marketing_salecount = (objCount.marketing_salecount ?? 0).ToString("N0"),
mymall_saleamount = (objCount.mymall_saleamount ?? 0).ToString("N2"),
mymall_salecount = (objCount.mymall_salecount ?? 0).ToString("N0"),
opensky_saleamount = (objCount.opensky_saleamount ?? 0).ToString("N2"),
opensky_salecount = (objCount.opensky_salecount ?? 0).ToString("N0"),
priceminister_saleamount = (objCount.priceminister_saleamount ?? 0).ToString("N2"),
priceminister_salecount = (objCount.priceminister_salecount ?? 0).ToString("N0"),
qoo10_saleamount = (objCount.qoo10_saleamount ?? 0).ToString("N2"),
qoo10_salecount = (objCount.qoo10_salecount ?? 0).ToString("N0"),
shopee_saleamount = (objCount.shopee_saleamount ?? 0).ToString("N2"),
shopee_salecount = (objCount.shopee_salecount ?? 0).ToString("N0"),
shopify_saleamount = (objCount.shopify_saleamount ?? 0).ToString("N2"),
shopify_salecount = (objCount.shopify_salecount ?? 0).ToString("N0"),
stock_amount = (objCount.stock_amount ?? 0).ToString("N2"),
stock_count = (objCount.stock_count).ToString("N0"),
walmart_saleamount = (objCount.walmart_saleamount ?? 0).ToString("N2"),
walmart_salecount = (objCount.walmart_salecount ?? 0).ToString("N0"),
wish_saleamount = (objCount.wish_saleamount ?? 0).ToString("N2"),
wish_salecount = (objCount.wish_salecount ?? 0).ToString("N0"),
salecount = objCount.salecount.ToString("N0"),
}
});
}
/// <summary>
/// 数据仓sku销量分析
/// </summary>
/// <param name="warehousecode"></param>
/// <param name="startcount"></param>
/// <param name="endcount"></param>
/// <param name="devstart"></param>
/// <param name="devend"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
public ActionResult SkuWarehouseSaleReport(string warehousecode, int? startcount, int? endcount, DateTime? devstart, DateTime? devend, DateTime? start, DateTime? end)
{
ViewBag.warehousecode = warehousecode;
ViewBag.startcount = startcount.HasValue ? startcount.Value + "" : "";
ViewBag.endcount = endcount.HasValue ? endcount.Value + "" : "";
ViewBag.devstart = devstart.HasValue ? devstart.Value.ToString("yyyy-MM-dd") : "";
ViewBag.devend = devend.HasValue ? devend.Value.ToString("yyyy-MM-dd") : "";
ViewBag.start = start.HasValue ? start.Value.ToString("yyyy-MM-dd") : "";
ViewBag.end = end.HasValue ? end.Value.ToString("yyyy-MM-dd") : "";
return View();
}
/// <summary>
/// 数据仓sku销量分析 数据
/// </summary>
/// <param name="parameter">分页信息</param>
/// <param name="warehousecode">仓库编码</param>
/// <param name="startcount">销量开始</param>
/// <param name="endcount">销量结束</param>
/// <param name="devstart">开发开始时间</param>
/// <param name="devend">开发结束时间</param>
/// <param name="start">统计开始时间</param>
/// <param name="end">统计结束时间</param>
/// <returns></returns>
public string SkuWarehouseSaleReportJson(Models.BtTableParameter parameter, string warehousecode, int? startcount, int? endcount, DateTime? devstart, DateTime? devend, DateTime? start, DateTime? end)
{
var total = 0;
var services = new Services.InventoryServices();
var obj = services.ListSkuWarehouseSales(parameter, warehousecode, startcount, endcount, devstart, devend, start, end, ref total);
var objCount = services.ListSkuWarehouseSalesCount(warehousecode, startcount, endcount, devstart, devend, start, end);
var list = obj.Select(a => new {
aliexpress_saleamount = (a.aliexpress_saleamount ?? 0).ToString("N2"),
aliexpress_salecount = (a.aliexpress_salecount ?? 0).ToString("N0"),
amazon2B_saleamount = (a.amazon2B_saleamount ?? 0).ToString("N2"),
amazon2B_salecount = (a.amazon2B_salecount ?? 0).ToString("N0"),
amazon_saleamount = (a.amazon_saleamount ?? 0).ToString("N2"),
amazon_salecount = (a.amazon_salecount ?? 0).ToString("N0"),
ebay_saleamount = (a.ebay_saleamount ?? 0).ToString("N2"),
ebay_salecount = (a.ebay_salecount ?? 0).ToString("N0"),
fba_saleamount = (a.fba_saleamount ?? 0).ToString("N2"),
fba_salecount = (a.fba_salecount ?? 0).ToString("N0"),
jollychic_saleamount = (a.jollychic_saleamount ?? 0).ToString("N2"),
jollychic_salecount = (a.jollychic_salecount ?? 0).ToString("N0"),
joom_saleamount = (a.joom_saleamount ?? 0).ToString("N2"),
joom_salecount = (a.joom_salecount ?? 0).ToString("N0"),
marketing_saleamount = (a.marketing_saleamount ?? 0).ToString("N2"),
marketing_salecount = (a.marketing_salecount ?? 0).ToString("N0"),
mymall_saleamount = (a.mymall_saleamount ?? 0).ToString("N2"),
mymall_salecount = (a.mymall_salecount ?? 0).ToString("N0"),
opensky_saleamount = (a.opensky_saleamount ?? 0).ToString("N2"),
opensky_salecount = (a.opensky_salecount ?? 0).ToString("N0"),
priceminister_saleamount = (a.priceminister_saleamount ?? 0).ToString("N2"),
priceminister_salecount = (a.priceminister_salecount ?? 0).ToString("N0"),
qoo10_saleamount = (a.qoo10_saleamount ?? 0).ToString("N2"),
qoo10_salecount = (a.qoo10_salecount ?? 0).ToString("N0"),
shopee_saleamount = (a.shopee_saleamount ?? 0).ToString("N2"),
shopee_salecount = (a.shopee_salecount ?? 0).ToString("N0"),
shopify_saleamount = (a.shopify_saleamount ?? 0).ToString("N2"),
shopify_salecount = (a.shopify_salecount ?? 0).ToString("N0"),
stock_amount = (a.stock_amount ?? 0).ToString("N2"),
stock_count = (a.stock_count).ToString("N0"),
walmart_saleamount = (a.walmart_saleamount ?? 0).ToString("N2"),
walmart_salecount = (a.walmart_salecount ?? 0).ToString("N0"),
a.warehouse_code,
a.warehouse_name,
a.warehouse_type,
wish_saleamount = (a.wish_saleamount ?? 0).ToString("N2"),
wish_salecount = (a.wish_salecount ?? 0).ToString("N0"),
a.bailun_sku,
a.bailun_sku_name,
day = a.day.HasValue?a.day.Value.ToString("yyyy-MM-dd"):"",
sku_developtime = a.sku_developtime.ToString("yyyy-MM-dd HH:mm:ss"),
salecount = a.salecount.ToString("N0")
});
return JsonConvert.SerializeObject(new
{
total = total,
rows = list,
count_row = new
{
warehouse_name = "合计",
aliexpress_saleamount = (objCount.aliexpress_saleamount ?? 0).ToString("N2"),
aliexpress_salecount = (objCount.aliexpress_salecount ?? 0).ToString("N0"),
amazon2B_saleamount = (objCount.amazon2B_saleamount ?? 0).ToString("N2"),
amazon2B_salecount = (objCount.amazon2B_salecount ?? 0).ToString("N0"),
amazon_saleamount = (objCount.amazon_saleamount ?? 0).ToString("N2"),
amazon_salecount = (objCount.amazon_salecount ?? 0).ToString("N0"),
ebay_saleamount = (objCount.ebay_saleamount ?? 0).ToString("N2"),
ebay_salecount = (objCount.ebay_salecount ?? 0).ToString("N0"),
fba_saleamount = (objCount.fba_saleamount ?? 0).ToString("N2"),
fba_salecount = (objCount.fba_salecount ?? 0).ToString("N0"),
jollychic_saleamount = (objCount.jollychic_saleamount ?? 0).ToString("N2"),
jollychic_salecount = (objCount.jollychic_salecount ?? 0).ToString("N0"),
joom_saleamount = (objCount.joom_saleamount ?? 0).ToString("N2"),
joom_salecount = (objCount.joom_salecount ?? 0).ToString("N0"),
marketing_saleamount = (objCount.marketing_saleamount ?? 0).ToString("N2"),
marketing_salecount = (objCount.marketing_salecount ?? 0).ToString("N0"),
mymall_saleamount = (objCount.mymall_saleamount ?? 0).ToString("N2"),
mymall_salecount = (objCount.mymall_salecount ?? 0).ToString("N0"),
opensky_saleamount = (objCount.opensky_saleamount ?? 0).ToString("N2"),
opensky_salecount = (objCount.opensky_salecount ?? 0).ToString("N0"),
priceminister_saleamount = (objCount.priceminister_saleamount ?? 0).ToString("N2"),
priceminister_salecount = (objCount.priceminister_salecount ?? 0).ToString("N0"),
qoo10_saleamount = (objCount.qoo10_saleamount ?? 0).ToString("N2"),
qoo10_salecount = (objCount.qoo10_salecount ?? 0).ToString("N0"),
shopee_saleamount = (objCount.shopee_saleamount ?? 0).ToString("N2"),
shopee_salecount = (objCount.shopee_salecount ?? 0).ToString("N0"),
shopify_saleamount = (objCount.shopify_saleamount ?? 0).ToString("N2"),
shopify_salecount = (objCount.shopify_salecount ?? 0).ToString("N0"),
stock_amount = (objCount.stock_amount ?? 0).ToString("N2"),
stock_count = (objCount.stock_count).ToString("N0"),
walmart_saleamount = (objCount.walmart_saleamount ?? 0).ToString("N2"),
walmart_salecount = (objCount.walmart_salecount ?? 0).ToString("N0"),
wish_saleamount = (objCount.wish_saleamount ?? 0).ToString("N2"),
wish_salecount = (objCount.wish_salecount ?? 0).ToString("N0"),
salecount = objCount.salecount.ToString("N0"),
}
});
}
#endregion
}
}
\ No newline at end of file
......@@ -157,15 +157,13 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
/// <param name="warehousetype">仓库类型</param>
/// <param name="code">仓库编码</param>
/// <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 services = new Services.WareHouseServices();
var obj = services.ListWarehouseRedundancy(parameter, warehousetype, code, ref total);
var count_obj = services.ListWarehouseRedundancyCount(warehousetype, code);
var obj = services.ListWarehouseRedundancy(parameter, warehousetype, code,day, ref total);
var count_obj = services.ListWarehouseRedundancyCount(warehousetype, code,day);
var list = obj.Select(a => new {
a.warehouse_code,
......@@ -219,9 +217,11 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
/// </summary>
/// <param name="warehousecode"></param>
/// <returns></returns>
public ActionResult SkuRedundancy(string warehousecode)
public ActionResult SkuRedundancy(string warehousecode,DateTime? day,string warehousename)
{
ViewBag.warehousecode = warehousecode;
ViewBag.day = day.HasValue ? day.Value.ToString("yyyy-MM-dd") : "";
ViewBag.warehousename = warehousename;
return View();
}
......@@ -231,14 +231,89 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
/// <param name="warehousecode"></param>
/// <returns></returns>
[HttpPost]
public JsonResult SkuRedundancyJson(string warehousecode)
public JsonResult SkuRedundancyJson(string warehousecode,DateTime day)
{
var services = new Services.WareHouseServices();
var obj = services.GetSkuRedundancy(warehousecode);
var obj = services.GetSkuRedundancy(warehousecode,day);
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>
}

@{
ViewData["Title"] = "数据仓销量分析";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "库存", "库存周转报表", "数据仓销量分析" };
}
<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;">
<div class="form-group">
<label>仓库类型:</label>
<select id="warehousetype" name="warehousetype" class="form-control">
<option value="">选择仓库类型</option>
<option value="国内仓">国内仓</option>
<option value="海外仓">海外仓</option>
<option value="FBA仓">FBA仓</option>
<option value="第三方仓库">第三方仓库</option>
<option value="半成品仓">半成品仓</option>
<option value="耗材仓">耗材仓</option>
</select>
</div>
<div class="form-group">
<label>仓库:</label>
<select id="warehousecode" name="warehousecode" class="form-control" style="width:160px;">
<option value="">选择仓库</option>
</select>
</div>
<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="" placeholder="开发开始时间" />-
<input id="devend" name="devend" class="form-control" value="" placeholder="开发结束时间" />
</div>
<div class="form-group">
<label>销量</label>
<input id="startcount" name="startcount" class="form-control" placeholder="sku销量开始" />-
<input id="endcount" name="endcount" class="form-control" placeholder="sku销量结束" />
</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' });
listwarehouse();
$('#warehousetype').change(function () {
listwarehouse();
})
})
function list() {
var columns = [
{
field: 'warehouse_name', title: '仓库名称', width: '190', sortable: false, iscount: true, formatter: function (idx, data) {
return '<div style="color:#7CABD9;cursor:pointer;" onclick="ShowSku(\'' + data.warehouse_code + '\',\'' + data.warehouse_name + '\')">' + data.warehouse_name + '</div>';
}
},
{ 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/WarehouseSaleReportJson")' + '?' + $("#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 });
}
}
function listwarehouse() {
var type = $('#warehousetype').val();
$.submit({
url: '@Url.Content("~/Home/ListWarehouseFromStockAndSales")',
paramData: 'warehousetype=' + type,
type:'POST',
func: function (result) {
if (result != null && result != undefined) {
$('#warehousecode').html('<option value="">仓库不限</option>');
for (var i = 0; i < result.length; i++) {
$('#warehousecode').append('<option value="' + result[i].warehouse_code + '">' + result[i].warehouse_name + '</option>');
}
}
}
})
}
function ShowSku(warehousecode, title) {
var start = $('#start').val();
var end = $('#start').val();
var devstart = $('#devstart').val();
var devend = $('#devend').val();
var startcount = $('#startcount').val();
var endcount = $('#endcount').val();
layer_show(title + ' 数据仓sku销量明细', '@Url.Content("~/Reports/Inventory/SkuWarehouseSaleReport?warehousecode=")' + warehousecode + '&startcount=' + startcount + '&endcount=' + endcount + '&devstart=' + devstart + '&devend=' + devend + '&start=' + start+'&end='+end, '95%', '95%');
}
function ShowHistoryData(warehousecode, col, coltitle,warehousename) {
var day = $('#day').val();
layer_show(day + ' ' + warehousename + ' 前两个月的库存分析', '@Url.Content("~/Reports/Warehouse/WHRedundancyChart?warehousecode=")' + warehousecode + '&day=' + day + '&warehousename=' + warehousename + '&col=' + col + '&colname=' + coltitle, '95%', '95%');
}
</script>
}
......@@ -2,11 +2,27 @@
@{
ViewData["Title"] = "SkuRedundancy";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "库存", "库存分析报表",ViewBag.warehousecode+" 库存冗余分析" };
ViewBag.Nav = new string[] { "库存", "库存分析报表", ViewBag.warehousename + " 库存冗余分析" };
}
<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;">
<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">
<ul class="nav nav-tabs">
<li class="active">
......@@ -25,7 +41,7 @@
<div class="tab-content">
<div id="tab-1" class="tab-pane active">
<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>
<tr>
<th>sku</th>
......@@ -41,15 +57,13 @@
<th>冗余金额比例</th>
</tr>
</thead>
<tbody id="tb1">
</tbody>
<tbody id="tb1"></tbody>
</table>
</div>
</div>
<div id="tab-2" class="tab-pane">
<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>
<tr>
<th>sku</th>
......@@ -71,7 +85,7 @@
</div>
<div id="tab-3" class="tab-pane">
<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>
<tr>
<th>sku</th>
......@@ -89,15 +103,13 @@
<th>缺货数</th>
</tr>
</thead>
<tbody id="tb3">
</tbody>
<tbody id="tb3"></tbody>
</table>
</div>
</div>
<div id="tab-4" class="tab-pane">
<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>
<tr>
<th>sku</th>
......@@ -115,9 +127,7 @@
<th>缺货数</th>
</tr>
</thead>
<tbody id="tb4">
</tbody>
<tbody id="tb4"></tbody>
</table>
</div>
</div>
......@@ -127,23 +137,46 @@
</div>
@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{
<script src="~/js/jquery.tablesorter.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
laydate.render({ elem: '#day' });
list();
})
var indexload;
function list() {
indexload = layer.load();
var day = $('#day').val();
if (day == '') {
layer.msg('请选择日期');
return false;
}
$.submit({
type:'POST',
url: '@Url.Content("~/Reports/Warehouse/SkuRedundancyJson")',
paramData: 'warehousecode=@(ViewBag.warehousecode)',
paramData: 'warehousecode=@(ViewBag.warehousecode)' + '&day=' + day,
func: function (result) {
layer.close(indexload);
if (result != undefined && result != null && result.length == 4) {
......@@ -169,7 +202,8 @@
}
$('#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分析
var shtml = '';
......@@ -205,6 +239,8 @@
}
$('#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>
}
......@@ -33,6 +33,10 @@
</div>
<div class="form-group">
<label>&nbsp;</label>
<input id="day" name="day" class="form-control" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" 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>
......@@ -62,6 +66,8 @@
list();
laydate.render({ elem: '#day' });
listwarehouse();
$('#warehousetype').change(function () {
......@@ -74,38 +80,84 @@
var columns = [
{
field: 'warehouse_name', title: '仓库名称', width: '190', sortable: false, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowSku(\'' + data.warehouse_code + '\')">' + data.warehouse_name + '</div>';
return '<div onclick="ShowSku(\'' + data.warehouse_code + '\',\'' + data.warehouse_name + '\')">' + data.warehouse_name + '</div>';
}
},
{
field: 'skucount', title: 'Sku总个数', width: '120', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'skucount\',\'Sku总个数\',\'' + data.warehouse_name + '\')" >' + data.skucount + '</div>';
}
},
{
field: 'productcount', title: '产品个数', width: '110', sortable: true, iscount: true, formatter: function (idx,data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'productcount\',\'产品个数\',\'' + data.warehouse_name + '\')" >' + data.productcount + '</div>';
}
},
{
field: 'skucount', title: 'Sku总个数', width: '120', sortable: true, iscount: true
field: 'amount_total', title: '总金额', width: '130', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'amount_total\',\'总金额\',\'' + data.warehouse_name + '\')" >' + data.amount_total + '</div>';
}
},
{
field: 'productcount', title: '产品个数', width: '110', sortable: true, iscount: true
field: 'skusales_count', title: '日销sku个数', width: '130', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'skusales_count\',\'日销sku个数\',\'' + data.warehouse_name + '\')" >' + data.skusales_count + '</div>';
}
},
{
field: 'skusales_rate', title: '动销sku比例', width: '130', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'skusales_rate\',\'动销sku比例\',\'' + data.warehouse_name + '\')" >' + data.skusales_rate + '</div>';
}
},
{
field: 'amount_total', title: '总金额', width: '130', sortable: true, iscount: true
field: 'daily_productsale_count', title: '日销产品个数', width: '150', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'daily_productsale_count\',\'日销产品个数\',\'' + data.warehouse_name + '\')" >' + data.daily_productsale_count + '</div>';
}
},
{ field: 'skusales_count', title: '日销sku个数', width: '130', sortable: true, iscount: true },
{
field: 'skusales_rate', title: '动销sku比例', width: '130', sortable: true, iscount: true
field: 'productsale_rate', title: '动销产品比例', width: '130', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'productsale_rate\',\'动销产品比例\',\'' + data.warehouse_name + '\')" >' + data.productsale_rate + '</div>';
}
},
{
field: 'daily_productsale_count', title: '日销产品个数', width: '150', sortable: true, iscount: true
field: 'dailysale_amount', title: '日销金额', width: '130', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'dailysale_amount\',\'日销金额\',\'' + data.warehouse_name + '\')" >' + data.dailysale_amount + '</div>';
}
},
{
field: 'productsale_rate', title: '动销产品比例', width: '130', sortable: true, iscount: true
field: 'saleamount_rate', title: '动销金额比例', width: '130', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'saleamount_rate\',\'动销金额比例\',\'' + data.warehouse_name + '\')" >' + data.saleamount_rate + '</div>';
}
},
{
field: 'dailysale_amount', title: '日销金额', width: '130', sortable: true, iscount: true
field: 'redundancy_sku_count', title: '冗余sku个数', width: '130', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'redundancy_sku_count\',\'冗余sku个数\',\'' + data.warehouse_name + '\')" >' + data.redundancy_sku_count + '</div>';
}
},
{
field: 'redundancy_sku_rate', title: '冗余sku个数比例', width: '150', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'redundancy_sku_rate\',\'冗余sku个数比例\',\'' + data.warehouse_name + '\')" >' + data.redundancy_sku_rate + '</div>';
}
},
{
field: 'redundancy_product_count', title: '冗余产品个数', width: '120', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'redundancy_product_count\',\'冗余产品个数\',\'' + data.warehouse_name + '\')" >' + data.redundancy_product_count + '</div>';
}
},
{
field: 'redundancy_product_rate', title: '冗余产品个数比例', width: '150', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'redundancy_product_rate\',\'冗余产品个数比例\',\'' + data.warehouse_name + '\')" >' + data.redundancy_product_rate + '</div>';
}
},
{
field: 'redundancy_amount', title: '冗余金额', width: '100', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'redundancy_amount\',\'冗余金额\',\'' + data.warehouse_name + '\')" >' + data.redundancy_amount + '</div>';
}
},
{
field: 'redundancy_amount_rate', title: '冗余金额比例', width: '130', sortable: true, iscount: true, formatter: function (idx, data) {
return '<div onclick="ShowHistoryData(\'' + data.warehouse_code + '\',\'redundancy_amount_rate\',\'冗余金额比例\',\'' + data.warehouse_name + '\')" >' + data.redundancy_amount_rate + '</div>';
}
},
{ field: 'saleamount_rate', title: '动销金额比例', width: '130', sortable: true, iscount: true },
{ field: 'redundancy_sku_count', title: '冗余sku个数', width: '130', sortable: true, iscount: true },
{ field: 'redundancy_sku_rate', title: '冗余sku个数比例', width: '150', sortable: true, iscount: true },
{ field: 'redundancy_product_count', title: '冗余产品个数', width: '120', sortable: true, iscount: true },
{ field: 'redundancy_product_rate', title: '冗余产品个数比例', width: '150', sortable: true, iscount: true },
{ field: 'redundancy_amount', title: '冗余金额', width: '100', sortable: true, iscount: true },
{ field: 'redundancy_amount_rate', title: '冗余金额比例', width: '130', sortable: true, iscount: true },
];
var url = '@Url.Content("~/Reports/Warehouse/WarehouseRedundancyJson")' + '?' + $("#toolbar").serialize();
......@@ -152,10 +204,18 @@
})
}
function ShowSku(warehousecode) {
layer_show('sku仓库库存分析', '@Url.Content("~/Reports/Warehouse/SkuRedundancy?warehousecode=")' + warehousecode, '95%', '95%');
function ShowSku(warehousecode,title) {
var day = $('#day').val();
layer_show(title + ' sku仓库库存分析', '@Url.Content("~/Reports/Warehouse/SkuRedundancy?warehousecode=")' + warehousecode + '&day=' + day + '&warehousename=' + title, '95%', '95%');
}
function ShowHistoryData(warehousecode, col, coltitle,warehousename) {
var day = $('#day').val();
layer_show(day + ' ' + warehousename + ' 前两个月的库存分析', '@Url.Content("~/Reports/Warehouse/WHRedundancyChart?warehousecode=")' + warehousecode + '&day=' + day + '&warehousename=' + warehousename + '&col=' + col + '&colname=' + coltitle, '95%', '95%');
}
</script>
......
......@@ -69,6 +69,11 @@
</a>
</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>
</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