Commit 17fc0992 by guanzhenshan

调整进销存服务的统计方式,修复出现连接超时的情况

parent 280ce3cc
......@@ -45,93 +45,104 @@ namespace Bailun.DC.DailyPurchaseSellStock
}
}
public void Init(DateTime day)
public void Init(DateTime day,int count=0)
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString+ "Allow User Variables=True;"))
try
{
if (cn.State == System.Data.ConnectionState.Closed)
var sql = "";
var list = new List<dc_daily_purchase_sell_stock>();
var temparr = new List<Tuple<string, string, string>>();
var objPreStock = new List<mStock>();
var objStock = new List<mStock>();
var objPreOnWay = new List<mStock>();
var objOnWay = new List<mStock>();
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString + "Allow User Variables=True;"))
{
cn.Open();
}
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var page = 1;
var pagesize = 5000;
var page = 1;
var pagesize = 5000;
//昨日库存
var objPreStock = new List<mStock>();
var sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.usable_stock+t1.occupy_stock) count,sum((t1.usable_stock+t1.occupy_stock)*t1.unit_price) as amount from dc_daily_stock t1
//昨日库存
sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.usable_stock+t1.occupy_stock) count,sum((t1.usable_stock+t1.occupy_stock)*t1.unit_price) as amount from dc_daily_stock t1
left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
where t1.record_time='{day.AddDays(-1).ToString("yyyy-MM-dd")}' group by t1.bailun_sku,t1.warehouse_code";
var temp = cn.Query<mStock>(sql+" limit "+(page-1)*pagesize+","+pagesize, null, null, true, 2 * 60);
while (temp.Count() > 0)
{
objPreStock.AddRange(temp);
page++;
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
}
Console.WriteLine("昨日库存done,"+DateTime.Now);
var temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
while (temp.Count() > 0)
{
objPreStock.AddRange(temp);
page++;
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
}
Console.WriteLine("昨日库存done," + DateTime.Now);
//在库库存
page = 1;
pagesize = 5000;
var objStock = new List<mStock>();
sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.usable_stock+t1.occupy_stock) count,sum((t1.usable_stock+t1.occupy_stock)*t1.unit_price) as amount from dc_daily_stock t1
//在库库存
page = 1;
pagesize = 5000;
sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.usable_stock+t1.occupy_stock) count,sum((t1.usable_stock+t1.occupy_stock)*t1.unit_price) as amount from dc_daily_stock t1
left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
where t1.record_time='{day.ToString("yyyy-MM-dd")}' group by t1.bailun_sku,t1.warehouse_code";
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
while (temp.Count() > 0)
{
objStock.AddRange(temp);
page++;
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
}
Console.WriteLine("在库库存done," + DateTime.Now);
while (temp.Count() > 0)
{
objStock.AddRange(temp);
page++;
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
}
Console.WriteLine("在库库存done," + DateTime.Now);
//昨日在途库存
var objPreOnWay = new List<mStock>();
page = 1;
sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.quantity_purchase+t1.quantity_transfer) count,sum((t1.quantity_purchase+t1.quantity_transfer)*t1.unit_price) as amount from dc_daily_transit t1
//昨日在途库存
page = 1;
sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.quantity_purchase+t1.quantity_transfer) count,sum((t1.quantity_purchase+t1.quantity_transfer)*t1.unit_price) as amount from dc_daily_transit t1
left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
where t1.record_time='{day.AddDays(-1).ToString("yyyy-MM-dd")}' and (t1.quantity_purchase>0 or t1.quantity_transfer>0) group by t1.bailun_sku,t1.warehouse_code";
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
while (temp.Count() > 0)
{
objPreOnWay.AddRange(temp);
page++;
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
}
Console.WriteLine("昨日在途库存done," + DateTime.Now);
while (temp.Count() > 0)
{
objPreOnWay.AddRange(temp);
page++;
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
}
Console.WriteLine("昨日在途库存done," + DateTime.Now);
//在途库存
var objOnWay = new List<mStock>();
page = 1;
sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.quantity_purchase+t1.quantity_transfer) count,sum((t1.quantity_purchase+t1.quantity_transfer)*t1.unit_price) as amount from dc_daily_transit t1
//在途库存
page = 1;
sql = $@"select t1.bailun_sku,t1.warehouse_code,t2.warehouse_name,sum(t1.quantity_purchase+t1.quantity_transfer) count,sum((t1.quantity_purchase+t1.quantity_transfer)*t1.unit_price) as amount from dc_daily_transit t1
left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
where t1.record_time='{day.ToString("yyyy-MM-dd")}' and (t1.quantity_purchase>0 or t1.quantity_transfer>0) group by t1.bailun_sku,t1.warehouse_code
";
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
while (temp.Count() > 0)
{
objOnWay.AddRange(temp);
page++;
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
}
Console.WriteLine("在途库存done," + DateTime.Now);
var temparr = new List<Tuple<string, string,string>>();
temparr.AddRange(objPreStock.Select(p => new Tuple<string, string,string>(p.bailun_sku.ToUpper(), p.warehouse_code.ToUpper(), p.warehouse_name)));
temparr.AddRange(objStock.Select(p => new Tuple<string, string,string>(p.bailun_sku.ToUpper(), p.warehouse_code.ToUpper(), p.warehouse_name)));
temparr.AddRange(objPreOnWay.Select(p => new Tuple<string, string,string>(p.bailun_sku.ToUpper(), p.warehouse_code.ToUpper(), p.warehouse_name)));
temparr.AddRange(objOnWay.Select(p => new Tuple<string, string,string>(p.bailun_sku.ToUpper(), p.warehouse_code.ToUpper(), p.warehouse_name)));
while (temp.Count() > 0)
{
objOnWay.AddRange(temp);
page++;
temp = cn.Query<mStock>(sql + " limit " + (page - 1) * pagesize + "," + pagesize, null, null, true, 2 * 60);
}
Console.WriteLine("在途库存done," + DateTime.Now);
temparr.AddRange(objPreStock.Select(p => new Tuple<string, string, string>(p.bailun_sku.ToUpper(), p.warehouse_code.ToUpper(), p.warehouse_name)));
temparr.AddRange(objStock.Select(p => new Tuple<string, string, string>(p.bailun_sku.ToUpper(), p.warehouse_code.ToUpper(), p.warehouse_name)));
temparr.AddRange(objPreOnWay.Select(p => new Tuple<string, string, string>(p.bailun_sku.ToUpper(), p.warehouse_code.ToUpper(), p.warehouse_name)));
temparr.AddRange(objOnWay.Select(p => new Tuple<string, string, string>(p.bailun_sku.ToUpper(), p.warehouse_code.ToUpper(), p.warehouse_name)));
temparr = temparr.Distinct().ToList();
temparr = temparr.Distinct().ToList();
}
var list = new List<dc_daily_purchase_sell_stock>();
foreach (var item in temparr)
{
var m = new dc_daily_purchase_sell_stock() {
var m = new dc_daily_purchase_sell_stock()
{
bailun_sku = item.Item1,
warehouse_code = item.Item2,
warehouse_name = item.Item3,
......@@ -144,7 +155,7 @@ namespace Bailun.DC.DailyPurchaseSellStock
end_stock_count = 0,
start_onway_amount = 0,
start_onway_count = 0,
start_stock_amount=0,
start_stock_amount = 0,
start_stock_count = 0,
};
......@@ -179,32 +190,51 @@ namespace Bailun.DC.DailyPurchaseSellStock
list.Add(m);
}
cn.Execute($"delete from dc_daily_purchase_sell_stock where record_time='{day.ToString("yyyy-MM-dd")}'",null,null,2*60);
sql = "insert dc_daily_purchase_sell_stock (bailun_sku,warehouse_code,warehouse_name,createtime,record_time,end_onway_amount,end_onway_count,end_stock_amount,end_stock_count,start_onway_amount,start_onway_count,start_stock_amount,start_stock_count) values ";
var resultcount = 0;
while (resultcount < list.Count)
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString + "Allow User Variables=True"))
{
var s = "";
var temp1 = list.Skip(resultcount).Take(5000);
foreach (var item in temp1)
if (cn.State == System.Data.ConnectionState.Closed)
{
s += $"('{item.bailun_sku}','{item.warehouse_code}','{item.warehouse_name}','{item.createtime.ToString("yyyy-MM-dd HH:mm:ss")}','{item.record_time.ToString("yyyy-MM-dd")}',{item.end_onway_amount},{item.end_onway_count},{item.end_stock_amount},{item.end_stock_count},{item.start_onway_amount},{item.start_onway_count},{item.start_stock_amount},{item.start_stock_count}),";
cn.Open();
}
resultcount += temp1.Count();
Console.WriteLine("保存" + resultcount + "记录," + DateTime.Now);
cn.Execute($"delete from dc_daily_purchase_sell_stock where record_time='{day.ToString("yyyy-MM-dd")}'", null, null, 2 * 60);
sql = "insert dc_daily_purchase_sell_stock (bailun_sku,warehouse_code,warehouse_name,createtime,record_time,end_onway_amount,end_onway_count,end_stock_amount,end_stock_count,start_onway_amount,start_onway_count,start_stock_amount,start_stock_count) values ";
var resultcount = 0;
if (s.Length>0)
while (resultcount < list.Count)
{
cn.Execute(sql + s.Substring(0, s.Length - 1), null, null, 2 * 60);
var s = "";
var temp1 = list.Skip(resultcount).Take(5000);
foreach (var item in temp1)
{
s += $"('{item.bailun_sku}','{item.warehouse_code}','{item.warehouse_name}','{item.createtime.ToString("yyyy-MM-dd HH:mm:ss")}','{item.record_time.ToString("yyyy-MM-dd")}',{item.end_onway_amount},{item.end_onway_count},{item.end_stock_amount},{item.end_stock_count},{item.start_onway_amount},{item.start_onway_count},{item.start_stock_amount},{item.start_stock_count}),";
}
resultcount += temp1.Count();
Console.WriteLine("保存" + resultcount + "记录," + DateTime.Now);
if (s.Length > 0)
{
cn.Execute(sql + s.Substring(0, s.Length - 1), null, null, 2 * 60);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("出现异常,异常信息:" + ex.Message);
if (count > 2)
{
Init(day, count++);
Console.WriteLine("===============================重跑" + day + "的数据" + DateTime.Now);
}
else
{
Console.WriteLine("出现异常次数大于"+count+"次,服务关闭重跑");
}
}
}
}
......
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