Commit d6ff8199 by guanzhenshan

调整逻辑仓库

parent 3d7b3fec
......@@ -17,6 +17,8 @@ namespace Bailun.DC.LogicWareHouse.Models
public int days { get; set; }
public string day_str { get; set; }
public string hq_type { get; set; }
public string usable_stock { get; set; }
......
......@@ -7,23 +7,33 @@ namespace Bailun.DC.LogicWareHouse
{
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();
var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Services>();
});
//半成品库存
//new Services().SemiStock();
await builder.RunConsoleAsync();
}
//static void Main(string[] args)
//{
// //new Services().Save();
// //new Services().SaleWHDailySnaps();
// new Services().UpdateSemiSale();
//}
//半成品销量
//new Services().UpdateSemiSale();
// 更新缺货数和待发货数据
//new Services().UpdateOutStockAndNoShipping();
//更新30天现金流
//new Services().UpdateCash30Days();
}
}
}
......@@ -101,12 +101,12 @@ namespace Bailun.DC.LogicWareHouse
}
Console.WriteLine("成品运行成功,时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//半成品
var result = SemiStock(cn);
}
//半成品库存
SemiStock();
//半成品销量
UpdateSemiSale();
......@@ -135,48 +135,58 @@ namespace Bailun.DC.LogicWareHouse
/// 半成品
/// </summary>
/// <returns></returns>
private bool SemiStock(MySqlConnection cn)
public void SemiStock()
{
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;
while (page == 1 || (resultcount == pagesize && resultcount != 0))
try
{
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;
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
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 ";
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);
var liststock = cn.Query<DC.Models.Warehouse.dc_skuwarehouse_stock_sales>(sql, null, null, true, 30 * 60);
cn.Execute(str, null, null, 5 * 60);
Console.WriteLine("当前页:" + page + ",每页记录:" + pagesize + ";" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
resultcount = liststock.AsList().Count;
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>
......@@ -184,131 +194,151 @@ namespace Bailun.DC.LogicWareHouse
/// </summary>
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 totalpage = 0;
int page = 1;
int totalpage = 0;
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
cn.Open();
}
//删除旧数据
cn.Execute("truncate dc_semi_stock_sales_shipping;");
}
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
while (page == 1 || (page <= totalpage))
{
var result = Bailun.DC.Common.HttpHelper.NetHelper.Request(_url + "&page=" + page);
//删除旧数据
cn.Execute("truncate dc_semi_stock_sales_shipping;");
}
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)
{
cn.Open();
}
Console.WriteLine("总页数:" + json.data.TotalPages + ",当前页:" + json.data.CurrentPage);
//保存数据
foreach (var item in json.data.Items)
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
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,
available_days = item.available_days,
buyer_price = item.buyer_price,
material_data_center = item.material_data_center,
need_quantity = item.need_quantity,
on_the_way_amount = item.on_the_way_amount,
on_the_way_count = item.on_the_way_count,
out_of_stock = item.out_of_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_7 = item.sales_7,
sku = item.sku,
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
};
cn.Insert<dc_semi_stock_sales_shipping>(m);
var m = new dc_semi_stock_sales_shipping()
{
material_id = item.material_id,
available_days = item.available_days,
buyer_price = item.buyer_price,
material_data_center = item.material_data_center,
need_quantity = item.need_quantity,
on_the_way_amount = item.on_the_way_amount,
on_the_way_count = item.on_the_way_count,
out_of_stock = item.out_of_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_7 = item.sales_7,
sku = item.sku,
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
};
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
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))
{
if (cn.State == System.Data.ConnectionState.Closed)
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
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>
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
set t1.noshippingcount=t2.quantity_unshipped,t1.nostockcount=t2.quantity_out_stock";
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
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(sql);
cn.Execute("update dc_skuwarehouse_stock_sales set noshippingcount=0,nostockcount=0");
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
/// </summary>
public void UpdateCash30Days()
{
Console.WriteLine("开始执行更新现金流方法 "+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString + "Allow User Variables=True;"))
try
{
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)");
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 + "'");
Console.WriteLine(item.bailun_sku + "&" + item.warehouse_code);
}
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)
{
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);
}
//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
// 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 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
// 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>
......@@ -352,6 +390,7 @@ namespace Bailun.DC.LogicWareHouse
/// </summary>
public void SaleWHDailySnaps()
{
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";
......
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