Commit d6ff8199 by guanzhenshan

调整逻辑仓库

parent 3d7b3fec
...@@ -17,6 +17,8 @@ namespace Bailun.DC.LogicWareHouse.Models ...@@ -17,6 +17,8 @@ namespace Bailun.DC.LogicWareHouse.Models
public int days { get; set; } public int days { get; set; }
public string day_str { get; set; }
public string hq_type { get; set; } public string hq_type { get; set; }
public string usable_stock { get; set; } public string usable_stock { get; set; }
......
...@@ -7,23 +7,33 @@ namespace Bailun.DC.LogicWareHouse ...@@ -7,23 +7,33 @@ namespace Bailun.DC.LogicWareHouse
{ {
class Program class Program
{ {
static async Task Main(string[] args) //static async Task Main(string[] args)
//{
// Console.WriteLine("进入 逻辑仓库");
// new Services().Save();
// var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
// {
// services.AddHostedService<Services>();
// });
// await builder.RunConsoleAsync();
//}
static void Main(string[] args)
{ {
Console.WriteLine("进入 逻辑仓库");
new Services().Save(); new Services().Save();
var builder = new HostBuilder().ConfigureServices((hostContext, services) => //半成品库存
{ //new Services().SemiStock();
services.AddHostedService<Services>();
});
await builder.RunConsoleAsync();
}
//static void Main(string[] args) //半成品销量
//{ //new Services().UpdateSemiSale();
// //new Services().Save();
// //new Services().SaleWHDailySnaps(); // 更新缺货数和待发货数据
// new Services().UpdateSemiSale(); //new Services().UpdateOutStockAndNoShipping();
//}
//更新30天现金流
//new Services().UpdateCash30Days();
}
} }
} }
...@@ -101,12 +101,12 @@ namespace Bailun.DC.LogicWareHouse ...@@ -101,12 +101,12 @@ namespace Bailun.DC.LogicWareHouse
} }
Console.WriteLine("成品运行成功,时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); Console.WriteLine("成品运行成功,时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//半成品
var result = SemiStock(cn);
} }
//半成品库存
SemiStock();
//半成品销量 //半成品销量
UpdateSemiSale(); UpdateSemiSale();
...@@ -135,48 +135,58 @@ namespace Bailun.DC.LogicWareHouse ...@@ -135,48 +135,58 @@ namespace Bailun.DC.LogicWareHouse
/// 半成品 /// 半成品
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private bool SemiStock(MySqlConnection cn) public void SemiStock()
{ {
if (cn.State == System.Data.ConnectionState.Closed) try
{
cn.Open();
}
var page = 1;
var pagesize = 5000;
var listcount = cn.QueryFirstOrDefault<int>("select count(id) from dc_semi_daily_stock where `day`= '"+DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")+"'");
var resultcount = 0;
while (page == 1 || (resultcount == pagesize && resultcount != 0))
{ {
var strlimit = (((page - 1) * pagesize) + "," + pagesize); using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
var sql = $@"select sku_code as bailun_sku,warehouse_id as warehouse_code,warehouse_name,'半成品仓' as hq_type,stock_quantity as usable_stock,inventory_amount as amount_stock from dc_semi_daily_stock where `day`= '{DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")}' limit "+strlimit; {
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var page = 1;
var pagesize = 5000;
var listcount = cn.QueryFirstOrDefault<int>("select count(id) from dc_semi_daily_stock where `day`= '" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "'");
var resultcount = 0;
var liststock = cn.Query<DC.Models.Warehouse.dc_skuwarehouse_stock_sales>(sql, null, null, true, 30 * 60); while (page == 1 || (resultcount == pagesize && resultcount != 0))
{
var strlimit = (((page - 1) * pagesize) + "," + pagesize);
var sql = $@"select sku_code as bailun_sku,warehouse_id as warehouse_code,warehouse_name,'半成品仓' as hq_type,stock_quantity as usable_stock,inventory_amount as amount_stock from dc_semi_daily_stock where `day`= '{DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")}' limit " + strlimit;
resultcount = liststock.AsList().Count;
var str = @"insert dc_skuwarehouse_stock_sales (bailun_sku,warehouse_code,warehouse_name,hq_type,usable_stock,amount_stock,quantity_purchase,purchase_amount,quantity_transfer,amount_transit,oneday_total_sales,amount_onedaysale,sevenday_total_sales,fourteenday_total_sales,thirtyday_total_sales) values "; var liststock = cn.Query<DC.Models.Warehouse.dc_skuwarehouse_stock_sales>(sql, null, null, true, 30 * 60);
foreach (var item in liststock)
{
str += $@"('{item.bailun_sku}','{item.warehouse_code}','{item.warehouse_name}','{item.hq_type}',{item.usable_stock ?? 0},{item.amount_stock ?? 0},{(item.quantity_purchase ?? 0)},{item.purchase_amount ?? 0},{item.quantity_transfer ?? 0},{item.amount_transit ?? 0},{(item.oneday_total_sales ?? 0)},{item.amount_onedaysale ?? 0},{item.sevenday_total_sales ?? 0},{item.fourteenday_total_sales ?? 0},{item.thirtyday_total_sales ?? 0}),";
}
if (resultcount > 0)
{
str = str.Substring(0, str.Length - 1);
cn.Execute(str, null, null, 5 * 60); resultcount = liststock.AsList().Count;
Console.WriteLine("当前页:" + page + ",每页记录:" + pagesize + ";" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
page++; var str = @"insert dc_skuwarehouse_stock_sales (bailun_sku,warehouse_code,warehouse_name,hq_type,usable_stock,amount_stock,quantity_purchase,purchase_amount,quantity_transfer,amount_transit,oneday_total_sales,amount_onedaysale,sevenday_total_sales,fourteenday_total_sales,thirtyday_total_sales) values ";
} foreach (var item in liststock)
{
str += $@"('{item.bailun_sku}','{item.warehouse_code}','{item.warehouse_name}','{item.hq_type}',{item.usable_stock ?? 0},{item.amount_stock ?? 0},{(item.quantity_purchase ?? 0)},{item.purchase_amount ?? 0},{item.quantity_transfer ?? 0},{item.amount_transit ?? 0},{(item.oneday_total_sales ?? 0)},{item.amount_onedaysale ?? 0},{item.sevenday_total_sales ?? 0},{item.fourteenday_total_sales ?? 0},{item.thirtyday_total_sales ?? 0}),";
}
if (resultcount > 0)
{
str = str.Substring(0, str.Length - 1);
Console.WriteLine("半成品 运行成功,时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); cn.Execute(str, null, null, 5 * 60);
Console.WriteLine("当前页:" + page + ",每页记录:" + pagesize + ";" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
return true; page++;
}
Console.WriteLine("半成品 运行成功,时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
}
catch (Exception ex)
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+"重跑SemiStock,异常信息:" + ex.Message);
SemiStock();
}
} }
/// <summary> /// <summary>
...@@ -184,131 +194,151 @@ namespace Bailun.DC.LogicWareHouse ...@@ -184,131 +194,151 @@ namespace Bailun.DC.LogicWareHouse
/// </summary> /// </summary>
public void UpdateSemiSale() public void UpdateSemiSale()
{ {
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 执行同步半成品销量任务..."); try
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 执行同步半成品销量任务...");
var _url = "http://mjzz.bailuntec.com/api/StockReport?rows=1000"; var _url = "http://mjzz.bailuntec.com/api/StockReport?rows=1000";
int page = 1; int page = 1;
int totalpage = 0; int totalpage = 0;
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString)) using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{ {
cn.Open(); if (cn.State == System.Data.ConnectionState.Closed)
} {
cn.Open();
//删除旧数据 }
cn.Execute("truncate dc_semi_stock_sales_shipping;");
}
while (page == 1 || (page <= totalpage)) //删除旧数据
{ cn.Execute("truncate dc_semi_stock_sales_shipping;");
var result = Bailun.DC.Common.HttpHelper.NetHelper.Request(_url + "&page=" + page); }
if (!string.IsNullOrEmpty(result)) while (page == 1 || (page <= totalpage))
{ {
var json = Newtonsoft.Json.JsonConvert.DeserializeObject<mResponse>(result); var result = Bailun.DC.Common.HttpHelper.NetHelper.Request(_url + "&page=" + page);
if (json.success) if (!string.IsNullOrEmpty(result))
{ {
Console.WriteLine("总页数:" + json.data.TotalPages + ",当前页:" + json.data.CurrentPage); var json = Newtonsoft.Json.JsonConvert.DeserializeObject<mResponse>(result);
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString)) if (json.success)
{ {
if (cn.State == System.Data.ConnectionState.Closed) Console.WriteLine("总页数:" + json.data.TotalPages + ",当前页:" + json.data.CurrentPage);
{
cn.Open();
}
//保存数据 using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
foreach (var item in json.data.Items)
{ {
var m = new dc_semi_stock_sales_shipping() if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
//保存数据
foreach (var item in json.data.Items)
{ {
material_id = item.material_id, var m = new dc_semi_stock_sales_shipping()
available_days = item.available_days, {
buyer_price = item.buyer_price, material_id = item.material_id,
material_data_center = item.material_data_center, available_days = item.available_days,
need_quantity = item.need_quantity, buyer_price = item.buyer_price,
on_the_way_amount = item.on_the_way_amount, material_data_center = item.material_data_center,
on_the_way_count = item.on_the_way_count, need_quantity = item.need_quantity,
out_of_stock = item.out_of_stock, on_the_way_amount = item.on_the_way_amount,
out_stock_30 = item.out_stock_30, on_the_way_count = item.on_the_way_count,
put_stock_30 = item.put_stock_30, out_of_stock = item.out_of_stock,
redundancy_stock = item.redundancy_stock, out_stock_30 = item.out_stock_30,
put_stock_30 = item.put_stock_30,
redundancy_stock = item.redundancy_stock,
sales_1 = item.sales_1,
sales_14 = item.sales_14,
sales_30 = item.sales_30, sales_1 = item.sales_1,
sales_7 = item.sales_7, sales_14 = item.sales_14,
sku = item.sku, sales_30 = item.sales_30,
sku_name = item.sku_name, sales_7 = item.sales_7,
stock = item.stock, sku = item.sku,
stock_amount = item.stock_amount, sku_name = item.sku_name,
stock = item.stock,
stock_amount = item.stock_amount,
stock_amount_1 = item.stock_amount_1,
warehouse_id = item.warehouse_id,
warehouse_name = item.warehouse_name stock_amount_1 = item.stock_amount_1,
}; warehouse_id = item.warehouse_id,
warehouse_name = item.warehouse_name
cn.Insert<dc_semi_stock_sales_shipping>(m); };
cn.Insert<dc_semi_stock_sales_shipping>(m);
}
} }
totalpage = json.data.TotalPages;
page++;
}
else
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 接口返回错误信息:" + json.message);
} }
totalpage = json.data.TotalPages;
page++;
}
else
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 接口返回错误信息:" + json.message);
} }
}
} }
var sql = @"update dc_skuwarehouse_stock_sales t1 var sql = @"update dc_skuwarehouse_stock_sales t1
join dc_semi_stock_sales_shipping t2 on t2.warehouse_name=t1.warehouse_name and t1.bailun_sku=t2.sku join dc_semi_stock_sales_shipping t2 on t2.warehouse_name=t1.warehouse_name and t1.bailun_sku=t2.sku
set t1.quantity_purchase=t2.on_the_way_count,t1.purchase_amount=t2.on_the_way_amount,t1.oneday_total_sales=t2.sales_1,t1.amount_onedaysale=t2.stock_amount_1,t1.sevenday_total_sales=t2.sales_7,t1.fourteenday_total_sales=t2.sales_14,t1.thirtyday_total_sales=t2.sales_30,t1.nostockcount=t2.out_of_stock,t1.noshippingcount=t2.need_quantity,t1.quantity_tuneout_30days=t2.out_stock_30,t1.quantity_tunein_30days=t2.put_stock_30;"; set t1.quantity_purchase=t2.on_the_way_count,t1.purchase_amount=t2.on_the_way_amount,t1.oneday_total_sales=t2.sales_1,t1.amount_onedaysale=t2.stock_amount_1,t1.sevenday_total_sales=t2.sales_7,t1.fourteenday_total_sales=t2.sales_14,t1.thirtyday_total_sales=t2.sales_30,t1.nostockcount=t2.out_of_stock,t1.noshippingcount=t2.need_quantity,t1.quantity_tuneout_30days=t2.out_stock_30,t1.quantity_tunein_30days=t2.put_stock_30;";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString)) using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{ {
cn.Open(); if (cn.State == System.Data.ConnectionState.Closed)
} {
cn.Open();
}
var result = cn.Execute(sql); var result = cn.Execute(sql);
Console.WriteLine("更新逻辑仓库半成品销量成功,受影响行数:" + result); Console.WriteLine("更新逻辑仓库半成品销量成功,受影响行数:" + result);
}
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 结束同步半成品销量任务");
}
catch (Exception ex)
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "重跑UpdateSemiSale,异常信息:" + ex.Message);
UpdateSemiSale();
} }
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 结束同步半成品销量任务");
} }
/// <summary> /// <summary>
/// 更新缺货数和待发货数据 /// 更新缺货数和待发货数据
/// </summary> /// </summary>
private void UpdateOutStockAndNoShipping() public void UpdateOutStockAndNoShipping()
{ {
var sql = @"update dc_skuwarehouse_stock_sales t1 try
{
var sql = @"update dc_skuwarehouse_stock_sales t1
join dc_mid_transit t2 on (t2.quantity_unshipped>0 or t2.quantity_out_stock>0) and t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code join dc_mid_transit t2 on (t2.quantity_unshipped>0 or t2.quantity_out_stock>0) and t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code
set t1.noshippingcount=t2.quantity_unshipped,t1.nostockcount=t2.quantity_out_stock"; set t1.noshippingcount=t2.quantity_unshipped,t1.nostockcount=t2.quantity_out_stock";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString)) using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{ {
cn.Open(); if (cn.State == System.Data.ConnectionState.Closed)
} {
cn.Open();
}
cn.Execute("update dc_skuwarehouse_stock_sales set noshippingcount=0,nostockcount=0"); cn.Execute("update dc_skuwarehouse_stock_sales set noshippingcount=0,nostockcount=0");
cn.Execute(sql); cn.Execute(sql);
}
}
catch (Exception ex)
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "重跑UpdateOutStockAndNoShipping,异常信息:" + ex.Message);
UpdateOutStockAndNoShipping();
} }
} }
...@@ -317,34 +347,42 @@ namespace Bailun.DC.LogicWareHouse ...@@ -317,34 +347,42 @@ namespace Bailun.DC.LogicWareHouse
/// </summary> /// </summary>
public void UpdateCash30Days() public void UpdateCash30Days()
{ {
Console.WriteLine("开始执行更新现金流方法 "+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); try
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString + "Allow User Variables=True;"))
{ {
if (cn.State == System.Data.ConnectionState.Closed) Console.WriteLine("开始执行更新现金流方法 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString + "Allow User Variables=True;"))
{ {
cn.Open(); if (cn.State == System.Data.ConnectionState.Closed)
} {
cn.Open();
}
cn.Execute("update dc_skuwarehouse_stock_sales set cash_in_30days=0,cash_out_30days=0,cash_net = 0"); cn.Execute("update dc_skuwarehouse_stock_sales set cash_in_30days=0,cash_out_30days=0,cash_net = 0");
var list = cn.Query<mCash>("select t2.bailun_sku,t2.warehouse_code,t2.pay_amount_30,t2.income_amount_30 from dc_base_stock t2 where (t2.pay_amount_30>0 or t2.income_amount_30>0)"); var list = cn.Query<mCash>("select t2.bailun_sku,t2.warehouse_code,t2.pay_amount_30,t2.income_amount_30 from dc_base_stock t2 where (t2.pay_amount_30>0 or t2.income_amount_30>0)");
foreach(var item in list) foreach (var item in list)
{ {
cn.Execute("update dc_skuwarehouse_stock_sales set cash_in_30days=" + item.income_amount_30 + ",cash_out_30days=" + item.pay_amount_30 + ",cash_net=" + (item.income_amount_30 - item.pay_amount_30) + " where bailun_sku='" + item.bailun_sku + "' and warehouse_code='" + item.warehouse_code + "'"); cn.Execute("update dc_skuwarehouse_stock_sales set cash_in_30days=" + item.income_amount_30 + ",cash_out_30days=" + item.pay_amount_30 + ",cash_net=" + (item.income_amount_30 - item.pay_amount_30) + " where bailun_sku='" + item.bailun_sku + "' and warehouse_code='" + item.warehouse_code + "'");
Console.WriteLine(item.bailun_sku + "&" + item.warehouse_code); Console.WriteLine(item.bailun_sku + "&" + item.warehouse_code);
} }
//var sql = @"update dc_skuwarehouse_stock_sales t1 //var sql = @"update dc_skuwarehouse_stock_sales t1
// join dc_base_stock t2 on (t2.pay_amount_30>0 or t2.income_amount_30>0) and t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code // join dc_base_stock t2 on (t2.pay_amount_30>0 or t2.income_amount_30>0) and t1.bailun_sku=t2.bailun_sku and t1.warehouse_code=t2.warehouse_code
// set t1.cash_in_30days=t2.income_amount_30,t1.cash_out_30days=t2.pay_amount_30,t1.cash_net = t2.income_amount_30-t2.pay_amount_30"; // set t1.cash_in_30days=t2.income_amount_30,t1.cash_out_30days=t2.pay_amount_30,t1.cash_net = t2.income_amount_30-t2.pay_amount_30";
//var result = cn.Execute(sql); //var result = cn.Execute(sql);
Console.WriteLine("更新30天现金流的记录数有:" + list.Count()); Console.WriteLine("更新30天现金流的记录数有:" + list.Count());
} }
Console.WriteLine(" 更新现金流方法 已完成 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); Console.WriteLine(" 更新现金流方法 已完成 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
catch (Exception ex)
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "重跑UpdateCash30Days,异常信息:" + ex.Message);
}
} }
/// <summary> /// <summary>
...@@ -352,6 +390,7 @@ namespace Bailun.DC.LogicWareHouse ...@@ -352,6 +390,7 @@ namespace Bailun.DC.LogicWareHouse
/// </summary> /// </summary>
public void SaleWHDailySnaps() public void SaleWHDailySnaps()
{ {
Console.WriteLine("开始执行保存逻辑仓库的每日快照信息 "+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); Console.WriteLine("开始执行保存逻辑仓库的每日快照信息 "+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
var sql = @"select t1.hq_type,t1.warehouse_code,t1.warehouse_name,sum(t1.usable_stock) usable_stock,sum(t1.amount_stock) amount_stock,sum(t1.quantity_purchase) quantity_purchase,sum(t1.purchase_amount) purchase_amount,sum(t1.quantity_transfer) quantity_transfer,sum(t1.amount_transit) amount_transit,sum(t1.oneday_total_sales) oneday_total_sales,sum(t1.amount_onedaysale) amount_onedaysale,sum(t1.sevenday_total_sales) sevenday_total_sales,sum(t1.fourteenday_total_sales) fourteenday_total_sales,sum(t1.thirtyday_total_sales) thirtyday_total_sales,sum(quantity_tuneout_onway) quantity_tuneout_onway,sum(t1.quantity_tuneout_30days) quantity_tuneout_30days,sum(t1.quantity_tunein_30days) quantity_tunein_30days from dc_skuwarehouse_stock_sales t1 group by warehouse_code"; var sql = @"select t1.hq_type,t1.warehouse_code,t1.warehouse_name,sum(t1.usable_stock) usable_stock,sum(t1.amount_stock) amount_stock,sum(t1.quantity_purchase) quantity_purchase,sum(t1.purchase_amount) purchase_amount,sum(t1.quantity_transfer) quantity_transfer,sum(t1.amount_transit) amount_transit,sum(t1.oneday_total_sales) oneday_total_sales,sum(t1.amount_onedaysale) amount_onedaysale,sum(t1.sevenday_total_sales) sevenday_total_sales,sum(t1.fourteenday_total_sales) fourteenday_total_sales,sum(t1.thirtyday_total_sales) thirtyday_total_sales,sum(quantity_tuneout_onway) quantity_tuneout_onway,sum(t1.quantity_tuneout_30days) quantity_tuneout_30days,sum(t1.quantity_tunein_30days) quantity_tunein_30days from dc_skuwarehouse_stock_sales t1 group by warehouse_code";
......
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