示例#1
0
    [WebMethod]    //2013/08/08 Add by Elton for Real Time check Wafer Count & Track Out Lot
    public int checkMassOut(string sLotNo, string sRSC, string sRecipe)
    {
        try
        {
            //sLotNo = "BU4270075";
            //sRSC = "T5-BCOA04";
            //sRecipe = "8003-12CO-5PI41";
            //Call Function only , directly return 1.
            //PubUtil.checkMassOut(sLotNo, sRSC,sRecipe);

            //20170810 new method call for thread
            //spawn out a new thread

            PubUtil.WriteLog("eCIMWebServiceLog", "checkMassOut Web Method", sLotNo, sRSC, "Start!!");
            ThreadProcessor_checkMassOut tp = new ThreadProcessor_checkMassOut(sLotNo, sRSC, sRecipe);

            Thread th = new Thread(new ThreadStart(tp.service));

            //mark it as a non-background thread
            th.IsBackground = false;

            //start
            th.Start();
            PubUtil.WriteLog("eCIMWebServiceLog", "checkMassOut Web Method", sLotNo, sRSC, "Completed.");

            return(1);
        }
        catch (Exception ex)
        {
            PubUtil.WriteLog("Exception", "checkMassOut Web Method", sRSC, sLotNo, "Exception:" + ex.Message);
            return(0);
        }
    }
示例#2
0
    public string eCIMTxn(string type, string value)
    {
        string result = "";

        PubUtil.WriteLog("eCIMWebServiceLog", "eCIMTxn", type, value, "eCIMTxn Start.");
        switch (type)
        {
        case "0001":    //method objective
        {
            string[] aValue = value.Split(',');
            if (aValue.Length < 2)
            {
                return("E0001: Input Data not enought");
            }
            return(PubUtil.Get2DSerialRecordData(aValue[0], aValue[1]));
        }

        case "0002":     //add by Jim on 20181019 for when run lot, edit/upload recipe, check FDC status
        {
            string[] aValue = value.Split(',');
            if (aValue.Length < 4)
            {
                return("E0002: Input Data not enought! (Line,RSC,RCP,Flag)");
            }
            return(PubUtil.GetFDC_Master(aValue[0], aValue[1], aValue[2], aValue[3]));
            //Line,RSC,RCP,true
        }

        default:
            break;
        }

        return(result);
    }
示例#3
0
    [WebMethod]    //2013/05/28 add by Stanley get_Plating_EDC
    public DataTable GetAlignerEdcData(string sRSC, string sType)
    {
        DataTable sValue;

        sValue = PubUtil.GetAlignerEdcData(sRSC, sType);
        return(sValue);
    }
示例#4
0
    public string AMSDML(string SQL, string sRCPGroup)
    {
        string sResult = "";

        PubUtil.WriteLog("EasyFlowLog", "AMSDML", SQL, sRCPGroup, "Start!!");
        try
        {
            System.Data.DataSet           ds = new System.Data.DataSet();
            AMSWebReference.AMSWebService ws = new AMSWebReference.AMSWebService();
            ds = ws.AMSDBQuery2(SQL, "ecimwebservice");
            PubUtil.WriteLog("EasyFlowLog", "AMSDML", "Call AMSDBQuery", SQL, "Complete!!");

            if (sRCPGroup.Equals("True"))
            {//do Recipe Group
                PubUtil.WriteLog("EasyFlowLog", "AMSDML", "Recipe Group = ", sRCPGroup, "Start!!");

                PubUtil.WriteLog("EasyFlowLog", "AMSDML", "Recipe Group = ", sRCPGroup, "Complete!!");
            }
        }
        catch (Exception ex)
        {
            sResult = "";
            PubUtil.WriteLog("Exception", "AMSDML", SQL, sRCPGroup, "Exception:" + ex.Message);
        }
        PubUtil.WriteLog("EasyFlowLog", "AMSDML", SQL, sRCPGroup, "Complete!!" + sResult);
        return(sResult);
    }
示例#5
0
 [WebMethod] //For SWR Mass out test
 public Boolean getIsSWR(string resourceName, String containerName)
 {
     try
     {
         return(PubUtil.getIsSWR(resourceName, containerName));
     }
     catch (Exception)
     {
         return(false);
     }
 }
