📄 ysapi.pc
字号:
/*** convert from stZDSM to stZDDB ***/
int ZDSMMsgConvert( struct stZDYSMsgHeader stZDSM,struct stZDYSSMDBRec *stZDDB )
{
trim(stZDSM.yslx);
trim(stZDSM.wjbh);
trim(stZDSM.qdqa);
trim(stZDSM.kq);
trim(stZDSM.dingj);
trim(stZDSM.dyzs);
trim(stZDSM.dyk);
trim(stZDSM.lszs);
trim(stZDSM.lsk);
trim(stZDSM.fssbh);
trim(stZDSM.bkdh);
trim(stZDSM.yxnf);
trim(stZDSM.fsxh);
strcpy(stZDDB->yslx,stZDSM.yslx);
strcpy(stZDDB->wjbh,stZDSM.wjbh);
stZDDB->qdqa = atoi(stZDSM.qdqa);
strcpy(stZDDB->kq,stZDSM.kq);
stZDDB->dingj=atof( stZDSM.dingj);
stZDDB->dyzs =atol(stZDSM.dyzs);
stZDDB->dyk =atof(stZDSM.dyk);
stZDDB->lszs =atol(stZDSM.lszs);
stZDDB->lsk =atof(stZDSM.lsk);
strcpy(stZDDB->fssbh,stZDSM.fssbh);
strcpy(stZDDB->bkdh,stZDSM.bkdh);
stZDDB->nf=atoi(stZDSM.yxnf);
stZDDB->xh =atol(stZDSM.fsxh);
return(0);
}
/*** convert from stPDSM to stPDDB ***/
int PDSMMsgConvert(struct stPDYSMsgHeader stPDSM,struct stPDYSSMDBRec *stPDDB )
{
trim(stPDSM.yslx);
trim(stPDSM.wjbh);
trim(stPDSM.qdqa);
trim(stPDSM.qdqb);
trim(stPDSM.zdqa);
trim(stPDSM.zdqb);
trim(stPDSM.kq);
trim(stPDSM.dingj);
trim(stPDSM.dyzs);
trim(stPDSM.dyk);
trim(stPDSM.lszs);
trim(stPDSM.lsk);
trim(stPDSM.fssbh);
trim(stPDSM.bkdh);
trim(stPDSM.yxnf);
trim(stPDSM.fsxh);
strcpy(stPDDB->bkdh,stPDSM.bkdh);
strcpy(stPDDB->yslx,stPDSM.yslx);
strcpy(stPDDB->wjbh,stPDSM.wjbh);
stPDDB->qdqa = atoi(stPDSM.qdqa);
stPDDB->qdqb = atoi(stPDSM.qdqb);
if(stPDSM.zdqa[0]!='\0')
stPDDB->zdqa = atoi(stPDSM.zdqa);
if(stPDSM.zdqb[0]!='\0')
stPDDB->zdqb = atoi(stPDSM.zdqb);
strcpy(stPDDB->kq,stPDSM.kq);
stPDDB->dingj=atof( stPDSM.dingj);
stPDDB->dyzs =atol(stPDSM.dyzs);
stPDDB->dyk =atof(stPDSM.dyk);
stPDDB->lszs =atol(stPDSM.lszs);
stPDDB->lsk =atof(stPDSM.lsk);
strcpy(stPDDB->fssbh,stPDSM.fssbh);
stPDDB->nf=atoi(stPDSM.yxnf);
stPDDB->xh =atol(stPDSM.fsxh);
return(0);
}
/*** convert to stZDSJDB ***/
int ZDSJMsgConvert(struct stZDYSMsgHeader stZDSM,struct stZDYSMsgRec stZDSJ,struct stZDYSDBRec *stZDSJDB )
{
trim(stZDSJ.yffs);
trim(stZDSJ.qzlss);
trim(stZDSJ.zfjbh);
trim(stZDSM.fssbh);
trim(stZDSM.fsxh);
stZDSJDB->yffs =atol(stZDSJ.yffs);
stZDSJDB->qzlss=atol(stZDSJ.qzlss);
/* stZDSJDB->zfjbh=atol(stZDSJ.zfjbh);
*/
strcpy(stZDSJDB->zfjbh,stZDSJ.zfjbh);
strcpy(stZDSJDB->sjbh,stZDSM.fssbh);
stZDSJDB->xh =atol(stZDSM.fsxh);
return(0);
}
/*** convert to stPDSJDB ***/
int PDSJMsgConvert(struct stPDYSMsgHeader stPDSM,struct stPDYSMsgRec stPDSJ,struct stPDYSDBRec *stPDSJDB )
{
trim(stPDSJ.zjfs);
trim(stPDSJ.lszjfs);
trim(stPDSJ.zfjbh);
trim(stPDSM.fssbh);
trim(stPDSM.fsxh);
stPDSJDB->zjfs =atol(stPDSJ.zjfs);
stPDSJDB->lszjfs=atol(stPDSJ.lszjfs);
/* stPDSJDB->zfjbh=atol(stPDSJ.zfjbh);
*/
strcpy(stPDSJDB->zfjbh,stPDSJ.zfjbh);
strcpy(stPDSJDB->sjbh,stPDSM.fssbh);
stPDSJDB->xh =atol(stPDSM.fsxh);
return(0);
}
/*** insert the zd data from MQ to database ***/
int ZDYSRcvRecDB( char *message,long int msglen )
{
struct stZDYSMsgHeader stZDSM;
struct stZDYSMsgRec stZDSJ;
struct stZDYSSMDBRec stZDSMDB;
struct stZDYSDBRec stZDSJDB;
struct stZDYSSM_id ZDid;
int count_rec;
int i;
int flag;
short qzlss_id;
count_rec=(msglen-ZDSM_MSG_LEN)/YSSJ_MSG_LEN;
flag=ZDYSSMRcv( message,&stZDSM );
if( flag!=0 )
{
return(-1);
}
ZDSMMsgConvert(stZDSM,&stZDSMDB);
/* printf(",%s,%s,%d,%s,\n",stZDSMDB.yslx,stZDSMDB.wjbh,stZDSMDB.qdqa,stZDSMDB.kq);
printf(",%.2f,%d,%.2f,%d\n",stZDSMDB.dingj,stZDSMDB.dyzs,stZDSMDB.dyk,stZDSMDB.lszs);
printf(",%.2f,%s,%s,%d,%ld\n",stZDSMDB.lsk,stZDSMDB.fssbh,stZDSMDB.bkdh,stZDSMDB.nf,stZDSMDB.xh);
*/ ERROR=0;
EXEC SQL WHENEVER SQLERROR DO sqlerror();
/* EXEC SQL INSERT INTO t_jszdyssm VALUES
(:stZDSMDB.yslx,
:stZDSMDB.wjbh,
:stZDSMDB.qdqa :ZDid.qdqa,
:stZDSMDB.kq,
:stZDSMDB.dingj :ZDid.dingj,
:stZDSMDB.dyzs :ZDid.dyzs,
:stZDSMDB.dyk :ZDid.dyk,
:stZDSMDB.lszs :ZDid.lszs,
:stZDSMDB.lsk :ZDid.lsk,
:stZDSMDB.fssbh,
:stZDSMDB.bkdh,
:stZDSMDB.nf :ZDid.nf,
:stZDSMDB.xh);
*/
EXEC SQL INSERT INTO t_jszdyssm VALUES
(:stZDSMDB.yslx,
:stZDSMDB.wjbh,
:stZDSMDB.qdqa ,
:stZDSMDB.kq,
:stZDSMDB.dingj ,
:stZDSMDB.dyzs ,
:stZDSMDB.dyk ,
:stZDSMDB.lszs ,
:stZDSMDB.lsk ,
:stZDSMDB.fssbh,
:stZDSMDB.bkdh,
:stZDSMDB.nf ,
:stZDSMDB.xh);
if( ERROR!=0 )
{
ERROR=0;
ProcessError(LOG_ERROR,"PCS_RCV_YS: error when insert into yssm!",END);
return(-1);
}
for( i=0;i<count_rec;i++ )
{
ZDYSSJRcv( message,&stZDSJ );
ZDSJMsgConvert(stZDSM,stZDSJ,&stZDSJDB);
ERROR=0;
EXEC SQL WHENEVER SQLERROR DO sqlerror();
/* EXEC SQL INSERT INTO t_jszdyssj VALUES (
:stZDSJDB.yffs,:stZDSJDB.qzlss :qzlss_id,
:stZDSJDB.zfjbh,:stZDSJDB.sjbh,:stZDSJDB.xh);
*/
EXEC SQL INSERT INTO t_jszdyssj (yffs,zfjbh,sjbh,jsxh) VALUES (
:stZDSJDB.yffs,
:stZDSJDB.zfjbh,:stZDSJDB.sjbh,:stZDSJDB.xh);
if( ERROR!=0 )
{
ERROR=0;
ProcessError(LOG_ERROR,"PCS_RCV_YS: error when insert into yssj!",END);
return(-1);
}
}
return(0);
}
/*** insert pd data to database ***/
int PDYSRcvRecDB( char *message,long int msglen )
{
struct stPDYSMsgHeader stPDSM;
struct stPDYSMsgRec stPDSJ;
struct stPDYSSMDBRec stPDSMDB;
struct stPDYSDBRec stPDSJDB;
struct stPDYSSM_id PDid;
int count_rec;
int i;
int flag;
short lszjfs_id;
count_rec=(msglen-PDSM_MSG_LEN)/YSSJ_MSG_LEN;
flag=PDYSSMRcv( message,&stPDSM );
if( flag!=0 )
{
return(-1);
}
PDSMMsgConvert(stPDSM,&stPDSMDB);
/* printf(",%s,%s,%s,%d,\n",stPDSMDB.bkdh,stPDSMDB.yslx,stPDSMDB.wjbh,stPDSMDB.qdqa);
printf(",%d,%d,%d,\n",stPDSMDB.qdqb,stPDSMDB.zdqa,stPDSMDB.zdqb);
printf(",%s,%.2f,%ld,%.2f\n",stPDSMDB.kq,stPDSMDB.dingj,stPDSMDB.dyzs,stPDSMDB.dyk);
printf(",%ld,%.2f,\n",stPDSMDB.lszs,stPDSMDB.lsk);
printf(",%s,%d,%ld,\n",stPDSMDB.fssbh,stPDSMDB.nf,stPDSMDB.xh);
*/
ERROR=0;
EXEC SQL WHENEVER SQLERROR DO sqlerror();
/* EXEC SQL INSERT INTO t_jspdyssm VALUES
(:stPDSMDB.bkdh,
:stPDSMDB.yslx,
:stPDSMDB.wjbh,
:stPDSMDB.qdqa :PDid.qdqa,
:stPDSMDB.qdqb :PDid.qdqb,
:stPDSMDB.zdqa :PDid.zdqa,
:stPDSMDB.zdqb :PDid.zdqb,
:stPDSMDB.kq,
:stPDSMDB.dingj :PDid.dingj,
:stPDSMDB.dyzs :PDid.dyzs,
:stPDSMDB.dyk :PDid.dyk,
:stPDSMDB.lszs :PDid.lszs,
:stPDSMDB.lsk :PDid.lsk,
:stPDSMDB.fssbh,
:stPDSMDB.nf :PDid.nf,
:stPDSMDB.xh);
*/
if( stPDSMDB.yslx[0]=='5' || stPDSMDB.yslx[0]=='6' )
EXEC SQL INSERT INTO t_jspdyssm
(bkdh,yslx,wjbh,qdqa,zdqa,kq,dingj,dyzs,dyk,lszs,lsk,sjbh,yxnf,jsxh)
VALUES
(:stPDSMDB.bkdh,
:stPDSMDB.yslx,
:stPDSMDB.wjbh,
:stPDSMDB.qdqa ,
:stPDSMDB.zdqa ,
:stPDSMDB.kq,
:stPDSMDB.dingj ,
:stPDSMDB.dyzs ,
:stPDSMDB.dyk ,
:stPDSMDB.lszs ,
:stPDSMDB.lsk ,
:stPDSMDB.fssbh,
:stPDSMDB.nf ,
:stPDSMDB.xh);
else
EXEC SQL INSERT INTO t_jspdyssm VALUES
(:stPDSMDB.bkdh,
:stPDSMDB.yslx,
:stPDSMDB.wjbh,
:stPDSMDB.qdqa ,
:stPDSMDB.qdqb ,
:stPDSMDB.zdqa ,
:stPDSMDB.zdqb ,
:stPDSMDB.kq,
:stPDSMDB.dingj ,
:stPDSMDB.dyzs ,
:stPDSMDB.dyk ,
:stPDSMDB.lszs ,
:stPDSMDB.lsk ,
:stPDSMDB.fssbh,
:stPDSMDB.nf ,
:stPDSMDB.xh);
if( ERROR !=0 )
{
ERROR=0;
ProcessError(LOG_ERROR,"PCS_RCV_YS: error when insert yssm!",END);
return(-1);
}
for( i=0;i<count_rec;i++ )
{
PDYSSJRcv( message,&stPDSJ );
PDSJMsgConvert(stPDSM,stPDSJ,&stPDSJDB);
ERROR=0;
EXEC SQL WHENEVER SQLERROR DO sqlerror();
/* EXEC SQL INSERT INTO t_jspdyssj VALUES (
:stPDSJDB.zjfs,:stPDSJDB.lszjfs :lszjfs_id,
:stPDSJDB.zfjbh,:stPDSJDB.sjbh,:stPDSJDB.xh);
*/
EXEC SQL INSERT INTO t_jspdyssj (zjfs,zfjbh,sjbh,jsxh) VALUES (
:stPDSJDB.zjfs,
:stPDSJDB.zfjbh,:stPDSJDB.sjbh,:stPDSJDB.xh);
if( ERROR!=0 )
{
ERROR=0;
ProcessError(LOG_ERROR,"PCS_RCV_YS: error when insert into yssj!",END);
return(-1);
}
}
return(0);
}
int Snd_HZ_MQ( long int fsxh, char *fssbh, char *jssbh )
{
char buf_hz[15];
char c_fsxh[11];
int ret_code;
int sndcode;
sprintf(buf_hz,"%10ld%2s%2s",fsxh,fssbh,jssbh);
buf_hz[14]='\0';
sndcode=atoi(fssbh);
#ifdef DEBUG
printf("hzmsg ##%s##\n",buf_hz);
#endif
ret_code = MQBKSend_Syn( strlen(buf_hz), buf_hz, sndcode, "HZ" );
if ( ret_code < 0 )
{
ProcessError(LOG_ERROR,"PCS_RCV_YS: MQ hz did not send successful!",END);
return(-1);
}
ret_code = MQBKCmit();
if ( ret_code < 0 )
{
ProcessError(LOG_ERROR,"PCS_RCV_YS: MQ hz did not commit successful!",END);
return(-1);
}
return(0);
}
/*** distinguish zd and pd, and handle the message ***/
int PcsRcvYS(char *message,long int msglen)
{
char datatype;
char fssbh[3];
char jssbh[3];
char tempstring[MID_LEN];
char tmp_str[MID_LEN];
long int lg_Key;
int flag;
int retcode=0,kd;
char *tmp_point;
char yslx_checkzxbf,jsys_zxbf='7';
int count_zfj_zz,count_yssj_zz;
long int count_DYZS,count_YSZFS;
long int count_DY_LS;
zdnumpoint=85;
pdnumpoint=91;
/** distinguish pd from zd by the yslx character **/
if( message[21]=='1'||message[21]=='2'||message[21]=='7'||message[21]=='8' )
datatype='1';
else if( message[21]=='3'||message[21]=='4'||message[21]=='5'||message[21]=='6' )
datatype='2';
else
{
ProcessError(LOG_ERROR,"PCS_RCV_YS: error when read yslx from MQ",END);
return(-1);
}
tmp_point=message;
myapi_ReadString(message,fssbh,12,13);
myapi_ReadString(message,jssbh,10,11);
myapi_ReadString(message,tempstring,0,9);
lg_Key=atol( tempstring );
flag=CreateRecLogRec( datatype, fssbh, lg_Key );
if( flag!=1 )
{
ProcessError(LOG_ERROR,"PCS_RCV_YS: error use function ", "CreateRecLogRec");
return(-1);
}
#ifdef DEBUG
printf("datatype,fssbh,key:%c,%s,%ld\n",datatype,fssbh,lg_Key);
#endif
if( datatype=='1' )
{
flag=ZDYSRcvRecDB( message,msglen );
if( flag!=0 )
{
ProcessError(LOG_ERROR,"PCS_RCV_YS: error when insert zd data from message to database",END);
return(-1);
}
}
else
{
flag=PDYSRcvRecDB( message,msglen );
if( flag!=0 )
{
ProcessError(LOG_ERROR,"PCS_RCV_YS: error when insert pd data from message to database",END);
return(-1);
}
}
#ifdef DEBUG
printf("put ys to database success\n");
#endif
flag=UpdateJSRZ_rec( lg_Key,fssbh );
if( flag!=1 )
{
ProcessError(LOG_ERROR,"PCS_RCV_YS: error use function ", "UpdateJSRZ_rec");
return(-1);
}
EXEC SQL VAR jssbh IS STRING;
EXEC SQL SELECT bsbh INTO :jssbh FROM T_BSBH;
yslx_checkzxbf=message[21];
if( yslx_checkzxbf=='1' || yslx_checkzxbf=='7' )
{
EXEC SQL SELECT count(*) INTO :count_zfj_zz FROM t_jszfjbnr WHERE sjbh=:fssbh ;
EXEC SQL SELECT count(*) INTO :count_yssj_zz FROM t_jszdyssj WHERE sjbh=:fssbh AND jsxh=:lg_Key;
}
if( yslx_checkzxbf=='1'||yslx_checkzxbf=='2'||yslx_checkzxbf=='7'||yslx_checkzxbf=='8' )
{
/* myapi_ReadString(message,tmp_str,39,48);
tmp_str[10]='\0';
count_DYZS=atol(tmp_str);
myapi_ReadString(message,tmp_str,49,58);
tmp_str[10]='\0';
count_DYZS= count_DYZS+atol(tmp_str);
*/
EXEC SQL SELECT dyzs+lszs INTO :count_DY_LS from t_jszdyssm WHERE sjbh=:fssbh AND jsxh=:lg_Key;
EXEC SQL SELECT sum(yffs) INTO :count_YSZFS FROM t_jszdyssj WHERE sjbh=:fssbh AND jsxh=:lg_Key;
}
else if( yslx_checkzxbf=='3'||yslx_checkzxbf=='4'||yslx_checkzxbf=='5'||yslx_checkzxbf=='6' )
{
/* myapi_ReadString(message,tmp_str,45,54);
tmp_str[10]='\0';
count_DYZS=atol(tmp_str);
myapi_ReadString(message,tmp_str,65,74);
tmp_str[10]='\0';
count_DYZS= count_DYZS + atol(tmp_str);
*/
EXEC SQL SELECT dyzs+lszs INTO :count_DY_LS from t_jspdyssj WHERE sjbh=:fssbh AND jsxh=:lg_Key;
EXEC SQL SELECT sum(zjfs) INTO :count_YSZFS FROM t_jspdyssj WHERE sjbh=:fssbh AND jsxh=:lg_Key;
}
if( (yslx_checkzxbf=='1' || yslx_checkzxbf=='7') && (count_zfj_zz!=count_yssj_zz||count_YSZFS!=count_DY_LS) )
{
sprintf(tmp_str,"found zxbf,cannot convert it into file,please check it,sjbh is %s,jsxh is %ld",fssbh,lg_Key);
ProcessError(LOG_ERROR,"PCS_RCV_YS: ",tmp_str);
EXEC SQL UPDATE T_JSRZ SET sjzt=:jsys_zxbf WHERE jsxh=:lg_Key AND sjbh=:fssbh;
}
else if( count_YSZFS!=count_DY_LS )
{
sprintf(tmp_str,"found zxbf,cannot convert it into file,please check it,sjbh is %s,jsxh is %ld",fssbh,lg_Key);
ProcessError(LOG_ERROR,"PCS_RCV_YS: ",tmp_str);
EXEC SQL UPDATE T_JSRZ SET sjzt=:jsys_zxbf WHERE jsxh=:lg_Key AND sjbh=:fssbh;
}
flag=Snd_HZ_MQ( lg_Key,fssbh,jssbh);
if( flag!=0 )
{
ProcessError(LOG_ERROR,"PCS_RCV_YS: error use function ", "Snd_HZ_MQ");
return(-1);
}
return(0);
}
void freect()
{
if ( buf != NULL )
free( buf) ;
if ( fp!=NULL )
fclose(fp);
if ( fp_JJGH!=NULL )
fclose(fp_JJGH);
MQBKClear();
EXEC SQL ROLLBACK WORK RELEASE;
exit(0);
}
/** if receive ys cannot put into database by snml, then put the msg into a file **/
int checkerr_sndgh(char *errmsg,char dsnbz)
{
char JJGH_FILE[]="/usr/bkfx/data/rcv/backup/JJGH";
char THE_GENERAL_STR[]="XXXX3\nGH JJ.999\n JJGH\n The following ys we do not received!\n Please check if it is for our FBKJ, \nwe cann't found its bkdh in our t_snml\n";
char bkdh[8],BSBH[3],jssbh[3],str_yxnf;
int check_exist,yxnf;
EXEC SQL WHENEVER SQLERROR DO sqlerror();
EXEC SQL SELECT bsbh INTO :BSBH FROM t_bsbh ;
myapi_ReadString(errmsg,jssbh,12,13);
THE_GENERAL_STR[8]=BSBH[0];
THE_GENERAL_STR[9]=BSBH[1];
THE_GENERAL_STR[10]=jssbh[0];
THE_GENERAL_STR[11]=jssbh[1];
check_exist=0;
EXEC SQL SELECT to_char(sysdate,'yyyy') INTO :str_yxnf FROM sys.dual;
yxnf=atoi(str_yxnf);
if( (yxnf%2==0) && dsnbz=='1' )
yxnf=yxnf+1;
else if ( (yxnf%2==1) && (dsnbz=='0') )
yxnf=yxnf+1;
myapi_ReadString(errmsg,bkdh,14,20);
trim(bkdh);
EXEC SQL SELECT COUNT(*) INTO :check_exist FROM T_SNML WHERE bkdh=:bkdh AND yxnf=:yxnf;
if( ERROR!=0 )
{
ERROR=0;
ProcessError(LOG_ERROR,"PCS_RCV_YS: sqlerror when use checkerr_sndgh!" ,END);
return(-1);
}
if( check_exist>0 )
return(-1);
fp_JJGH=fopen("/usr/bkfx/data/rcv/backup/JJGH","r");
if( fp_JJGH!=NULL )
{
fclose(fp_JJGH);
fp_JJGH=fopen(JJGH_FILE,"a");
if( fp_JJGH==NULL )
{
ProcessError(LOG_ERROR,"PCS_RCV_YS: cannot open file JJGH, please inform the sender!",END);
return(-1);
}
}
else
{
fp_JJGH=fopen(JJGH_FILE,"w");
if( fp_JJGH==NULL )
{
ProcessError(LOG_ERROR,"PCS_RCV_YS: cannot open file JJGH, please inform the sender!",END);
return(-1);
}
fputs(THE_GENERAL_STR,fp_JJGH);
}
fputs(errmsg,fp_JJGH);
fputs("\n",fp_JJGH);
fclose(fp_JJGH);
return(0);
}
/** general the JJGH netwk file in the appointed path **/
void putitto_netwk()
{
char NETWK_FILE[]="/usr/bkfx/data/rcv/wk/netwk";
char JJGH_FILE[]="/usr/bkfx/data/rcv/backup/JJGH";
char tmp_str[200];
fp_JJGH=fopen(JJGH_FILE,"r");
if( fp_JJGH==NULL )
return;
else
fclose(fp_JJGH);
sprintf(tmp_str,"echo %s >> %s","XXXX0",JJGH_FILE);
system(tmp_str);
sleep(1);
sprintf(tmp_str,"cat %s >> %s",JJGH_FILE,NETWK_FILE);
system(tmp_str);
sprintf(tmp_str,"rm %s",JJGH_FILE);
system(tmp_str);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -