Commit 5325b960 by guanzhenshan

调整数据仓销量分析报表,增加SKU+仓库查询功能,增加导出明细功能

parent e8eb42c6
...@@ -883,7 +883,7 @@ namespace Bailun.DC.Services ...@@ -883,7 +883,7 @@ namespace Bailun.DC.Services
} }
var sqlparam = new DynamicParameters(); var sqlparam = new DynamicParameters();
var sql = "select * from dc_mid_skuwarehouse_sales where id>0 "; var sql = "select * from dc_mid_skuwarehouse_sales where 1=1 ";
if (!string.IsNullOrEmpty(warehousecode)) if (!string.IsNullOrEmpty(warehousecode))
{ {
...@@ -928,16 +928,27 @@ namespace Bailun.DC.Services ...@@ -928,16 +928,27 @@ namespace Bailun.DC.Services
sql += " and bailun_sku=@sku"; sql += " and bailun_sku=@sku";
sqlparam.Add("sku", bailun_sku); sqlparam.Add("sku", bailun_sku);
} }
if (!string.IsNullOrEmpty(parameter.sort)) if (parameter.limit > 0)
{ {
sql += " order by " + parameter.sort + " " + parameter.order; if (!string.IsNullOrEmpty(parameter.sort))
} {
sql += " order by " + parameter.sort + " " + parameter.order;
}
else
{
sql += " order by stock_count desc";
}
var obj = cn.Page<dc_mid_skuwarehouse_sales>(parameter.pageIndex, parameter.limit, sql, ref total, sqlparam); var obj = cn.Page<dc_mid_skuwarehouse_sales>(parameter.pageIndex, parameter.limit, sql, ref total, sqlparam);
return obj.AsList(); return obj.AsList();
}
else
{
var obj = cn.Query<dc_mid_skuwarehouse_sales>(sql, sqlparam, null, true, 10 * 60).AsList();
return obj;
}
} }
} }
...@@ -962,7 +973,7 @@ namespace Bailun.DC.Services ...@@ -962,7 +973,7 @@ namespace Bailun.DC.Services
} }
var sqlparam = new DynamicParameters(); 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 id>0 "; 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)) if (!string.IsNullOrEmpty(warehousecode))
{ {
......
...@@ -537,6 +537,9 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers ...@@ -537,6 +537,9 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
ViewBag.start = start.HasValue ? start.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") : ""; ViewBag.end = end.HasValue ? end.Value.ToString("yyyy-MM-dd") : "";
ViewBag.listWarehouse = new Services.WareHouseServices().List("", null).OrderBy(a => a.warehouse_name).ToList();
return View(); return View();
} }
...@@ -660,6 +663,67 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers ...@@ -660,6 +663,67 @@ namespace Bailun.DC.Web.Areas.Reports.Controllers
} }
/// <summary>
/// 导出数据仓销量分析报表
/// </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>
/// <param name="bailun_sku"></param>
/// <returns></returns>
public ActionResult ExportSkuWarehouseSale(string warehousecode, int? startcount, int? endcount, DateTime? devstart, DateTime? devend, DateTime? start, DateTime? end, string bailun_sku)
{
var total = 0;
var services = new Services.InventoryServices();
var obj = services.ListSkuWarehouseSales(new Models.BtTableParameter { offset = 0,limit=0 }, warehousecode, startcount, endcount, devstart, devend, start, end, bailun_sku, ref total);
var colNames = new List<string>() { "仓库名称","Sku","库存数量","库存金额", "速卖通销量"
,"速卖通销售额","亚马逊销量","亚马逊销售额","FBA销量","FBA销售额"
,"Ebay销量","Ebay销售额","Wish销量","Wish销售额"
,"亚马逊2B销量","亚马逊2B销售额","jollychic销量","jollychic销售额","Joom销量"
,"Joom销售额","Marketing销量","Marketing销售额","mymall销量","mymall销售额"
,"opensku销量","opensky销售额","priceminister销量","priceminister销售额"
,"qoo10销量","qoo10销售额","shopee销量","shopee销售额","shopify销量"
,"shopify销售额","walmart销量","walmart销售额","总销量"
};
var list = new List<string>();
foreach (var item in obj)
{
var str = item.warehouse_name + "|" + item.bailun_sku + "|" + item.stock_count + "|" + item.stock_amount + "|" + (item.aliexpress_salecount ?? 0) + "|" +
(item.aliexpress_saleamount ?? 0) + "|" + (item.amazon_salecount ?? 0) + "|" + (item.amazon_saleamount ?? 0) + "|" + (item.fba_salecount ?? 0) + "|" + (item.fba_saleamount ?? 0) + "|" +
(item.ebay_salecount ?? 0) + "|" + (item.ebay_saleamount ?? 0) + "|" + (item.wish_salecount ?? 0) + "|" + (item.wish_saleamount ?? 0) + "|" +
(item.amazon2B_salecount ?? 0) + "|" + (item.amazon2B_saleamount ?? 0) + "|" + (item.jollychic_salecount ?? 0) + "|" + (item.jollychic_saleamount ?? 0) + "|" + (item.joom_salecount ?? 0) + "|" +
(item.joom_saleamount ?? 0) + "|" + (item.marketing_salecount ?? 0) + "|" + (item.marketing_saleamount ?? 0) + "|" + (item.mymall_salecount ?? 0) + "|" + (item.mymall_saleamount ?? 0) + "|" +
(item.opensky_salecount ?? 0) + "|" + (item.opensky_saleamount ?? 0) + "|" + (item.priceminister_salecount ?? 0) + "|" + (item.priceminister_saleamount ?? 0) + "|" +
(item.qoo10_salecount ?? 0) + "|" + (item.qoo10_saleamount ?? 0) + "|" + (item.shopee_salecount ?? 0) + "|" + (item.shopee_saleamount ?? 0) + "|" + (item.shopify_salecount ?? 0) + "|" +
(item.shopify_saleamount ?? 0) + "|" + (item.walmart_salecount ?? 0) + "|" + (item.walmart_saleamount ?? 0) + "|" + (item.salecount);
list.Add(str);
}
var guid = Guid.NewGuid().ToString();
var filename = "数据仓销量分析报表 " + DateTime.Now.ToString("yyyyMMddHHmmss");
var filepath = _hostingEnvironment.WebRootPath + "\\Files\\Report\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\";
ToCSV(list, colNames, guid, filepath);
var ms = new System.IO.MemoryStream();
using (var f = new System.IO.FileStream(filepath + guid + ".csv", System.IO.FileMode.Open))
{
f.CopyTo(ms);
}
ms.Position = 0;
return File(ms, "text/csv", filename + ".csv");
}
#endregion #endregion
#region 进销存报表 #region 进销存报表
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<div class="ibox-content m-b-sm border-bottom"> <div class="ibox-content m-b-sm border-bottom">
<form id="toolbar"> <form id="toolbar">
<div class="form-inline" style="line-height:40px;"> <div class="form-inline" style="line-height:40px;">
<input type="hidden" id="warehousecode" name="warehousecode" value="@ViewBag.warehousecode" />
<div class="form-group"> <div class="form-group">
<label>统计日期</label> <label>统计日期</label>
<input id="start" name="start" class="form-control" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" placeholder="请选择统计开始日期" style="width:110px" />- <input id="start" name="start" class="form-control" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" placeholder="请选择统计开始日期" style="width:110px" />-
...@@ -22,22 +22,30 @@ ...@@ -22,22 +22,30 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label>销量</label> <label>销量</label>
<input id="startcount" name="startcount" class="form-control" placeholder="sku销量开始" value="@ViewBag.startcount" />- <input id="startcount" name="startcount" class="form-control" placeholder="销量开始" value="@ViewBag.startcount" style="width:90px;" />-
<input id="endcount" name="endcount" class="form-control" placeholder="sku销量结束" value="@ViewBag.endcount" /> <input id="endcount" name="endcount" class="form-control" placeholder="销量结束" value="@ViewBag.endcount" style="width:90px;" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Sku编码</label> <label>Sku编码</label>
<input id="bailun_sku" name="bailun_sku" class="form-control" placeholder="Sku编码" /> <input id="bailun_sku" name="bailun_sku" class="form-control" placeholder="Sku编码" style="width:110px;" />
</div> </div>
<div class="form-group"> <div class="form-group">
<label>仓库</label> <label>仓库</label>
<select id="warehouse_code" name="warehouse_code" class="form-control"> <select id="warehousecode" name="warehousecode" class="form-control" style="width:160px;">
<option value="">请选择仓库</option> <option value="">请选择仓库</option>
@if (ViewBag.listWarehouse.Count > 0)
{
foreach (var item in ViewBag.listWarehouse)
{
<option value="@item.warehouse_code" @(ViewBag.warehousecode==item.warehouse_code?"selected":"")>@item.warehouse_name</option>
}
}
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>&nbsp;</label> <label>&nbsp;</label>
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button> <button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
<button type="button" class="btn btn-warning" onclick="exportxls()">导出</button>
</div> </div>
</div> </div>
</form> </form>
...@@ -76,7 +84,7 @@ ...@@ -76,7 +84,7 @@
function list() { function list() {
var columns = [ var columns = [
{ {
field: 'bailun_sku', title: 'Sku', width: '110', sortable: false, iscount: false field: 'bailun_sku', title: 'Sku', width: '130', sortable: false, iscount: false
}, },
{ {
field: 'bailun_sku_name', title: 'sku名称', width: '180', sortable: false, iscount: false, formatter: function (idx, data) { field: 'bailun_sku_name', title: 'sku名称', width: '180', sortable: false, iscount: false, formatter: function (idx, data) {
...@@ -149,6 +157,12 @@ ...@@ -149,6 +157,12 @@
tb.bootstrapTable('refresh', { url: url }); tb.bootstrapTable('refresh', { url: url });
} }
} }
function exportxls() {
if (confirm("确定要导出明细吗?")) {
window.open('@Url.Content("~/Reports/Inventory/ExportSkuWarehouseSale?")' + $("#toolbar").serialize())
}
}
</script> </script>
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
<div class="form-group"> <div class="form-group">
<label>&nbsp;</label> <label>&nbsp;</label>
<button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button> <button type="button" class="btn btn-primary" onclick="list();"><i class="fa fa-search"></i>&nbsp;查询</button>
<button type="button" class="btn btn-warning" onclick="exportxls()">导出</button>
</div> </div>
</div> </div>
</form> </form>
...@@ -192,7 +193,11 @@ ...@@ -192,7 +193,11 @@
layer_show(day + ' ' + warehousename + ' 前两个月的库存分析', '@Url.Content("~/Reports/Warehouse/WHRedundancyChart?warehousecode=")' + warehousecode + '&day=' + day + '&warehousename=' + warehousename + '&col=' + col + '&colname=' + coltitle, '95%', '95%'); layer_show(day + ' ' + warehousename + ' 前两个月的库存分析', '@Url.Content("~/Reports/Warehouse/WHRedundancyChart?warehousecode=")' + warehousecode + '&day=' + day + '&warehousename=' + warehousename + '&col=' + col + '&colname=' + coltitle, '95%', '95%');
} }
function exportxls() {
if (confirm("确定要导出明细吗?")) {
window.open('@Url.Content("~/Reports/Inventory/ExportSkuWarehouseSale?")' + $("#toolbar").serialize())
}
}
</script> </script>
......
...@@ -77,7 +77,7 @@ namespace Bailun.DC.Web.Controllers ...@@ -77,7 +77,7 @@ namespace Bailun.DC.Web.Controllers
public ActionResult Main() public ActionResult Main()
{ {
#if DEBUG #if DEBUG
var cookie = "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdhZDA5MjQ5ZDk0ZDgxN2VhNmI5ZThhMTc1MzlmNmY3IiwidHlwIjoiSldUIn0.eyJuYmYiOjE1OTg0OTQxMTEsImV4cCI6MTU5ODUzMDExMSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAxIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMS9yZXNvdXJjZXMiLCJiYWlsdW5BcGkiXSwiY2xpZW50X2lkIjoiYmFpbHVuQ2xpZW50Iiwic3ViIjoi5YWz5oyv5bGxIiwiYXV0aF90aW1lIjoxNTk4NDk0MTExLCJpZHAiOiJsb2NhbCIsIlVzZXJJZCI6IjIzNDYiLCJzdWNlc3NzIjoidHJ1ZSIsIkNvbXBhbnkiOiJ7XCJJZFwiOjEsXCJDb21wYW55Q29kZVwiOlwiYmFpbHVuXCIsXCJDb21wYW55TmFtZVwiOlwi5bm_5bee55m-5Lym5L6b5bqU6ZO-5pyJ6ZmQ5YWs5Y-4XCJ9IiwiQWxsQ29tcGFueSI6IkZhbHNlIiwiVXNlckNvZGVOZXciOiJCTDExNjkiLCJVc2VyQ29kZSI6IkJMMTE3MCIsIk9hVXNlcklkIjoiMjM0NiIsIkRlcGFydG1lbnQiOiJ7XCJEZXBhcnRtZW50SWRcIjoyNTgsXCJOYW1lXCI6XCLmlbDmja7kuK3lv4NcIixcIkNvZGVcIjpcIlwifSIsInNjb3BlIjpbIm9wZW5pZCIsInByb2ZpbGUiLCJiYWlsdW5BcGkiXSwiYW1yIjpbImN1c3RvbSJdfQ.YsuOwKgtrE4KcYYw_SHSuI02Z77kRhg4FUn79Gtk_yHoPSXTh1fN9-B9HbmOnfzwZvQw0loxOdhS1jdk4SBmX9fv_3apmpT7hmfMDbbnzd055STadrzCTFmBw_obOsd7a1Cye8VAJJ7GJLJlzUv8eXO431692oJ9ofhJM8Z8hG_B0S-pusCQqsmpZhRNAeVki3fTG0XASYR5lTF59J_R65IBo3Oi-ZJFO84wVC8b4GFyGe6iYwy0dgIQCFDK3X2MhuqBsyhBl1fLY-8XcXHtYuoQjDz2a85SOA_FZ6iq63XWlf_OicUcXOTk94mMolpDHm2SBxO87nAHmjv40OGc7Q"; var cookie = "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdhZDA5MjQ5ZDk0ZDgxN2VhNmI5ZThhMTc1MzlmNmY3IiwidHlwIjoiSldUIn0.eyJuYmYiOjE1OTg1OTU0MDQsImV4cCI6MTU5ODYzMTQwNCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAxIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMS9yZXNvdXJjZXMiLCJiYWlsdW5BcGkiXSwiY2xpZW50X2lkIjoiYmFpbHVuQ2xpZW50Iiwic3ViIjoi5YWz5oyv5bGxIiwiYXV0aF90aW1lIjoxNTk4NTk1NDA0LCJpZHAiOiJsb2NhbCIsIlVzZXJJZCI6IjIzNDYiLCJzdWNlc3NzIjoidHJ1ZSIsIkNvbXBhbnkiOiJ7XCJJZFwiOjEsXCJDb21wYW55Q29kZVwiOlwiYmFpbHVuXCIsXCJDb21wYW55TmFtZVwiOlwi5bm_5bee55m-5Lym5L6b5bqU6ZO-5pyJ6ZmQ5YWs5Y-4XCJ9IiwiQWxsQ29tcGFueSI6IkZhbHNlIiwiVXNlckNvZGVOZXciOiJCTDExNjkiLCJVc2VyQ29kZSI6IkJMMTE3MCIsIk9hVXNlcklkIjoiMjM0NiIsIkRlcGFydG1lbnQiOiJ7XCJEZXBhcnRtZW50SWRcIjoyNTgsXCJOYW1lXCI6XCLmlbDmja7kuK3lv4NcIixcIkNvZGVcIjpcIlwifSIsInNjb3BlIjpbIm9wZW5pZCIsInByb2ZpbGUiLCJiYWlsdW5BcGkiXSwiYW1yIjpbImN1c3RvbSJdfQ.O_PgJ0pZWm-sABViFgt9gOKvjbVLs-4RUPqpICnorry2oYhtMt8eg7Z9KpVzhyKZ166Y0_ozsPChCMMNXQSQ35Mlt9za1NPfGP22htCpFfo6-B03sv5btpai63vEnv94QDdVfvjSlwdA27KIlKmlrlkiyrJr6FrLEPmkmi0y7QlCeC6bo4xq0wCpi5_5Mi3uLijnbnjIdnvqh8qQiIKD80tg8tZAy_gZTXthFR7fP16zYlLwqtNnfmyAY1iINVGYsOJhgU3ggmixAS6ywcPwC_yBcuoxC4zb4Zp4hxLdS5_niy9LRPdAqzErHTpsgtEtQaIlcoVju4Qwn9f6y8sOyg";
#else #else
//var user = Common.HttpHelper.NetHelper.Request("http://sso.bailuntec.com/GetUserResource"); //var user = Common.HttpHelper.NetHelper.Request("http://sso.bailuntec.com/GetUserResource");
var cookie = HttpContext.Request.Cookies["BailunToken"]; var cookie = HttpContext.Request.Cookies["BailunToken"];
......
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