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

📄 cmsvouno.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************* **   源码文件名称 : cmsvouno.SQC **   所属子系统   : 卡管理 **   功能描述     : 获取cmsvouseqno凭证号序号 **   当前文件版本 : 4.0.0.0 **   作        者 : UCCB   ALex   **   版本创建日期 : 2004/09/16 **   修改记录     : **   修改人       修改日期     修改位置 **		Feng		2006-01-05	增加cmsApiCheckCardVouNo **		Feng		2006-01-05	增加cmsApiCheckVouNo **		Feng		2006-01-05	增加cmsApiCheckCardSeqNo **		Feng		2006-01-07	cmsApiGetCardVouNo增加参数*******************************************************/#include "sysdefine.h"#include "code.h"#include "attrdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmsvouseqno.h"#include "cmschoosereg.h"#include "cmscardkind.h"EXEC SQL INCLUDE sqlca;/******************************************************* **	  函数名称:cmsApiGetCardVouNo **   功能描述:   获取卡的新凭证号序号 **   输入参数: **   			pcVouKind		----	卡凭证类别 **             pcPreCharCode	----	冠字号码 **   			plApplyNum		----	申请数量 **   输出参数: **   			plMinVouNo      ----	可用最小号 **   			plMaxVouNo      ----	可用最大号 **   涉及库表: cmsvouseqno  卡凭证序号表    **   返回结果:int  0 成功  -1 失败 **   作        者 : UCCB   ALex   **   版本创建日期 : 2004/09/15 **   修改记录     : **   修改人       修改日期     修改位置 **		Feng		2006-01-05	全部*******************************************************/int	cmsApiGetCardVouNo( pcVouKind,pcPreCharCode,						plApplyNum,plMinVouNum,plMaxVouNum )char					*pcVouKind;				/*卡凭证种类*/char					*pcPreCharCode;			/*卡凭证冠字号码*/long 		 			*plApplyNum;			/* 申请数量 */long    	 		 	*plMinVouNum;			/* 可用最小号	*/long    	 	 		*plMaxVouNum;			/* 可用最大号	*/{	/*定义	局部变量*/	struct	cmsvouseqno		stCmsVouSeqNo;		/*卡凭证序号表*/	long	 lSeqNo;							/*临时凭证序号*/	sprintf( g_acTrcMsg, "cmsApiGetCardVouNo begin " );	TRCLOG2	/*初始化结构*/	memset( &stCmsVouSeqNo, 0x00, sizeof( struct cmsvouseqno ) );		/*将输入参数赋值给结构*/	strcpy(stCmsVouSeqNo.voukind,		pcVouKind);	strcpy(stCmsVouSeqNo.precharcode,	pcPreCharCode);	/*取卡凭证序号表中记录*/	lSeqNo=0;	pubStoVCmsvouseqno( &stCmsVouSeqNo );	EXEC SQL	DECLARE Vouseqno_1_cur CURSOR FOR				SELECT	*				FROM	CMSVOUSEQNO				WHERE	voukind=:cmsvouseqno_voukind				AND		precharcode=:cmsvouseqno_precharcode				FOR UPDATE ;	/*	if( SQLCODE )	{		sprintf( g_acRspCode, "CMS110");		pubCrtRspInfo( "cmsvouseqno", SQLCODE );		ERRLOG		goto Exit;		return FAILED;	}	*/	SQLOPENCUR(Vouseqno_1_cur,"Vouseqno_1_cur")	if( SQLCODE )	{		sprintf( g_acRspCode, "CMS111");		pubCrtRspInfo( "cmsvouseqno", SQLCODE );		ERRLOG		goto Exit;	}	pubInitCmsvouseqno();	EXEC SQL 	FETCH Vouseqno_1_cur INTO R_CMSVOUSEQNO ;	if( SQLCODE && SQLCODE != SQLNOTFOUND )	{		sprintf( g_acRspCode, "CMS112");		pubCrtRspInfo( "cmsvouseqno", SQLCODE );		ERRLOG		SQLCLOSECUR(Vouseqno_1_cur,"Vouseqno_1_cur")		goto Exit;	}	else if ( SQLCODE==SQLNOTFOUND )	{		/*给出口参数赋值*/		*plMinVouNum = lSeqNo+1;		*plMaxVouNum = lSeqNo+*plApplyNum;		/*给结构宿组赋值*/		sprintf( cmsvouseqno_vouseqno,"%0*ld",MAX_VOUSEQNOLEN,*plMaxVouNum);		strcpy(cmsvouseqno_voukind,		pcVouKind);		strcpy(cmsvouseqno_precharcode,	pcPreCharCode);		/*卡凭证序号 表增加记录*/		EXEC SQL	INSERT INTO cmsvouseqno VALUES ( R_CMSVOUSEQNO );		if( SQLCODE )		{			sprintf( g_acRspCode, "999998");			pubCrtRspInfo( "cmsvouseqno", SQLCODE );			ERRLOG			SQLCLOSECUR(Vouseqno_1_cur,"Vouseqno_1_cur")			goto Exit;		}	}	else	{		pubVtoSCmsvouseqno( &stCmsVouSeqNo );		/*检查卡凭证序号是否超限*/		lSeqNo=atol( stCmsVouSeqNo.vouseqno );		if( (lSeqNo+*plApplyNum)>MAX_VOUSEQNO )		{			sprintf( g_acTrcMsg,"申请卡凭证序号超限[lSeqNo+(*plApplyNum)][(%ld+%ld)>%ld]",lSeqNo,*plApplyNum,MAX_VOUSEQNO);			TRCLOG1			sprintf( g_acRspCode, "CMS207");			pubCrtRspInfo( MAX_VOUSEQNO );			ERRLOG			SQLCLOSECUR(Vouseqno_1_cur,"Vouseqno_1_cur")			goto Exit;		}			/*给出口参数赋值*/		*plMinVouNum = lSeqNo+1;		*plMaxVouNum = lSeqNo+*plApplyNum;			/*修改凭证序号*/		sprintf( cmsvouseqno_vouseqno,"%0*ld",MAX_VOUSEQNOLEN,*plMaxVouNum);		EXEC SQL	UPDATE cmsvouseqno 					SET vouseqno=:cmsvouseqno_vouseqno 					WHERE CURRENT of Vouseqno_1_cur;		if( SQLCODE )		{			sprintf(g_acTrcMsg,"修改cmsvouseqno错! voukind[%s]",pcVouKind);			TRCLOG1			sprintf(g_acRspCode,"999997");			pubCrtRspInfo( "cmsvouseqno", SQLCODE );			ERRLOG			SQLCLOSECUR(Vouseqno_1_cur,"Vouseqno_1_cur")			goto Exit;		}	}	Exit:	SQLCLOSECUR(Vouseqno_1_cur,"Vouseqno_1_cur")	sprintf( g_acTrcMsg, "cmsApiGetCardVouNo end " );	TRCLOG2	if(	!strcmp( g_acRspCode, RSP_OK ) )		return SUCCESS;	else		return FAILED ;}/******************************************************* **	  函数名称:cmsApiCheckCardVouNo **   功能描述: 检查卡凭证号是否已使用,并返回新的未用凭证号  **   输入参数: **   			pcVouKind		----	卡凭证类别 **             pcPreCharCode	----	冠字号码 **   			pcVouNo			----	卡凭证号码 **   输出参数: **				pcVouNo			----	卡凭证号码 **	  说    明: 如果凭证号码已经被使用,重新获取凭证号码,未使用作为输出参数返回,否则如果凭证号码未使用,则直接作为输出参数返回。 **   涉及库表: cmsvouseqno  卡凭证序号表    **				 cmschoosereg 卡选号登记簿 **   返回结果:int  0 成功  -1 失败 **   作        者 : Feng **   版本创建日期 : 2006/01/05 **   修改记录     : **   修改人       修改日期     修改位置*******************************************************/int	cmsApiCheckCardVouNo( pcVouKind,pcPreCharCode,						pcVouNo )char					*pcVouKind;				/*卡凭证种类*/char					*pcPreCharCode;			/*卡凭证冠字号码*/char 		 			*pcVouNo;				/*卡凭证号码*/{	/*定义	局部变量*/	struct	cmschoosereg	stCmsChooseReg;		/*卡选号登记簿*/	char	acVouKind[ VOUKIND_LEN + 1 ];		/* 凭证类别 */	char	acVouNo[ VOUNO_LEN + 1 ];			/* 凭证号码 */	char	acPreCharCode[ PRECHARCODE_LEN + 1 ];	/* 冠字号码 */	long	lSeqNo;							/*临时凭证序号*/	long	lNum=0, lMinNum=0, lMaxNum=0;	int		iRtn=0;	sprintf( g_acTrcMsg, "cmsApiCheckCardVouNo begin " );	TRCLOG2	/*初始化结构*/	memset( acVouKind,		0x00,	sizeof( acVouKind ) );	memset( acVouNo,		0x00,	sizeof( acVouNo ) );	memset( acPreCharCode,	0x00,	sizeof( acPreCharCode ) );		strcpy( acVouKind,		pcVouKind	);	strcpy( acVouNo,		pcVouNo	);	strcpy( acPreCharCode,	pcPreCharCode	);	while ( 1 )	{		/*将输入参数赋值给结构*/		memset( &stCmsChooseReg, 0x00, sizeof( struct cmschoosereg ) );		strcpy(stCmsChooseReg.voukind,		acVouKind);		strcpy(stCmsChooseReg.precharcode,	acPreCharCode);		strcpy(stCmsChooseReg.vouno,		acVouNo);			pubStoVCmschoosereg( &stCmsChooseReg );		EXEC SQL	SELECT	*					FROM	cmschoosereg					WHERE	voukind = :cmschoosereg_voukind					AND		precharcode = :cmschoosereg_precharcode					AND		vouno = :cmschoosereg_vouno					AND		validf = '0';		if ( SQLCODE == SQLNOTFOUND ) /* 记录不存在 凭证可以使用 */		{			strcpy( pcVouNo,		acVouNo	);			break;		}		else if ( SQLCODE )		{			strcpy( g_acRspCode, "999996" );			pubCrtRspInfo( "cmschoosereg", SQLCODE );			ERRLOG			goto Exit;		}		lNum = 1;		iRtn = cmsApiGetCardVouNo( acVouKind, acPreCharCode, &lNum, &lMinNum, &lMaxNum );		if ( iRtn ) 		{			ERRLOG			goto Exit; 		}		sprintf( acVouNo, "%.*ld",MAX_VOUSEQNOLEN,lMinNum);	}Exit:	sprintf( g_acTrcMsg, "cmsApiCheckCardVouNo end " );	TRCLOG2	if(	!strcmp( g_acRspCode, RSP_OK ) )		return SUCCESS;	else		return FAILED ;}/******************************************************* **	  函数名称:cmsApiCheckVouNo **   功能描述: 检查卡凭证号是否已使用 **   输入参数: **   			pcVouKind		----	卡凭证类别 **             pcPreCharCode	----	冠字号码 **   			pcVouNo			----	卡凭证号码 **   输出参数: **	  说    明: 如果凭证号码已经被使用,返回-1,否则为0 **   涉及库表: **				 cmschoosereg 卡选号登记簿 **   返回结果:int  0 成功  -1 失败 **   作        者 : Feng **   版本创建日期 : 2006/01/05 **   修改记录     : **   修改人       修改日期     修改位置*******************************************************/int	cmsApiCheckVouNo( pcVouKind,pcPreCharCode,						pcVouNo )char					*pcVouKind;				/*卡凭证种类*/char					*pcPreCharCode;			/*卡凭证冠字号码*/char 		 			*pcVouNo;				/*卡凭证号码*/{	/*定义	局部变量*/	struct	cmschoosereg	stCmsChooseReg;		/*卡选号登记簿*/	char	acVouKind[ VOUKIND_LEN + 1 ];		/* 凭证类别 */	char	acVouNo[ VOUNO_LEN + 1 ];			/* 凭证号码 */	char	acPreCharCode[ PRECHARCODE_LEN + 1 ];	/* 冠字号码 */	sprintf( g_acTrcMsg, "cmsApiCheckVouNo begin " );	TRCLOG2	/*初始化结构*/	memset( acVouKind,		0x00,	sizeof( acVouKind ) );	memset( acVouNo,		0x00,	sizeof( acVouNo ) );	memset( acPreCharCode,	0x00,	sizeof( acPreCharCode ) );		strcpy( acVouKind,		pcVouKind	);	strcpy( acVouNo,		pcVouNo	);	strcpy( acPreCharCode,	pcPreCharCode	);	/*将输入参数赋值给结构*/	memset( &stCmsChooseReg, 0x00, sizeof( struct cmschoosereg ) );	strcpy(stCmsChooseReg.voukind,		acVouKind);	strcpy(stCmsChooseReg.precharcode,	acPreCharCode);	strcpy(stCmsChooseReg.vouno,		acVouNo);		pubStoVCmschoosereg( &stCmsChooseReg );	EXEC SQL	SELECT	*				FROM	cmschoosereg				WHERE	voukind = :cmschoosereg_voukind				AND		precharcode = :cmschoosereg_precharcode				AND		vouno = :cmschoosereg_vouno				AND		validf = '0';	if ( SQLCODE == SQLNOTFOUND ) /* 记录不存在 凭证可以使用 */		;	else if ( SQLCODE )	{		strcpy( g_acRspCode, "999996" );		pubCrtRspInfo( "cmschoosereg", SQLCODE );		ERRLOG		goto Exit;	}	else	{		strcpy( g_acRspCode, "CMS221" );		pubCrtRspInfo( pcVouKind, pcPreCharCode, pcVouNo );		ERRLOG		goto Exit;	}Exit:	sprintf( g_acTrcMsg, "cmsApiCheckVouNo end " );	TRCLOG2	if(	!strcmp( g_acRspCode, RSP_OK ) )		return SUCCESS;	else if ( !strcmp( g_acRspCode, "CMS221" ) )		return TRUE;	else		return FAILED ;}/******************************************************* **	  函数名称:cmsApiCheckCardSeqNo **   功能描述: 检查卡顺序号是否已使用 **   输入参数: **   			pstCmsCardKind	----	卡片种类表 **             pcAreaCode		----	地区代码 **   			plCardSeqNo		----	卡顺序号码 **   输出参数: **	  说    明: 如果凭证号码已经被使用,返回-1,否则为0 **   涉及库表: **				 cmschoosereg 卡选号登记簿 **   返回结果:int  0 成功  -1 失败 **   作        者 : Feng **   版本创建日期 : 2006/01/05 **   修改记录     : **   修改人       修改日期     修改位置*******************************************************/int	cmsApiCheckCardSeqNo( pstCmsCardKind,pcAreaCode,						plCardSeqNo )struct cmscardkind		*pstCmsCardKind;		/*卡片种类表*/char					*pcAreaCode;			/*地区代码*/long 		 			*plCardSeqNo;			/*卡顺序号码*/{	/*定义	局部变量*/	struct	cmschoosereg	stCmsChooseReg;		/*卡选号登记簿*/	int		iRtn=0;	sprintf( g_acTrcMsg, "cmsApiCheckCardSeqNo begin " );	TRCLOG2	/*初始化结构*/	memset( &stCmsChooseReg, 0x00, sizeof( struct cmschoosereg ) );	/*将输入参数赋值给结构*/	strcpy(stCmsChooseReg.cardkind,		pstCmsCardKind->cardkind);	strcpy(stCmsChooseReg.areacode,		pcAreaCode);	stCmsChooseReg.cardseqno = *plCardSeqNo ;		pubStoVCmschoosereg( &stCmsChooseReg );	EXEC SQL	SELECT	*				FROM	cmschoosereg				WHERE	cardkind = :cmschoosereg_cardkind				AND		areacode = :cmschoosereg_areacode				AND		cardseqno = :cmschoosereg_cardseqno				AND		validf = '0';	if ( SQLCODE == SQLNOTFOUND ) /* 记录不存在 顺序号可以使用 */		;	else if ( SQLCODE )	{		strcpy( g_acRspCode, "999996" );		pubCrtRspInfo( "cmschoosereg", SQLCODE );		ERRLOG		goto Exit;	}	else	{		strcpy( g_acRspCode, "CMS220" );		pubCrtRspInfo( pstCmsCardKind->cardkind, pcAreaCode, *plCardSeqNo );		ERRLOG		goto Exit;	}Exit:	sprintf( g_acTrcMsg, "cmsApiCheckCardSeqNo end " );	TRCLOG2	if(	!strcmp( g_acRspCode, RSP_OK ) )		return SUCCESS;	else if ( !strcmp( g_acRspCode, "CMS220" ) )		return TRUE;	else		return FAILED ;}

⌨️ 快捷键说明

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