Commit ace5b998 by guanzhenshan

调整每日进销存汇总每日重跑服务

parent 94e7ccb7
...@@ -7,27 +7,27 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -7,27 +7,27 @@ 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)
{ {
var start = DateTime.Parse("2020-05-03"); Console.WriteLine("每日销进差异汇总");
while (start.AddDays(1) < DateTime.Now) var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{ {
Console.WriteLine(start.ToString("yyyy-MM-dd")); services.AddHostedService<Services>();
new Services().Init(start, start.AddDays(1)); });
start = start.AddDays(1);
} await builder.RunConsoleAsync();
} }
//static void Main(string[] args)
//{
// var start = DateTime.Parse("2020-08-30");
// while (start.AddDays(1) < DateTime.Now)
// {
// Console.WriteLine(start.ToString("yyyy-MM-dd"));
// new Services().Init(start, start.AddDays(1));
// start = start.AddDays(1);
// }
//}
} }
} }
...@@ -35,7 +35,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -35,7 +35,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
else if (now.Hour % 8 == 0 && now.Minute == 3) else if (now.Hour % 8 == 0 && now.Minute == 3)
{ {
var start = DateTime.Parse(now.AddMonths(-1).ToString("yyyy-MM-dd")); var start = DateTime.Parse(now.AddMonths(-1).ToString("yyyy-MM-dd"));
while (start.AddDays(2) < DateTime.Now) while (start.AddDays(1) < DateTime.Now)
{ {
Console.WriteLine("重跑历史数据 "+start.ToString("yyyy-MM-dd")); Console.WriteLine("重跑历史数据 "+start.ToString("yyyy-MM-dd"));
new Services().Init(start, start.AddDays(1)); new Services().Init(start, start.AddDays(1));
...@@ -51,35 +51,37 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -51,35 +51,37 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
public void Init(DateTime start,DateTime end) public void Init(DateTime start,DateTime end)
{ {
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString + "Allow User Variables=True;")) try
{ {
if (cn.State == System.Data.ConnectionState.Closed) using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString + "Allow User Variables=True;"))
{ {
cn.Open(); if (cn.State == System.Data.ConnectionState.Closed)
} {
cn.Open();
}
#region 成品 #region 成品
//成品 //成品
//先保存采购的 //先保存采购的
var sql = $@"select t1.warehouse_code,t3.warehouse_name,t1.bailun_sku,sum(t1.count) count,sum(t1.count*t1.price) amount from dc_base_purchase t1 var sql = $@"select t1.warehouse_code,t3.warehouse_name,t1.bailun_sku,sum(t1.count) count,sum(t1.count*t1.price) amount from dc_base_purchase t1
left join dc_base_warehouse t3 on t1.warehouse_code = t3.warehouse_code left join dc_base_warehouse t3 on t1.warehouse_code = t3.warehouse_code
where t1.has_delete=0 and t1.status!=-1 and t1.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' where t1.has_delete=0 and t1.status!=-1 and t1.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'
group by t1.warehouse_code,t1.bailun_sku"; group by t1.warehouse_code,t1.bailun_sku";
var objPurchase = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); var objPurchase = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
//再保存卖出的 //再保存卖出的
sql = $@"select t1.warehouse_code,t3.warehouse_name,t1.bailun_sku,sum(t1.bailun_sku_quantity_ordered) count,sum(t1.bailun_sku_quantity_ordered*t2.unit_price) amount from dc_base_oms_sku t1 sql = $@"select t1.warehouse_code,t3.warehouse_name,t1.bailun_sku,sum(t1.bailun_sku_quantity_ordered) count,sum(t1.bailun_sku_quantity_ordered*t2.unit_price) amount from dc_base_oms_sku t1
left join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku left join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku
left join dc_base_warehouse t3 on t1.warehouse_code = t3.warehouse_code left join dc_base_warehouse t3 on t1.warehouse_code = t3.warehouse_code
where t1.has_delete=0 and t1.has_scalp=0 and t1.bailun_payment_status!='Canceled' and t1.paid_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.paid_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.bailun_order_status!='Canceled' and t1.warehouse_code!='' where t1.has_delete=0 and t1.has_scalp=0 and t1.bailun_payment_status!='Canceled' and t1.paid_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.paid_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.bailun_order_status!='Canceled' and t1.warehouse_code!=''
group by t1.warehouse_code,t1.bailun_sku"; group by t1.warehouse_code,t1.bailun_sku";
var objSales = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); var objSales = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
//获取入库的 //获取入库的
sql = $@"select t1.*,t2.warehouse_name from (select tb.warehouse_code,tb.bailun_sku,sum(tb.count) count,sum(tb.count*t4.unit_price) amount from ( sql = $@"select t1.*,t2.warehouse_name from (select tb.warehouse_code,tb.bailun_sku,sum(tb.count) count,sum(tb.count*t4.unit_price) amount from (
select t1.warehouse_code,t1.warehouse_name,t1.bailun_sku,t1.count from dc_base_purchase_inbound t1 select t1.warehouse_code,t1.warehouse_name,t1.bailun_sku,t1.count from dc_base_purchase_inbound t1
join dc_base_purchase t2 on t1.purchase_id=t2.purchase_id and t1.bailun_sku=t2.bailun_sku and t2.has_transfer=0 and t2.`status`>0 join dc_base_purchase t2 on t1.purchase_id=t2.purchase_id and t1.bailun_sku=t2.bailun_sku and t2.has_transfer=0 and t2.`status`>0
where t1.`status`=1 and t1.update_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.update_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' where t1.`status`=1 and t1.update_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.update_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'
...@@ -89,10 +91,10 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -89,10 +91,10 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
left join dc_base_sku t4 on tb.bailun_sku=t4.bailun_sku left join dc_base_sku t4 on tb.bailun_sku=t4.bailun_sku
group by tb.warehouse_code,tb.bailun_sku) t1 group by tb.warehouse_code,tb.bailun_sku) t1
left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code"; left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code";
var objPutin = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); var objPutin = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
//发货的 自发货+FBA的 //发货的 自发货+FBA的
sql = $@"select tb.warehouse_code,tb.warehouse_name,tb.bailun_sku,sum(count) count,sum(amount) amount from (select t1.warehouse_code,t3.warehouse_name,t1.bailun_sku,sum(t1.quantity_shipped) count,sum(t1.quantity_shipped*t2.unit_price) amount from dc_base_oms_pick t1 sql = $@"select tb.warehouse_code,tb.warehouse_name,tb.bailun_sku,sum(count) count,sum(amount) amount from (select t1.warehouse_code,t3.warehouse_name,t1.bailun_sku,sum(t1.quantity_shipped) count,sum(t1.quantity_shipped*t2.unit_price) amount from dc_base_oms_pick t1
left join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku left join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku
left join dc_base_warehouse t3 on t1.warehouse_code=t3.warehouse_code left join dc_base_warehouse t3 on t1.warehouse_code=t3.warehouse_code
where t1.company_id=1 and t1.has_delete=0 and t1.shipping_status='TotalShipping' and t1.shipping_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.shipping_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' where t1.company_id=1 and t1.has_delete=0 and t1.shipping_status='TotalShipping' and t1.shipping_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.shipping_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'
...@@ -104,328 +106,340 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -104,328 +106,340 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
where t1.company_id=1 and t1.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.bailun_order_status!='Canceled' and t1.has_scalp=0 and t1.has_delete=0 and t1.has_cancle=0 and platform_type='FBA' where t1.company_id=1 and t1.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.bailun_order_status!='Canceled' and t1.has_scalp=0 and t1.has_delete=0 and t1.has_cancle=0 and platform_type='FBA'
group by t1.warehouse_code,t1.bailun_sku) tb group by t1.warehouse_code,t1.bailun_sku) tb
group by tb.bailun_sku,tb.warehouse_code"; group by tb.bailun_sku,tb.warehouse_code";
var objShipping = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); var objShipping = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
//调拨出库 //调拨出库
sql = $@"select t1.source_warehouse_code as warehouse_code,t3.warehouse_name,t1.bailun_sku,t1.count,t1.count*t2.unit_price from dc_base_transfer_complete t1 sql = $@"select t1.source_warehouse_code as warehouse_code,t3.warehouse_name,t1.bailun_sku,t1.count,t1.count*t2.unit_price from dc_base_transfer_complete t1
left join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku left join dc_base_sku t2 on t1.bailun_sku=t2.bailun_sku
left join dc_base_warehouse t3 on t1.source_warehouse_code=t3.warehouse_code left join dc_base_warehouse t3 on t1.source_warehouse_code=t3.warehouse_code
where t1.create_time >= '{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time < '{end.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.deleted = 0 where t1.create_time >= '{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time < '{end.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.deleted = 0
group by t1.bailun_sku,t1.source_warehouse_code"; group by t1.bailun_sku,t1.source_warehouse_code";
var objAllot = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); var objAllot = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
objShipping.AddRange(objAllot); objShipping.AddRange(objAllot);
var listSkuWarehouse = objPurchase.Select(a => new { var listSkuWarehouse = objPurchase.Select(a => new
a.bailun_sku, {
a.warehouse_code, a.bailun_sku,
a.warehouse_name a.warehouse_code,
}).ToList(); a.warehouse_name
}).ToList();
listSkuWarehouse.AddRange(objSales.Select(a => new listSkuWarehouse.AddRange(objSales.Select(a => new
{ {
a.bailun_sku, a.bailun_sku,
a.warehouse_code, a.warehouse_code,
a.warehouse_name a.warehouse_name
}).ToList()); }).ToList());
listSkuWarehouse.AddRange(objPutin.Select(a => new { listSkuWarehouse.AddRange(objPutin.Select(a => new
a.bailun_sku, {
a.warehouse_code, a.bailun_sku,
a.warehouse_name a.warehouse_code,
}).ToList()); a.warehouse_name
}).ToList());
listSkuWarehouse.AddRange(objShipping.Select(a => new { listSkuWarehouse.AddRange(objShipping.Select(a => new
a.bailun_sku, {
a.warehouse_code, a.bailun_sku,
a.warehouse_name a.warehouse_code,
}).ToList()); a.warehouse_name
}).ToList());
listSkuWarehouse = listSkuWarehouse.Distinct().ToList();
var tempList = new List<SkuWarehouse>(); listSkuWarehouse = listSkuWarehouse.Distinct().ToList();
foreach (var item in listSkuWarehouse)
{ var tempList = new List<SkuWarehouse>();
if (tempList.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).Count() <= 0) foreach (var item in listSkuWarehouse)
{ {
tempList.Add(new SkuWarehouse { if (tempList.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).Count() <= 0)
bailun_sku = item.bailun_sku, {
warehouse_code = item.warehouse_code, tempList.Add(new SkuWarehouse
warehouse_name = item.warehouse_name {
}); bailun_sku = item.bailun_sku,
warehouse_code = item.warehouse_code,
warehouse_name = item.warehouse_name
});
}
} }
}
var list = new List<dc_daily_purchase_sales>(); var list = new List<dc_daily_purchase_sales>();
foreach (var item in tempList)
{
sql = $@"select t1.warehouse_code,t2.warehouse_name,t1.bailun_sku,t1.usable_stock,(t1.usable_stock*t3.unit_price) as stockAmount from dc_base_stock t1 left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code left join dc_base_sku t3 on t1.bailun_sku=t3.bailun_sku where t1.bailun_sku='{item.bailun_sku}' and t1.warehouse_code='{item.warehouse_code}'";
var objStock = cn.QueryFirstOrDefault<Models.mStock>(sql, null, null,5 * 60);
foreach (var item in tempList)
{
sql = $@"select t1.warehouse_code,t2.warehouse_name,t1.bailun_sku,t1.usable_stock,(t1.usable_stock*t3.unit_price) as stockAmount from dc_base_stock t1 left join dc_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code left join dc_base_sku t3 on t1.bailun_sku=t3.bailun_sku where t1.bailun_sku='{item.bailun_sku}' and t1.warehouse_code='{item.warehouse_code}'";
var objStock = cn.QueryFirstOrDefault<Models.mStock>(sql, null, null, 5 * 60);
sql = $@"select t1.warehouse_code,t1.bailun_sku,t1.usable_stock,(t1.usable_stock*t1.unit_price) as stockAmount from dc_daily_stock t1 where t1.record_time='{start.AddDays(-1).ToString("yyyy-MM-dd")}' and t1.bailun_sku='{item.bailun_sku}' and t1.warehouse_code='{item.warehouse_code}'";
var objPreStock = cn.QueryFirstOrDefault<Models.mStock>(sql, null, null, 5 * 60);
var m = new dc_daily_purchase_sales { sql = $@"select t1.warehouse_code,t1.bailun_sku,t1.usable_stock,(t1.usable_stock*t1.unit_price) as stockAmount from dc_daily_stock t1 where t1.record_time='{start.AddDays(-1).ToString("yyyy-MM-dd")}' and t1.bailun_sku='{item.bailun_sku}' and t1.warehouse_code='{item.warehouse_code}'";
day = DateTime.Parse(start.ToShortDateString()), var objPreStock = cn.QueryFirstOrDefault<Models.mStock>(sql, null, null, 5 * 60);
createtime = DateTime.Now,
bailun_sku = item.bailun_sku,
warehouse_code = item.warehouse_code,
warehouse_name = item.warehouse_name,
amount_purchase = 0,
amount_putin = 0,
amount_sales = 0,
count_purchase = 0,
count_putin = 0,
count_sales = 0,
difference_amount = 0,
difference_count = 0,
diff_putin_amount = 0,
diff_putin_count = 0,
stock_start = 0,
stockamount_start = 0,
isfinish = 1,
};
//期末 var m = new dc_daily_purchase_sales
//var objEnd = objStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault(); {
if (objStock != null) day = DateTime.Parse(start.ToShortDateString()),
{ createtime = DateTime.Now,
m.stock_end = objStock.usable_stock; bailun_sku = item.bailun_sku,
m.stockamount_end = objStock.stockAmount; warehouse_code = item.warehouse_code,
} warehouse_name = item.warehouse_name,
amount_purchase = 0,
amount_putin = 0,
amount_sales = 0,
count_purchase = 0,
count_putin = 0,
count_sales = 0,
difference_amount = 0,
difference_count = 0,
diff_putin_amount = 0,
diff_putin_count = 0,
stock_start = 0,
stockamount_start = 0,
isfinish = 1,
};
//期末
//var objEnd = objStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objStock != null)
{
m.stock_end = objStock.usable_stock;
m.stockamount_end = objStock.stockAmount;
}
//期初 //期初
//var objPre = objPreStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault(); //var objPre = objPreStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objPreStock != null) if (objPreStock != null)
{ {
m.stock_start = objPreStock.usable_stock; m.stock_start = objPreStock.usable_stock;
m.stockamount_start = objPreStock.stockAmount; m.stockamount_start = objPreStock.stockAmount;
} }
//采购下单数 //采购下单数
var objP = objPurchase.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault(); var objP = objPurchase.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objP != null) if (objP != null)
{ {
m.count_purchase = objP.count; m.count_purchase = objP.count;
m.amount_purchase = objP.amount; m.amount_purchase = objP.amount;
} }
//卖出数 //卖出数
var objS = objSales.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault(); var objS = objSales.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objS != null) if (objS != null)
{ {
m.count_sales = objS.count; m.count_sales = objS.count;
m.amount_sales = objS.amount; m.amount_sales = objS.amount;
} }
//入库数 //入库数
var objPI = objPutin.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault(); var objPI = objPutin.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objPI != null) if (objPI != null)
{ {
m.count_putin = objPI.count; m.count_putin = objPI.count;
m.amount_putin = objPI.amount; m.amount_putin = objPI.amount;
} }
//发货数 //发货数
var objShip = objShipping.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault(); var objShip = objShipping.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objShip != null) if (objShip != null)
{ {
m.count_shipping = objShip.count; m.count_shipping = objShip.count;
m.amount_shipping = objShip.amount; m.amount_shipping = objShip.amount;
} }
m.difference_count = m.count_purchase - m.count_sales; m.difference_count = m.count_purchase - m.count_sales;
m.difference_amount = m.amount_purchase - m.amount_sales; m.difference_amount = m.amount_purchase - m.amount_sales;
m.diff_putin_count = m.count_putin - m.count_shipping; m.diff_putin_count = m.count_putin - m.count_shipping;
m.diff_putin_amount = m.amount_putin - m.amount_shipping; m.diff_putin_amount = m.amount_putin - m.amount_shipping;
list.Add(m); list.Add(m);
} }
#endregion #endregion
#region 原料 #region 原料
//采购 //采购
sql = $@"select sum(quantity_purchase) as count,sum(quantity_purchase*unit_price) as amount,bailun_sku,warehouse_from_code as warehouse_code,warehouse_from_name as warehouse_name from dc_semi_purchase_info where detail_delstatus=0 and create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and `status`>-1 and deliver_name !='广州哈倪蔓生物科技有限公司' and deliver_name!='广州市花都区花城市象贸易商行-滋柔' and deliver_name!='LEIKESAER INFORMATION SERVICE LIMITED' sql = $@"select sum(quantity_purchase) as count,sum(quantity_purchase*unit_price) as amount,bailun_sku,warehouse_from_code as warehouse_code,warehouse_from_name as warehouse_name from dc_semi_purchase_info where detail_delstatus=0 and create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and `status`>-1 and deliver_name !='广州哈倪蔓生物科技有限公司' and deliver_name!='广州市花都区花城市象贸易商行-滋柔' and deliver_name!='LEIKESAER INFORMATION SERVICE LIMITED'
group by bailun_sku,warehouse_from_code"; group by bailun_sku,warehouse_from_code";
var objSemiPurchase = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); var objSemiPurchase = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
//卖出 //卖出
sql = $@"select sum(sku_quantity) as count,sum(sku_quantity*sku_unit_price) as amount,sku as bailun_sku,warehouse_id as warehouse_code,warehouse_name from dc_semi_order where state!=1 and create_date>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and create_date<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' group by sku,warehouse_id"; sql = $@"select sum(sku_quantity) as count,sum(sku_quantity*sku_unit_price) as amount,sku as bailun_sku,warehouse_id as warehouse_code,warehouse_name from dc_semi_order where state!=1 and create_date>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and create_date<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' group by sku,warehouse_id";
var objSemiSales = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); var objSemiSales = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
//入库 //入库
sql = $@"select t1.sku_code as bailun_sku,t1.warehouse_id as warehouse_code,t1.warehouse_name as warehouse_name,t1.log_quantity as count,(t1.log_quantity*t2.price) amount from dc_semi_stock_log t1 sql = $@"select t1.sku_code as bailun_sku,t1.warehouse_id as warehouse_code,t1.warehouse_name as warehouse_name,t1.log_quantity as count,(t1.log_quantity*t2.price) amount from dc_semi_stock_log t1
left join (select t1.sku_code,t1.price from dc_semi_supplier_offer_log t1 left join (select t1.sku_code,t1.price from dc_semi_supplier_offer_log t1
inner join (select sku_code,max(update_time) update_time from dc_semi_supplier_offer_log where sku_code in (select sku_code from dc_semi_stock_log where update_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and update_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and log_type_id=2) group by sku_code,update_time) t2 on t1.sku_code=t2.sku_code and t1.update_time=t2.update_time) t2 on t1.sku_code=t2.sku_code inner join (select sku_code,max(update_time) update_time from dc_semi_supplier_offer_log where sku_code in (select sku_code from dc_semi_stock_log where update_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and update_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and log_type_id=2) group by sku_code,update_time) t2 on t1.sku_code=t2.sku_code and t1.update_time=t2.update_time) t2 on t1.sku_code=t2.sku_code
where t1.update_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.update_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and log_type_id=2"; where t1.update_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.update_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and log_type_id=2";
var objSemiPutin = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); var objSemiPutin = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
//出库 =(生产消耗-取消生产) //出库 =(生产消耗-取消生产)
sql = $@"select t1.material_code as bailun_sku,t1.warehouse_id as warehouse_code,t1.warehouse_name as warehouse_name,sum(t1.stock) as count,sum(t1.stock*t1.new_price) amount from dc_semi_stock_report t1 sql = $@"select t1.material_code as bailun_sku,t1.warehouse_id as warehouse_code,t1.warehouse_name as warehouse_name,sum(t1.stock) as count,sum(t1.stock*t1.new_price) amount from dc_semi_stock_report t1
where t1.is_zichang=0 and t1.stock_type=3 and t1.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' group by t1.material_code,t1.warehouse_id;"; where t1.is_zichang=0 and t1.stock_type=3 and t1.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' group by t1.material_code,t1.warehouse_id;";
var objSemiProduction = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); //生产消耗 var objSemiProduction = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); //生产消耗
sql = $@"select t1.material_code as bailun_sku,t1.warehouse_id as warehouse_code,t1.warehouse_name as warehouse_name,sum(t1.stock) as count,sum(t1.stock*t1.new_price) amount from dc_semi_stock_report t1 sql = $@"select t1.material_code as bailun_sku,t1.warehouse_id as warehouse_code,t1.warehouse_name as warehouse_name,sum(t1.stock) as count,sum(t1.stock*t1.new_price) amount from dc_semi_stock_report t1
where t1.is_zichang=0 and t1.stock_type=5 and t1.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' group by t1.material_code,t1.warehouse_id;"; where t1.is_zichang=0 and t1.stock_type=5 and t1.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' group by t1.material_code,t1.warehouse_id;";
var objSemiCancelProduction = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); //取消生产 var objSemiCancelProduction = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList(); //取消生产
//生产消耗-取消生产 //生产消耗-取消生产
foreach (var item in objSemiProduction) foreach (var item in objSemiProduction)
{
var temp = objSemiCancelProduction.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (temp != null)
{ {
item.count -= temp.count; var temp = objSemiCancelProduction.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
item.amount -= temp.amount; if (temp != null)
{
item.count -= temp.count;
item.amount -= temp.amount;
}
} }
}
listSkuWarehouse = objSemiPurchase.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList();
listSkuWarehouse.AddRange(objSemiSales.Select(a => new { listSkuWarehouse = objSemiPurchase.Select(a => new
a.bailun_sku, {
a.warehouse_code, a.bailun_sku,
a.warehouse_name a.warehouse_code,
})); a.warehouse_name
}).ToList();
listSkuWarehouse.AddRange(objSemiPutin.Select(a => new listSkuWarehouse.AddRange(objSemiSales.Select(a => new
{ {
a.bailun_sku, a.bailun_sku,
a.warehouse_code, a.warehouse_code,
a.warehouse_name a.warehouse_name
}).ToList()); }));
listSkuWarehouse.AddRange(objSemiProduction.Select(a => new listSkuWarehouse.AddRange(objSemiPutin.Select(a => new
{ {
a.bailun_sku, a.bailun_sku,
a.warehouse_code, a.warehouse_code,
a.warehouse_name a.warehouse_name
}).ToList()); }).ToList());
listSkuWarehouse = listSkuWarehouse.Distinct().ToList(); listSkuWarehouse.AddRange(objSemiProduction.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList());
tempList = new List<SkuWarehouse>(); listSkuWarehouse = listSkuWarehouse.Distinct().ToList();
foreach (var item in listSkuWarehouse)
{ tempList = new List<SkuWarehouse>();
if (tempList.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).Count() <= 0) foreach (var item in listSkuWarehouse)
{ {
tempList.Add(new SkuWarehouse if (tempList.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).Count() <= 0)
{ {
bailun_sku = item.bailun_sku, tempList.Add(new SkuWarehouse
warehouse_code = item.warehouse_code, {
warehouse_name = item.warehouse_name bailun_sku = item.bailun_sku,
}); warehouse_code = item.warehouse_code,
warehouse_name = item.warehouse_name
});
}
} }
}
var listSemi = new List<dc_daily_purchase_sales>(); var listSemi = new List<dc_daily_purchase_sales>();
foreach (var item in tempList) foreach (var item in tempList)
{ {
sql = $@"select t1.warehouse_id as warehouse_code,t1.warehouse_name as warehouse_name,t1.sku_code as bailun_sku,t1.final_stock as usable_stock,(t1.final_stock*t2.price) as stockAmount from dc_semi_stock_log t1 join dc_semi_supplier_offer_log t2 on t1.sku_code=t2.sku_code where t1.sku_code='{item.bailun_sku}' and t1.warehouse_id='{item.warehouse_code}' order by t2.update_time desc"; sql = $@"select t1.warehouse_id as warehouse_code,t1.warehouse_name as warehouse_name,t1.sku_code as bailun_sku,t1.final_stock as usable_stock,(t1.final_stock*t2.price) as stockAmount from dc_semi_stock_log t1 join dc_semi_supplier_offer_log t2 on t1.sku_code=t2.sku_code where t1.sku_code='{item.bailun_sku}' and t1.warehouse_id='{item.warehouse_code}' order by t2.update_time desc";
var objStock = cn.QueryFirstOrDefault<Models.mStock>(sql, null, null, 5 * 60); var objStock = cn.QueryFirstOrDefault<Models.mStock>(sql, null, null, 5 * 60);
sql = $@"select t1.warehouse_id warehouse_code,t1.warehouse_name,t1.sku_code bailun_sku,t1.stock_quantity usable_stock,(t1.stock_quantity*t1.price) as stockAmount from dc_semi_daily_stock t1 where t1.day='{start.AddDays(-1).ToString("yyyy-MM-dd")}' and t1.sku_code='{item.bailun_sku}' and t1.warehouse_id='{item.warehouse_code}'"; sql = $@"select t1.warehouse_id warehouse_code,t1.warehouse_name,t1.sku_code bailun_sku,t1.stock_quantity usable_stock,(t1.stock_quantity*t1.price) as stockAmount from dc_semi_daily_stock t1 where t1.day='{start.AddDays(-1).ToString("yyyy-MM-dd")}' and t1.sku_code='{item.bailun_sku}' and t1.warehouse_id='{item.warehouse_code}'";
var objPreStock = cn.QueryFirstOrDefault<Models.mStock>(sql, null, null, 5 * 60); var objPreStock = cn.QueryFirstOrDefault<Models.mStock>(sql, null, null, 5 * 60);
var m = new dc_daily_purchase_sales var m = new dc_daily_purchase_sales
{ {
day = DateTime.Parse(start.ToShortDateString()), day = DateTime.Parse(start.ToShortDateString()),
createtime = DateTime.Now, createtime = DateTime.Now,
bailun_sku = item.bailun_sku, bailun_sku = item.bailun_sku,
warehouse_code = item.warehouse_code, warehouse_code = item.warehouse_code,
warehouse_name = item.warehouse_name, warehouse_name = item.warehouse_name,
amount_purchase = 0,
amount_putin = 0,
amount_sales = 0,
count_purchase = 0,
count_putin = 0,
count_sales = 0,
difference_amount = 0,
difference_count = 0,
diff_putin_amount = 0,
diff_putin_count = 0,
stock_start = 0,
stockamount_start = 0,
isfinish = 0,
};
//期末
//var objEnd = objStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objStock != null)
{
m.stock_end = objStock.usable_stock;
m.stockamount_end = objStock.stockAmount;
}
amount_purchase = 0, //期初
amount_putin = 0, //var objPre = objPreStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
amount_sales = 0, if (objPreStock != null)
count_purchase = 0, {
count_putin = 0, m.stock_start = objPreStock.usable_stock;
count_sales = 0, m.stockamount_start = objPreStock.stockAmount;
difference_amount = 0, }
difference_count = 0,
diff_putin_amount = 0,
diff_putin_count = 0,
stock_start = 0,
stockamount_start = 0,
isfinish = 0,
};
//期末 //采购下单数
//var objEnd = objStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault(); var objP = objSemiPurchase.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objStock != null) if (objP != null)
{ {
m.stock_end = objStock.usable_stock; m.count_purchase = objP.count;
m.stockamount_end = objStock.stockAmount; m.amount_purchase = objP.amount;
} }
//期初 //卖出数
//var objPre = objPreStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault(); var objS = objSemiSales.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objPreStock != null) if (objS != null)
{ {
m.stock_start = objPreStock.usable_stock; m.count_sales = objS.count;
m.stockamount_start = objPreStock.stockAmount; m.amount_sales = objS.amount;
} }
//采购下单 //入库
var objP = objSemiPurchase.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault(); var objPI = objSemiPutin.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objP != null) if (objPI != null)
{ {
m.count_purchase = objP.count; m.count_putin = objPI.count;
m.amount_purchase = objP.amount; m.amount_putin = objPI.amount;
} }
//卖出 //发货
var objS = objSemiSales.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault(); var objShip = objSemiProduction.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objS != null) if (objShip != null)
{ {
m.count_sales = objS.count; m.count_shipping = objShip.count;
m.amount_sales = objS.amount; m.amount_shipping = objShip.amount;
} }
//入库数 m.difference_count = m.count_purchase - m.count_sales;
var objPI = objSemiPutin.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault(); m.difference_amount = m.amount_purchase - m.amount_sales;
if (objPI != null) m.diff_putin_count = m.count_putin - m.count_shipping;
{ m.diff_putin_amount = m.amount_putin - m.amount_shipping;
m.count_putin = objPI.count;
m.amount_putin = objPI.amount;
}
//发货数 list.Add(m);
var objShip = objSemiProduction.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objShip != null)
{
m.count_shipping = objShip.count;
m.amount_shipping = objShip.amount;
} }
m.difference_count = m.count_purchase - m.count_sales; #endregion
m.difference_amount = m.amount_purchase - m.amount_sales;
m.diff_putin_count = m.count_putin - m.count_shipping;
m.diff_putin_amount = m.amount_putin - m.amount_shipping;
list.Add(m);
}
#endregion
if (list.Count > 0) if (list.Count > 0)
{ {
Save(cn, list, DateTime.Parse(start.ToString("yyyy-MM-dd"))); Save(cn, list, DateTime.Parse(start.ToString("yyyy-MM-dd")));
}
} }
} }
catch (Exception ex)
{
Console.Write("出现异常:" + ex.Message);
}
} }
public List<dc_daily_purchase_sales> ListSemi(DateTime start, DateTime end) public List<dc_daily_purchase_sales> ListSemi(DateTime start, DateTime end)
......
...@@ -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.eyJuYmYiOjE1OTg2NjkzNjAsImV4cCI6MTU5ODcwNTM2MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAxIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMS9yZXNvdXJjZXMiLCJiYWlsdW5BcGkiXSwiY2xpZW50X2lkIjoiYmFpbHVuQ2xpZW50Iiwic3ViIjoi5YWz5oyv5bGxIiwiYXV0aF90aW1lIjoxNTk4NjY5MzYwLCJpZHAiOiJsb2NhbCIsIlVzZXJJZCI6IjIzNDYiLCJzdWNlc3NzIjoidHJ1ZSIsIkNvbXBhbnkiOiJ7XCJJZFwiOjEsXCJDb21wYW55Q29kZVwiOlwiYmFpbHVuXCIsXCJDb21wYW55TmFtZVwiOlwi5bm_5bee55m-5Lym5L6b5bqU6ZO-5pyJ6ZmQ5YWs5Y-4XCJ9IiwiQWxsQ29tcGFueSI6IkZhbHNlIiwiVXNlckNvZGVOZXciOiJCTDExNjkiLCJVc2VyQ29kZSI6IkJMMTE3MCIsIk9hVXNlcklkIjoiMjM0NiIsIkRlcGFydG1lbnQiOiJ7XCJEZXBhcnRtZW50SWRcIjoyNTgsXCJOYW1lXCI6XCLmlbDmja7kuK3lv4NcIixcIkNvZGVcIjpcIlwifSIsInNjb3BlIjpbIm9wZW5pZCIsInByb2ZpbGUiLCJiYWlsdW5BcGkiXSwiYW1yIjpbImN1c3RvbSJdfQ.cLMDr9aCk_FAaAZ12CGXzxq9_uyKVf9ZAOc0CH2Fi65MvbYm8t7Q2AHUdKL7j2v_ER3WgaBv72szEg0754SjqMWq8t9rkVQY3cP795Mfr7_mqtKK-na_IYwRgHwKckn_a1C2kjTDDpYIoNbJm2aOmjKD3daSvserc_O-kdD5EvBMzltS3R0RtW9El4aEYCg5PQOKNCXof0ohoR7iSTZpX1y_Fg-yFnSeKC1dcbXh_cRtl0Pzd1GbX6oV8qRLIR6xYGDo9wxKKUqATEFVC2Kk5cth2DVE0EpgEt9VaTwIaOV5RErenbV3lr6FF7t74T1JQU5cLLbBzeFAaOYmNzSr0Q"; var cookie = "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdhZDA5MjQ5ZDk0ZDgxN2VhNmI5ZThhMTc1MzlmNmY3IiwidHlwIjoiSldUIn0.eyJuYmYiOjE1OTg5NDY1NjAsImV4cCI6MTU5ODk4MjU2MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAxIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMS9yZXNvdXJjZXMiLCJiYWlsdW5BcGkiXSwiY2xpZW50X2lkIjoiYmFpbHVuQ2xpZW50Iiwic3ViIjoi5YWz5oyv5bGxIiwiYXV0aF90aW1lIjoxNTk4OTQ2NTYwLCJpZHAiOiJsb2NhbCIsIlVzZXJJZCI6IjIzNDYiLCJzdWNlc3NzIjoidHJ1ZSIsIkNvbXBhbnkiOiJ7XCJJZFwiOjEsXCJDb21wYW55Q29kZVwiOlwiYmFpbHVuXCIsXCJDb21wYW55TmFtZVwiOlwi5bm_5bee55m-5Lym5L6b5bqU6ZO-5pyJ6ZmQ5YWs5Y-4XCJ9IiwiQWxsQ29tcGFueSI6IkZhbHNlIiwiVXNlckNvZGVOZXciOiJCTDExNjkiLCJVc2VyQ29kZSI6IkJMMTE3MCIsIk9hVXNlcklkIjoiMjM0NiIsIkRlcGFydG1lbnQiOiJ7XCJEZXBhcnRtZW50SWRcIjoyNTgsXCJOYW1lXCI6XCLmlbDmja7kuK3lv4NcIixcIkNvZGVcIjpcIlwifSIsInNjb3BlIjpbIm9wZW5pZCIsInByb2ZpbGUiLCJiYWlsdW5BcGkiXSwiYW1yIjpbImN1c3RvbSJdfQ.s0_ccplgKo18KNZkfPWYn4iAYxltlb12F8fU4K0eIzb5elOAsEvafAgfATZXwW5zJ5EdxkT783X61jUvGxRKwIhHmhsp1z6ekZeSNXvoj6atPXD0R96AzuPGvInvhBELSwQHmlbAPdzKRwPforBv3TGcVqE9sj8wwTIEFE9vrtRvsG0V-tzNj-t7zoJGQL24BS0hYdPG7LHFiCUGnX97Iv7AeealUMtJmO8fJGNzNEAoo1tvUIi96IRISQoKT8ueY8OAidYXon8RBx-cD8ESLYNbvSQLLCu5tun1hO2WnnKVMxtjTEgtXqDbeVZZ18pyD0C-IHEIkY16XwWsNiICUw";
#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