Commit fce247c5 by guanzhenshan

调整半成品数据统计

parent b66ad65c
...@@ -24,7 +24,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -24,7 +24,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
// while (start.AddDays(1) < 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().ListSemi(start, start.AddDays(1));
// start = start.AddDays(1); // start = start.AddDays(1);
// } // }
......
...@@ -258,12 +258,12 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -258,12 +258,12 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
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,t1.stock as count,(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.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")}'"; where 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,t1.stock as count,(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.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")}'"; where 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(); //取消生产
//生产消耗-取消生产 //生产消耗-取消生产
...@@ -272,17 +272,11 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -272,17 +272,11 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
var temp = objSemiCancelProduction.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault(); var temp = objSemiCancelProduction.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (temp != null) if (temp != null)
{ {
item.amount += temp.amount; item.count -= temp.count;
} item.amount -= temp.amount;
item.amount = -item.amount;
if (item.amount < 0)
{
item.amount = 0;
} }
} }
listSkuWarehouse = objSemiPurchase.Select(a => new listSkuWarehouse = objSemiPurchase.Select(a => new
{ {
a.bailun_sku, a.bailun_sku,
...@@ -424,6 +418,197 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales ...@@ -424,6 +418,197 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
} }
} }
public List<dc_daily_purchase_sales> ListSemi(DateTime start, DateTime end)
{
var sql = "";
var list = new List<dc_daily_purchase_sales>();
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
#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 create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}' and `status`>-1
group by bailun_sku,warehouse_from_code";
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 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();
//出库 =(生产消耗-取消生产)
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.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(); //生产消耗
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.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(); //取消生产
//生产消耗-取消生产
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;
item.amount -= temp.amount;
}
}
var 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.AddRange(objSemiPutin.Select(a => new
{
a.bailun_sku,
a.warehouse_code,
a.warehouse_name
}).ToList());
listSkuWarehouse.AddRange(objSemiProduction.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)
{
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);
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,
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;
}
//期初
//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 = 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 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 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 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;
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
}
return list;
}
public string Save(MySqlConnection cn,List<dc_daily_purchase_sales> list,DateTime day) public string Save(MySqlConnection cn,List<dc_daily_purchase_sales> list,DateTime day)
{ {
if (cn.State == System.Data.ConnectionState.Closed) if (cn.State == System.Data.ConnectionState.Closed)
......
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