Commit 3267da18 by guanzhenshan

解决每日sku销进比的报表数据无法保存数据的问题

parent 1f68f989
......@@ -20,7 +20,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
//static void Main(string[] args)
//{
// new Services().Init(DateTime.Parse("2019-08-13"), DateTime.Parse("2019-08-14"));
// new Services().Init(DateTime.Parse("2019-08-14"), DateTime.Parse("2019-08-15"));
//}
}
......
......@@ -48,32 +48,27 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
cn.Open();
}
var 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 ";
var objStock = cn.Query<Models.mStock>(sql, null, null, true, 5 * 60);
sql = $@"select warehouse_code,bailun_sku,usable_stock,(usable_stock*unit_price) as stockAmount from dc_daily_stock where record_time='{start.AddDays(-1).ToString("yyyy-MM-dd")}'";
var objPreStock = cn.Query<Models.mStock>(sql, null, null, true, 5 * 60);
//先保存采购的
sql = $@"select t1.warehouse_code,t1.warehouse_name,t1.bailun_sku,sum(t1.count) count,sum(t1.count*t2.unit_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*t2.unit_price) amount from dc_base_purchase 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.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();
//再保存卖出的
sql = $@"select t1.warehouse_code,t1.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();
//获取入库的
sql = $@"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")}'
......@@ -81,29 +76,76 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
select warehouse_code,warehouse_name,bailun_sku,count from dc_base_transfer_inbound t1 where t1.deleted=0 and t1.count>0 and t1.create_time>='{start.ToString("yyyy-MM-dd HH:mm:ss")}' and t1.create_time<'{end.ToString("yyyy-MM-dd HH:mm:ss")}'
) tb
left join dc_base_sku t4 on tb.bailun_sku=t4.bailun_sku
group by tb.warehouse_code,tb.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();
//发货的
sql = $@"select t1.warehouse_code,t1.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 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.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")}'
group by t1.warehouse_code,t1.bailun_sku";
var objShipping = cn.Query<Models.mSkuCount>(sql, null, null, true, 2 * 60).AsList();
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(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 = 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 list = new List<dc_daily_purchase_sales>();
foreach (var item in objStock)
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,
stock_end = item.usable_stock,
stockamount_end = item.stockAmount,
amount_purchase = 0,
amount_putin = 0,
amount_sales = 0,
......@@ -118,15 +160,24 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
stockamount_start = 0,
};
var objPre = objPreStock.Where(a => a.bailun_sku == item.bailun_sku && a.warehouse_code == item.warehouse_code).FirstOrDefault();
if (objPre != null)
//期末
//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 = objPre.usable_stock;
m.stockamount_start = objPre.stockAmount;
m.stock_start = objPreStock.usable_stock;
m.stockamount_start = objPreStock.stockAmount;
}
//采购下单数
var objP = objPurchase.Where(a => a.bailun_sku == item.bailun_sku && 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)
{
m.count_purchase = objP.count;
......@@ -134,7 +185,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
}
//卖出数
var objS = objSales.Where(a => a.bailun_sku == item.bailun_sku && 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)
{
m.count_sales = objS.count;
......@@ -142,7 +193,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
}
//入库数
var objPI = objPutin.Where(a => a.bailun_sku == item.bailun_sku && 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)
{
m.count_putin = objPI.count;
......@@ -150,7 +201,7 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
}
//发货数
var objShip = objShipping.Where(a => a.bailun_sku == item.bailun_sku && 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)
{
m.count_shipping = objShip.count;
......@@ -217,4 +268,13 @@ namespace Bailun.DC.SkuDailyPurchaseAndSales
}
class SkuWarehouse
{
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public string warehouse_name { get; set; }
}
}
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