Exemple #1
0
        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)
                {
                }
            }
        }