Commit f623e9ec by guanzhenshan

增加每日销进比汇总页面

parent c9a13c69
...@@ -113,5 +113,10 @@ namespace Bailun.DC.Models ...@@ -113,5 +113,10 @@ namespace Bailun.DC.Models
/// 创建时间 /// 创建时间
/// </summary> /// </summary>
public DateTime createtime { get; set; } public DateTime createtime { get; set; }
/// <summary>
/// 百伦简单分类
/// </summary>
public string category_simple_name { get; set; }
} }
} }
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models
{
/// <summary>
/// 每日SKU+仓库维度的卖出数和下采购单数,可按周和月显示
/// </summary>
public class mDailyPurchaseSales
{
/// <summary>
/// 统计日期
/// </summary>
public string day { get; set; }
/// <summary>
/// 开始日期
/// </summary>
public DateTime dayStart { get; set; }
/// <summary>
/// 结束日期
/// </summary>
public DateTime dayEnd { get; set; }
/// <summary>
/// 百伦简单分类
/// </summary>
public string category_simple_name { get; set; }
/// <summary>
/// 销售数量
/// </summary>
public int count_sales { get; set; }
/// <summary>
/// 销售金额
/// </summary>
public decimal amount_sales { get; set; }
/// <summary>
/// 采购数量
/// </summary>
public int count_purchase { get; set; }
/// <summary>
/// 采购金额
/// </summary>
public decimal amount_purchase { get; set; }
/// <summary>
/// 入库数
/// </summary>
public int count_putin { get; set; }
/// <summary>
/// 入库金额
/// </summary>
public decimal amount_putin { get; set; }
/// <summary>
/// 发货数量
/// </summary>
public int count_shipping { get; set; }
/// <summary>
/// 发货金额
/// </summary>
public decimal amount_shipping { get; set; }
/// <summary>
/// 采购下单的差异数
/// </summary>
public int difference_count { get; set; }
/// <summary>
/// 采购下单的差异金额
/// </summary>
public decimal difference_amount { get; set; }
/// <summary>
/// 入库的差异数
/// </summary>
public int diff_putin_count { get; set; }
/// <summary>
/// 入库的差异金额
/// </summary>
public decimal diff_putin_amount { get; set; }
}
}
...@@ -188,5 +188,43 @@ namespace Bailun.DC.Services ...@@ -188,5 +188,43 @@ namespace Bailun.DC.Services
} }
/// <summary>
/// 获取百伦简单分类详情信息
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public dc_base_sku_simple_category GetSimpleCategory(string full_name)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var sqlparam = new DynamicParameters();
sqlparam.Add("full_name", full_name);
return cn.QueryFirstOrDefault<dc_base_sku_simple_category>("select * from dc_base_sku_simple_category where full_name=@full_name", sqlparam);
}
}
/// <summary>
/// 获取百伦简单分类详情信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public dc_base_sku_simple_category GetSimpleCategory(int id)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
return cn.QueryFirstOrDefault<dc_base_sku_simple_category>("select * from dc_base_sku_simple_category where id="+id);
}
}
} }
} }
...@@ -860,12 +860,37 @@ namespace Bailun.DC.Services ...@@ -860,12 +860,37 @@ namespace Bailun.DC.Services
/// <param name="end">结束日期</param> /// <param name="end">结束日期</param>
/// <param name="total">符合条件的记录数</param> /// <param name="total">符合条件的记录数</param>
/// <returns></returns> /// <returns></returns>
public List<dc_daily_purchase_sales> ListDailyPurchaseSale(BtTableParameter parameter, DateTime start, DateTime end,ref int total) public List<dc_daily_purchase_sales> ListDailyPurchaseSale(BtTableParameter parameter,string warehousetype , string warehouse_code, DateTime start, DateTime end,string skucategoryids, ref int total)
{ {
var sqlparam = new DynamicParameters();
var sql = $"select max(t1.day) day,t1.warehouse_code,t1.bailun_sku,t1.warehouse_name,sum(t1.count_sales) count_sales,sum(t1.amount_sales) amount_sales,sum(t1.count_purchase) count_purchase,sum(t1.amount_purchase) amount_purchase,sum(t1.count_putin) count_putin,sum(t1.amount_putin) amount_putin,sum(t1.difference_count) difference_count,sum(t1.difference_amount) difference_amount,sum(t1.diff_putin_count) diff_putin_count,sum(t1.diff_putin_amount) diff_putin_amount from dc_daily_purchase_sales t1 "; var sql = $"select max(t1.day) day,t1.warehouse_code,t1.bailun_sku,t1.warehouse_name,sum(t1.count_sales) count_sales,sum(t1.amount_sales) amount_sales,sum(t1.count_purchase) count_purchase,sum(t1.amount_purchase) amount_purchase,sum(t1.count_putin) count_putin,sum(t1.amount_putin) amount_putin,sum(t1.difference_count) difference_count,sum(t1.difference_amount) difference_amount,sum(t1.diff_putin_count) diff_putin_count,sum(t1.diff_putin_amount) diff_putin_amount from dc_daily_purchase_sales t1 ";
var sqlwhere = $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<'{end.AddDays(1).ToString("yyyy-MM-dd")}' group by t1.warehouse_code,t1.bailun_sku"; var sqlwhere = "";
if (!string.IsNullOrEmpty(warehousetype))
{
sqlwhere += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type=@hq_type";
sqlparam.Add("hq_type", warehousetype);
}
if (!string.IsNullOrEmpty(skucategoryids))
{
var arr = skucategoryids.Split('|').Where(a=>!string.IsNullOrEmpty(a)).ToList();
if (arr.Count > 0)
{
sqlwhere += " join dc_base_sku t3 on t1.bailun_sku=t3.bailun_sku and category_simple_id in ("+(string.Join(",",arr))+")";
}
}
sqlwhere += $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<'{end.AddDays(1).ToString("yyyy-MM-dd")}' ";
if (!string.IsNullOrEmpty(warehouse_code))
{
sqlwhere += " and t1.warehouse_code=@warehouse_code";
sqlparam.Add("warehouse_code", warehouse_code);
}
sqlwhere += " group by t1.warehouse_code,t1.bailun_sku";
sql += sqlwhere; sql += sqlwhere;
...@@ -885,8 +910,8 @@ namespace Bailun.DC.Services ...@@ -885,8 +910,8 @@ namespace Bailun.DC.Services
cn.Open(); cn.Open();
} }
total = cn.QueryFirstOrDefault<int>("select count(t1.id) from dc_daily_purchase_sales t1 "+sqlwhere); total = cn.QueryFirstOrDefault<int>("select count(t1.id) from dc_daily_purchase_sales t1 "+sqlwhere,sqlparam);
var obj = cn.Query<dc_daily_purchase_sales>(sql, null,null,true,2*60); var obj = cn.Query<dc_daily_purchase_sales>(sql, sqlparam,null,true,2*60);
return obj.AsList(); return obj.AsList();
} }
} }
...@@ -899,12 +924,35 @@ namespace Bailun.DC.Services ...@@ -899,12 +924,35 @@ namespace Bailun.DC.Services
/// <param name="end">结束日期</param> /// <param name="end">结束日期</param>
/// <param name="total">符合条件的记录数</param> /// <param name="total">符合条件的记录数</param>
/// <returns></returns> /// <returns></returns>
public dc_daily_purchase_sales ListDailyPurchaseSaleCount(DateTime start, DateTime end) public dc_daily_purchase_sales ListDailyPurchaseSaleCount(string warehousetype, string warehouse_code,DateTime start, DateTime end, string skucategoryids)
{ {
var sqlparam = new DynamicParameters();
var sql = $"select sum(stock_start) stock_start,sum(stockamount_start) stockamount_start,sum(stock_end) stock_end,sum(stockamount_end) stockamount_end,sum(count_sales) count_sales,sum(amount_sales) amount_sales,sum(count_purchase) count_purchase,sum(amount_purchase) amount_purchase,sum(count_putin) count_putin,sum(amount_putin) amount_putin,sum(difference_count) difference_count,sum(difference_amount) difference_amount,sum(diff_putin_count) diff_putin_count,sum(diff_putin_amount) diff_putin_amount from dc_daily_purchase_sales t1 "; var sql = $"select sum(stock_start) stock_start,sum(stockamount_start) stockamount_start,sum(stock_end) stock_end,sum(stockamount_end) stockamount_end,sum(count_sales) count_sales,sum(amount_sales) amount_sales,sum(count_purchase) count_purchase,sum(amount_purchase) amount_purchase,sum(count_putin) count_putin,sum(amount_putin) amount_putin,sum(difference_count) difference_count,sum(difference_amount) difference_amount,sum(diff_putin_count) diff_putin_count,sum(diff_putin_amount) diff_putin_amount from dc_daily_purchase_sales t1 ";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code and t2.hq_type=@hq_type";
sqlparam.Add("hq_type", warehousetype);
}
if (!string.IsNullOrEmpty(skucategoryids))
{
var arr = skucategoryids.Split('|').Where(a => !string.IsNullOrEmpty(a)).ToList();
if (arr.Count > 0)
{
sql += " join dc_base_sku t3 on t1.bailun_sku=t3.bailun_sku and category_simple_id in (" + (string.Join(",", arr)) + ")";
}
}
var sqlwhere = $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<'{end.AddDays(1).ToString("yyyy-MM-dd")}'"; var sqlwhere = $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<'{end.AddDays(1).ToString("yyyy-MM-dd")}'";
if (!string.IsNullOrEmpty(warehouse_code))
{
sqlwhere += " and t1.warehouse_code=@warehouse_code";
sqlparam.Add("warehouse_code", warehouse_code);
}
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString)) using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{ {
if (cn.State == System.Data.ConnectionState.Closed) if (cn.State == System.Data.ConnectionState.Closed)
...@@ -912,9 +960,53 @@ namespace Bailun.DC.Services ...@@ -912,9 +960,53 @@ namespace Bailun.DC.Services
cn.Open(); cn.Open();
} }
var obj = cn.QueryFirstOrDefault<dc_daily_purchase_sales>(sql + sqlwhere,null,null,2*60); var obj = cn.QueryFirstOrDefault<dc_daily_purchase_sales>(sql + sqlwhere,sqlparam,null,2*60);
return obj;
}
}
/// <summary>
/// 按简单分类统计sku每日进销差异
/// </summary>
/// <param name="warehousetype">仓库类型</param>
/// <param name="warehouse_code">仓库编码</param>
/// <param name="start">开始日期</param>
/// <param name="end">结束日期</param>
/// <returns></returns>
public List<dc_daily_purchase_sales> DailyPurchaseSaleBySkuCategory(string warehousetype, string warehouse_code, DateTime start, DateTime end)
{
var sqlparam = new DynamicParameters();
var sql = "select t1.day,t2.category_simple_name,sum(t1.count_sales) count_sales,sum(t1.amount_sales) amount_sales,sum(t1.count_purchase) count_purchase,sum(t1.amount_purchase) amount_purchase,sum(count_putin) count_putin,sum(amount_putin) amount_putin,sum(count_shipping) count_shipping,sum(t1.amount_shipping) amount_shipping from dc_daily_purchase_sales t1";
sql += " join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku ";
if (!string.IsNullOrEmpty(warehousetype))
{
sql += " join dc_base_warehouse t3 on t1.warehouse_code=t3.warehouse_code and t3.hq_type=@warehousetype";
sqlparam.Add("warehousetype", warehousetype);
}
sql += $" where t1.day>='{start.ToString("yyyy-MM-dd")}' and t1.day<'{end.AddDays(1).ToString("yyyy-MM-dd")}' ";
if (!string.IsNullOrEmpty(warehouse_code))
{
sql += " and t1.warehouse_code=@warehouse_code";
sqlparam.Add("warehouse_code", warehouse_code);
}
sql += " group by t1.day,t2.category_simple_name";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var obj = cn.Query<dc_daily_purchase_sales>(sql, sqlparam, null, true, 2 * 60).AsList();
return obj; return obj;
} }
} }
} }
......
...@@ -7,21 +7,28 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -7,21 +7,28 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
{ {
class Program class Program
{ {
static async Task Main(string[] args) //static async Task Main(string[] args)
//{
// Console.WriteLine("进入保存每日采购数和售出数");
// var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
// {
// services.AddHostedService<Services>();
// });
// await builder.RunConsoleAsync();
//}
static void Main(string[] args)
{ {
Console.WriteLine("进入保存每日采购数和售出数"); var start = DateTime.Parse("2019-07-01");
var builder = new HostBuilder().ConfigureServices((hostContext, services) => while (start < DateTime.Now)
{ {
services.AddHostedService<Services>(); Console.WriteLine(start.ToString("yyyy-MM-dd"));
}); new Services().Init(start, start.AddDays(1));
start = start.AddDays(1);
await builder.RunConsoleAsync(); }
} }
//static void Main(string[] args)
//{
// new Services().Init(DateTime.Parse("2019-08-14"), DateTime.Parse("2019-08-15"));
//}
} }
} }
...@@ -232,7 +232,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -232,7 +232,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
cn.Execute("delete from dc_daily_purchase_sales where day='" + day.ToString("yyyy-MM-dd") + "'"); cn.Execute("delete from dc_daily_purchase_sales where day='" + day.ToString("yyyy-MM-dd") + "'");
var sql = "insert dc_daily_purchase_sales (day,warehouse_code,warehouse_name,bailun_sku,count_sales,amount_sales,count_purchase,amount_purchase,difference_count,difference_amount,createtime,stock_start,stockamount_start,stock_end,stockamount_end,count_putin,amount_putin,diff_putin_count,diff_putin_amount) values "; var sql = "insert dc_daily_purchase_sales (day,warehouse_code,warehouse_name,bailun_sku,count_sales,amount_sales,count_purchase,amount_purchase,difference_count,difference_amount,createtime,stock_start,stockamount_start,stock_end,stockamount_end,count_putin,amount_putin,diff_putin_count,diff_putin_amount,count_shipping,amount_shipping) values ";
var str = ""; var str = "";
var index = 0; var index = 0;
var pagesize = 5000; var pagesize = 5000;
...@@ -241,7 +241,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -241,7 +241,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
while (index < list.Count) while (index < list.Count)
{ {
var m = list[index]; var m = list[index];
str += $"('{m.day.ToString("yyyy-MM-dd")}','{m.warehouse_code}','{m.warehouse_name}','{m.bailun_sku}',{m.count_sales},'{m.amount_sales}','{m.count_purchase}','{m.amount_purchase}','{m.difference_count}','{m.difference_amount}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}',{m.stock_start},{m.stockamount_start},{m.stock_end},{m.stockamount_end},{m.count_putin},{m.amount_putin},{m.diff_putin_count},{m.diff_putin_amount}),"; str += $"('{m.day.ToString("yyyy-MM-dd")}','{m.warehouse_code}','{m.warehouse_name}','{m.bailun_sku}',{m.count_sales},'{m.amount_sales}','{m.count_purchase}','{m.amount_purchase}','{m.difference_count}','{m.difference_amount}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}',{m.stock_start},{m.stockamount_start},{m.stock_end},{m.stockamount_end},{m.count_putin},{m.amount_putin},{m.diff_putin_count},{m.diff_putin_amount},{m.count_shipping},{m.amount_shipping}),";
if ((index + 1) % pagesize == 0) if ((index + 1) % pagesize == 0)
{ {
......

@{
ViewData["Title"] = "Sku采购发货差异汇总";
Layout = "~/Pages/Shared/_MainLayout.cshtml";
ViewBag.Nav = new string[] { "库存", "Sku采购发货差异汇总" };
}
<div class="row">
<div class="col-sm-12">
<div class="alert alert-warning">
说明:数据统计截止到昨日
</div>
<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="t" name="t" class="form-control">
<option value="1">按采购下单</option>
<option value="2">按入库</option>
</select>
</div>
<div class="form-group">
<label>日期方式:</label>
<select id="dateWay" name="dateWay" class="form-control">
@*<option value="1">按日</option>*@
<option value="2">按周</option>
<option value="3">按月</option>
</select>
</div>
<div class="form-group">
<label>统计时间</label>
<input id="start" name="start" type="text" class="form-control" style="width:130px;" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" />
<span>至</span>
<input id="end" name="end" type="text" class="form-control" style="width:130px;" value="@(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))" />
</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" class="table table-hover table-bordered table-condensed table-striped">
<thead>
<tr></tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
@section css{
<link href="~/css/bootstrap-table-fixed-columns.css" rel="stylesheet" />
<style>
.mules {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
}
@section scripts{
<script src="~/js/bootstrap-table-fixed-columns.js" type="text/javascript"></script>
<script type="text/javascript">
var tb;
var companyid = 0;
$(document).ready(function () {
laydate.render({ elem: '#start' });
laydate.render({ elem: '#end' });
var height = document.body.clientHeight;
$("#roletable").attr("data-height", (height - 170));
list();
//$('#warehousetype').change(function () {
// listwarehouse();
//})
})
function list() {
var lindex = layer.load(1, { shade: false }); //0代表加载的风格,支持0-2
$.submit({
type:'POST',
url: '@Url.Content("~/Reports/Warehouse/DailyPurchaseSalesCountJson")',
paramData: $("#toolbar").serialize(),
func: function (result) {
layer.close(lindex);
if (result.success) {
if (result.data.length == 0) {
alert('没有找到符合条件的数据');
return false;
}
$('#roletable').find('tbody').html('');
$('#roletable').find('thead').html('');
if (result.head.length > 0) {
var s = '<tr>';
for (var i = 0; i < result.head.length; i++) {
s += ('<th>' + result.head[i] + '</th>');
}
s += '</tr>';
$('#roletable').find('thead').append(s);
}
for (var i = 0; i < result.data.length; i++) {
var s = '<tr>';
var obj = result.data[i];
s += ('<td>' + (obj.category_simple_name == '' ? '空' : obj.category_simple_name) + '</td>');
if (obj.list.length > 0) {
for (var j = 0; j < obj.list.length; j++) {
s += ('<td><a onclick="showdetail(\'' + obj.category_simple_name + '\',\'' + result.head[j + 1] +'\')">' + obj.list[j] + '</a></td>')
}
}
s += "</tr>";
$('#roletable').find('tbody').append(s);
}
}
else {
layer.msg('出现异常。');
}
}
})
}
function showdetail(categoryname, colname) {
layer_show(categoryname +' '+ colname+' 的Sku明细', '@Url.Content("~/Reports/Warehouse/ListDailyPurchaseSales?categoryname=")' + categoryname + '&colname=' + colname + '&dateWay=' + $('#dateWay').val() + '&t=' + $('#t').val(), '90%', '90%');
}
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) {
$('#warehouse_code').html('<option value="">选择仓库</option>');
for (var i = 0; i < result.length; i++) {
$('#warehouse_code').append('<option value="' + result[i].warehouse_code + '">' + result[i].warehouse_name + '</option>');
}
}
}
})
}
</script>
}
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
<a class="J_menuItem" href="@Url.Content("~/Reports/Warehouse/WarehouseRedundancy")" data-index="0">仓库库存分析报表</a> <a class="J_menuItem" href="@Url.Content("~/Reports/Warehouse/WarehouseRedundancy")" data-index="0">仓库库存分析报表</a>
</li> </li>
<li> <li>
<a class="J_menuItem" href="@Url.Content("~/Reports/Warehouse/ListDailyPurchaseSales")" data-index="0">每日销进差异报表</a> <a class="J_menuItem" href="@Url.Content("~/Reports/Warehouse/DailyPurchaseSalesCount")" data-index="0">每日销进差异汇总</a>
</li> </li>
</ul> </ul>
</li> </li>
......
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