Commit ace5b998 by guanzhenshan

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

parent 94e7ccb7
......@@ -7,27 +7,27 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
{
class Program
{
//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)
static async Task Main(string[] args)
{
var start = DateTime.Parse("2020-05-03");
while (start.AddDays(1) < DateTime.Now)
Console.WriteLine("每日销进差异汇总");
var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{
Console.WriteLine(start.ToString("yyyy-MM-dd"));
new Services().Init(start, start.AddDays(1));
start = start.AddDays(1);
}
services.AddHostedService<Services>();
});
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
else if (now.Hour % 8 == 0 && now.Minute == 3)
{
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"));
new Services().Init(start, start.AddDays(1));
......@@ -51,35 +51,37 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
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
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";
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_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!=''
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
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")}'
......@@ -89,10 +91,10 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
left join dc_base_sku t4 on tb.bailun_sku=t4.bailun_sku
group by tb.warehouse_code,tb.bailun_sku) t1
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的
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
//发货的 自发货+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
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
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
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 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_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
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 {
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList();
var listSkuWarehouse = objPurchase.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList();
listSkuWarehouse.AddRange(objSales.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList());
listSkuWarehouse.AddRange(objSales.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList());
listSkuWarehouse.AddRange(objPutin.Select(a => new {
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList());
listSkuWarehouse.AddRange(objPutin.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList());
listSkuWarehouse.AddRange(objShipping.Select(a => new {
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList());
listSkuWarehouse.AddRange(objShipping.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList());
listSkuWarehouse = listSkuWarehouse.Distinct().ToList();
var tempList = new List<SkuWarehouse>();
foreach (var item in listSkuWarehouse)
{
if (tempList.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).Count() <= 0)
listSkuWarehouse = listSkuWarehouse.Distinct().ToList();
var tempList = new List<SkuWarehouse>();
foreach (var item in listSkuWarehouse)
{
tempList.Add(new SkuWarehouse {
bailun_sku = item.bailun_sku,
warehouse_code = item.warehouse_code,
warehouse_name = item.warehouse_name
});
if (tempList.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).Count() <= 0)
{
tempList.Add(new SkuWarehouse
{
bailun_sku = item.bailun_sku,
warehouse_code = item.warehouse_code,
warehouse_name = item.warehouse_name
});
}
}
}
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);
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);
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 {
day = DateTime.Parse(start.ToShortDateString()),
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,
};
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 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 m = new dc_daily_purchase_sales
{
day = DateTime.Parse(start.ToShortDateString()),
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 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();
if (objPreStock != null)
{
m.stock_start = objPreStock.usable_stock;
m.stockamount_start = objPreStock.stockAmount;
}
//期初
//var objPre = objPreStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objPreStock != null)
{
m.stock_start = objPreStock.usable_stock;
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();
if (objP != null)
{
m.count_purchase = objP.count;
m.amount_purchase = objP.amount;
}
//采购下单数
var objP = objPurchase.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objP != null)
{
m.count_purchase = objP.count;
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();
if (objS != null)
{
m.count_sales = objS.count;
m.amount_sales = objS.amount;
}
//卖出数
var objS = objSales.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objS != null)
{
m.count_sales = objS.count;
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();
if (objPI != null)
{
m.count_putin = objPI.count;
m.amount_putin = objPI.amount;
}
//入库数
var objPI = objPutin.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objPI != null)
{
m.count_putin = objPI.count;
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();
if (objShip != null)
{
m.count_shipping = objShip.count;
m.amount_shipping = objShip.amount;
}
//发货数
var objShip = objShipping.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;
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;
m.difference_count = m.count_purchase - m.count_sales;
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);
}
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";
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";
var objSemiSales = 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";
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
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";
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;";
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;";
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)
{
var temp = objSemiCancelProduction.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (temp != null)
//生产消耗-取消生产
foreach (var item in objSemiProduction)
{
item.count -= temp.count;
item.amount -= temp.amount;
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;
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 {
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}));
listSkuWarehouse = objSemiPurchase.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList();
listSkuWarehouse.AddRange(objSemiPutin.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList());
listSkuWarehouse.AddRange(objSemiSales.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}));
listSkuWarehouse.AddRange(objSemiProduction.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList());
listSkuWarehouse.AddRange(objSemiPutin.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).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>();
foreach (var item in listSkuWarehouse)
{
if (tempList.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).Count() <= 0)
listSkuWarehouse = listSkuWarehouse.Distinct().ToList();
tempList = new List<SkuWarehouse>();
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,
warehouse_name = item.warehouse_name
});
tempList.Add(new SkuWarehouse
{
bailun_sku = item.bailun_sku,
warehouse_code = item.warehouse_code,
warehouse_name = item.warehouse_name
});
}
}
}
var listSemi = new List<dc_daily_purchase_sales>();
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";
var objStock = cn.QueryFirstOrDefault<Models.mStock>(sql, null, null, 5 * 60);
var listSemi = new List<dc_daily_purchase_sales>();
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";
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}'";
var objPreStock = 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}'";
var objPreStock = cn.QueryFirstOrDefault<Models.mStock>(sql, null, null, 5 * 60);
var m = new dc_daily_purchase_sales
{
day = DateTime.Parse(start.ToShortDateString()),
createtime = DateTime.Now,
bailun_sku = item.bailun_sku,
warehouse_code = item.warehouse_code,
warehouse_name = item.warehouse_name,
var m = new dc_daily_purchase_sales
{
day = DateTime.Parse(start.ToShortDateString()),
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 = 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,
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 objPre = objPreStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objPreStock != null)
{
m.stock_start = objPreStock.usable_stock;
m.stockamount_start = objPreStock.stockAmount;
}
//期末
//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 objP = objSemiPurchase.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objP != null)
{
m.count_purchase = objP.count;
m.amount_purchase = objP.amount;
}
//期初
//var objPre = objPreStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objPreStock != null)
{
m.stock_start = objPreStock.usable_stock;
m.stockamount_start = objPreStock.stockAmount;
}
//卖出数
var objS = objSemiSales.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objS != null)
{
m.count_sales = objS.count;
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();
if (objP != null)
{
m.count_purchase = objP.count;
m.amount_purchase = objP.amount;
}
//入库
var objPI = objSemiPutin.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objPI != null)
{
m.count_putin = objPI.count;
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();
if (objS != null)
{
m.count_sales = objS.count;
m.amount_sales = objS.amount;
}
//发货
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;
}
//入库数
var objPI = objSemiPutin.Where(a => a.bailun_sku.ToLower() == item.bailun_sku.ToLower() && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objPI != null)
{
m.count_putin = objPI.count;
m.amount_putin = objPI.amount;
}
m.difference_count = m.count_purchase - m.count_sales;
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;
//发货数
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;
list.Add(m);
}
m.difference_count = m.count_purchase - m.count_sales;
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
#endregion
if (list.Count > 0)
{
Save(cn, list, DateTime.Parse(start.ToString("yyyy-MM-dd")));
if (list.Count > 0)
{
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)
......
......@@ -77,7 +77,7 @@ namespace Bailun.DC.Web.Controllers
public ActionResult Main()
{
#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
//var user = Common.HttpHelper.NetHelper.Request("http://sso.bailuntec.com/GetUserResource");
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