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

📄 svrf302.ec

📁 一个银行业务的程序
💻 EC
字号:
#include "../incl/serverpub.h"
$include sqlca;

/**修改记录
2003/01/18:name 由like改为matches
2003/02/10:增加网点号作为查询条件
2003/02/26:增加查询范围为所有(企业、个人、不包括发展商,多表数据)

*/
int ExecQuery(int argc,char *argv[],int iBound)
{
	char	cTemp[200],cCon[200],cAnd[6],cRetCode[4],cFileName[80];
	$char	e_cSql[800],e_cSqlDest[800];
	FILE	*fp=NULL;
	int	i,iRet=0,iOne=1,iType=0,iAppend=0,viCounts=0;
	$char	cId[17],cName[61],cNo[21],cMan[17],cAddress[101],cZip[9],cPhone[21],cLevel[4],cDate[11];
	$int	e_iCertType;
	char	cBody[256];

	iAppend=atoi(argv[argc-1]);
#ifdef QDCS
	WriteTest("查询范围=%d,类型=%d\n",iAppend,iBound);
#endif

	memset(e_cSql,0,sizeof(e_cSql));

	for(i=0;i<(argc-1);i++){
		memset(cTemp,0,sizeof(cTemp));
		strcpy(cTemp,argv[i]);
		ClipStr(cTemp);
		if(strlen(cTemp)==0) continue;

		memset(cCon,0,sizeof(cCon));
		switch(iBound){
			case 1://enterprise
				iType=1;//证件类型
				if(i==0){
					memset(cTemp,0,sizeof(cTemp));
					strcpy(cTemp,argv[i]);
					ClipStr(cTemp);
					sprintf(cCon," name matches '%s' ",cTemp);	
					strcat(e_cSql,cCon);
				}else if(i==1){
					memset(cAnd,0,sizeof(cAnd));
					if(strlen(e_cSql)>0)strcpy(cAnd," and ");
					else strcpy(cAnd,"");
					sprintf(cCon,"%s code matches '%s' ",cAnd,argv[i]);	
					strcat(e_cSql,cCon);
				}else if(i==2){
					memset(cAnd,0,sizeof(cAnd));
					if(strlen(e_cSql)>0)strcpy(cAnd," and ");
					else strcpy(cAnd,"");
					sprintf(cCon,"%s JURD_MAN_ID matches '%s' ",cAnd,argv[i]);	
					strcat(e_cSql,cCon);
				}else if(i==3){
					memset(cAnd,0,sizeof(cAnd));
					if(strlen(e_cSql)>0)strcpy(cAnd," and ");
					else strcpy(cAnd,"");
					sprintf(cCon,"%s LOAN_CARD_NO matches '%s' ",cAnd,argv[i]);	
					strcat(e_cSql,cCon);
				}else if(i==4){
					memset(cAnd,0,sizeof(cAnd));
					if(strlen(e_cSql)>0)strcpy(cAnd," and ");
					else strcpy(cAnd,"");
					sprintf(cCon,"%s TRADE_LIC matches '%s' ",cAnd,argv[i]);	
					strcat(e_cSql,cCon);
				}else if(i==5){//网点编号
					memset(cAnd,0,sizeof(cAnd));
					if(strlen(e_cSql)>0)strcpy(cAnd," and ");
					else strcpy(cAnd,"");
					sprintf(cCon,"%s bank_no matches '%s' ",cAnd,argv[i]);	
					strcat(e_cSql,cCon);
				}
				break;
			case 2://person
				iType=2;//证件类型
				if(i==0){
					memset(cTemp,0,sizeof(cTemp));
					strcpy(cTemp,argv[i]);
					ClipStr(cTemp);
					sprintf(cCon," name matches '%s' ",cTemp);	
					strcat(e_cSql,cCon);
				}else if(i==1){
					memset(cAnd,0,sizeof(cAnd));
					if(strlen(cCon)>0)strcpy(cAnd," and ");
					else strcpy(cAnd,"");
					sprintf(cCon,"%s cert_code matches '%s' ",cAnd,argv[i]);	
					strcat(e_cSql,cCon);
				}else if(i==2){
					memset(cAnd,0,sizeof(cAnd));
					if(strlen(cCon)>0)strcpy(cAnd," and ");
					else strcpy(cAnd,"");
					sprintf(cCon,"%s id matches '%s' ",cAnd,argv[i]);	
					strcat(e_cSql,cCon);
				}else if(i==3){//贷款卡号 无
				}else if(i==4){//营业执照 无
				}else if(i==5){//网点编号
					memset(cAnd,0,sizeof(cAnd));
					if(strlen(e_cSql)>0)strcpy(cAnd," and ");
					else strcpy(cAnd,"");
					sprintf(cCon,"%s bank_no matches '%s' ",cAnd,argv[i]);	
					strcat(e_cSql,cCon);
				}
				break;
			case 3://发展商
				iType=3;//证件类型
				if(i==0){
					memset(cTemp,0,sizeof(cTemp));
					strcpy(cTemp,argv[i]);
					ClipStr(cTemp);
					sprintf(cCon," name matches '%s' ",cTemp);	
					strcat(e_cSql,cCon);
				}else if(i==2){
					memset(cAnd,0,sizeof(cAnd));
					if(strlen(cCon)>0)strcpy(cAnd," and ");
					else strcpy(cAnd,"");
					sprintf(cCon,"%s id matches '%s' ",cAnd,argv[i]);	
					strcat(e_cSql,cCon);
				}else if(i==5){//网点编号
					memset(cAnd,0,sizeof(cAnd));
					if(strlen(cCon)>0)strcpy(cAnd," and ");
					else strcpy(cAnd,"");
					sprintf(cCon,"%s bank_no matches '%s' ",cAnd,argv[i]);	
					strcat(e_cSql,cCon);
				}
				break;
		}
		
	}

	if(strlen(e_cSql)==0){
		CreateStruct("返回码",ALLRECORD);return -1;
	}

	memset(e_cSqlDest,0,sizeof(e_cSqlDest));
	switch(iType)
	{
		case 1:
			sprintf(e_cSqlDest,"enterprise where %s",e_cSql);
			break;
		case 2:
			sprintf(e_cSqlDest,"person where %s",e_cSql);
			break;
		case 3:
			sprintf(e_cSqlDest,"dev_trader where %s",e_cSql);
			break;
	}

	memset(cRetCode,0,sizeof(cRetCode));
	iRet=GetCount(e_cSqlDest,cRetCode);
	if(iAppend!=0 && iRet==0){//NO record
		CreateStruct("返回码",NORECORD);return -1;
	}else if(iAppend!=0 && iRet==1)//One record
		iOne=0;
	else if((iAppend!=0 && iRet>1) || (iAppend==0 && iBound==1))
	{//Many record
		iOne=1;
//地区号(5)+前置机号(4)+所号(4)+操作员号(4)
		memset(cTemp,0,sizeof(cTemp));
		FindKey("地区号");strcat(cTemp,sCurrent->cValue);
		FindKey("前置机号");strcat(cTemp,sCurrent->cValue);
		FindKey("储蓄所号");strcat(cTemp,sCurrent->cValue);
		FindKey("操作员号");strcat(cTemp,sCurrent->cValue);
		memset(cFileName,0,sizeof(cFileName));
		sprintf(cFileName,"%s/download/%s",getenv("HOME"),cTemp);

		if (( fp=fopen(cFileName,"w"))==NULL)
		{
		    WriteTest("[%s]: open file %s error \n",__FILE__,cFileName);
		    CreateStruct("返回码","020");
		    return -1;
		}
		fprintf(fp,"客户号,客户名称,证件类型,证件号码/企业代码,企业法人,地址,邮政编码,联系电话,信用等级,评定日期\n");
	} 

	if(iRet==0 && iAppend==0)
	{
		if(iBound==1) fclose(fp);
		CreateStruct("发报报体","100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");//1 有文件标志
		return -2;
	}

	if(iAppend==0 && iRet>0 && iBound>1)
	{//Have record
		iOne=1;

		memset(cTemp,0,sizeof(cTemp));
		FindKey("地区号");strcat(cTemp,sCurrent->cValue);
		FindKey("前置机号");strcat(cTemp,sCurrent->cValue);
		FindKey("储蓄所号");strcat(cTemp,sCurrent->cValue);
		FindKey("操作员号");strcat(cTemp,sCurrent->cValue);
		memset(cFileName,0,sizeof(cFileName));
		sprintf(cFileName,"%s/download/%s",getenv("HOME"),cTemp);

		if (( fp=fopen(cFileName,"a+"))==NULL)
		{
		    WriteTest("[%s]: open file %s error \n",__FILE__,cFileName);
		    CreateStruct("返回码","020");
		    return -1;
		}
	}
	
	
	memset(e_cSqlDest,0,sizeof(e_cSqlDest));
	if(iType==1){
		sprintf(e_cSqlDest,"select id,name,code,JURD_MAN_ID,address,zip,phone,credit_level,assess_date from enterprise where %s order by id",e_cSql);
	}else if(iType==2){
		//member1 not use
		sprintf(e_cSqlDest,"select id,name,cert_type,cert_code,address,member1,homephone,credit_level,assess_date from person where %s order by id",e_cSql);
	}else if(iType==3){
		sprintf(e_cSqlDest,"select id,name,address,phone from dev_trader where %s order by id",e_cSql);
	}

#ifdef QDCS
	WriteTest("[%s]SQL=%s\n",__FILE__,e_cSqlDest);
#endif

	$prepare Many from :e_cSqlDest;
	$declare File1 cursor for Many;
	if(SQLCODE!=0){
		if(iOne) fclose(fp);
		CreateStruct("返回码",DBOPERERR);return -1;
        }
        $open File1;
        if(SQLCODE!=0){
		if(iOne) fclose(fp);
		CreateStruct("返回码",DBOPERERR);return -1;
        }

	viCounts=0;

        while(1){
		memset(cId,0,sizeof(cId));
		memset(cName,0,sizeof(cName));
		memset(cAddress,0,sizeof(cAddress));
		memset(cZip,0,sizeof(cZip));
		memset(cPhone,0,sizeof(cPhone));
		memset(cLevel,0,sizeof(cLevel));
		memset(cDate,0,sizeof(cDate));
		memset(cMan,0,sizeof(cMan));
		memset(cNo,0,sizeof(cNo));

		if(iType==3)
			$fetch File1 into :cId,:cName,:cAddress,:cPhone;
		else if(iType==1)
			$fetch File1 into :cId,:cName,:cNo,:cMan,:cAddress,:cZip,:cPhone,:cLevel,:cDate;
		else if(iType==2)
			$fetch File1 into :cId,:cName,:e_iCertType,:cNo,:cAddress,:cZip,:cPhone,:cLevel,:cDate;

                if(SQLCODE!=0)break;

		ConvertDate(cDate);

		if(iType==2)
		{
			memset(cMan,0,sizeof(cMan));
			memset(cZip,0,sizeof(cZip));
		}

		memset(cBody,0,sizeof(cBody));
		if(iOne){
			if(iType==2)
				sprintf(cBody,"%s,%s,%d,%s,%s,%s,%s,%s,%s,%s",cId,cName,e_iCertType,cNo,cMan,cAddress,cZip,cPhone,cLevel,cDate);
			else
				sprintf(cBody,"%s,%s,%d,%s,%s,%s,%s,%s,%s,%s",cId,cName,iType,cNo,cMan,cAddress,cZip,cPhone,cLevel,cDate);
			fprintf(fp,"%s\n",cBody);
			
			viCounts++;
			if(viCounts>=1000)
			    break;
		}else
			sprintf(cBody,"%1d%16s%60s%1d%20s%16s%100s%8s%20s%3s%8s",iOne,cId,cName,iType,cNo,cMan,cAddress,cZip,cPhone,cLevel,cDate);
        }
	$close File1;
	$free File1; 

	if(iOne)
		fclose(fp);

	if(iAppend!=0 && iOne==0)
		CreateStruct("发报报体",cBody);
	else
		CreateStruct("发报报体","100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");//1 有文件标志
	return 0;
}

SvrF302(int argc,char *argv[])
{
	int	i;

#ifdef QDCS
	/*NAME,企业代码,JURD_MAN_ID,LOAN_CARD_NO,TRADE_LIC,操作网点,查询范围*/
	for(i=0;i<argc;i++)
		WriteTest("argv[%d]:%s\n",i,argv[i]);
#endif
	if(atoi(argv[argc-1])==0)
	{
		for(i=1;i<3;i++) 
			if(ExecQuery(argc,argv,i)==-1) return 0;
	}else 
		if(ExecQuery(argc,argv,atoi(argv[argc-1]))==-1) return 0 ;

	CreateStruct("返回码","000");

	return 0;
}

⌨️ 快捷键说明

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