Example #1
0
        public static void UpdateDMRSNStatus(string prodline, Controller ctrl)
        {
            if (ctrl.HttpContext.Cache.Get(prodline) == null)
            {
                var normal = true;

                UpdateDMRSN(prodline, ctrl);
                var snlaststep = UpdateSNStatus(prodline);
                if (snlaststep.Count == 0)
                {
                    normal = false;
                }

                if (!UpdateDMRStep(prodline, snlaststep))
                {
                    normal = false;
                }

                UpdateDMROAStatus(prodline);
                UpdateDMRSNTestData(prodline);

                if (normal)
                {
                    var cachehour = Convert.ToDouble(CfgUtility.GetSysConfig(ctrl)["DMRCACHEHOUR"]);
                    ctrl.HttpContext.Cache.Insert(prodline, "true", null, DateTime.Now.AddHours(cachehour), Cache.NoSlidingExpiration);
                }
            }
        }
Example #2
0
        private static void FileCopy(Controller ctrl, string src, string des, bool overwrite, bool checklocal = false)
        {
            try
            {
                var syscfgdict  = CfgUtility.GetSysConfig(ctrl);
                var folderuser  = syscfgdict["SHAREFOLDERUSER"];
                var folderdomin = syscfgdict["SHAREFOLDERDOMIN"];
                var folderpwd   = syscfgdict["SHAREFOLDERPWD"];

                using (NativeMethods cv = new NativeMethods(folderuser, folderdomin, folderpwd))
                {
                    if (checklocal)
                    {
                        if (File.Exists(des))
                        {
                            return;
                        }
                    }

                    File.Copy(src, des, overwrite);
                }
            }
            catch (Exception ex)
            {
            }
        }
        //private static void SolveDieSortFile(string diefile, string desfolder)
        //{
        //    try
        //    {
        //        var doc = new XmlDocument();
        //        doc.Load(diefile);
        //        var namesp = doc.DocumentElement.GetAttribute("xmlns");
        //        doc = StripNamespace(doc);

        //        XmlElement root = doc.DocumentElement;
        //        var nodes = root.SelectNodes("//BinDefinition[@BinQuality='Pass']");
        //        foreach (XmlElement nd in nodes)
        //        {
        //            nd.SetAttribute("BinCount", "666");
        //        }

        //        foreach (XmlElement nd in root.SelectNodes("//BinCode[@X='240' and @Y='74']"))
        //        {
        //            nd.ParentNode.RemoveChild(nd);
        //            //System.Windows.MessageBox.Show(nd.InnerText);
        //        }

        //        doc.DocumentElement.SetAttribute("xmlns", namesp);
        //        doc.Save(Path.Combine(desfolder, Path.GetFileName(diefile) + ".NEW"));

        //        doc = new XmlDocument();
        //        doc.Load(diefile);
        //        doc.Save(Path.Combine(desfolder, Path.GetFileName(diefile)));
        //    }
        //    catch (Exception ex) { }
        //}

        //public static void LoadDieSortFile(Controller ctrl)
        //{
        //    var filetype = "DIESORT";
        //    var syscfgdict = CfgUtility.GetSysConfig(ctrl);
        //    var srcfolder = syscfgdict["DIESORTFOLDER"];
        //    var desfolder = syscfgdict["DIESORTSHARE"];
        //    var srcfiles = DirectoryEnumerateFiles(ctrl, srcfolder);

        //    var loadedfiledict = FileLoadedData.LoadedFiles(filetype);
        //    foreach (var srcf in srcfiles)
        //    {
        //        var srcfilename = Path.GetFileName(srcf);
        //        if (loadedfiledict.ContainsKey(srcfilename))
        //        { continue; }
        //        var desfile = DownloadShareFile(srcf, ctrl);
        //        if (desfile != null && FileExist(ctrl, desfile))
        //        {
        //            //FileLoadedData.UpdateLoadedFile(srcfilename, filetype);
        //            SolveDieSortFile(desfile, desfolder);
        //        }
        //    }
        //}

        public static Dictionary <string, string> LoadSHTOLData(Controller ctrl)
        {
            var ret        = new Dictionary <string, string>();
            var syscfgdict = CfgUtility.GetSysConfig(ctrl);
            var htolfile   = syscfgdict["CWDM4SHTOL"];
            var desfile    = DownloadShareFile(htolfile, ctrl);

            if (desfile != null && FileExist(ctrl, desfile))
            {
                var rawdata = RetrieveDataFromExcelWithAuth(ctrl, desfile, "SN", 3);
                foreach (var line in rawdata)
                {
                    var sn   = line[0].ToUpper().Trim();
                    var date = line[1];
                    try
                    {
                        date = DateTime.Parse(date).ToString("yyyy-MM-dd");
                    }
                    catch (Exception ex) { }
                    if (!ret.ContainsKey(sn))
                    {
                        ret.Add(sn, date);
                    }
                }
            }
            return(ret);
        }
        public static List <string> DirectoryEnumerateAllFilesByYear(Controller ctrl, string dirname, string foldematch)
        {
            try
            {
                var syscfgdict  = CfgUtility.GetSysConfig(ctrl);
                var folderuser  = syscfgdict["SHAREFOLDERUSER"];
                var folderdomin = syscfgdict["SHAREFOLDERDOMIN"];
                var folderpwd   = syscfgdict["SHAREFOLDERPWD"];

                using (NativeMethods cv = new NativeMethods(folderuser, folderdomin, folderpwd))
                {
                    var ret = new Dictionary <string, string>();
                    //var nofolderfiles = Directory.GetFiles(dirname);
                    //foreach (var f in nofolderfiles)
                    //{
                    //    var uf = f.ToUpper();
                    //    if (!ret.ContainsKey(uf))
                    //    { ret.Add(uf, f); }
                    //}

                    var folders = Directory.GetDirectories(dirname);
                    foreach (var fd in folders)
                    {
                        var fds    = fd.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
                        var fdname = fds[fds.Length - 1];
                        if (fdname.Length < 4)
                        {
                            continue;
                        }

                        if (!foldematch.Contains(fdname.Substring(0, 4)))
                        {
                            continue;
                        }

                        var fs = Directory.GetFiles(fd);
                        foreach (var f in fs)
                        {
                            var uf = f.ToUpper();
                            if (!ret.ContainsKey(uf))
                            {
                                ret.Add(uf, f);
                            }
                        }
                    }
                    return(ret.Values.ToList());
                }
            }
            catch (Exception ex)
            {
                return(new List <string>());
            }
        }
        public static void CreateDirectory(Controller ctrl, string dirname)
        {
            try
            {
                var syscfgdict  = CfgUtility.GetSysConfig(ctrl);
                var folderuser  = syscfgdict["SHAREFOLDERUSER"];
                var folderdomin = syscfgdict["SHAREFOLDERDOMIN"];
                var folderpwd   = syscfgdict["SHAREFOLDERPWD"];

                using (NativeMethods cv = new NativeMethods(folderuser, folderdomin, folderpwd))
                {
                    Directory.CreateDirectory(dirname);
                }
            }
            catch (Exception ex)
            { }
        }
