📄 svrf302.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 + -