示例#6
0
 [WebMethod]    //20160808 add by Elton for Log Wafer Start and Wafer End process time
 public string callTesting(string sValue)
 {
     try
     {
         return(PubUtil.getDateSet2Json(sValue));
     }
     catch (Exception)
     {
         return("Fail!!");
     }
 }
示例#7
0
 [WebMethod]    //20160528 add by Elton for Connector Server health checking
 public string HealthChecking(string sLine)
 {
     try
     {
         return(PubUtil.HealthChecking(sLine));
     }
     catch (Exception)
     {
         return("Fail!!");
     }
 }
示例#8
0
 [WebMethod]    //20160428 add by Elton for Purge Big Data by Row Num.
 public int PurgeBigTable(string sTable, string sCondition, int iRowNum)
 {
     try
     {
         PubUtil.PurgeBigTable(sTable, sCondition, iRowNum);
         return(0);
     }
     catch (Exception)
     {
         return(1);
     }
 }
示例#9
0
 [WebMethod]    //2013/01/29 add by Roger getBP_BMBR_Edc
 public string GetBMBREdcData(string sLotNo, string sRSC, string sRecipe)
 {
     try
     {
         string sValue = PubUtil.GetBMBREdcData(sLotNo, sRSC, sRecipe);
         return(sValue);
     }
     catch (Exception)
     {
         return("");
     }
 }
示例#10
0
    [WebMethod]    //20140812 add by Mark for T3 query LOT info by Machine ID 20140815
    public string QueryLotInfoByMchineID(string sMachineID)
    {
        string sResult = "";

        try
        {
            sResult = PubUtil.FindLotInfobyMachineID(sMachineID);
            return(sResult);
        }
        catch (Exception ex)
        {
            sResult = "";
        }
        return(sResult);
    }
示例#11
0
 [WebMethod]      //2012/5/23 add by Elton for Equipment process wafer count
 public string GetProcessWaferCount(string sLotNo, string sRSC, string sRecipe)
 {
     try
     {
         // sLotNo = "BPE4280322";
         //sRecipe = "1072-A3231-06A1";
         //  sRSC = "T1_BP_BSTE001";
         string sValue = PubUtil.GetProcessWaferCount(sLotNo, sRSC, sRecipe);
         return(sValue);
     }
     catch (Exception)
     {
         return("");
     }
 }
示例#12
0
 [WebMethod]    //2013/10/21 Add by Stanley for Real Time Track In Lot
 public int callMassIn(string sLotNo, string sRSC, string sPort)
 {
     try
     {
         //sLotNo = "BP3380206";
         //sRSC = "T1_BP_BPLT004";
         //Call Function only , directly return 1.
         PubUtil.callMassIn(sLotNo, sRSC, sPort);
         return(1);
     }
     catch (Exception)
     {
         return(0);
     }
 }
示例#13
0
 [WebMethod]    //2013/08/2 copy by Roger getBP_BMBR_Edc
 public string GetAhtleteMassOut(string sLotNo, string sRSC, string sRecipe)
 {
     try
     {
         //sLotNo = "BP3380206";
         //sRSC = "T1_BP_BMBR001";
         //sRecipe = "A3524_SAC405_25";
         //        FileName = sRecipe + "-" + sLotID + "." + FileType;
         //A3524_SAC405_25-bp3320288.L
         string sValue = PubUtil.GetProcessWaferCount(sLotNo, sRSC, sRecipe);
         return(sValue);
     }
     catch (Exception)
     {
         return("");
     }
 }
示例#14
0
 [WebMethod]    //2014/06/25 Add by Chuck for T1 SCB
 public int SCB(string sLotNo, string sRSC)
 {
     try
     {
         //sLotNo = "BP4330450";
         //sRSC = "T1_BP_BSCB003";
         //sLotNo = "BP4290565";
         //sRSC = "T1_BP_BSCB003";
         //Call Function only , directly return 1.
         PubUtil.GetProcessWaferCount(sLotNo, sRSC, "");
         return(1);
     }
     catch (Exception)
     {
         return(0);
     }
 }
