public static void PrePareLatestData(Controller ctrl, string projectkey) { if (UpdatePJLockUsing(projectkey)) { return; } try { var vm = ProjectViewModels.RetrieveOneProject(projectkey); if (vm.PNList.Count > 0) { string lastupdatetime = BITestData.RetrieveLatestTimeOfLocalBI(projectkey); if (!string.IsNullOrEmpty(lastupdatetime)) { var vlast = DateTime.Parse(lastupdatetime); vlast = vlast.AddMinutes(18); if (vlast < DateTime.Now) { BIDataUtility.UpdateProjectData(ctrl, vm); } } else { BIDataUtility.UpdateProjectData(ctrl, vm); } } ResetUpdatePJLock(projectkey); } catch (Exception ex) { ResetUpdatePJLock(projectkey); } }
public static void UpdateProjectData(Controller ctrl, ProjectViewModels vm) { var vtab = new List <string>(); vtab.Add("dbo.PRLL_VcselInfoSummary_2016"); vtab.Add("dbo.PRLL_VcselInfoSummary_2017"); foreach (var vt in vtab) { try { if (vm.PNList.Count > 0) { var failurelist = new List <BITestData>(); var failuredict = new Dictionary <string, bool>(); var passlist = new List <BITestData>(); var starttime = BITestData.RetrieveLatestTimeOfLocalBI(vm.ProjectKey); if (string.IsNullOrEmpty(starttime)) { starttime = vm.StartDate.ToString(); } var sql = "select ModuleSerialNum,Step,ModuleType,ErrAbbr,TestTimeStamp,TestStation,ModulePartNum,wafer,waferpn from " + vt + "(nolock) where wafer <> 'NULL' and waferpn <> 'NULL' and ErrAbbr <> 'NULL' and ModulePartNum in <PNCOND> and TestTimeStamp > '<TIMECOND>' order by TestTimeStamp Desc,ModuleSerialNum"; var pncond = PNCondition(vm.PNList); if (string.IsNullOrEmpty(pncond)) { return; } sql = sql.Replace("<PNCOND>", pncond).Replace("<TIMECOND>", starttime); var tempdataiddict = new Dictionary <string, BITestData>(); var dbret = DBUtility.ExePRLSqlWithRes(ctrl, sql); foreach (var line in dbret) { var tempid = ConvertString(line[0]) + "_" + ConvertString(line[1]); if (tempdataiddict.ContainsKey(tempid)) { if (DateTime.Parse(ConvertString(line[4])) == tempdataiddict[tempid].TestTimeStamp) { if (string.Compare(ConvertString(line[3]), "Pass", true) != 0) { tempdataiddict[tempid].ErrAbbr = ConvertString(line[3]); if (!failuredict.ContainsKey(tempdataiddict[tempid].ModuleSerialNum)) { failuredict.Add(tempdataiddict[tempid].ModuleSerialNum, true); failurelist.Add(tempdataiddict[tempid]); var ekey = ProjectErrorViewModels.GetUniqKey(); var pjerror = new ProjectErrorViewModels(ProjectErrorViewModels.BURNIN, ekey, ConvertString(line[3]), "", 1); pjerror.Reporter = "System"; pjerror.Description = ""; pjerror.AddandUpdateProjectError(); } } } //same time } else { var tempdata = new BITestData(); tempdata.DataID = GetUniqKey(); tempdata.ProjectKey = vm.ProjectKey; tempdata.ModuleSerialNum = ConvertString(line[0]); tempdata.WhichTest = ConvertString(line[1]); tempdata.ModuleType = ConvertString(line[2]); tempdata.ErrAbbr = ConvertString(line[3]); tempdata.TestTimeStamp = DateTime.Parse(ConvertString(line[4])); tempdata.TestStation = ConvertString(line[5]); tempdata.PN = ConvertString(line[6]); tempdata.Wafer = ConvertString(line[7]); tempdata.Waferpn = ConvertString(line[8]); tempdataiddict.Add(tempid, tempdata); if (string.Compare(tempdata.ErrAbbr, "Pass", true) != 0) { if (!failuredict.ContainsKey(tempdata.ModuleSerialNum)) { failuredict.Add(tempdata.ModuleSerialNum, true); failurelist.Add(tempdata); var ekey = ProjectErrorViewModels.GetUniqKey(); var pjerror = new ProjectErrorViewModels(ProjectErrorViewModels.BURNIN, ekey, tempdata.ErrAbbr, "", 1); pjerror.Reporter = "System"; pjerror.Description = ""; pjerror.AddandUpdateProjectError(); } } else { passlist.Add(tempdata); } } } //end foreach foreach (var kv in tempdataiddict) { kv.Value.StoreBIData(); } //end foreach if (DateTime.Parse(starttime) != vm.StartDate) { CreateSystemIssues(failurelist, ctrl); IssueViewModels.CloseBIIssueAutomaticlly(passlist); } } } catch (Exception ex) { } } }