private void timer_Tick(object sender, EventArgs e) { string strProcedureName = string.Format( "{0}.{1}", className, MethodBase.GetCurrentMethod().Name); timer.Enabled = false; try { string barCode = ""; // 从条码池中获取一条待处理的在产品条码 lstBarCodes.Invoke( new EventHandler( delegate { if (lstBarCodes.Items.Count > 0) { object item = lstBarCodes.Items[0]; barCode = lstBarCodes.Items[0].ToString(); lstBarCodes.Items.Remove(item); } })); string[] splitString = barCode.Split('|'); if (splitString.Length <= 1) { return; } foreach (ScannerView view in scannerViews) { if (view.PortName == splitString[0]) { view.BarCode = splitString[1]; grdvSerialPortScanners.BestFitColumns(); if (Options.SelectStation == null || Options.SelectProduct == null) { WriteToScreenLog( view.BarCode, "", "", -1, "当前站点没有配置产品流程和或工位"); return; } WriteLog.Instance.WriteBeginSplitter(strProcedureName); try { int errCode = 0; string errText = ""; WIPBarCodeInfo barcodeInfo = new WIPBarCodeInfo(); #region 获取条码信息 IRAPMESClient.Instance.ufn_GetInfo_WIPBarcode( IRAPUser.Instance.CommunityID, view.BarCode, Options.SelectProduct.T120LeafID, Options.SelectStation.T107LeafID, ref barcodeInfo, out errCode, out errText); WriteLog.Instance.Write( string.Format("({0}){1}", errCode, errText), strProcedureName); if (errCode != 0) { WriteToScreenLog( view.BarCode, "", "", errCode, errText); return; } #endregion #region 根据条码信息中的条码状态和路由状态,进行生产记载 switch (barcodeInfo.BarcodeStatus) { case 0: switch (barcodeInfo.RoutingStatus) { case 1: break; default: WriteToScreenLog( view.BarCode, "", "", barcodeInfo.RoutingStatus, barcodeInfo.RoutingStatusStr); return; } break; case 1: switch (barcodeInfo.RoutingStatus) { case 1: // 自动切换工艺流程 ProductViaStation product = AvailableProducts.Instance.GetProductWithLeafID(barcodeInfo.ProcessLeaf); if (product == null) { WriteToScreenLog( view.BarCode, "", barcodeInfo.SerialNumber, -1, "该条码的在产品生产流程不在当前工位上"); return; } else { CurrentOptions.Instance.OptionTwo = product; Options.RefreshOptionTwo(product.T102LeafID); } break; default: WriteToScreenLog( view.BarCode, "", "", barcodeInfo.BarcodeStatus, barcodeInfo.BarcodeStatusStr); return; } break; case 7: return; default: WriteToScreenLog( view.BarCode, "", "", barcodeInfo.BarcodeStatus, barcodeInfo.BarcodeStatusStr); return; } long transactNo = 0; long factID = 0; // 申请交易号 transactNo = IRAPUTSClient.Instance.mfn_GetTransactNo( IRAPUser.Instance.CommunityID, 1, IRAPUser.Instance.SysLogID, "14"); // 申请事实编号 factID = IRAPUTSClient.Instance.mfn_GetFactID( IRAPUser.Instance.CommunityID, barcodeInfo.NumOfSubPCBs, IRAPUser.Instance.SysLogID, "0"); IRAPMESClient.Instance.usp_ManufactureRecord( IRAPUser.Instance.CommunityID, transactNo, factID, Options.SelectProduct.T120LeafID, Options.SelectStation.T107LeafID, view.BarCode, barcodeInfo.SerialNumber, IRAPUser.Instance.SysLogID, out errCode, out errText); WriteToScreenLog( view.BarCode, "", barcodeInfo.SerialNumber, errCode, errText); #endregion } catch (Exception error) { WriteLog.Instance.Write(error.Message, strProcedureName); WriteToScreenLog( view.BarCode, "", "", -1, error.Message); } finally { WriteLog.Instance.WriteEndSplitter(strProcedureName); } } } } finally { timer.Enabled = true; } }
public IRAPJsonResult ufn_GetInfo_WIPBarcode( int communityID, string barcode, int processLeaf, int workUnitLeaf, out int errCode, out string errText) { string strProcedureName = string.Format( "{0}.{1}", className, MethodBase.GetCurrentMethod().Name); WriteLog.Instance.WriteBeginSplitter(strProcedureName); try { WIPBarCodeInfo data = new WIPBarCodeInfo(); #region 创建数据库调用参数组,并赋值 IList <IDataParameter> paramList = new List <IDataParameter>(); paramList.Add(new IRAPProcParameter("@CommunityID", DbType.Int32, communityID)); paramList.Add(new IRAPProcParameter("@Barcode", DbType.String, barcode)); paramList.Add(new IRAPProcParameter("@ProcessLeaf", DbType.Int32, processLeaf)); paramList.Add(new IRAPProcParameter("@WorkUnitLeaf", DbType.Int32, workUnitLeaf)); WriteLog.Instance.Write( string.Format( "调用函数 IRAPMES..ufn_GetInfo_WIPBarcode," + "参数:CommunityID={0}|Barcode={1}|ProcessLeaf={2}|WorkUnitLeaf={3}", communityID, barcode, processLeaf, workUnitLeaf), strProcedureName); #endregion #region 执行数据库函数或存储过程 try { using (IRAPSQLConnection conn = new IRAPSQLConnection()) { string strSQL = "SELECT * FROM IRAPMES..ufn_GetInfo_WIPBarcode(" + "@CommunityID, @Barcode, @ProcessLeaf, @WorkUnitLeaf)"; IList <WIPBarCodeInfo> lstDatas = conn.CallTableFunc <WIPBarCodeInfo>(strSQL, paramList); if (lstDatas.Count > 0) { data = lstDatas[0].Clone(); errCode = 0; errText = string.Format("调用成功!共获得 {0} 条记录", lstDatas.Count); } else { errCode = 99001; errText = string.Format("没有[{0}]的在制品信息", barcode); } WriteLog.Instance.Write(errText, strProcedureName); } } catch (Exception error) { errCode = 99000; errText = string.Format("调用 IRAPMES..ufn_GetInfo_WIPBarcode 函数发生异常:{0}", error.Message); WriteLog.Instance.Write(errText, strProcedureName); WriteLog.Instance.Write(error.StackTrace, strProcedureName); } #endregion return(Json(data)); } finally { WriteLog.Instance.WriteEndSplitter(strProcedureName); } }