旧版报表、仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

239 lines
7.8 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Warehouse.Models.mesModel;
namespace Warehouse.DAL.Report
{
public class OnceMoldingRateDal
{
public List<dynamic>[] TwohoursHJ(string machine,string workshop ,string bt,string et)
{
List<dynamic>[] ress = new List<dynamic>[3];
// string workshop = "";
using (var context = new mesModel())
{
string strWhere = string.Empty;
if (!string.IsNullOrEmpty(machine))
{
strWhere += " and a.wks_id = '" + machine + "' ";
}
if (!string.IsNullOrEmpty(workshop))
{
strWhere += " and b.area_code = '" + workshop + "' ";
}
if (!string.IsNullOrEmpty(bt))
{
strWhere += " and a.wks_visit_date >= '" + bt + "' ";
}
if (!string.IsNullOrEmpty(et))
{
strWhere += " and a.wks_visit_date <= '" + et + "' ";
}
string str = @"
if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#temp') and type='U')
begin
drop table #temp --删除临时表#temp
end
select
a.serial_nbr,a.wks_visit_date,a.wks_id,b.wks_desc,a.shift_type into #temp
from mes_main.dbo.trace_workstation_visit a
join mes_main.dbo.config_workstation b
on a.wks_id = b.wks_id and b.process_code = 'M10'
join mes_level2_iface.dbo.el c
on a.serial_nbr = c.serial_nbr and c.process_code ='QEL'
left join mes_main.dbo.assembly_status d
on c.serial_nbr = d.serial_nbr
where d.serial_nbr <>'' " + strWhere + @"
--select * from #temp
if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#temmp') and type='U')
begin
drop table #temmp --删除临时表#temmp
end
select a.wks_id,a.wks_desc,a.shift_type,Convert(Char(10),a.wks_visit_date,120) as wks_visit_date,count(a.serial_nbr) Wks_Nbr
,sum(case when b.serial_nbr is not null then 1 else 0 end) Wks_Bad_Nbr
into #temmp
from #temp a
left join
(
select a.serial_nbr from #temp a
left join mes_main.dbo.qc_visit b
on a.serial_nbr = b.serial_nbr
where b.serial_nbr is not null
group by a.serial_nbr
)b
on a.serial_nbr=b.serial_nbr
group by a.wks_id,a.wks_desc,a.shift_type,Convert(Char(10),a.wks_visit_date,120)
ORDER BY a.wks_id,a.wks_desc,a.shift_type,Convert(Char(10),a.wks_visit_date,120)";
string sql = str+
@"DECLARE @sql_str VARCHAR(8000)
DECLARE @sql_col VARCHAR(8000)
DECLARE @EE VARCHAR(8000)
SET @EE='';
select @EE = @EE+'ISNULL(MAX(CASE wks_visit_date WHEN '''+ wks_visit_date+'''THEN Wks_Nbr END ),0) as ['+wks_visit_date+'过站数],'
+'ISNULL(MAX(CASE wks_visit_date WHEN '''+ wks_visit_date+'''THEN Wks_Nbr-Wks_Bad_Nbr END ),0) as ['+wks_visit_date+'良品数],'
+'ISNULL(MAX(CASE wks_visit_date WHEN '''+ wks_visit_date+'''THEN cast((Wks_Nbr-Wks_Bad_Nbr)*100/Wks_Nbr as varchar(20))+''%'' END ),0) as ['+wks_visit_date+'良品率],'
from (SELECT wks_visit_date FROM #temmp GROUP BY wks_visit_date) A
--select @EE
select @sql_col =ISNULL(@sql_col + ',','') + wks_visit_date
from #temmp
group by wks_visit_date
SET @sql_str = '
SELECT * FROM (
SELECT wks_id as ''机台'',wks_desc,shift_type,'+@EE+' ''AA'' AS ''AA'' FROM #temmp
group by wks_id,wks_desc,shift_type) AS pvt
ORDER BY pvt.机台'
PRINT (@sql_str)
EXEC (@sql_str);
";
string sql1 = str +
@"SELECT [wks_id], [wks_desc], [shift_type]
FROM #temmp
group by [wks_id], [wks_desc], [shift_type]
";
string sql2 = str +
@"SELECT [wks_visit_date]
FROM #temmp
group by [wks_visit_date]
";
//context.Database.SqlQuery<dynamic>(" call prGetPalletOfContainer('" + container + "') ").ToList();
var res0 = context.DynamicListFromSql(sql, null);
var res1 = context.DynamicListFromSql(sql1, null);
var res2 = context.DynamicListFromSql(sql2, null);
if (res0 != null)
{
ress[0] = res0.ToList();
}
else
{
ress[0] = null;
}
if (res1 != null)
{
ress[1] = res1.ToList();
}
else
{
ress[1] = null;
}
if (res2 != null)
{
ress[2] = res2.ToList();
}
else
{
ress[2] = null;
}
if (ress != null)
{
return ress;
}
else
{
return null;
}
}
}
public List<dynamic> MoldingQuery(string machine, string workshop, string bt, string et)
{
using (var context = new mesModel())
{
//and c.sale_order = '' and b.workorder = '' and c.area_code = '' and a.create_date >= '' and a.create_date < ''
string strWhere = string.Empty;
if (!string.IsNullOrEmpty(machine))
{
strWhere += " and a.wks_id = '" + machine + "' ";
}
if (!string.IsNullOrEmpty(workshop))
{
strWhere += " and b.area_code = '" + workshop + "' ";
}
if (!string.IsNullOrEmpty(bt))
{
strWhere += " and a.wks_visit_date >= '" + bt + "' ";
}
if (!string.IsNullOrEmpty(et))
{
strWhere += " and a.wks_visit_date <= '" + et + "' ";
}
string sql = @" if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#temp') and type='U')
begin
drop table #temp --删除临时表#temp
end
select
a.serial_nbr,a.wks_visit_date,a.wks_id,b.wks_desc,a.shift_type into #temp
from mes_main.dbo.trace_workstation_visit a
join mes_main.dbo.config_workstation b
on a.wks_id = b.wks_id and b.process_code = 'M10'
join mes_level2_iface.dbo.el c
on a.serial_nbr = c.serial_nbr and c.process_code ='QEL'
left join mes_main.dbo.assembly_status d
on c.serial_nbr = d.serial_nbr
where d.serial_nbr <>'' " + strWhere + @"
--select * from #temp
if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#temmp') and type='U')
begin
drop table #temmp --删除临时表#temmp
end
select a.wks_id,a.wks_desc,a.shift_type,Convert(Char(10),a.wks_visit_date,120) as wks_visit_date,count(a.serial_nbr) Wks_Nbr
,sum(case when b.serial_nbr is not null then 1 else 0 end) Wks_Bad_Nbr
into #temmp
from #temp a
left join
(
select a.serial_nbr from #temp a
left join mes_main.dbo.qc_visit b
on a.serial_nbr = b.serial_nbr
where b.serial_nbr is not null
group by a.serial_nbr
)b
on a.serial_nbr=b.serial_nbr
group by a.wks_id,a.wks_desc,a.shift_type,Convert(Char(10),a.wks_visit_date,120)
ORDER BY a.wks_id,a.wks_desc,a.shift_type,Convert(Char(10),a.wks_visit_date,120)
--select * from #temmp
DECLARE @sql_str VARCHAR(8000)
DECLARE @sql_col VARCHAR(8000)
DECLARE @EE VARCHAR(8000)
SET @EE='';
select @EE = @EE+'ISNULL(MAX(CASE wks_visit_date WHEN '''+ wks_visit_date+'''THEN Wks_Nbr END ),0) as ['+wks_visit_date+'过站数],'
+'ISNULL(MAX(CASE wks_visit_date WHEN '''+ wks_visit_date+'''THEN Wks_Nbr-Wks_Bad_Nbr END ),0) as ['+wks_visit_date+'良品数],'
+'ISNULL(MAX(CASE wks_visit_date WHEN '''+ wks_visit_date+'''THEN (Wks_Nbr-Wks_Bad_Nbr)*100/Wks_Nbr END ),0) as ['+wks_visit_date+'良品率],'
from (SELECT wks_visit_date FROM #temmp GROUP BY wks_visit_date) A
--select @EE
select @sql_col =ISNULL(@sql_col + ',','') + wks_visit_date
from #temmp
group by wks_visit_date
SET @sql_str = '
SELECT * FROM (
SELECT wks_id as ''机台'',shift_type as ''班次'','+@EE+' '' '' AS ''汇总'' FROM #temmp
group by wks_id,wks_desc,shift_type) AS pvt
ORDER BY pvt.机台'
PRINT (@sql_str)
EXEC (@sql_str);
";
var res = context.DynamicListFromSql(sql, null);
return res.ToList();
}
}
}
}