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[] TwohoursHJ(string machine,string workshop ,string bt,string et) { List[] ress = new List[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(" 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 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(); } } } }