Example #6
0
        private static bool DirectoryExists(Controller ctrl, string dirname)
        {
            try
            {
                var syscfgdict  = CfgUtility.GetSysConfig(ctrl);
                var folderuser  = syscfgdict["SHAREFOLDERUSER"];
                var folderdomin = syscfgdict["SHAREFOLDERDOMIN"];
                var folderpwd   = syscfgdict["SHAREFOLDERPWD"];

                using (NativeMethods cv = new NativeMethods(folderuser, folderdomin, folderpwd))
                {
                    return(Directory.Exists(dirname));
                }
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
        public static List <List <string> > RetrieveDataFromExcelWithAuth(Controller ctrl, string filename, string sheetname = null, int columns = 101)
        {
            try
            {
                var syscfgdict  = CfgUtility.GetSysConfig(ctrl);
                var folderuser  = syscfgdict["SHAREFOLDERUSER"];
                var folderdomin = syscfgdict["SHAREFOLDERDOMIN"];
                var folderpwd   = syscfgdict["SHAREFOLDERPWD"];

                using (NativeMethods cv = new NativeMethods(folderuser, folderdomin, folderpwd))
                {
                    return(ExcelReader.RetrieveDataFromExcel(filename, sheetname, columns));
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public static List <string> DirectoryEnumerateAllFiles(Controller ctrl, string dirname)
        {
            try
            {
                var syscfgdict  = CfgUtility.GetSysConfig(ctrl);
                var folderuser  = syscfgdict["SHAREFOLDERUSER"];
                var folderdomin = syscfgdict["SHAREFOLDERDOMIN"];
                var folderpwd   = syscfgdict["SHAREFOLDERPWD"];

                using (NativeMethods cv = new NativeMethods(folderuser, folderdomin, folderpwd))
                {
                    var ret           = new Dictionary <string, string>();
                    var nofolderfiles = Directory.GetFiles(dirname);
                    foreach (var f in nofolderfiles)
                    {
                        var uf = f.ToUpper();
                        if (!ret.ContainsKey(uf))
                        {
                            ret.Add(uf, f);
                        }
                    }

                    var folders = Directory.GetDirectories(dirname);
                    foreach (var fd in folders)
                    {
                        var fs = Directory.GetFiles(fd);
                        foreach (var f in fs)
                        {
                            var uf = f.ToUpper();
                            if (!ret.ContainsKey(uf))
                            {
                                ret.Add(uf, f);
                            }
                        }
                    }
                    return(ret.Values.ToList());
                }
            }
            catch (Exception ex)
            {
                return(new List <string>());
            }
        }
Example #9
0
        private static List <string> DirectoryEnumerateFiles(Controller ctrl, string dirname)
        {
            try
            {
                var syscfgdict  = CfgUtility.GetSysConfig(ctrl);
                var folderuser  = syscfgdict["SHAREFOLDERUSER"];
                var folderdomin = syscfgdict["SHAREFOLDERDOMIN"];
                var folderpwd   = syscfgdict["SHAREFOLDERPWD"];

                using (NativeMethods cv = new NativeMethods(folderuser, folderdomin, folderpwd))
                {
                    var ret = new List <string>();
                    ret.AddRange(Directory.EnumerateFiles(dirname));
                    return(ret);
                }
            }
            catch (Exception ex)
            {
                return(new List <string>());
            }
        }
        public static Dictionary <string, bool> LoadParallelBIData(Controller ctrl)
        {
            var ret        = new Dictionary <string, bool>();
            var syscfgdict = CfgUtility.GetSysConfig(ctrl);
            var htolfile   = syscfgdict["CWDM4SHTOL"];
            var desfile    = DownloadShareFile(htolfile, ctrl);

            if (desfile != null && FileExist(ctrl, desfile))
            {
                var rawdata = RetrieveDataFromExcelWithAuth(ctrl, desfile, "BI SN", 3);
                foreach (var line in rawdata)
                {
                    var sn = line[0].ToUpper().Trim();
                    if (!ret.ContainsKey(sn))
                    {
                        ret.Add(sn, true);
                    }
                }
            }
            return(ret);
        }
        public static void LoadORLData(List <CWDM4Data> retdata, Controller ctrl)
        {
            var ret        = new Dictionary <string, CWDM4Data>();
            var syscfgdict = CfgUtility.GetSysConfig(ctrl);
            var htolfile   = syscfgdict["CWDM4ORL"];
            var desfile    = DownloadShareFile(htolfile, ctrl);

            if (desfile != null && FileExist(ctrl, desfile))
            {
                var rawdata = RetrieveDataFromExcelWithAuth(ctrl, desfile, null, 6);
                rawdata.Reverse();
                foreach (var line in rawdata)
                {
                    var sn = line[0].ToUpper().Trim();
                    if (!ret.ContainsKey(sn))
                    {
                        var vm = new CWDM4Data();
                        vm.ORLTX    = line[1];
                        vm.ORLRX    = line[2];
                        vm.ORLTX70C = line[3];
                        ret.Add(sn, vm);
                    }
                }
            }

            foreach (var item in retdata)
            {
                if (!item.IsCWDM4)
                {
                    continue;
                }

                if (ret.ContainsKey(item.SN))
                {
                    item.ORLTX    = ret[item.SN].ORLTX;
                    item.ORLRX    = ret[item.SN].ORLRX;
                    item.ORLTX70C = ret[item.SN].ORLTX70C;
                }
            }
        }
Example #12
0
        public static List <string> LoadAllTraceView2Local(string tester, List <string> snlist, string whichtest, Controller ctrl)
        {
            var ret = new List <string>();

            try
            {
                var syscfgdict          = CfgUtility.GetSysConfig(ctrl);
                var traceviewscrfolder  = syscfgdict["TRACEVIEWFOLDER"] + "\\" + tester;
                var traceviewscrfolder2 = syscfgdict["TRACEVIEWFOLDER"] + "\\" + tester + "\\" + tester;
                var allsrcfiles         = DirectoryEnumerateFiles(ctrl, traceviewscrfolder);
                var allsrcfiles2        = DirectoryEnumerateFiles(ctrl, traceviewscrfolder2);
                allsrcfiles.AddRange(allsrcfiles2);

                string imgdir = ctrl.Server.MapPath("~/userfiles") + "\\docs\\TraceView\\";
                if (!DirectoryExists(ctrl, imgdir))
                {
                    Directory.CreateDirectory(imgdir);
                }
                foreach (var sn in snlist)
                {
                    var tempret = new List <string>();

                    foreach (var srcf in allsrcfiles)
                    {
                        var filename = Path.GetFileName(srcf).ToUpper();

                        if (filename.Contains(sn.ToUpper()) &&
                            filename.Contains(whichtest.ToUpper()) &&
                            filename.Contains("_DUTORDERED_") &&
                            filename.Contains("_TRACEVIEW_"))
                        {
                            var traceviewtimestr = RetrieveTimeFromTraceViewName(filename);
                            if (traceviewtimestr == null)
                            {
                                continue;
                            }

                            try
                            {
                                //var traceviewtime = DateTime.Parse(traceviewtimestr);
                                //var dbtime = DateTime.Parse(dbtimestr);
                                //if (traceviewtime > dbtime.AddSeconds(-5) && traceviewtime < dbtime.AddSeconds(5))
                                //{
                                logthdinfo("\r\nStart to copy file: " + srcf);
                                var desfile = imgdir + filename;
                                FileCopy(ctrl, srcf, desfile, true);
                                if (FileExist(ctrl, desfile))
                                {
                                    logthdinfo("try to add data from file: " + desfile);
                                    tempret.Add(desfile);
                                }//copied file exist
                                 //}
                            }
                            catch (Exception ex)
                            {
                                logthdinfo("LoadTraceView2Local Exception: " + ex.Message);
                            }
                        } //end if
                    }     //end foreach

                    if (tempret.Count == 0)
                    {
                        foreach (var srcf in allsrcfiles)
                        {
                            var filename = Path.GetFileName(srcf).ToUpper();

                            if (filename.Contains(sn.ToUpper()) &&
                                filename.Contains(whichtest.ToUpper()) &&
                                filename.Contains("_DUT") &&
                                filename.Contains("_TRACEVIEW_"))
                            {
                                var traceviewtimestr = RetrieveTimeFromTraceViewName(filename);
                                if (traceviewtimestr == null)
                                {
                                    continue;
                                }

                                try
                                {
                                    //var traceviewtime = DateTime.Parse(traceviewtimestr);
                                    //var dbtime = DateTime.Parse(dbtimestr);
                                    //if (traceviewtime > dbtime.AddSeconds(-5) && traceviewtime < dbtime.AddSeconds(5))
                                    //{
                                    logthdinfo("\r\n2Start to copy file: " + srcf);
                                    var desfile = imgdir + filename;
                                    FileCopy(ctrl, srcf, desfile, true);
                                    if (FileExist(ctrl, desfile))
                                    {
                                        logthdinfo("2try to add data from file: " + desfile);
                                        ret.Add(desfile);
                                    }//copied file exist
                                     //}
                                }
                                catch (Exception ex)
                                {
                                    logthdinfo("2LoadTraceView2Local Exception: " + ex.Message);
                                }
                            } //end if
                        }     //end foreach
                    }         //end if ret == 0

                    ret.AddRange(tempret);
                }//end snlist
            }catch (Exception e) { }
            return(ret);
        }
Example #13
0
        public static bool SendEmail(Controller ctrl, string title, List <string> tolist, string content, bool isHtml = true, string attachpath = null)
        {
            try
            {
                var syscfgdict = CfgUtility.GetSysConfig(ctrl);

                var message = new MailMessage();
                if (!string.IsNullOrEmpty(attachpath))
                {
                    var attach = new Attachment(attachpath);
                    message.Attachments.Add(attach);
                }

                message.IsBodyHtml = isHtml;
                message.From       = new MailAddress(syscfgdict["APPEMAILADRESS"]);
                foreach (var item in tolist)
                {
                    if (!item.Contains("@"))
                    {
                        continue;
                    }

                    try
                    {
                        if (item.Contains(";") || item.Contains("/"))
                        {
                            var ts = item.Split(new string[] { ";", "/" }, StringSplitOptions.RemoveEmptyEntries);
                            foreach (var t in ts)
                            {
                                if (IsEmaileValid(t))
                                {
                                    message.To.Add(t);
                                }
                            }
                        }
                        else
                        {
                            if (IsEmaileValid(item))
                            {
                                message.To.Add(item);
                            }
                        }
                    }
                    catch (Exception e) { logthdinfo("Address exception: " + e.Message); }
                }

                message.Subject = title;
                message.Body    = content.Replace("\r\n", "<br>").Replace("\r", "<br>");

                SmtpClient client = new SmtpClient();
                client.Host = syscfgdict["EMAILSERVER"];

                if (syscfgdict["EMAILSSL"].Contains("TRUE"))
                {
                    client.EnableSsl = true;
                }
                else
                {
                    client.EnableSsl = false;
                }


                client.Timeout               = 60000;
                client.DeliveryMethod        = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.Credentials           = new NetworkCredential(syscfgdict["APPEMAILADRESS"], syscfgdict["APPEMAILPWD"]);

                ServicePointManager.ServerCertificateValidationCallback
                    = delegate(object s, X509Certificate certificate, X509Chain chain
                               , SslPolicyErrors sslPolicyErrors) { return(true); };

                new Thread(() => {
                    try
                    {
                        client.Send(message);
                    }
                    catch (SmtpFailedRecipientsException ex)
                    {
                        logthdinfo("SmtpFailedRecipientsException exception: " + ex.Message);
                        try
                        {
                            message.To.Clear();
                            foreach (var item in tolist)
                            {
                                if (ex.Message.Contains(item))
                                {
                                    try
                                    {
                                        message.To.Add(item);
                                    }
                                    catch (Exception e) { logthdinfo("Address exception2: " + e.Message); }
                                }
                            }
                            client.Send(message);
                        }
                        catch (Exception ex1)
                        {
                            logthdinfo("nest exception1: " + ex1.Message);
                        }
                    }
                    catch (Exception ex)
                    {
                        logthdinfo("Smartlinks send exception: " + ex.Message);
                    }
                }).Start();
            }
            catch (Exception ex)
            {
                logthdinfo("main exception: " + ex.Message);
                return(false);
            }
            return(true);
        }
Example #14
0
        public static List <SNApertureSizeVM> LoadData(List <string> snlist, Controller ctrl)
        {
            var syscfg   = CfgUtility.GetSysConfig(ctrl);
            var bifolder = syscfg["BIITHFOLDER"];
            var allfiles = GetAllFiles(bifolder, ctrl);
            var snwfdict = UT.GetWaferFromSN(snlist);

            var ret = new List <SNApertureSizeVM>();

            foreach (var sn in snlist)
            {
                SNApertureSizeVM tempvm = null;

                var fs = "";
                foreach (var f in allfiles)
                {
                    if (f.ToUpper().Contains(sn.ToUpper()) && f.ToUpper().Contains("_PRE.TXT"))
                    {
                        fs = f;
                        break;
                    }
                }

                if (string.IsNullOrEmpty(fs))
                {
                    continue;
                }

                var bifile = ExternalDataCollector.DownloadShareFile(fs, ctrl);
                if (!string.IsNullOrEmpty(bifile))
                {
                    var alline = System.IO.File.ReadAllLines(bifile);
                    var idx    = 1;
                    foreach (var line in alline)
                    {
                        if (line.ToUpper().Contains("CHANNEL"))
                        {
                            tempvm    = new SNApertureSizeVM();
                            tempvm.SN = sn.ToUpper();
                            tempvm.CH = "CH" + idx;
                            if (snwfdict.ContainsKey(tempvm.SN))
                            {
                                tempvm.Wafer = snwfdict[tempvm.SN];
                            }

                            ret.Add(tempvm);
                            idx++;
                            continue;
                        }

                        if (tempvm != null && tempvm.IthList.Count < 14)
                        {
                            var items = line.Split(new string[] { " ", "\t" }, StringSplitOptions.RemoveEmptyEntries);
                            tempvm.IthList.Add(UT.O2D(items[1]));
                            tempvm.PwrList.Add(UT.O2D(items[2]));
                        }
                    } //end foreach
                }     //end if

                foreach (var item in ret)
                {
                    if (item.IthList.Count == 14 && item.PwrList.Count == 14)
                    {
                        var rest = Fit.Line(item.IthList.ToArray(), item.PwrList.ToArray());
                        item.Intercept = rest.Item1.ToString();
                        item.IthSlope  = rest.Item2.ToString();
                        item.Ith       = (Math.Abs(rest.Item1 / rest.Item2) / 1000.0).ToString();
                    }
                }

                var wflist = new List <string>();
                foreach (var kv in snwfdict)
                {
                    var wf = kv.Value.ToUpper().Trim();
                    if (!wflist.Contains(wf))
                    {
                        wflist.Add(wf);
                    }
                }

                var wfapdict = new Dictionary <string, string>();
                foreach (var w in wflist)
                {
                    var apconst = ProbeTestData.PrepareAPConst2162(w);
                    wfapdict.Add(w, apconst);
                }

                foreach (var item in ret)
                {
                    if (!string.IsNullOrEmpty(item.Wafer) && wfapdict.ContainsKey(item.Wafer))
                    {
                        item.ApertureConst = wfapdict[item.Wafer];
                        if (!string.IsNullOrEmpty(item.ApertureConst) && !string.IsNullOrEmpty(item.Ith))
                        {
                            var apconst = UT.O2D(item.ApertureConst);
                            var ith     = UT.O2D(item.Ith);
                            item.ApertureSize = (ith * 7996.8 + apconst).ToString();
                        }
                    }
                }
            }
            return(ret);
        }
Example #15
0
        public static void FinalSetResult(List <ScrapTableItem> scraptable, Controller ctrl)
        {
            var pndefresdict = PnMainVM.PNDefaultResMap();
            var syscfg       = CfgUtility.GetSysConfig(ctrl);
            var processlist  = syscfg["SCRAP4PROCESSNAME"].Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).ToList();

            foreach (var item in scraptable)
            {
                if (!string.IsNullOrEmpty(item.TestData.DataID) &&
                    string.Compare(item.TestData.ErrAbbr.Trim(), "pass", true) != 0)
                {
                    if (item.RlueList.Count == 0)
                    {
                        if (pndefresdict.ContainsKey(item.PN))
                        {
                            item.Result      = pndefresdict[item.PN];
                            item.MatchedRule = "DEFAULT";
                        }
                    }
                    else
                    {
                        foreach (var rule in item.RlueList)
                        {
                            if (!string.IsNullOrEmpty(rule.Param))
                            {
                                if (MatchRuleWithParam(item, rule, ctrl))
                                {
                                    item.Result      = rule.RuleRes;
                                    item.MatchedRule = item.PN + "_" + item.WhichTest + "_" + item.TestData.ErrAbbr + "_" + rule.Param;
                                    break;
                                }
                            }
                            else
                            {
                                item.Result      = rule.RuleRes;
                                item.MatchedRule = item.PN + "_" + item.WhichTest + "_" + item.TestData.ErrAbbr;
                                break;
                            }
                        }

                        if (string.IsNullOrEmpty(item.Result))
                        {
                            item.Result      = pndefresdict[item.PN];
                            item.MatchedRule = "DEFAULT";
                        }
                    }
                }//end if

                {
                    var testdatalist = RetrieveLatestSNStep(item.SN);
                    if (testdatalist.Count > 0)
                    {
                        var matchprocess = false;
                        foreach (var p in processlist)
                        {
                            if (testdatalist[0].WhichTest.ToUpper().Contains(p.ToUpper()))
                            {
                                item.TestData.DataID   = testdatalist[0].DataID;
                                item.WhichTest         = testdatalist[0].WhichTest;
                                item.TestData.ErrAbbr  = testdatalist[0].ErrAbbr;
                                item.TestData.TestTime = testdatalist[0].TestTime;
                                item.TestData.ErrAbbr  = "PROCESS";
                                matchprocess           = true;
                                break;
                            }
                        }//end foreach

                        if (matchprocess)
                        {
                            item.Result      = SCRAPRESULT.DSCRAP;
                            item.MatchedRule = "PROCESS SCRAP";
                        }
                        //else
                        //{
                        //    if (pndefresdict.ContainsKey(item.PN))
                        //    {
                        //        item.Result = pndefresdict[item.PN];
                        //        item.MatchedRule = "DEFAULT";
                        //    }
                        //}
                    }
                    //else
                    //{
                    //    if (pndefresdict.ContainsKey(item.PN))
                    //    {
                    //        item.Result = pndefresdict[item.PN];
                    //        item.MatchedRule = "DEFAULT";
                    //    }
                    //}
                }
            }//foreach
        }