예제 #1
0
        public static Dictionary <string, string> GetJOFromSN(List <string> snlist)
        {
            var ret = new Dictionary <string, string>();

            var sql    = @"select distinct c.ContainerName,jo.MfgOrderName from InsiteDB.insite.Container (nolock) c
                    left join InsiteDB.insite.MfgOrder (nolock) jo on c.MfgOrderId = jo.MfgOrderId
                    where c.ContainerName in <sncond>";
            var sncond = "('" + string.Join("','", snlist) + "')";

            sql = sql.Replace("<sncond>", sncond);
            var dbret = DBUtility.ExeRealMESSqlWithRes(sql);

            foreach (var line in dbret)
            {
                var sn = UT.O2S(line[0]).ToUpper();
                var jo = UT.O2S(line[1]).ToUpper();
                if (!ret.ContainsKey(sn))
                {
                    ret.Add(sn, jo);
                }
            }

            foreach (var sn in snlist)
            {
                if (!ret.ContainsKey(sn))
                {
                    ret.Add(sn.ToUpper(), "");
                }
            }
            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);
        }
예제 #3
0
        private static List <JODetailVM> GetFAFStatus(string jo)
        {
            var ret = new List <JODetailVM>();

            var sql  = "select [Checked],[ConfirmPeople],[ConfirmTime] from [NebulaTrace].[dbo].[FAFJoVM] where JO = @JO";
            var dict = new Dictionary <string, string>();

            dict.Add("@JO", jo);
            var dbret = DBUtility.ExeNebulaSqlWithRes(sql, dict);

            foreach (var line in dbret)
            {
                var check  = UT.O2S(line[0]).ToUpper();
                var tempvm = new JODetailVM();
                tempvm.CRTWFName = "NO";
                if (check.Contains("TRUE"))
                {
                    tempvm.CRTWFName = "YES";
                }
                tempvm.CRTWFRev      = UT.O2S(line[1]);
                tempvm.CRTWFStepName = UT.O2S(line[2]);
                ret.Add(tempvm);
                break;
            }

            return(ret);
        }
예제 #4
0
        public static string GetWaferArray(string wafernum)
        {
            var productfm = GetProductFamilyFromAllen(wafernum);

            if (string.IsNullOrEmpty(productfm))
            {
                return("1");
            }

            var dict = new Dictionary <string, string>();

            dict.Add("@productfm", productfm);
            var sql   = @"select na.Array_Length from  [EngrData].[dbo].[NeoMAP_MWR_Arrays] na with (nolock) where na.product_out = @productfm";
            var dbret = DBUtility.ExeAllenSqlWithRes(sql, dict);

            foreach (var line in dbret)
            {
                if (line[0] != System.DBNull.Value)
                {
                    return(UT.O2S(line[0]));
                }
            }

            return("1");
        }
예제 #5
0
        public static List <string> WaferList()
        {
            var ret   = new List <string>();
            var sql   = "select distinct Wafer from ProbeTestData";
            var dbret = DBUtility.ExeLocalSqlWithRes(sql);

            foreach (var line in dbret)
            {
                ret.Add(UT.O2S(line[0]));
            }
            return(ret);
        }
예제 #6
0
        private static string GetAPConst2162FromLocal(string WaferNum)
        {
            var sql  = "select ApConst from  WAT.dbo.WaferAPConst where Wafer= @Wafer";
            var dict = new Dictionary <string, string>();

            dict.Add("@Wafer", WaferNum);
            var dbret = DBUtility.ExeWATSqlWithRes(sql, dict);

            foreach (var line in dbret)
            {
                return(UT.O2S(line[0]));
            }
            return(string.Empty);
        }
