⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transview.cpp

📁 这是一个银行证券转帐系统。可以实现银行和证券公司之间的转帐。
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	case '6':
		lvitem.pszText="开户申请";
		break;
	case '7':
		lvitem.pszText="销户申请";
		break;
	case '8':
		lvitem.pszText="换卡";
		break;
	case '9':
		lvitem.pszText="签到";
		break;
	case '0':
		lvitem.pszText="签退";
		break;
	default:
		break;
	}
	GetListCtrl().SetItem(&lvitem);
	lvitem.iSubItem=5;
	lvitem.pszText=data->AMT;
	GetListCtrl().SetItem(&lvitem);
	lvitem.iSubItem=6;
	lvitem.pszText=data->RETCODE;
	GetListCtrl().SetItem(&lvitem);
	lvitem.iSubItem=7;
	lvitem.pszText=data->NOTE;
	GetListCtrl().SetItem(&lvitem);
	m_nTRecords++;
}

//对帐
void CTransView::OnMenuReport() 
{
	PARAM bkParam,seParam;
	RESULT bkResult,seResult;
	memset(&bkParam,0,sizeof(PARAM));
	memset(&seParam,0,sizeof(PARAM));
	int nCheckType,nChkMode;		//对帐方式
	nCheckType=GetPrivateProfileInt("系统","对帐类型",1,CONFIGINI);
	nChkMode=GetPrivateProfileInt("系统","对帐方式",1,CONFIGINI);

	CTime t=CTime::GetCurrentTime();
	CString sRQ=t.Format("%Y%m%d");
	CString sTime=t.Format("%H%M%S");
	CString strLs=t.Format(".\\tmp\\%Y%m%d.ls");
	strcpy(seParam.prData.prCol.Array[v_rq],(LPCSTR)sRQ);
	strcpy(seParam.prData.prCol.Array[v_time],(LPCSTR)sTime);
	strcpy(seParam.prData.prCol.Array[v_bankid],m_comm.BANKID);	//银行代码
	strcpy(seParam.prData.prCol.Array[v_secuid],m_comm.SECUID);
	strcpy(seParam.prData.prCol.Array[v_yybh],m_comm.DETCODE);	//营业部代码

	strcpy(bkParam.prData.prCol.Array[v_rq],(LPCSTR)sRQ);
	strcpy(bkParam.prData.prCol.Array[v_time],(LPCSTR)sTime);
	strcpy(bkParam.prData.prCol.Array[v_bankid],m_comm.BANKID);
	strcpy(bkParam.prData.prCol.Array[v_secuid],m_comm.SECUID);
	strcpy(bkParam.prData.prCol.Array[v_yybh],m_comm.DETCODE);

	CString strLogMsg;
	if(nChkMode==1)		//银行对帐
	{
		if(nCheckType==1)		//总帐对帐
		{
			LogMsg("开始调用券商总帐对帐...........",0);
			m_Interface->CheckFund(&seParam,&seResult);
			LogMsg("调用券商总帐对帐结束......",0);
			if(seResult.iRet>=0)
			{
				strcpy(bkParam.prData.prCol.Array[v_rq],seParam.prData.prCol.Array[v_rq]);
				strcpy(bkParam.prData.prCol.Array[v_time],seParam.prData.prCol.Array[v_time]);
				strcpy(bkParam.prData.prCol.Array[v_bankid],seParam.prData.prCol.Array[v_bankid]);
				strcpy(bkParam.prData.prCol.Array[v_bankacc],seResult.retData.rtArray.Array[0][2]);
				strcpy(bkParam.prData.prCol.Array[v_bankpswd],seResult.retData.rtArray.Array[0][3]);
				strcpy(bkParam.prData.prCol.Array[v_account],seResult.retData.rtArray.Array[0][5]);
				strcpy(bkParam.prData.prCol.Array[v_pswd],seResult.retData.rtArray.Array[0][6]);
				strcpy(bkParam.prData.prCol.Array[v_yhls],seResult.retData.rtArray.Array[0][8]);
				strcpy(bkParam.prData.prCol.Array[v_name],seResult.retData.rtArray.Array[0][9]);	//销户数目
				strcpy(bkParam.prData.prCol.Array[v_yybh],m_comm.DETCODE);
				m_BankInte->CheckFund(&bkParam,&bkResult);
				if(bkResult.iRet>=0)
				{
					AfxMessageBox("对帐成功!");
				}
				else
				{
					AfxMessageBox(bkResult.szErrMsg);
				}
			}
		}
		else if(nCheckType==2)		//明细对帐
		{
			LogMsg("开始调用券商明细对帐...........",0);
			m_Interface->QueryTransferDetail(&seParam,&seResult);
			LogMsg("调用券商明细对帐结束......",0);

			if(seResult.iRet>=0)
			{
				strcpy(bkParam.prData.prCol.Array[v_note],seResult.retData.rtArray.Array[0][10]);
				LogMsg("开始调用银行明细对帐.............",0);
				m_BankInte->QueryTransferDetail(&bkParam,&bkResult);
				LogMsg("结束银行明细对帐",0);
				if(bkResult.iRet>=0)
				{
					AfxMessageBox("对帐成功!");
				}
				else
				{
					AfxMessageBox(bkResult.szErrMsg);
				}
			}
			else
			{
				AfxMessageBox(seResult.szErrMsg);
			}
		}
		else
		{
			m_Interface->CheckFund(&seParam,&seResult);
			if(seResult.iRet>=0)
			{
				m_BankInte->CheckFund(&seParam,&seResult);
				if(seResult.iRet>=0)
				{
					m_Interface->QueryTransferDetail(&seParam,&seResult);
					m_BankInte->QueryTransferDetail(&seParam,&seResult);
					if(seResult.iRet>=0)
					{
						AfxMessageBox("对帐成功!");
					}
					else
					{
						AfxMessageBox(seResult.szErrMsg);
					}
				}
			}
		}
	}
	else if(nChkMode==2)			//券商对帐
	{
		switch(nCheckType){
		case 1:		//总帐对帐
			LogMsg("开始调用银行总帐对帐..................",0);
			m_BankInte->CheckFund(&bkParam,&bkResult);
			LogMsg("结束银行总帐对帐",0);
			if(bkResult.iRet>=0)
			{
				//银行转证券的笔数
				strcpy(seParam.prData.prCol.Array[v_bankacc],bkResult.retData.rtArray.Array[0][2]);
				//银行转证券的金额
				strcpy(seParam.prData.prCol.Array[v_bankpswd],bkResult.retData.rtArray.Array[0][3]);
				//开户数目
				strcpy(seParam.prData.prCol.Array[v_yhls],bkResult.retData.rtArray.Array[0][8]);
				//券商代码
				//证券到银行笔数
				strcpy(seParam.prData.prCol.Array[v_account],bkResult.retData.rtArray.Array[0][5]);
				//证券到银行金额
				strcpy(seParam.prData.prCol.Array[v_pswd],bkResult.retData.rtArray.Array[0][6]);
				//销户数目
				strcpy(seParam.prData.prCol.Array[v_name],bkResult.retData.rtArray.Array[0][9]);
				//对帐文件
				strcpy(seParam.prData.prCol.Array[v_note],bkResult.retData.rtArray.Array[0][10]);

				strcpy(seParam.prData.prCol.Array[v_yybh],m_comm.DETCODE);
				m_Interface->QueryTransferDetail(&seParam,&seResult);
				if(seResult.iRet>=0)
				{
					AfxMessageBox("对帐成功!");
				}
				else
				{
					AfxMessageBox(seResult.szErrMsg);
				}
			}
			else
			{
				AfxMessageBox(bkResult.szErrMsg);
			}	
			break;
		case 2:		//明细对帐
			LogMsg("开始调用银行明细对帐...........",0);
			m_BankInte->QueryTransferDetail(&bkParam,&bkResult);
			LogMsg("结束调用银行明细对帐",0);
			OnMenuSgdz();
			if(bkResult.iRet>=0)
			{
				LogMsg("开始写入券商明细对帐.........",0);
				strLogMsg="日期";
				strLogMsg+=seParam.prData.prCol.Array[v_rq];
				strLogMsg+=" 银行代码:";
				strLogMsg+=seParam.prData.prCol.Array[v_bankid];
				//银行转证券的笔数
				sprintf(seParam.prData.prCol.Array[v_bankacc],"%d",m_nBankToSecu);
				//银行转证券的金额
				sprintf(seParam.prData.prCol.Array[v_bankpswd],"%f",(double)m_nBToS/100);
				//开户数目
				sprintf(seParam.prData.prCol.Array[v_yhls],"%d",m_nOpenAcc);
				//券商代码
				//证券到银行笔数
				sprintf(seParam.prData.prCol.Array[v_account],"%d",m_nSecuToBank);
				//证券到银行金额
				sprintf(seParam.prData.prCol.Array[v_pswd],"%f",(double)m_nSToB/100);
				//销户数目
				sprintf(seParam.prData.prCol.Array[v_name],"%d",m_nDelAcc);
				//对帐文件
				strcpy(seParam.prData.prCol.Array[v_note],strLs/*bkResult.retData.rtArray.Array[0][10]*/);
				m_Interface->CheckFund(&seParam,&seResult);
				LogMsg("结束写入券商明细对帐",0);
				if(seResult.iRet>=0)
				{
					AfxMessageBox("写入对帐成功!");
				}
				else
				{
					AfxMessageBox(seResult.szErrMsg);
				}
			}
			else
				AfxMessageBox(bkResult.szErrMsg);
			break;
		case 3:		//总帐及明细对帐
			LogMsg("开始调用银行明细对帐...........",0);
			m_BankInte->QueryTransferDetail(&bkParam,&bkResult);
			LogMsg("结束调用银行明细对帐",0);
			if(bkResult.iRet>=0)
			{
				//和Trans的文件比较,总帐对帐
				if(m_nBankToSecu!=atoi(bkResult.retData.rtArray.Array[0][2]))
				{
					LogMsg("银行转证券笔数不一致!",0);
					AfxMessageBox("银行转证券笔数不一致!");
				}
				if(m_nSecuToBank!=atoi(bkResult.retData.rtArray.Array[0][5]))
				{
					LogMsg("证券转银行笔数不一致!",0);
					AfxMessageBox("证券转银行笔数不一致!");
				}
				int nJe=int(atof(bkResult.retData.rtArray.Array[0][3])*100);
				if(nJe!=m_nBToS)
				{
					LogMsg("银行转证券总金额对帐不一致!",0);
					AfxMessageBox("银行转证券总金额对帐不一致!");
				}
				nJe=int(atof(bkResult.retData.rtArray.Array[0][6])*100);
				if(m_nSToB!=nJe)
				{
					LogMsg("证券转银行总金额不一致!",0);
					AfxMessageBox("证券转银行总金额不一致!");
				}
				LogMsg("开始写入券商明细对帐.........",0);
				strLogMsg="日期";
				strLogMsg+=seParam.prData.prCol.Array[v_rq];
				strLogMsg+=" 银行代码:";
				strLogMsg+=seParam.prData.prCol.Array[v_bankid];
				//银行转证券的笔数
				strcpy(seParam.prData.prCol.Array[v_bankacc],bkResult.retData.rtArray.Array[0][2]);
				//银行转证券的金额
				strcpy(seParam.prData.prCol.Array[v_bankpswd],bkResult.retData.rtArray.Array[0][3]);
				//开户数目
				strcpy(seParam.prData.prCol.Array[v_yhls],bkResult.retData.rtArray.Array[0][8]);
				//券商代码
				//证券到银行笔数
				strcpy(seParam.prData.prCol.Array[v_account],bkResult.retData.rtArray.Array[0][5]);
				//证券到银行金额
				strcpy(seParam.prData.prCol.Array[v_pswd],bkResult.retData.rtArray.Array[0][6]);
				//销户数目
				strcpy(seParam.prData.prCol.Array[v_name],bkResult.retData.rtArray.Array[0][9]);
				//对帐文件
				strcpy(seParam.prData.prCol.Array[v_note],bkResult.retData.rtArray.Array[0][10]);
				m_Interface->CheckFund(&seParam,&seResult);
				LogMsg("结束写入券商明细对帐",0);
				if(seResult.iRet>=0)
				{
					AfxMessageBox("对帐成功!");
				}
				else
				{
					AfxMessageBox(seResult.szErrMsg);
				}

			}
			else
			{
				AfxMessageBox(bkResult.szErrMsg);
			}
			break;
		}
	}		//end 券商对帐
	else	//双方对帐
	{
		//银行转证券的笔数
		sprintf(seParam.prData.prCol.Array[v_bankacc],"%d",m_nBankToSecu);
		//银行转证券的金额
		sprintf(seParam.prData.prCol.Array[v_bankpswd],"%f",(double)m_nBToS/100);
		//开户数目
		sprintf(seParam.prData.prCol.Array[v_yhls],"%d",m_nOpenAcc);
		//券商代码
		//证券到银行笔数
		sprintf(seParam.prData.prCol.Array[v_account],"%d",m_nSecuToBank);
		//证券到银行金额
		sprintf(seParam.prData.prCol.Array[v_pswd],"%f",(double)m_nSToB/100);
		//销户数目
		sprintf(seParam.prData.prCol.Array[v_name],"%d",m_nDelAcc);

		//银行转证券的笔数
		sprintf(bkParam.prData.prCol.Array[v_bankacc],"%d",m_nBankToSecu);
		//银行转证券的金额
		sprintf(bkParam.prData.prCol.Array[v_bankpswd],"%f",(double)m_nBToS/100);
		//开户数目
		sprintf(bkParam.prData.prCol.Array[v_yhls],"%d",m_nOpenAcc);
		//券商代码
		//证券到银行笔数
		sprintf(bkParam.prData.prCol.Array[v_account],"%d",m_nSecuToBank);
		//证券到银行金额
		sprintf(bkParam.prData.prCol.Array[v_pswd],"%f",(double)m_nSToB/100);
		//销户数目
		sprintf(bkParam.prData.prCol.Array[v_name],"%d",m_nDelAcc);

		strcpy(bkParam.prData.prCol.Array[v_note],".\\tmp\\");
		strcat(bkParam.prData.prCol.Array[v_note],(LPCSTR)sRQ);
		strcat(bkParam.prData.prCol.Array[v_note],".Ls");
		strcpy(seParam.prData.prCol.Array[v_note],bkParam.prData.prCol.Array[v_note]);
		BOOL bTranSucc=TRUE;
		LogMsg("开始写入银行对帐..................",0);
		if(m_BankInte->CheckFund(&bkParam,&bkResult)<0)
		{
			AfxMessageBox(bkResult.szErrMsg);
			LogMsg("写入银行对帐失败!",0);
			bTranSucc=FALSE;
		}
		if(bkResult.iRet<0)
		{
			AfxMessageBox(bkResult.szErrMsg);
			LogMsg("写入银行对帐失败!",0);
			bTranSucc=FALSE;
		}
		LogMsg("写入银行对帐结束!",0);
		
		LogMsg("开始写入券商对帐.................",0);
		if(m_Interface->CheckFund(&seParam,&seResult)<0)
		{
			AfxMessageBox(seResult.szErrMsg);
			bTranSucc=FALSE;
		}
		LogMsg("写入券商对帐结束!",0);
		if(bTranSucc)
			AfxMessageBox("对帐成功!");
		else
			AfxMessageBox("对帐不平!");
	}
}

