public static List <ProbeTestData> GetQueryHistory(string wafer, string x, string y) { var sql = ""; var dict = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(wafer) && !string.IsNullOrEmpty(x) && !string.IsNullOrEmpty(y)) { sql = "select Wafer,X,Y,ApSize,APVal1,APVal7,APVal8,APVal9 from ProbeTestData where Wafer=@wafer and X=@x and Y=@y and APVal8 <> '' order by APVal9 desc"; dict.Add("@wafer", wafer); dict.Add("@x", x); dict.Add("@y", y); } else if (!string.IsNullOrEmpty(wafer) && !string.IsNullOrEmpty(x)) { sql = "select Wafer,X,Y,ApSize,APVal1,APVal7,APVal8,APVal9 from ProbeTestData where Wafer=@wafer and X=@x and APVal8 <> '' order by APVal9 desc"; dict.Add("@wafer", wafer); dict.Add("@x", x); } else if (!string.IsNullOrEmpty(wafer) && !string.IsNullOrEmpty(y)) { sql = "select Wafer,X,Y,ApSize,APVal1,APVal7,APVal8,APVal9 from ProbeTestData where Wafer=@wafer and Y=@y and APVal8 <> '' order by APVal9 desc"; dict.Add("@wafer", wafer); dict.Add("@y", y); } else { sql = "select Wafer,X,Y,ApSize,APVal1,APVal7,APVal8,APVal9 from ProbeTestData where Wafer=@wafer and APVal8 <> '' order by APVal9 desc"; dict.Add("@wafer", wafer); } var ret = new List <ProbeTestData>(); var dbret = DBUtility.ExeLocalSqlWithRes(sql, dict); foreach (var line in dbret) { var tempvm = new ProbeTestData(); tempvm.Wafer = UT.O2S(line[0]); tempvm.X = UT.O2S(line[1]); tempvm.Y = UT.O2S(line[2]); tempvm.ApSize = UT.O2S(line[3]); tempvm.APVal1 = UT.O2S(line[4]); tempvm.APVal7 = UT.O2S(line[5]); tempvm.APVal8 = UT.O2S(line[6]); tempvm.APVal9 = UT.O2T(line[7]); ret.Add(tempvm); } return(ret); }
public static List <PNSNFR4Binning> GetPNSNData(List <string> pnlist, string sdate, string edate) { var ret = new List <PNSNFR4Binning>(); var sndict = new Dictionary <string, bool>(); var pncond = "('" + string.Join("','", pnlist) + "')"; var sql = @"select top 100000 dc.[ModuleSerialNum],dc.AssemblyPartNum,dc.ModulePartNum,dc.TestTimeStamp,dc.ErrAbbr,dce.[ProductGrade],dce.ProdBinPwrConsumption,dce.ModuleTemp_C,ws.WorkflowStepName from [InsiteDB].[insite].[dce_QuickTest_main] dce (nolock) left join [InsiteDB].[insite].[dc_QuickTest] dc (nolock) on dc.dc_QuickTestHistoryId = dce.ParentHistoryID left join InsiteDB.insite.Container c (nolock) on c.containername = dc.[ModuleSerialNum] left join InsiteDB.insite.currentStatus cs (nolock) on c.currentStatusId = cs.currentStatusId left join InsiteDB.insite.workflowstep ws(nolock) on cs.WorkflowStepId = ws.WorkflowStepId where dc.ErrAbbr = 'pass' and dce.ChannelNumber = '0' and dc.[ModuleSerialNum] is not null and dce.CornerID like '1H' and dce.[ProductGrade] is not null and C.[Status] = 1 and c.HoldReasonId is null and ( (dc.AssemblyPartNum in <pncond> and dc.TestTimeStamp > '<sdate>' and dc.TestTimeStamp < '<edate>' ) or dc.[ModuleSerialNum] in <pncond> ) order by dc.[ModuleSerialNum],dc.TestTimeStamp desc"; sql = sql.Replace("<pncond>", pncond).Replace("<sdate>", sdate).Replace("<edate>", edate); var dbret = DBUtility.ExeRealMESSqlWithRes(sql); foreach (var line in dbret) { var sn = UT.O2S(line[0]).ToUpper().Trim(); if (sndict.ContainsKey(sn)) { continue; } sndict.Add(sn, true); ret.Add(new PNSNFR4Binning(UT.O2S(line[0]), UT.O2S(line[1]), UT.O2S(line[2]), UT.O2T(line[3]), UT.O2S(line[4]), UT.O2S(line[5]), UT.O2S(line[6]), UT.O2S(line[7]), UT.O2S(line[8]))); } return(ret); }