예제 #7
0
        public static Dictionary <string, string> GetWaferFromSN(List <string> snlist)
        {
            var ret = new Dictionary <string, string>();

            var sncond = "('" + string.Join("','", snlist) + "')";

            var sql = @"SELECT distinct c.ContainerName as SerialName,isnull(dc.[ParamValueString],'') as WaferLot
                        FROM InsiteDB.insite.container c with (nolock) 
                        left join InsiteDB.insite.currentStatus cs (nolock) on c.currentStatusId = cs.currentStatusId 
                        left join InsiteDB.insite.workflowstep ws(nolock) on  cs.WorkflowStepId = ws.WorkflowStepId 
                        left join InsiteDB.insite.componentRemoveHistory crh with (nolock) on crh.historyId = c.containerId 
                        left join InsiteDB.insite.removeHistoryDetail rhd on rhd.componentRemoveHistoryId = crh.componentRemoveHistoryId 
                        left join InsiteDB.insite.starthistorydetail  shd(nolock) on c.containerid=shd.containerId and shd.historyId <> shd.containerId 
                        left join InsiteDB.insite.container co (nolock) on co.containerid=shd.historyId 
                        left join InsiteDB.insite.historyMainline hml with (nolock) on c.containerId = hml.containerId 
                        left join InsiteDB.insite.componentIssueHistory cih with (nolock) on  hml.historyMainlineId=cih.historyMainlineId 
                        left join InsiteDB.insite.issueHistoryDetail ihd with (nolock) on cih.componentIssueHistoryId = ihd.componentIssueHistoryId 
                        left join InsiteDB.insite.issueActualsHistory iah with (nolock) on  ihd.issueHistoryDetailId = iah.issueHistoryDetailId 
                        left join InsiteDB.insite.RemoveHistoryDetail rem with (nolock) on iah.IssueActualsHistoryId = rem.IssueActualsHistoryId 
                        left join InsiteDB.insite.RemovalReason re with (nolock) on rem.RemovalReasonId = re.RemovalReasonId 
                        left join InsiteDB.insite.container cFrom with (nolock) on iah.fromContainerId = cFrom.containerId 
                        left join InsiteDB.insite.product p with (nolock) on  cFrom.productId = p.productId 
                        left join InsiteDB.insite.productBase pb with (nolock) on p.productBaseId  = pb.productBaseId 
                        left join InsiteDB.insite.historyMainline hmll with (nolock)on cFrom.OriginalcontainerId=hmll.historyid 
                        left join InsiteDB.insite.product pp with (nolock) on c.productid=pp.productid 
                        left join InsiteDB.insite.productfamily pf (nolock) on  pp.productFamilyId = pf.productFamilyId 
                        left join InsiteDB.insite.productbase pbb with (nolock) on pp.productbaseid=pbb.productbaseid 
                        left join InsiteDB.insite.dc_AOC_ManualInspection dc (nolock) on hmll.[HistoryMainlineId]=dc.[HistoryMainlineId] 
                        WHERE dc.parametername='Trace_ID' and p.description like '%VCSEL%' and dc.[ParamValueString] like '%-%'and c.containername in <SNCOND> ";

            sql = sql.Replace("<SNCOND>", sncond);
            var dbret = DBUtility.ExeRealMESSqlWithRes(sql);

            foreach (var line in dbret)
            {
                var sn    = UT.O2S(line[0]).ToUpper();
                var wafer = UT.O2S(line[1]).Replace("A", "");
                if (wafer.Length == 12)
                {
                    wafer = wafer.Substring(0, 9);
                }

                if (!ret.ContainsKey(sn))
                {
                    ret.Add(sn, wafer);
                }
            }
            return(ret);
        }
예제 #8
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);
        }
예제 #9
0
        public static List <SimpleNoteVM> GetNote(string doorcode)
        {
            var ret  = new List <SimpleNoteVM>();
            var dict = new Dictionary <string, string>();

            dict.Add("@doorcode", doorcode);
            var sql   = "select top 300 notekey,doorcode,note,notedate from SimpleNoteVM where doorcode=@doorcode order by notedate desc";
            var dbret = DBUtility.ExeLocalSqlWithRes(sql, dict);

            foreach (var line in dbret)
            {
                ret.Add(new SimpleNoteVM(UT.O2S(line[0]), UT.O2S(line[1])
                                         , UT.O2S(line[2]), Convert.ToDateTime(line[3]).ToString("yyyy-MM-dd")));
            }
            return(ret);
        }
예제 #10
0
        public static List <ProbeTestData> GetIthFromAllen(string WaferNum)
        {
            var ret  = new List <ProbeTestData>();
            var sql  = @"select distinct [WaferID],[Xcoord],[Ycoord],[Ith] from [EngrData].[dbo].[Wuxi_WAT_VR_Report] 
                        where [WaferID] = @WaferNum and [Ith] is not null ";
            var dict = new Dictionary <string, string>();

            dict.Add("@WaferNum", WaferNum);
            var dbret = DBUtility.ExeAllenSqlWithRes(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.APVal2 = UT.O2S(line[3]);
                ret.Add(tempvm);
            }
            return(ret);
        }
예제 #11
0
        private static string GetProductFamilyFromAllen(string wafernum)
        {
            var sql = @"select distinct left(pf.productfamilyname,4) from insite.insite.container c with (nolock) 
                        inner join [Insite].[insite].[ProductBase] pb ON pb.[RevOfRcdId] = c.[ProductId]
                        inner join insite.insite.Product p with(nolock) on p.[ProductBaseId] = pb.[ProductBaseId] 
                        inner join insite.insite.ProductFamily pf with(nolock) on p.ProductFamilyID = pf.ProductFamilyID
                        where containername = @wafernum";

            var dict = new Dictionary <string, string>();

            dict.Add("@wafernum", wafernum);

            var dbret = DBUtility.ExeAllenSqlWithRes(sql, dict);

            foreach (var line in dbret)
            {
                return(UT.O2S(line[0]));
            }

            return(string.Empty);
        }
예제 #12
0
        public static ProbeTestData  GetApSizeByWafer(string w, string x, string y)
        {
            var sql  = "select ApSize,APVal1 from ProbeTestData where Wafer=@Wafer and X=@X and Y=@Y";
            var dict = new Dictionary <string, string>();

            dict.Add("@Wafer", w);
            dict.Add("@X", x);
            dict.Add("@Y", y);

            var ret   = new ProbeTestData();
            var dbret = DBUtility.ExeLocalSqlWithRes(sql, dict);

            if (dbret.Count > 0)
            {
                ret.ApSize = UT.O2S(dbret[0][0]);
                ret.APVal1 = UT.O2S(dbret[0][1]);
                ret.X      = x;
                ret.Y      = y;
            }
            return(ret);
        }