/// <summary> /// Register remoting object /// </summary> /// <returns>bool</returns> public static bool RegisterRemoteObject() { try { if (RemotingConfiguration.CustomErrorsMode != CustomErrorsModes.Off) { RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.Off; } //RemotingHelper.RegisterRemoteObjectViaXmlConfig(); f = new ServerObjFactory(); RemotingServices.Marshal(f, typeof(IServerObjFactory).FullName); n = new Notifier(); RemotingServices.Marshal(n, typeof(INotifier).FullName); return(true); } catch (Exception ex) { LogService.LogError("Register remoting server object exception : " + ex.ToString()); } return(false); }
/// <summary> /// 同步过账 /// </summary> public bool SynSAP(string ZMBLNR, string SYNMAN, out string returnStr) { returnStr = String.Empty; string sql = String.Format(@"SELECT ZMBLNR, WERKS, ZMMTYP, AUFNR FROM AWMS_WH_ENTRY WHERE ZMBLNR = '{0}'", ZMBLNR.PreventSQLInjection()); DataSet dsHead = db.ExecuteDataSet(CommandType.Text, sql); DataTable dtHead = dsHead.Tables[0]; DataRow drHead = dtHead.Rows[0]; string WERKS = drHead["WERKS"].ToString(); string ZMMTYP = drHead["ZMMTYP"].ToString(); string AUFNR = drHead["AUFNR"].ToString(); ServerObjFactory factory = new ServerObjFactory(); IRFCEngine rfcEngine = factory.Get <IRFCEngine>(); sql = String.Format(@"SELECT ZMBLNR, ZEILE, BWART, MATNR, LGORT, MENGE, CHARG, XP001 AS CHR01, XP002 AS CHR02, XP003 AS CHR03, XP004 AS CHR04, XP005 AS CHR05, XP006 AS CHR06, XP007 AS CHR07, XP008 AS CHR08, XP009 AS CHR09, XP010 AS CHR10, XP011 AS CHR11, XP012 AS CHR12 FROM AWMS_WH_ENTRY_DETAIL WHERE ZMBLNR = '{0}' AND ITEMSTATUS = '正常' ORDER BY ZEILE", ZMBLNR.PreventSQLInjection()); DataSet dsParams = db.ExecuteDataSet(CommandType.Text, sql); dsParams.Tables[0].TableName = "MSEGITEM"; //字段 dsParams.ExtendedProperties.Add("ZMBLNR", ZMBLNR); dsParams.ExtendedProperties.Add("WERKS", WERKS); dsParams.ExtendedProperties.Add("ZMMTYP", ZMMTYP); dsParams.ExtendedProperties.Add("AUFNR", AUFNR); dsParams.ExtendedProperties.Add("CDATE", String.Format("{0:yyyyMMdd}", DateTime.Now)); DataSet dsReturn = rfcEngine.ExecuteRFC("ZMM_GOODSMVT_CREATE", dsParams); string MBLNR = dsReturn.ExtendedProperties["MBLNR"].ToString(); string MBLNR1 = dsReturn.ExtendedProperties["MBLNR1"].ToString(); if (!String.IsNullOrEmpty(MBLNR) || !String.IsNullOrEmpty(MBLNR1)) { DbConnection dbConn = null; DbTransaction dbTran = null; try { dbConn = db.CreateConnection(); dbConn.Open(); dbTran = dbConn.BeginTransaction(); sql = String.Format(@"UPDATE AWMS_WH_ENTRY SET MBLNR = '{0}', MBLNR1 = '{1}', SYNMAN = '{2}', SYNDATE = '{3}', ISSYN = '{4}' WHERE ZMBLNR = '{5}'", MBLNR, MBLNR1, SYNMAN, DateTime.Now, "1", ZMBLNR); db.ExecuteNonQuery(dbTran, CommandType.Text, sql); DataTable dtResultItem = dsReturn.Tables["MSEGITEM"]; for (int i = 0; i < dtResultItem.Rows.Count; i++) { DataRow dr = dtResultItem.Rows[i]; string retZMBLNR = dr["ZMBLNR"].ToString(); string retBWART = dr["BWART"].ToString(); string retCHARG = dr["CHARG"].ToString(); string retMEINS = dr["MEINS"].ToString(); string retXP002 = dr["CHR02"].ToString(); string retXP004 = dr["CHR04"].ToString(); string retXP007 = dr["CHR07"].ToString(); string retXP008 = dr["CHR08"].ToString(); string retXP009 = dr["CHR09"].ToString(); string retXP010 = dr["CHR10"].ToString(); string retXP011 = dr["CHR11"].ToString(); string retXP012 = dr["CHR12"].ToString(); string retXP001 = dr["CHR01"].ToString(); string retXP003 = dr["CHR03"].ToString(); string retXP005 = dr["CHR05"].ToString(); string retXP006 = dr["CHR06"].ToString(); string retMBLNR = retBWART.Equals("101") ? MBLNR : MBLNR1; sql = String.Format(@"UPDATE AWMS_WH_ENTRY_DETAIL SET CHARG = '{0}', MEINS = '{1}', XP002 = '{2}', XP007 = '{3}', XP008 = '{4}', XP009 = '{5}', XP010 = '{6}', XP011 = '{7}', XP012 = '{8}', MBLNR = '{9}', XP001 = '{10}', XP003 = '{11}', XP005 = '{12}', XP006 = '{13}' WHERE ZMBLNR = '{14}' AND XP004 = '{15}' AND ITEMSTATUS = '正常'", retCHARG, retMEINS, retXP002, retXP007, retXP008, retXP009, retXP010, retXP011, retXP012, retMBLNR, retXP001, retXP003, retXP005, retXP006, retZMBLNR, retXP004); db.ExecuteNonQuery(dbTran, CommandType.Text, sql); sql = String.Format(@"UPDATE DBO.WIP_CONSIGNMENT SET CS_DATA_GROUP = '3' WHERE CONSIGNMENT_KEY IN ( SELECT KEYNO FROM AWMS_WH_ENTRY_DETAIL WHERE ZMBLNR = '{0}' AND XP004 = '{1}' AND ITEMSTATUS = '正常')", retZMBLNR, retXP004); db.ExecuteNonQuery(dbTran, CommandType.Text, sql); } dbTran.Commit(); } catch (Exception ex) { LogService.LogError("WarehouseWarrant Error: " + ex.Message); returnStr = ex.Message; if (dbTran != null) { dbTran.Rollback(); } return(false); } finally { if (dbConn != null) { dbConn.Close(); } dbConn = null; dbTran = null; } returnStr = String.Format("过账成功!101移动凭证号:{0},531移动凭证号:{1}", String.IsNullOrEmpty(MBLNR)? "无" : MBLNR, String.IsNullOrEmpty(MBLNR1)? "无" : MBLNR1); return(true); } else { returnStr += "过账失败!"; DataTable dtResult = dsReturn.Tables["TBAPIRET"]; for (int i = 0; i < dtResult.Rows.Count; i++) { DataRow dr = dtResult.Rows[i]; string type = dr["TYPE"].ToString(); string id = dr["id"].ToString(); int number = Convert.ToInt32(dr["NUMBER"]); string message = dr["MESSAGE"].ToString(); string system = dr["SYSTEM"].ToString(); string REF_EXT1 = dr["MESSAGE_V1"].ToString(); string REF_EXT2 = dr["MESSAGE_V2"].ToString(); string REF_EXT3 = dr["MESSAGE_V3"].ToString(); returnStr += '\n' + type + ' ' + id + ' ' + number.ToString() + ' ' + message + ' ' + system + ' ' + REF_EXT1 + ' ' + REF_EXT2 + ' ' + REF_EXT3; } return(false); } }