internal static CoreAcctErase OnEraseAccounting(String tellerno, String orgno, DateTime tradedate, String coreSN, out String outmsg) { outmsg = ""; CoreAcctErase resultdetail = null; byte[] codemsg = null; bool sent = false; string dbexception = ""; MessageData recdata = null; MessageData reqdata = null; Guid msgid = Guid.Empty; try { msgid = MsgTransferUtility.EraseAccounting(tellerno, orgno, tradedate, coreSN, ref codemsg); if (msgid == Guid.Empty && !string.IsNullOrEmpty(outmsg)) { return resultdetail; } reqdata = MsgHandlerEntry.CreateMessageData(msgid, PlatformType.Core, tellerno, orgno, (int)MessageBizType.CoreAcctErase, codemsg); #if MQSYNC recdata = MQMsgHandlerEntry.DeliverMessage(reqdata, codemsg, out sent); #else recdata = MsgHandlerEntry.DeliverMessage(MsgHandlerEntry.CreateMessageData(msgid, PlatformType.Core, codemsg)); #endif AcctEraseData retdata = MsgTransfer.DecodeMsg(recdata.MessageID, recdata.CurrentRespPackage.PackageMessage) as AcctEraseData; if (retdata != null) { if (!String.IsNullOrEmpty(retdata.SyserrHandler.Message)) { outmsg = retdata.SyserrHandler.Message; } else if (retdata.OmsgHandler.NUM_ENT > 0) { outmsg = MsgHandlerEntry.ExtractOMsg(retdata); } else { resultdetail = new CoreAcctErase(); if (retdata.OData.DB_BY999000 != null) { resultdetail.DB_BY999000.TIME = CommonDataHelper.StrTrimer(retdata.OData.DB_BY999000.TIME, null); resultdetail.DB_BY999000.JNO = CommonDataHelper.StrTrimer(retdata.OData.DB_BY999000.JNO, null); resultdetail.DB_BY999000.Date = CommonDataHelper.StrTrimer(retdata.OData.DB_BY999000.Date, null); resultdetail.DB_BY999000.TX_TIME = CommonDataHelper.StrTrimer(retdata.OData.DB_BY999000.TX_TIME, null); resultdetail.DB_BY999000.TEL_NO = CommonDataHelper.StrTrimer(retdata.OData.DB_BY999000.TEL_NO, null); resultdetail.DB_BY999000.TX_ID = CommonDataHelper.StrTrimer(retdata.OData.DB_BY999000.TX_ID, null); resultdetail.DB_BY999000.TX_JNO = CommonDataHelper.StrTrimer(retdata.OData.DB_BY999000.TX_JNO, null); } foreach (AcctEraseODATA_DB2 item in retdata.OData.DB_BY999001_List) { AcctErase_BY999001 erase01item = new AcctErase_BY999001(); erase01item.GL_SEQ = CommonDataHelper.StrTrimer(item.GL_SEQ, null); erase01item.ACC_NO = CommonDataHelper.StrTrimer(item.ACC_NO, null); erase01item.ACC_NAME = CommonDataHelper.StrTrimer(item.ACC_NAME, null); erase01item.DRCR_IND = CommonDataHelper.StrTrimer(item.DRCR_IND, null); erase01item.TX_AMT = CommonDataHelper.StrTrimer(item.TX_AMT, null); erase01item.TX_CCY = CommonDataHelper.StrTrimer(item.TX_CCY, null); resultdetail.DB_BY999001_List.Add(erase01item); } //MQMsgCommonHelper.UpdateMQLog(recdata, null, outmsg, MsgLogState.RecvSucceed, out dbexception); 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; } }
/// <summary> /// 抹账 /// </summary> /// <param name="orgno">机构号</param> /// <param name="tellerno">柜员号</param> /// <param name="tradedate">发生日期</param> /// <param name="coreSN">核心交易流水号</param> /// <param name="result">结果数据</param> /// <param name="outmsg">记账失败时的信息</param> /// <returns>抹账成功与否</returns> public static bool CoreAcctErase(String orgno, String tellerno, DateTime tradedate, String coreSN, out CoreAcctErase result, out String outmsg) { result = ClientSyncHelper.OnEraseAccounting(tellerno, orgno, tradedate, coreSN, out outmsg); if (result != null) { return true; } outmsg = string.Format("{0}{1}", MsgHandlerEntry.Info_Return_Core, outmsg); return false; }