private object[] GetErrorInfor(AOIData aoiData) { string[] errorList = aoiData.ERRORCODES.Split('|'); ArrayList ecg2ecList = new ArrayList(); string defaultECG = "DefaultECGCode"; string defaultEC = "DefaultECCode"; /* * for (int i=0 ; i<errorList.Length; i++) * { * TSErrorCode2Location tsinfo = new TSErrorCode2Location(); * if(errorList[i].Split(',')[0].Trim() == string.Empty)continue; * tsinfo.ErrorLocation = errorList[i].Split(',')[0]; * object[] ecg2ec = this.QueryECG2EC(errorList[i].Split(',')[2]); * if(ecg2ec != null && ecg2ec.Length>0) * { * tsinfo.ErrorCode = ((ErrorCodeGroup2ErrorCode)ecg2ec[0]).ErrorCode; * tsinfo.ErrorCodeGroup = ((ErrorCodeGroup2ErrorCode)ecg2ec[0]).ErrorCodeGroup; * } * else * { * tsinfo.ErrorCode = defaultEC; * tsinfo.ErrorCodeGroup = defaultECG; * } * tsinfo.ErrorLocation = string.Empty; * tsinfo.AB = "A"; * * ecg2ecList.Add(tsinfo); * } * * return (TSErrorCode2Location[])ecg2ecList.ToArray(typeof(TSErrorCode2Location)); */ for (int i = 0; i < errorList.Length; i++) { ErrorCodeGroup2ErrorCode tsinfo = new ErrorCodeGroup2ErrorCode(); object[] ecg2ec = this.QueryECG2EC(errorList[i]); if (ecg2ec != null && ecg2ec.Length > 0) { tsinfo.ErrorCode = ((ErrorCodeGroup2ErrorCode)ecg2ec[0]).ErrorCode; tsinfo.ErrorCodeGroup = ((ErrorCodeGroup2ErrorCode)ecg2ec[0]).ErrorCodeGroup; } else { tsinfo.ErrorCode = defaultEC; tsinfo.ErrorCodeGroup = defaultECG; } ecg2ecList.Add(tsinfo); } return((ErrorCodeGroup2ErrorCode[])ecg2ecList.ToArray(typeof(ErrorCodeGroup2ErrorCode))); }
/// <summary> /// This method generates <see cref="AOIData" /> from each /// row of the import file, which has coordinates of simple rectangles in it. /// </summary> private static void GenerateAOIFromRectangles() { // Clear existing values AOIDataList.Clear(); // Use the decimal separator specified. NumberFormatInfo nfi = CultureInfo.GetCultureInfo("en-US").NumberFormat; if (asciiSettings.DecimalSeparatorCharacter == ',') { nfi = CultureInfo.GetCultureInfo("de-DE").NumberFormat; } // Enumerate the columns in the import file and assign their title. var columnsImportNum = new Dictionary <string, int>(); for (int i = 0; i < asciiSettings.ColumnHeaders.Count; i++) { columnsImportNum.Add(asciiSettings.ColumnHeaders[i], i); } // Get the assigned titles of the import columns for Ogamas columns string importColumnTitleForTrialID = asciiSettings.ColumnAssignments["TrialID"]; string importColumnTitleForSlideNr = asciiSettings.ColumnAssignments["SlideNr"]; string importColumnTitleForShapeName = asciiSettings.ColumnAssignments["NameOfShape"]; string importColumnTitleForTopLeftCornerX = asciiSettings.ColumnAssignments["Left top corner X"]; string importColumnTitleForTopLeftCornerY = asciiSettings.ColumnAssignments["Left top corner Y"]; string importColumnTitleForBottomRightCornerX = asciiSettings.ColumnAssignments["Right bottom corner X"]; string importColumnTitleForBottomRightCornerY = asciiSettings.ColumnAssignments["Right bottom corner Y"]; string importColumnTitleForShapeGroup = asciiSettings.ColumnAssignments["ShapeGroup"]; // Convert the names into column counters. int numTrialIDImportColumn = importColumnTitleForTrialID == string.Empty ? -1 : columnsImportNum[importColumnTitleForTrialID]; int numSlideNrImportColumn = importColumnTitleForSlideNr == string.Empty ? -1 : columnsImportNum[importColumnTitleForSlideNr]; int numShapeNameImportColumn = importColumnTitleForShapeName == string.Empty ? -1 : columnsImportNum[importColumnTitleForShapeName]; int numTopLeftCornerXImportColumn = importColumnTitleForTopLeftCornerX == string.Empty ? -1 : columnsImportNum[importColumnTitleForTopLeftCornerX]; int numTopLeftCornerYImportColumn = importColumnTitleForTopLeftCornerY == string.Empty ? -1 : columnsImportNum[importColumnTitleForTopLeftCornerY]; int numBottomRightCornerXImportColumn = importColumnTitleForBottomRightCornerX == string.Empty ? -1 : columnsImportNum[importColumnTitleForBottomRightCornerX]; int numBottomRightCornerYImportColumn = importColumnTitleForBottomRightCornerY == string.Empty ? -1 : columnsImportNum[importColumnTitleForBottomRightCornerY]; int numShapeGroupImportColumn = importColumnTitleForShapeGroup == string.Empty ? -1 : columnsImportNum[importColumnTitleForShapeGroup]; foreach (string[] items in asciiSettings.Rows) { try { var boundingRect = new RectangleF(); // Calc bounding Rect from X1,X2,Y1,Y2 as given string x1 = "0"; string y1 = "0"; string x2 = "0"; string y2 = "0"; // Create Ogama columns placeholder var newAOIData = new AOIData(); if (numTrialIDImportColumn != -1) { newAOIData.TrialID = Convert.ToInt32(items[numTrialIDImportColumn], nfi); } newAOIData.SlideNr = numSlideNrImportColumn != -1 ? Convert.ToInt32(items[numSlideNrImportColumn], nfi) : 0; if (numShapeNameImportColumn != -1) { newAOIData.ShapeName = items[numShapeNameImportColumn]; } newAOIData.ShapeType = VGShapeType.Rectangle; newAOIData.ShapeNumPts = 4; if (numTopLeftCornerXImportColumn != -1) { x1 = items[numTopLeftCornerXImportColumn]; } if (numTopLeftCornerYImportColumn != -1) { y1 = items[numTopLeftCornerYImportColumn]; } if (numBottomRightCornerXImportColumn != -1) { x2 = items[numBottomRightCornerXImportColumn]; } if (numBottomRightCornerYImportColumn != -1) { y2 = items[numBottomRightCornerYImportColumn]; } boundingRect.X = Convert.ToSingle(x1, nfi); boundingRect.Y = Convert.ToSingle(y1, nfi); boundingRect.Width = Convert.ToSingle(x2, nfi) - boundingRect.X; boundingRect.Height = Convert.ToSingle(y2, nfi) - boundingRect.Y; string pts = "P1:(" + string.Format("{0:F1}", boundingRect.Left) + ";" + string.Format("{0:F1}", boundingRect.Top) + ") P2:(" + string.Format("{0:F1}", boundingRect.Right) + ";" + string.Format("{0:F1}", boundingRect.Top) + ") P3:(" + string.Format("{0:F1}", boundingRect.Right) + ";" + string.Format("{0:F1}", boundingRect.Bottom) + ") P4:(" + string.Format("{0:F1}", boundingRect.Left) + ";" + string.Format("{0:F1}", boundingRect.Bottom) + ")"; newAOIData.ShapePts = pts; if (numShapeGroupImportColumn != -1) { newAOIData.Group = items[numShapeGroupImportColumn]; } if (string.IsNullOrEmpty(newAOIData.Group)) { newAOIData.Group = " "; } // Add new Element to AOITable AOIDataList.Add(newAOIData); } catch (Exception ex) { ExceptionMethods.HandleException(ex); } } }
/////////////////////////////////////////////////////////////////////////////// // Eventhandler // /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // Eventhandler for UI, Menu, Buttons, Toolbars etc. // /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // Eventhandler for Custom Defined Events // /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // Methods and Eventhandling for Background tasks // /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // Inherited methods // /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // Methods for doing main class job // /////////////////////////////////////////////////////////////////////////////// #region Methods /// <summary> /// This method generates <see cref="AOIData" /> from each /// row of the import file, that has to be on OGAMA import format. /// </summary> private static void GenerateAOIFromOgamaTable() { // Clear existing values AOIDataList.Clear(); // Use the decimal separator specified. NumberFormatInfo nfi = CultureInfo.GetCultureInfo("en-US").NumberFormat; if (asciiSettings.DecimalSeparatorCharacter == ',') { nfi = CultureInfo.GetCultureInfo("de-DE").NumberFormat; } // Enumerate the columns in the import file and assign their title. var columnsImportNum = new Dictionary <string, int>(); for (int i = 0; i < asciiSettings.ColumnHeaders.Count; i++) { columnsImportNum.Add(asciiSettings.ColumnHeaders[i], i); } // Get the assigned titles of the import columns for Ogamas columns string importColumnTitleForTrialID = asciiSettings.ColumnAssignments["TrialID"]; string importColumnTitleForSlideNr = asciiSettings.ColumnAssignments["SlideNr"]; string importColumnTitleForShapeName = asciiSettings.ColumnAssignments["ShapeName"]; string importColumnTitleForShapeType = asciiSettings.ColumnAssignments["ShapeType"]; string importColumnTitleForShapeNumPts = asciiSettings.ColumnAssignments["ShapeNumPts"]; string importColumnTitleForShapePts = asciiSettings.ColumnAssignments["ShapePts"]; string importColumnTitleForShapeGroup = asciiSettings.ColumnAssignments["ShapeGroup"]; // Convert the names into column counters. int numTrialIDImportColumn = importColumnTitleForTrialID == string.Empty ? -1 : columnsImportNum[importColumnTitleForTrialID]; int numSlideNrImportColumn = importColumnTitleForSlideNr == string.Empty ? -1 : columnsImportNum[importColumnTitleForSlideNr]; int numShapeNameImportColumn = importColumnTitleForShapeName == string.Empty ? -1 : columnsImportNum[importColumnTitleForShapeName]; int numShapeTypeImportColumn = importColumnTitleForShapeType == string.Empty ? -1 : columnsImportNum[importColumnTitleForShapeType]; int numShapeNumPtsImportColumn = importColumnTitleForShapeNumPts == string.Empty ? -1 : columnsImportNum[importColumnTitleForShapeNumPts]; int numShapePtsImportColumn = importColumnTitleForShapePts == string.Empty ? -1 : columnsImportNum[importColumnTitleForShapePts]; int numShapeGroupImportColumn = importColumnTitleForShapeGroup == string.Empty ? -1 : columnsImportNum[importColumnTitleForShapeGroup]; foreach (string[] items in asciiSettings.Rows) { try { // Create Ogama columns placeholder var newAOIData = new AOIData(); if (numTrialIDImportColumn != -1) { newAOIData.TrialID = Convert.ToInt32(items[numTrialIDImportColumn], nfi); } newAOIData.SlideNr = numSlideNrImportColumn != -1 ? Convert.ToInt32(items[numSlideNrImportColumn], nfi) : 0; if (numShapeNameImportColumn != -1) { newAOIData.ShapeName = items[numShapeNameImportColumn]; } if (numShapeTypeImportColumn != -1) { newAOIData.ShapeType = (VGShapeType)Enum.Parse(typeof(VGShapeType), items[numShapeTypeImportColumn]); } if (numShapeNumPtsImportColumn != -1) { newAOIData.ShapeNumPts = Convert.ToInt32(items[numShapeNumPtsImportColumn], nfi); } if (numShapePtsImportColumn != -1) { newAOIData.ShapePts = items[numShapePtsImportColumn]; } if (numShapeGroupImportColumn != -1) { newAOIData.Group = items[numShapeGroupImportColumn]; } if (string.IsNullOrEmpty(newAOIData.Group)) { newAOIData.Group = " "; } AOIDataList.Add(newAOIData); } catch (Exception ex) { ExceptionMethods.HandleException(ex); } } }
public UserControl.Messages GoodCollect(object[] parserObjs) { UserControl.Messages returnMsg = new UserControl.Messages(); try { foreach (object obj in parserObjs) { AOIData aoiData = obj as AOIData; int errorCount = 0; try { errorCount = int.Parse(aoiData.ERRORCOUNT); } catch {} if (errorCount == 0) { ActionOnLineHelper onLine = new ActionOnLineHelper(this._domainDataProvider); // ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)_domainDataProvider).PersistBroker.AutoCloseConnection = false; // ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)_domainDataProvider).PersistBroker.OpenConnection(); Messages messages = onLine.GetIDInfo(aoiData.RCARD.Trim().ToUpper()); try { ProductInfo product = (ProductInfo)messages.GetData().Values[0]; // Added by Icyer 2006/08/03 // 只有当Simulation中没有数据时,才认为是第一次经过AOI站,才执行SMT上料 bool bExecuteSMTLoadItem = (product.LastSimulation == null); // Added end this._domainDataProvider.BeginTransaction(); string goodResult = string.Empty; //归属工单采集 //Laws Lu,2006/08/10 归属工单时需要检查是否符合首字符串和长度检查 string moCode = this.getMOCode(aoiData.RCARD.Trim().ToUpper()); if (System.Configuration.ConfigurationSettings.AppSettings["MOPREFIXSTRING"] != null) { string moPrefix = System.Configuration.ConfigurationSettings.AppSettings["MOPREFIXSTRING"].Trim(); //首字符串检查 if (moCode.Length < moPrefix.Length || moCode.Substring(0, moPrefix.Length) != moPrefix) { returnMsg.Add(new UserControl.Message(MessageType.Error , "$CS_Before_Card_FLetter_NotCompare $CS_Param_ID: " + aoiData.RCARD.Trim().ToUpper())); } } if (System.Configuration.ConfigurationSettings.AppSettings["SNLENGTH"] != null) { try { int snLength = int.Parse(System.Configuration.ConfigurationSettings.AppSettings["SNLENGTH"].Trim()); //长度检查 if (aoiData.RCARD.Trim().ToUpper().Length != snLength) { returnMsg.Add(new UserControl.Message(MessageType.Error, "$CS_Before_Card_Length_FLetter_NotCompare $CS_Param_ID: " + aoiData.RCARD.Trim().ToUpper())); } } catch (Exception ex) { returnMsg.Add(new UserControl.Message(ex)); } } if (returnMsg.IsSuccess()) { IAction dataCollectMO = new ActionFactory(this._domainDataProvider).CreateAction(ActionType.DataCollectAction_GoMO); messages.AddMessages(((IActionWithStatus)dataCollectMO).Execute( new GoToMOActionEventArgs(ActionType.DataCollectAction_GoMO, aoiData.RCARD.Trim().ToUpper(), aoiData.USER.Trim().ToUpper(), AgentHelp.getResCode(aoiData.RESOURCE.Trim().ToUpper()), product, moCode))); if (messages.IsSuccess()) { returnMsg.Add(new UserControl.Message(UserControl.MessageType.Success, string.Format("{0} $CS_GOMO_CollectSuccess", aoiData.RCARD.ToUpper()))); } else { returnMsg.Add(new UserControl.Message(UserControl.MessageType.Error, AgentHelp.GetErrorMessage(messages))); } } messages.ClearMessages(); //GOOD采集 messages = onLine.GetIDInfo(aoiData.RCARD.Trim().ToUpper()); product = (ProductInfo)messages.GetData().Values[0]; BenQGuru.eMES.DataCollect.DataCollectFacade dcFacade = new BenQGuru.eMES.DataCollect.DataCollectFacade(this._domainDataProvider); goodResult = dcFacade.ActionCollectGood(aoiData.RCARD.ToUpper(), aoiData.USER.ToUpper(), AgentHelp.getResCode(aoiData.RESOURCE.ToUpper())); // Added by Icyer 2006/08/03 // SMT上料 if (returnMsg.IsSuccess() == true && bExecuteSMTLoadItem == true) { returnMsg.AddMessages(this.SMTLoadItem(aoiData.RCARD.ToUpper(), AgentHelp.getResCode(aoiData.RESOURCE.ToUpper()), aoiData.USER.ToUpper())); } // Added end if (goodResult == "OK") { this._domainDataProvider.CommitTransaction(); returnMsg.Add(new UserControl.Message(UserControl.MessageType.Success, string.Format("{0} $CS_GOOD_CollectSuccess", aoiData.RCARD.ToUpper()))); returnMsg.Add(new UserControl.Message(" ")); BenQGuru.eMES.Common.Log.Info(string.Format("{0} $CS_GOOD_CollectSuccess: {1}", aoiData.RCARD.Trim().ToUpper(), "OK")); messages.Add(new UserControl.Message(MessageType.Success, string.Format("$CS_GOODSUCCESS,$CS_Param_ID:{0}", aoiData.RCARD.ToUpper()))); } else { this._domainDataProvider.RollbackTransaction(); string errorMsg = string.Format("{0} $CS_GOOD_CollectFail : {1}", aoiData.RCARD.Trim().ToUpper(), goodResult); returnMsg.Add(new UserControl.Message(UserControl.MessageType.Error, errorMsg)); returnMsg.Add(new UserControl.Message(" ")); BenQGuru.eMES.Common.Log.Info(errorMsg); } } catch (Exception ex) { this._domainDataProvider.RollbackTransaction(); BenQGuru.eMES.Common.Log.Info(AgentHelp.GetErrorMessage(messages), ex); } finally { // ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)_domainDataProvider).PersistBroker.CloseConnection(); // ((BenQGuru.eMES.Common.DomainDataProvider.SQLDomainDataProvider)_domainDataProvider).PersistBroker.AutoCloseConnection = true; } } } } catch {} return(returnMsg); }