using System.Collections.Generic; using System.Data.Entity.Validation; using System.Linq; using System.Web; using Warehouse.Models.mesModel; using Z.EntityFramework.Plus; using System; using System.Data; namespace Warehouse.DAL.QC { public class QC { public List QueryQCInfo(dynamic para) { using (var context = new mesModel()) { string strwhere = string.Empty; string strwheres = string.Empty; if (!string.IsNullOrEmpty(para.begintime.ToString())) { strwhere += "and alls.create_date >= '" + Convert.ToString(para.begintime) + "'"; strwhere += "and alls.create_date <= '" + Convert.ToString(para.endtime) + "'"; } if (!string.IsNullOrEmpty(para.serialno.ToString())) { strwhere += " and alls.[serial_nbr] = '" + Convert.ToString(para.serialno) + "'"; } if (!string.IsNullOrEmpty(para.workshop.ToString())) { strwhere += " and alls.[area_code] = '" + Convert.ToString(para.workshop) + "'"; } //if (!string.IsNullOrEmpty(para.status.ToString())) //{ // strwhere += " AND qcv.[visit_type] = '" + Convert.ToString(para.status) + "'"; //} if (!string.IsNullOrEmpty(para.workorder.ToString())) { strwhere += " AND alls.schedule_nbr = '" + Convert.ToString(para.workorder) + "'"; } if (!string.IsNullOrEmpty(para.station.ToString())) { strwheres += " AND e.process_code = '" + Convert.ToString(para.station) + "'"; } string sql = @"select distinct alls.serial_nbr,alls.sale_order,alls.schedule_nbr,alls.dqstatus,alls.final_grade ,code.process_code_desc,defecttype.defect_type_name,defectposition.defect_position ,remark.remark,accord.according_std ,hold.serial_status hstatus,hold.hperson,CONVERT(varchar(100), hold.htime, 120) as htime ,qcv.serial_status rstatus,qcv.operator rperson,CONVERT(varchar(100), pend.rtime, 120) as rtime from ( select a.serial_nbr,b.sale_order,a.schedule_nbr,c.serial_status dqstatus,c.final_grade,a.create_date,b.area_code FROM [mes_main].[dbo].[qc_visit] a left join mes_main.dbo.wo_mfg b on a.schedule_nbr = b.workorder left join mes_main.dbo.assembly_status c on a.serial_nbr = c.serial_nbr left join [mes_main].[dbo].[config_workstation] e on a.wks_id = e.wks_id where 1=1 " + strwheres+ @") alls left join ( select aa.serial_nbr, process_code_desc = (stuff((select ',' + bb.process_code_desc from (select p.serial_nbr,p.process_code_desc from mes_main.dbo.defects p left join [mes_main].[dbo].[config_workstation] e on p.wks_id = e.wks_id where 1 = 1 "+strwheres+ @" group by p.serial_nbr,p.process_code_desc ) bb where bb.serial_nbr = aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.process_code_desc from mes_main.dbo.defects p left join [mes_main].[dbo].[config_workstation] e on p.wks_id = e.wks_id where 1 = 1 " + strwheres + @" group by p.serial_nbr,p.process_code_desc ) aa where aa.serial_nbr != '' group by aa.serial_nbr ) code on alls.serial_nbr = code.serial_nbr left join ( select aa.serial_nbr, defect_type_name = (stuff((select ',' + bb.defect_type_name from (select p.serial_nbr,d.defect_type_name from mes_main.dbo.defects p left join mes_main.dbo.config_defect_type d on p.defect_type_id = d.defect_type_id left join [mes_main].[dbo].[config_workstation] e on p.wks_id = e.wks_id where 1 = 1 " + strwheres + @" group by p.serial_nbr,d.defect_type_name ) bb where bb.serial_nbr = aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,d.defect_type_name from mes_main.dbo.defects p left join mes_main.dbo.config_defect_type d on p.defect_type_id = d.defect_type_id left join [mes_main].[dbo].[config_workstation] e on p.wks_id = e.wks_id where 1 = 1 " + strwheres + @" group by p.serial_nbr,d.defect_type_name ) aa where aa.serial_nbr != '' group by aa.serial_nbr ) defecttype on alls.serial_nbr = defecttype.serial_nbr left join (select aa.serial_nbr, defect_position = (stuff((select ',' + bb.defect_position from (select p.serial_nbr,p.defect_position from mes_main.dbo.defects p left join [mes_main].[dbo].[config_workstation] e on p.wks_id = e.wks_id where 1 = 1 " + strwheres + @" group by p.serial_nbr,p.defect_position ) bb where bb.serial_nbr = aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.defect_position from mes_main.dbo.defects p left join [mes_main].[dbo].[config_workstation] e on p.wks_id = e.wks_id where 1 = 1 " + strwheres + @" group by p.serial_nbr,p.defect_position ) aa where aa.serial_nbr != '' group by aa.serial_nbr ) defectposition on alls.serial_nbr = defectposition.serial_nbr left join (select aa.serial_nbr, remark = (stuff((select ',' + bb.remark from (select p.serial_nbr,p.remark from mes_main.dbo.defects p left join [mes_main].[dbo].[config_workstation] e on p.wks_id = e.wks_id where 1 = 1 " + strwheres + @" group by p.serial_nbr,p.remark ) bb where bb.serial_nbr = aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.remark from mes_main.dbo.defects p left join [mes_main].[dbo].[config_workstation] e on p.wks_id = e.wks_id where 1 = 1 " + strwheres + @" group by p.serial_nbr,p.remark ) aa where aa.serial_nbr != '' group by aa.serial_nbr ) remark on alls.serial_nbr = remark.serial_nbr left join ( select aa.serial_nbr, according_std = (stuff((select ',' + bb.according_std from (select p.serial_nbr,p.according_std from mes_main.dbo.defects p left join [mes_main].[dbo].[config_workstation] e on p.wks_id = e.wks_id where 1 = 1 " + strwheres + @" group by p.serial_nbr,p.according_std ) bb where bb.serial_nbr = aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.according_std from mes_main.dbo.defects p left join [mes_main].[dbo].[config_workstation] e on p.wks_id = e.wks_id where 1 = 1 " + strwheres + @" group by p.serial_nbr,p.according_std ) aa where aa.serial_nbr != '' group by aa.serial_nbr ) accord on alls.serial_nbr = accord.serial_nbr left join (select a.serial_nbr,a.create_date htime,a.serial_status,a.operator hperson FROM [mes_main].[dbo].[qc_visit] a left join [mes_main].[dbo].[config_workstation] e on a.wks_id = e.wks_id where a.visit_type = 'H' " + strwheres + @" ) hold on alls.serial_nbr = hold.serial_nbr left join ( select a.serial_nbr,max(a.create_date) rtime FROM [mes_main].[dbo].[qc_visit] a where a.wks_id = 'QC' and a.visit_type in ('PENDING','RL','RW','S') group by a.serial_nbr) pend on alls.serial_nbr = pend.serial_nbr left join mes_main.dbo.qc_visit qcv on pend.serial_nbr = qcv.serial_nbr and pend.rtime = qcv.create_date where 1 = 1 " + strwhere; // if (!string.IsNullOrEmpty(para.begintime.ToString())) //{ // sql += "and qcv.create_date >= '" + Convert.ToString(para.begintime) + "'"; // sql += "and qcv.create_date <= '" + Convert.ToString(para.endtime) + "'"; //} //sql += String.IsNullOrEmpty(para.serialno.ToString()) ? "" : " and qcv.[serial_nbr] LIKE '" + Convert.ToString(para.serialno) + "%'"; //sql += String.IsNullOrEmpty(para.workshop.ToString()) ? "" : " AND wo.[area_code] = '" + Convert.ToString(para.workshop) + "' "; //sql += String.IsNullOrEmpty(para.status.ToString()) ? "" : " AND qcv.[visit_type] = '" + Convert.ToString(para.status) + "'"; //sql += String.IsNullOrEmpty(para.workorder.ToString()) ? "" : " AND qcv.schedule_nbr = '" + Convert.ToString(para.workorder) + "'"; var res = context.DynamicListFromSql(sql, null); return res.ToList(); } } public List QueryQCInfonew(dynamic para) { using (var context = new mesModel()) { string strwhere = string.Empty; if (!string.IsNullOrEmpty(para.TestTimeBegin.ToString())) { strwhere += "and alls.create_date >= '" + Convert.ToString(para.TestTimeBegin) + "'"; strwhere += "and alls.create_date <= '" + Convert.ToString(para.TestTimeEnd) + "'"; } if (!string.IsNullOrEmpty(para.SerialNum.ToString())) { strwhere += " and alls.[serial_nbr] = '" + Convert.ToString(para.SerialNum) + "'"; } if (!string.IsNullOrEmpty(para.WorkShop.ToString())) { strwhere += " and alls.[area_code] = '" + Convert.ToString(para.WorkShop) + "'"; } //if (!string.IsNullOrEmpty(para.status.ToString())) //{ // strwhere += " AND qcv.[visit_type] = '" + Convert.ToString(para.status) + "'"; //} if (!string.IsNullOrEmpty(para.WorkOrder.ToString())) { strwhere += " AND alls.schedule_nbr = '" + Convert.ToString(para.WorkOrder) + "'"; } string sql = @"select distinct alls.serial_nbr,alls.sale_order,alls.schedule_nbr,alls.dqstatus,alls.final_grade ,code.process_code_desc,defecttype.defect_type_name,defectposition.defect_position ,remark.remark,accord.according_std ,hold.serial_status hstatus,hold.hperson,hold.htime ,qcv.serial_status rstatus,qcv.operator rperson,pend.rtime from ( select a.serial_nbr,b.sale_order,a.schedule_nbr,c.serial_status dqstatus,c.final_grade,a.create_date,b.area_code FROM [mes_main].[dbo].[qc_visit] a left join mes_main.dbo.wo_mfg b on a.schedule_nbr = b.workorder left join mes_main.dbo.assembly_status c on a.serial_nbr = c.serial_nbr where a.wks_id = 'QC') alls left join ( select aa.serial_nbr, process_code_desc = (stuff((select ',' + bb.process_code_desc from (select p.serial_nbr,p.process_code_desc from mes_main.dbo.defects p where 1 = 1 and p.wks_id = 'QC' group by p.serial_nbr,p.process_code_desc ) bb where bb.serial_nbr = aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.process_code_desc from mes_main.dbo.defects p where 1 = 1 and p.wks_id = 'QC' group by p.serial_nbr,p.process_code_desc ) aa where aa.serial_nbr != '' group by aa.serial_nbr ) code on alls.serial_nbr = code.serial_nbr left join ( select aa.serial_nbr, defect_type_name = (stuff((select ',' + bb.defect_type_name from (select p.serial_nbr,d.defect_type_name from mes_main.dbo.defects p left join mes_main.dbo.config_defect_type d on p.defect_type_id = d.defect_type_id where 1 = 1 and p.wks_id = 'QC' group by p.serial_nbr,d.defect_type_name ) bb where bb.serial_nbr = aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,d.defect_type_name from mes_main.dbo.defects p left join mes_main.dbo.config_defect_type d on p.defect_type_id = d.defect_type_id where 1 = 1 and p.wks_id = 'QC' group by p.serial_nbr,d.defect_type_name ) aa where aa.serial_nbr != '' group by aa.serial_nbr ) defecttype on alls.serial_nbr = defecttype.serial_nbr left join (select aa.serial_nbr, defect_position = (stuff((select ',' + bb.defect_position from (select p.serial_nbr,p.defect_position from mes_main.dbo.defects p where 1 = 1 and p.wks_id = 'QC' group by p.serial_nbr,p.defect_position ) bb where bb.serial_nbr = aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.defect_position from mes_main.dbo.defects p where 1 = 1 and p.wks_id = 'QC' group by p.serial_nbr,p.defect_position ) aa where aa.serial_nbr != '' group by aa.serial_nbr ) defectposition on alls.serial_nbr = defectposition.serial_nbr left join (select aa.serial_nbr, remark = (stuff((select ',' + bb.remark from (select p.serial_nbr,p.remark from mes_main.dbo.defects p where 1 = 1 and p.wks_id = 'QC' group by p.serial_nbr,p.remark ) bb where bb.serial_nbr = aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.remark from mes_main.dbo.defects p where 1 = 1 and p.wks_id = 'QC' group by p.serial_nbr,p.remark ) aa where aa.serial_nbr != '' group by aa.serial_nbr ) remark on alls.serial_nbr = remark.serial_nbr left join ( select aa.serial_nbr, according_std = (stuff((select ',' + bb.according_std from (select p.serial_nbr,p.according_std from mes_main.dbo.defects p where 1 = 1 and p.wks_id = 'QC' group by p.serial_nbr,p.according_std ) bb where bb.serial_nbr = aa.serial_nbr for xml path('')),1,1,'')) from (select p.serial_nbr,p.according_std from mes_main.dbo.defects p where 1 = 1 and p.wks_id = 'QC' group by p.serial_nbr,p.according_std ) aa where aa.serial_nbr != '' group by aa.serial_nbr ) accord on alls.serial_nbr = accord.serial_nbr left join (select a.serial_nbr,a.create_date htime,a.serial_status,a.operator hperson FROM [mes_main].[dbo].[qc_visit] a where a.wks_id = 'QC' and a.visit_type = 'H') hold on alls.serial_nbr = hold.serial_nbr left join ( select a.serial_nbr,max(a.create_date) rtime FROM [mes_main].[dbo].[qc_visit] a where a.wks_id = 'QC' and a.visit_type in ('PENDING','RL','RW','S') group by a.serial_nbr) pend on alls.serial_nbr = pend.serial_nbr left join mes_main.dbo.qc_visit qcv on pend.serial_nbr = qcv.serial_nbr and pend.rtime = qcv.create_date where 1 = 1 " + strwhere; // if (!string.IsNullOrEmpty(para.begintime.ToString())) //{ // sql += "and qcv.create_date >= '" + Convert.ToString(para.begintime) + "'"; // sql += "and qcv.create_date <= '" + Convert.ToString(para.endtime) + "'"; //} //sql += String.IsNullOrEmpty(para.serialno.ToString()) ? "" : " and qcv.[serial_nbr] LIKE '" + Convert.ToString(para.serialno) + "%'"; //sql += String.IsNullOrEmpty(para.workshop.ToString()) ? "" : " AND wo.[area_code] = '" + Convert.ToString(para.workshop) + "' "; //sql += String.IsNullOrEmpty(para.status.ToString()) ? "" : " AND qcv.[visit_type] = '" + Convert.ToString(para.status) + "'"; //sql += String.IsNullOrEmpty(para.workorder.ToString()) ? "" : " AND qcv.schedule_nbr = '" + Convert.ToString(para.workorder) + "'"; var res = context.DynamicListFromSql(sql, null); return res.ToList(); } } public List QueryStatus() { using (var context = new mesModel()) { string sql = @"select * from [mes_main].[dbo].[df_wks_visit_type] vt where vt.visit_type in ('M','H','RL','S')"; var res = context.DynamicListFromSql(sql, null); return res.ToList(); } } // public DataTable ExportExcel() // { // using (var context = new mesModel()) // { // string sql = @"SELECT TOP 1000 * //FROM[mes_main].[dbo].[assembly_basis]"; // var res = context.DynamicListFromSql(sql, null); // return res(); // } // } } }