示例#15
0
 [WebMethod]    //2013/07/11 add by Stanley get_OMI_EDC
 public int Get_TryMax_ProcessEndData(string LotNo, string RSC, string Recipe)
 {
     try
     {
         //string sValue = PubUtil.GetOMIEdcData(sType);
         // LotNo = "BP3260182";//For test
         //LotNo = "BPE3430080";
         // Recipe = "PBO-FORM-12";
         //Recipe = "Oxide-loss";
         int sValue = PubUtil.Get_TryMax_Data(LotNo, RSC, Recipe);
         return(sValue);
     }
     catch (Exception)
     {
         return(0);
     }
 }
示例#16
0
    [WebMethod]    //20101110 add by Elton for Auto EDC process
    public string GetEDCData(int iServiceType, string sPath, string sLotNo, int iReadings, bool bCompare, string sOffSetArith, double dOffSetValue, int iOffSetAfterPoint, string recipeCode)
    {
        try
        {
            System.Data.DataTable dt = PubUtil.GetEDCData(iServiceType, sPath, sLotNo, iReadings, bCompare, sOffSetArith, dOffSetValue, iOffSetAfterPoint, recipeCode);
            System.Data.DataSet   ds = new System.Data.DataSet();

            if (dt != null)
            {
                ds.Tables.Add(dt);
                ds.DataSetName = "AutoEDC";
                System.Xml.XmlDataDocument xdd = new System.Xml.XmlDataDocument(ds);
                return(xdd.InnerXml);
            }
            return(null);
        }
        catch (Exception)
        {
            return(null);
        }
    }
示例#17
0
    [WebMethod]    //2013/08/08 Add by Elton for Real Time update Process Wafer Count by RSC + Port
    public int setWaferProcessCountbyPort(string sRSC, string sPort)
    {
        //try
        //{
        //    //Call Function only , directly return 1.
        //    PubUtil.setWaferProcessCountbyPort(sRSC, sPort);
        //    return 1;
        //}
        //catch (Exception)
        //{
        //    return 0;
        //}

        //Chuck add for fix SQL issue on 20150831
        String sLotNo = "";

        try
        {
            bool isNeedRun = false;
            isNeedRun = PubUtil.isSYSHOLD(sLotNo, sPort, sRSC);

            if (isNeedRun)
            {
                PubUtil.setWaferProcessCountbyPort(sRSC, sPort);
            }
            else
            {
                PubUtil.WriteLog("eCIMWebServiceLog", "setWaferProcessCount", sRSC, sLotNo, "No need to setWaferProcessCountbyPort, because SYS HOLD or Valitation Table is Null");
            }
            return(1);
        }
        catch (Exception)
        {
            return(0);
        }
    }
示例#18
0
    //public static string getMarkingData(string sLotNo, string sRSC, string RunEVN)
    public static string getMarkingData(string sLotNo, string RunEVN)
    {
        string sResult         = string.Empty;
        string tempMarkingData = string.Empty;
        string BinNO           = string.Empty;
        bool   SingleBin       = false;
        Dictionary <string, string> WaferList = new Dictionary <string, string>();

        try
        {
            DataSet ds = new DataSet();
            GetMarkingDataWebService.GetMarkingDataV2 ws = new GetMarkingDataWebService.GetMarkingDataV2();
            //ds = ws.GetMarkingDataByInSiteMO_V2(sLotNo, RunEVN);
            ds = ws.GetMarkingDataByInSiteLot_Generator(sLotNo, RunEVN);
            if (null == ds || ds.Tables.Count != 1)
            {
                throw new Exception();
            }
            else if (ds.Tables[0].Rows.Count > 0)
            {
                if (ds.Tables[0].Rows[0]["BinNo"].ToString().Trim().Equals(string.Empty))
                {
                    SingleBin = true;
                }

                //if (sRSC.Substring(0, 2).Equals("DP") && SingleBin)
                //{
                //    WaferList = GetWaferListbyUstLotId(sLotNo);
                //    if (WaferList.Count < 0) throw new Exception();
                //}

                //if (WaferList.Count > 0)
                //{
                //    foreach (KeyValuePair<string, string> kvp in WaferList)
                //    {
                //        sResult += kvp.Value + ":" + tempMarkingData + "|";
                //    }
                //}
                //else
                //{
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    if (!row["message"].ToString().Trim().ToUpper().Equals("SUCCESS"))
                    { //mark add 20150731 for Marking Data enhance
                        string errormessage = row["message"].ToString();
                        throw new Exception(errormessage);
                    }
                    for (int i = 1; i <= 10; i++)
                    {
                        tempMarkingData += row["MarkingLine" + i + "Top"] + ";";
                    }
                    if (SingleBin)
                    {
                        sResult += "BIN1:" + tempMarkingData.Substring(0, tempMarkingData.Length - 1);
                    }
                    else
                    {
                        BinNO = Convert.ToInt16(row["BinNo"].ToString().Replace("BIN", "")).ToString();
                        //BinNO = String.Format("{0:00}", Convert.ToInt16(row["BinNo"]));
                        if (!BinNO.Equals(string.Empty))
                        {
                            BinNO = "_BIN" + BinNO;
                        }
                        sResult += row["WaferID"] + BinNO + ":" + tempMarkingData.Substring(0, tempMarkingData.Length - 1) + "|";
                        BinNO    = string.Empty;
                    }
                    tempMarkingData = string.Empty;
                }
                if (SingleBin)
                {
                    sResult = "N@" + sResult;
                }
                else
                {
                    sResult = "Y@" + sResult.Substring(0, sResult.Length - 1);
                }
                //}
                PubUtil.WriteLog("GetMarkingData", sLotNo, sResult, string.Empty, string.Empty);
                SingleBin = false;
                //WaferList.Clear();
            }
        }
        catch (Exception ex)
        {
            PubUtil.WriteLog("getMarkingData", "", "", "", ex.Message);
            sResult = "";
        }
        return(sResult);
    }