BOOL CTransView::LogMsg(LPCSTR eventMsg, int Level)
{
//	if(Level>m_stSYS.RecLevel)	return FALSE;
	CTime t=CTime::GetCurrentTime();
	CString s=t.Format("%H:%M:%S ");
	CString strLog;
	try
	{
		CString strFileName=t.Format(".\\log\\%Y%m%d.log");
		CStdioFile logFile;
		if(logFile.Open(strFileName,CFile::modeWrite|CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText))
		{
			strLog.Format("%s\n",eventMsg);
			logFile.SeekToEnd();
			logFile.WriteString(s);
			logFile.WriteString(strLog);
			logFile.Close();
		}
	}
	catch(...)
	{
	}
	return TRUE;
}

BOOL CTransView::LogZZLS(LPCSTR lsMsg)
{
	CTime t=CTime::GetCurrentTime();
	CString strLog;
	try
	{
		CString strFileName=t.Format(".\\tmp\\%Y%m%d.ls");
		CStdioFile logFile;
		BOOL bOpen;
		CFileFind fd;
		if(!fd.FindFile(strFileName))
			bOpen=logFile.Open(strFileName,CFile::modeWrite|CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText);
		else
			bOpen=logFile.Open(strFileName,CFile::modeWrite|CFile::typeText);
		if(bOpen)
		{
			strLog.Format("%s\n",lsMsg);
			logFile.SeekToEnd();
			logFile.WriteString(strLog);
			logFile.Close();
		}
	}
	catch(...)
	{
	}
	return TRUE;
}

int HexCharVal(char c)
{
	if('0' <= c && c <= '9')
		return c - '0';
	else if('A' <= c && c <= 'F')
		return c + 10 - 'A';
	else if('a' <= c && c <= 'f')
		return c + 10 - 'a';
	return 0;
}

void Asc2Hex(const char* src, BYTE* dest, int len)
{
	int i;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -