예제 #1
0
        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);
        }
예제 #2
0
        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);
        }