internal static InterBankNoticeLetterInfo OnRetrieveNoticeLetter(DateTime tradeDate, string tradeOrg, string tellerNo, InterBankNoticeQueryInfo info, out string outmsg)
        {
            outmsg = "";
            byte[] codemsg = null;
            bool sent = false;
            string dbexception = "";
            MessageData reqdata = null;
            MessageData recdata = null;
            Guid msgid = Guid.Empty;
            InterBankNoticeLetterInfo resultdetail = null;
            try
            {
                msgid = MsgTransferUtility.RetrieveNoticeLetter(tradeDate,tradeOrg, tellerNo, info, ref codemsg);
                reqdata = MsgHandlerEntry.CreateMessageData(msgid, PlatformType.Core, tellerNo, tradeOrg, (int)MessageBizType.CoreInterBankNoticeLetter, codemsg, info.NoticeID);
#if MQSYNC
                recdata = MQMsgHandlerEntry.DeliverMessage(reqdata, codemsg, out sent);
#else
                recdata = MsgHandlerEntry.DeliverMessage(MsgHandlerEntry.CreateMessageData(msgid, PlatformType.Core, codemsg));
#endif

                InterBankNoticeLetterData data = MsgTransfer.DecodeMsg(recdata.MessageID, recdata.CurrentRespPackage.PackageMessage) as InterBankNoticeLetterData;
                if (data != null)
                {
                    if (!String.IsNullOrEmpty(data.SyserrHandler.Message))
                    {
                        outmsg = data.SyserrHandler.Message;
                    }
                    else if (data.OmsgHandler.NUM_ENT > 0)
                    {
                        outmsg = MsgHandlerEntry.ExtractOMsg(data);
                    }
                    else
                    {
                        if (data.OData != null)
                        {
                            resultdetail = new InterBankNoticeLetterInfo();
                            resultdetail.ACCOUNT_DATE = CommonDataHelper.StrTrimer(data.OData.ACCOUNT_DATE, null);
                            resultdetail.NOTICE_NO = CommonDataHelper.StrTrimer(data.OData.NOTICE_NO, null);
                            resultdetail.NOTICE_TYPE = string.IsNullOrEmpty(data.OData.NOTICE_TYPE) ? 
                                AidTypeDefine.INTER_BANK_NOTICE_TYPE.OpenAccount : (AidTypeDefine.INTER_BANK_NOTICE_TYPE)Enum.Parse(typeof(AidTypeDefine.INTER_BANK_NOTICE_TYPE), CommonDataHelper.StrTrimer(data.OData.NOTICE_TYPE, null));
                            resultdetail.BUSINESS_TYPE = string.IsNullOrEmpty(data.OData.BUSINESS_TYPE) ?
                                AidTypeDefine.INTER_BANK_BIZ_TERM_TYPE.Current : (AidTypeDefine.INTER_BANK_BIZ_TERM_TYPE)Enum.Parse(typeof(AidTypeDefine.INTER_BANK_BIZ_TERM_TYPE), CommonDataHelper.StrTrimer(data.OData.BUSINESS_TYPE, null));
                            resultdetail.ACCOUNT = CommonDataHelper.StrTrimer(data.OData.ACCOUNT_NO, null);
                            resultdetail.CURRENCY = CommonDataHelper.StrTrimer(data.OData.CURRENCY, null);
                            resultdetail.CUSTOMER_TYPE = CommonDataHelper.StrTrimer(data.OData.CUSTOMER_TYPE, null);
                            resultdetail.CASH_PROPERTY = CommonDataHelper.StrTrimer(data.OData.CASH_PROPERTY, null);
                            resultdetail.PRODUCT_TYPE = CommonDataHelper.StrTrimer(data.OData.PRODUCT_TYPE, null);
                            resultdetail.PRODUCT_CODE = CommonDataHelper.StrTrimer(data.OData.PRODUCT_CODE, null);
                            resultdetail.DEPOSIT_TYPE = string.IsNullOrEmpty(data.OData.DEPOSIT_TYPE) ? 
                                AidTypeDefine.INTER_BANK_DEPOSITING_CATEGORY.Other_Banks : (AidTypeDefine.INTER_BANK_DEPOSITING_CATEGORY)Enum.Parse(typeof(AidTypeDefine.INTER_BANK_DEPOSITING_CATEGORY), CommonDataHelper.StrTrimer(data.OData.DEPOSIT_TYPE, null));
                            resultdetail.ACCOUNT_PROPERTY = CommonDataHelper.StrTrimer(data.OData.ACCOUNT_PROPERTY, null);
                            resultdetail.ACCOUNT_TYPE = CommonDataHelper.StrTrimer(data.OData.ACCOUNT_TYPE, null);
                            resultdetail.CURRENT_ACCOUNT = CommonDataHelper.StrTrimer(data.OData.CURRENT_ACCOUNT, null);
                            resultdetail.INTEREST_ACCOUNT = CommonDataHelper.StrTrimer(data.OData.INTEREST_ACCOUNT, null);
                            resultdetail.FIXED_NEW_ACCOUNT = CommonDataHelper.StrTrimer(data.OData.FIXED_NEW_ACCOUNT, null);
                            resultdetail.VOUCHER_NO = CommonDataHelper.StrTrimer(data.OData.VOUCHER_NO, null);
                            resultdetail.VOUCHER_NEW_NO = CommonDataHelper.StrTrimer(data.OData.VOUCHER_NEW_NO, null);
                            resultdetail.AUTO_REDEPO = CommonDataHelper.StrTrimer(data.OData.AUTO_REDEPO, null) == "1";
                            resultdetail.DEPOSIT_TERM = CommonDataHelper.StrTrimer(data.OData.DEPOSIT_TERM, null);
                            resultdetail.VALUE_DATE = CommonDataHelper.StrTrimer(data.OData.VALUE_DATE, null);
                            resultdetail.MATURITY_DATE = CommonDataHelper.StrTrimer(data.OData.MATURITY_DATE, null);
                            resultdetail.AMOUNT = CommonDataHelper.ConvertDecimal(CommonDataHelper.StrTrimer(data.OData.AMOUNT, null), 6);
                            resultdetail.RATE = CommonDataHelper.ConvertDecimal(CommonDataHelper.StrTrimer(data.OData.RATE, null), 6);
                            resultdetail.INTEREST_BEARING_MANNER = string.IsNullOrEmpty(data.OData.INTEREST_BEARING_MANNER) ? 
                                AidTypeDefine.INTER_BANK_COUPON_TYPE.InterestWithPrincipal : (AidTypeDefine.INTER_BANK_COUPON_TYPE)Enum.Parse(typeof(AidTypeDefine.INTER_BANK_COUPON_TYPE),  CommonDataHelper.StrTrimer(data.OData.INTEREST_BEARING_MANNER, null));
                            resultdetail.INTEREST = CommonDataHelper.ConvertDecimal(CommonDataHelper.StrTrimer(data.OData.INTEREST, null), 6);
                            resultdetail.CUSTOMER_CODE = CommonDataHelper.StrTrimer(data.OData.CUSTOMER_CODE, null);
                            resultdetail.BANK_FLAG = CommonDataHelper.StrTrimer(data.OData.BANK_FLAG, null);
                            resultdetail.HANDLE_ORGNAZTION = CommonDataHelper.StrTrimer(data.OData.HANDLE_ORGNAZTION, null);
                            resultdetail.APPROVE_ORGNAZTION = CommonDataHelper.StrTrimer(data.OData.APPROVE_ORGNAZTION, null);
                            resultdetail.HANDLE_TELLER = CommonDataHelper.StrTrimer(data.OData.HANDLE_TELLER, null);
                            resultdetail.APPROVE_TELLER = CommonDataHelper.StrTrimer(data.OData.APPROVE_TELLER, null);
                            resultdetail.HANDLE_FLAG = CommonDataHelper.StrTrimer(data.OData.HANDLE_FLAG, null);
                            resultdetail.TRADE_FLOW_NO = CommonDataHelper.StrTrimer(data.OData.TRADE_FLOW_NO, null);
                            resultdetail.CHILD_TRADE_FLOW_NO = CommonDataHelper.StrTrimer(data.OData.CHILD_TRADE_FLOW_NO, null);
                            resultdetail.TELLER_FLOW_NO = CommonDataHelper.StrTrimer(data.OData.TELLER_FLOW_NO, null);
                            resultdetail.RECORD_FLAG = CommonDataHelper.StrTrimer(data.OData.RECORD_FLAG, null);
                            resultdetail.BOOK_TYPE = CommonDataHelper.StrTrimer(data.OData.BOOK_TYPE, null);
                            resultdetail.ACCOUNT_NAME = CommonDataHelper.StrTrimer(data.OData.ACCOUNT_NAME, null);
                            resultdetail.BALANCE = CommonDataHelper.ConvertDecimal(CommonDataHelper.StrTrimer(data.OData.BALANCE, null),6);
                            resultdetail.SUM_AMOUNT = CommonDataHelper.ConvertDecimal(CommonDataHelper.StrTrimer(data.OData.SUM_AMOUNT, null),6);
                            resultdetail.RESERVE = CommonDataHelper.StrTrimer(data.OData.RESERVE, null);                            
                        }                        
                        return resultdetail;
                    }
                }
                else
                {
                    outmsg = MsgHandlerEntry.Type_Convert_Error;
                }

                OnUpdateDBLog(recdata.MessageID, outmsg, MsgLogState.RecvFailed, out dbexception);
                return resultdetail;
            }
            catch (Exception ex)
            {
                outmsg = ex.Message;
                OnException(sent, reqdata, recdata, msgid, ex, outmsg);
                return resultdetail;
            }
        }
 private void TestForQuery(InterBankNoticeLetterInfo rData)
 {
     StringBuilder result = new StringBuilder();
     if (rData == null)
     {
         MessageBox.Show("返回数据为空!");
     }
     else
     {
         result.AppendLine();
         result.Append("ODATA:");
         result.AppendFormat("会计日期:{0};通知单编号:{1};通知单类型:{2};业务类型:{3};", rData.ACCOUNT_DATE, rData.NOTICE_NO, rData.NOTICE_TYPE, rData.BUSINESS_TYPE);
         result.AppendLine();
         result.AppendFormat("账号:{0};币种:{1};外币客户类别:{2};钞汇属性:{3};", rData.ACCOUNT, rData.CURRENCY, rData.CUSTOMER_TYPE, rData.CASH_PROPERTY);
         result.AppendLine();
         result.AppendFormat("产品类别:{0};产品代码:{1};存款种类:{2};账户性质:{3};帐户类型:{4}", rData.PRODUCT_TYPE, rData.PRODUCT_CODE, rData.DEPOSIT_TYPE, rData.ACCOUNT_PROPERTY, rData.ACCOUNT_TYPE);
         result.AppendLine();
         result.AppendFormat("资金来源活期账号:{0};收息账号:{1};定期部提新账号:{2};凭证号码:{3};新凭证号码:{4};", rData.CURRENT_ACCOUNT, rData.INTEREST_ACCOUNT, rData.FIXED_NEW_ACCOUNT, rData.VOUCHER_NO, rData.VOUCHER_NEW_NO);
         result.AppendLine();
         result.AppendFormat("自动转存:{0};定期存期:{1};起息日期:{2};到期日期:{3};交易金额:{4};", rData.AUTO_REDEPO, rData.DEPOSIT_TERM, rData.VALUE_DATE, rData.MATURITY_DATE, rData.AMOUNT);
         result.AppendLine();
         result.AppendFormat("利率:{0};计息方式:{1};利息金额:{2};客户内码:{3};银行集团企业标志:{4};", rData.RATE, rData.INTEREST_BEARING_MANNER, rData.INTEREST, rData.CUSTOMER_CODE, rData.BANK_FLAG);
         result.AppendLine();
         result.AppendFormat("经办机构:{0};审批机构:{1};操作柜员:{2};审核柜员:{3};", rData.HANDLE_ORGNAZTION, rData.APPROVE_ORGNAZTION, rData.HANDLE_TELLER, rData.APPROVE_TELLER);
         result.AppendLine();
         result.AppendFormat("处理标志:{0};原交易流水号:{1};子交易流水号:{2};柜员流水号:{3};记录状态:{4};存单折类型:{5}", rData.HANDLE_FLAG, rData.TRADE_FLOW_NO, rData.CHILD_TRADE_FLOW_NO, rData.TELLER_FLOW_NO, rData.RECORD_FLAG, rData.BOOK_TYPE);
         result.AppendLine();
         result.AppendFormat("户名:{0};余额:{1};本息合计:{2};备用:{3}", rData.ACCOUNT_NAME, rData.BALANCE, rData.SUM_AMOUNT, rData.RESERVE);
     }
     textResult.Text = result.ToString();
 }