[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); } }
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); }
[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); }
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); }
[WebMethod] //For SWR Mass out test public Boolean getIsSWR(string resourceName, String containerName) { try { return(PubUtil.getIsSWR(resourceName, containerName)); } catch (Exception) { return(false); } }
[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!!"); } }
[WebMethod] //20160528 add by Elton for Connector Server health checking public string HealthChecking(string sLine) { try { return(PubUtil.HealthChecking(sLine)); } catch (Exception) { return("Fail!!"); } }
[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); } }
[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(""); } }
[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); }
[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(""); } }
[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); } }
[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(""); } }
[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); } }
[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); } }
[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); } }
[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); } }
//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); }
[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); } }
public void service() { PubUtil.WriteLog("eCIMWebServiceLog", "setAmkLotWfrProc ThreadProcessor", _LotNo, _RSC, "Start!!"); PubUtil.setAmkLotWfrProc(_LotNo, _RSC); PubUtil.WriteLog("eCIMWebServiceLog", "setAmkLotWfrProc ThreadProcessor", _LotNo, _RSC, "Completed."); }
public void service() { PubUtil.WriteLog("eCIMWebServiceLog", "GetProcessWaferCount ThreadProcessor", _LotNo, _RSC, "Start!!"); PubUtil.GetProcessWaferCount(_LotNo, _RSC, _Recipe); PubUtil.WriteLog("eCIMWebServiceLog", "GetProcessWaferCount ThreadProcessor", _LotNo, _RSC, "Completed."); }
public void service() { PubUtil.WriteLog("eCIMWebServiceLog", "checkMassOut ThreadProcessor", _LotNo, _RSC, "Start!!"); PubUtil.checkMassOut(_LotNo, _RSC, _Recipe); PubUtil.WriteLog("eCIMWebServiceLog", "checkMassOut ThreadProcessor", _LotNo, _RSC, "Completed."); }