示例#19
0
    [WebMethod]    //2013/08/08 Add by Elton for Real Time update Process Wafer Count by Lot + RSC
    public int setWaferProcessCount(string sLotNo, string sRSC)
    {
        try
        {
            //sLotNo = "BP4330450";
            //sRSC = "T1_BP_BSCB003";
            //Call Function only , directly return 1.
            //PubUtil.setWaferProcessCount(sLotNo, sRSC);
            //return 1;

            //bool isNeedRun = false;
            //isNeedRun = PubUtil.isExistValitationTable(sLotNo, sRSC);

            //if (isNeedRun)
            //{
            //    PubUtil.setWaferProcessCount(sLotNo, sRSC);
            //}
            //else {
            //    PubUtil.WriteLog("eCIMWebServiceLog", "setWaferProcessCount", sRSC, sLotNo, "No need to setWaferProcessCount");
            //}

            //20161110 add by Elton for New AMS Wafer Start/End Txn Handle
            string sNewLotNo = sLotNo;
            if (sLotNo.IndexOf('-') > -1)
            {
                sLotNo = sLotNo.Substring(0, sLotNo.IndexOf('-'));

                // If Wafer Start, no need to call setWaferProcessCount
                if (sNewLotNo.Substring(sNewLotNo.Length - 2).Equals("-1"))
                {
                    //PubUtil.setAmkLotWfrProc(sNewLotNo, sRSC);//20171024 mark by Elton
                    //20171024 change new method call to thread
                    try
                    {
                        PubUtil.WriteLog("eCIMWebServiceLog", "setAmkLotWfrProc-1 Web Method", sNewLotNo, sRSC, "Start!!");
                        ThreadProcessor_setAmkLotWfrProc tp = new ThreadProcessor_setAmkLotWfrProc(sNewLotNo, sRSC);

                        Thread th = new Thread(new ThreadStart(tp.service));

                        //mark it as a non-background thread
                        th.IsBackground = false;
                        //start
                        th.Start();
                        PubUtil.WriteLog("eCIMWebServiceLog", "setAmkLotWfrProc-1 Web Method", sNewLotNo, sRSC, "Completed.");
                    }
                    catch (Exception ex)
                    {
                        PubUtil.WriteLog("Exception", "setAmkLotWfrProc-1 Web Method", sRSC, sNewLotNo, "Exception:" + ex.Message);
                        return(0);
                    }
                    return(1);
                }
            }

            //bool isNeedRun_1 = false;
            //bool isNeedRun_2 = false;
            //String sPort = "";

            //isNeedRun_1 = PubUtil.isExistValitationTable(sLotNo, sRSC);

            //if (isNeedRun_1)
            //{
            //    isNeedRun_2 = PubUtil.isSYSHOLD(sLotNo, sPort, sRSC);
            //    if (isNeedRun_2)
            //    {
            //PubUtil.setWaferProcessCount(sLotNo, sRSC);//20171024 mark by Elton
            //20171024 change new method call to thread
            try
            {
                PubUtil.WriteLog("eCIMWebServiceLog", "setWaferProcessCount Web Method", sLotNo, sRSC, "Start!!");
                ThreadProcessor_setWaferProcessCount tp = new ThreadProcessor_setWaferProcessCount(sLotNo, sRSC);

                Thread th = new Thread(new ThreadStart(tp.service));

                //mark it as a non-background thread
                th.IsBackground = false;
                //start
                th.Start();
                PubUtil.WriteLog("eCIMWebServiceLog", "setWaferProcessCount Web Method", sLotNo, sRSC, "Completed.");
            }
            catch (Exception ex)
            {
                PubUtil.WriteLog("Exception", "setWaferProcessCount Web Method", sRSC, sLotNo, "Exception:" + ex.Message);
                return(0);
            }
            //    }
            //    else
            //    {
            //        PubUtil.WriteLog("eCIMWebServiceLog", "setWaferProcessCount", sRSC, sLotNo, "No need to setWaferProcessCount, because SYS HOLD");
            //        return 1;
            //    }
            //}
            //else
            //{
            //    PubUtil.WriteLog("eCIMWebServiceLog", "setWaferProcessCount", sRSC, sLotNo, "No need to setWaferProcessCount");
            //    return 1;
            //}

            //20161110 add by Elton for New AMS Wafer Start/End Txn Handle
            if (sNewLotNo.IndexOf('-') > -1)
            {
                //PubUtil.setAmkLotWfrProc(sNewLotNo, sRSC);//20171024 mark by Elton
                //20171024 change new method call to thread
                try
                {
                    PubUtil.WriteLog("eCIMWebServiceLog", "setAmkLotWfrProc-2 Web Method", sNewLotNo, sRSC, "Start!!");
                    ThreadProcessor_setAmkLotWfrProc tp = new ThreadProcessor_setAmkLotWfrProc(sNewLotNo, sRSC);

                    Thread th = new Thread(new ThreadStart(tp.service));

                    //mark it as a non-background thread
                    th.IsBackground = false;
                    //start
                    th.Start();
                    PubUtil.WriteLog("eCIMWebServiceLog", "setAmkLotWfrProc-2 Web Method", sNewLotNo, sRSC, "Completed.");
                }
                catch (Exception ex)
                {
                    PubUtil.WriteLog("Exception", "setAmkLotWfrProc-2 Web Method", sRSC, sNewLotNo, "Exception:" + ex.Message);
                    return(0);
                }
            }

            return(1);
        }
        catch (Exception)
        {
            return(0);
        }
    }
