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); } } }
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) { } }
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>()); } }
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; } } }
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); }
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); }
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); }
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 }