示例#20
0
 public void service()
 {
     PubUtil.WriteLog("eCIMWebServiceLog", "setAmkLotWfrProc ThreadProcessor", _LotNo, _RSC, "Start!!");
     PubUtil.setAmkLotWfrProc(_LotNo, _RSC);
     PubUtil.WriteLog("eCIMWebServiceLog", "setAmkLotWfrProc ThreadProcessor", _LotNo, _RSC, "Completed.");
 }
示例#21
0
 public void service()
 {
     PubUtil.WriteLog("eCIMWebServiceLog", "GetProcessWaferCount ThreadProcessor", _LotNo, _RSC, "Start!!");
     PubUtil.GetProcessWaferCount(_LotNo, _RSC, _Recipe);
     PubUtil.WriteLog("eCIMWebServiceLog", "GetProcessWaferCount ThreadProcessor", _LotNo, _RSC, "Completed.");
 }
示例#22
0
 public void service()
 {
     PubUtil.WriteLog("eCIMWebServiceLog", "checkMassOut ThreadProcessor", _LotNo, _RSC, "Start!!");
     PubUtil.checkMassOut(_LotNo, _RSC, _Recipe);
     PubUtil.WriteLog("eCIMWebServiceLog", "checkMassOut ThreadProcessor", _LotNo, _RSC, "Completed.");
 }