📄 xchange.cp
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <memory.h>#include <sys/types.h>#include "etc.h"#include "bms_micro.h"#include "apgloble.h"#include "bms_strcdef.h"EXEC SQL INCLUDE SQLCA;EXEC SQL INCLUDE "bms_sql.h";void pub_insert_str_to_pipe1( int posi, char *sour, char *str);int DB_get_businessinfo_tbc( char *ctiinstrument, char *businessinfo, char *custinfo ){EXEC SQL BEGIN DECLARE SECTION ; char S_ctiinstrument[30+1]; char S_businessinfo[300+1]; char S_custinfo[300];EXEC SQL END DECLARE SECTION ; memset( S_businessinfo, '\0', sizeof( S_businessinfo )); memset( S_ctiinstrument, '\0', sizeof( S_ctiinstrument )); memset( S_custinfo, '\0', sizeof(S_custinfo )); strcpy( S_ctiinstrument, ctiinstrument ); EXEC SQL SELECT businessinfo, custinfo into :S_businessinfo, :S_custinfo FROM tbctiexchange WHERE new_callid = :S_ctiinstrument; if(sqlca.sqlcode != 0 ) { bms_trace("sqlca.sqlcode[%d]", sqlca.sqlcode); return( FAILURE ); } bms_trace("sqlca.sqlerrd[2][%d]", sqlca.sqlerrd[2]);/* EXEC SQL DECLARE sel_cti1 CURSOR FOR SELECT businessinfo,custinfo,serial_no FROM tbctiexchange WHERE new_callid = :S_ctiinstrument ORDER BY serial_no desc; if(sqlca.sqlcode != 0 ) { bms_trace("DECLARE ret[%d]!", sqlca.sqlcode) ; return( FAILURE ); } EXEC SQL OPEN sel_cti1; if(sqlca.sqlcode != 0 ) { EXEC SQL FREE sel_cti1; bms_trace("OPEN cur ret[%d]!", sqlca.sqlcode) ; return( FAILURE ); } EXEC SQL FETCH sel_cti1 INTO :S_businessinfo, :S_custinfo; if(sqlca.sqlcode != 0 ) { bms_trace("FETCH cur ret[%d]!", sqlca.sqlcode) ; return( FAILURE ); } EXEC SQL CLOSE sel_cti1; EXEC SQL FREE sel_cti1; EXEC SQL DELETE FROM tbctiexchange WHERE new_callid=:S_ctiinstrument ;*/ EXEC SQL DELETE FROM tbctiexchange WHERE new_callid=:S_ctiinstrument ; pub_trim( S_businessinfo ); strcpy( businessinfo, S_businessinfo ); pub_trim( S_custinfo ); strcpy( custinfo, S_custinfo); bms_trace("custinfo[%s]", custinfo); return( SUCCESS );}int DB_put_businessinfo_tbc( char *callid, char *custid, char *businessinfo, char *custinfo , char *incall_num){EXEC SQL BEGIN DECLARE SECTION ; char S_callid[100]; char S_businessinfo[300+1]; char S_custid[20+1]; char S_custinfo[300]; char sDate[20]; char S_incall_num[30];EXEC SQL END DECLARE SECTION ; memset( S_callid, '\0', sizeof( S_callid )); memset( S_custid, '\0', sizeof( S_custid )); memset( S_custinfo, '\0', sizeof( S_custinfo )); memset( S_businessinfo, '\0', sizeof( S_businessinfo )); memset( S_incall_num, '\0', sizeof( S_incall_num )); strcpy( S_callid, callid ); strcpy( S_custid, custid ); strcpy( S_custinfo, custinfo); strcpy( S_businessinfo, businessinfo ); strcpy( S_incall_num, incall_num ); pub_get_y4md( sDate ); bms_trace("date[%s]", sDate ); EXEC SQL INSERT INTO tbctiexchange ( callid,custinfo, businessinfo, custid, calldeviceid,flag,reg_date ) VALUES(:S_callid,:S_custinfo, :S_businessinfo,:S_custid, :S_incall_num, '0', :sDate ); if(sqlca.sqlcode != 0 ) { bms_trace("DB_insert_newacct[%d] errm[%s] Failure!",sqlca.sqlcode, sqlca.sqlerrm ) ; return( FAILURE ); } return( SUCCESS );}int DB_update_businessinfo_tbc( char *ctiinstrument, char *passwd, char *callid){EXEC SQL BEGIN DECLARE SECTION ; char S_businessinfo[300+1]; char S_ctiinstrument[30+1]; char S_callid[60+1];EXEC SQL END DECLARE SECTION ; memset( S_businessinfo, '\0', sizeof( S_businessinfo )); memset( S_callid, '\0', sizeof( S_callid )); memset( S_ctiinstrument, '\0', sizeof( S_ctiinstrument )); strcpy( S_ctiinstrument, ctiinstrument ); EXEC SQL SELECT businessinfo,callid INTO :S_businessinfo,:S_callid FROM tbctiexchange WHERE ctiinstrument = :S_ctiinstrument ; if(sqlca.sqlcode != 0 ) { bms_trace("DB_UPDATE_businessinfo[%d] Failure!", sqlca.sqlcode) ; return( FAILURE ); } pub_trim( S_businessinfo ) ; pub_trim( S_callid ) ; pub_insert_str_to_pipe1( 3, S_businessinfo, passwd ); EXEC SQL UPDATE tbctiexchange SET businessinfo = :S_businessinfo WHERE ctiinstrument = :S_ctiinstrument and callid =:S_callid ; if ( sqlca.sqlcode < 0 || sqlca.sqlerrd[2] == 0 ) return( FAILURE ); strcpy( callid, S_callid ); return( SUCCESS );}int DB_agent_is_idle(){EXEC SQL BEGIN DECLARE SECTION; int Number;EXEC SQL END DECLARE SECTION; EXEC SQL SELECT count(*) INTO :Number FROM astation WHERE status='2'; if(sqlca.sqlcode != 0 ) { bms_trace("DB_agent_is_idle[%d] Failure!", sqlca.sqlcode) ; return( FAILURE ); } if( Number == 0 ) return( FAILURE ); return( SUCCESS );}int DB_Get_CallId_FromTbctiexchange( char *ctiinstrument, char *callid){EXEC SQL BEGIN DECLARE SECTION ; char S_ctiinstrument[30+1]; char S_callid[60+1];EXEC SQL END DECLARE SECTION ; memset( S_callid, '\0', sizeof( S_callid )); memset( S_ctiinstrument, '\0', sizeof( S_ctiinstrument )); strcpy( S_ctiinstrument, ctiinstrument ); EXEC SQL SELECT callid INTO :S_callid FROM tbctiexchange WHERE ctiinstrument = :S_ctiinstrument ; if(sqlca.sqlcode != 0 ) { bms_trace("DB_Get_FROMTbctiexchange[%d] Failure!", sqlca.sqlcode) ; return( FAILURE ); } pub_trim( S_callid ) ; strcpy( callid, S_callid ); return( SUCCESS );}int DB_search_outbound(BIG_STRC *bs, int status,char *phone, char *trans_type, char *con_type,char *trans_con, char *subinfo, char *ins_id ){EXEC SQL BEGIN DECLARE SECTION ; int sStatus; char sPhone[30]; char sTrans_type[5]; char sCon_type[5]; char sTrans_con[2048]; char sSubinfo[40]; char sIns_id[40]; char curr_time[20]; int sSt0,sSt1, iAtt; int sCall0,sCall1,sCall2,sCall3,sCall4;EXEC SQL END DECLARE SECTION ; iAtt=0; sSt0=sSt1=sCall0=sCall1=sCall2=sCall3=sCall4=0; sStatus=status; memset( sPhone, 0x00, sizeof(sPhone) ); memset( sTrans_type, 0x00, sizeof(sTrans_type) ); memset( sCon_type, 0x00, sizeof(sCon_type) ); memset( sTrans_con, 0x00, sizeof(sTrans_con) ); memset( sSubinfo, 0x00, sizeof(sSubinfo) ); memset( sIns_id, 0x00, sizeof(sIns_id) ); memset( curr_time, 0x00, sizeof(curr_time) ); EXEC SQL SELECT count(*) INTO :sSt0 FROM tb_ipivroutbound WHERE record_status=0; EXEC SQL SELECT count(*) INTO :sSt1 FROM tb_ipivroutbound WHERE record_status!=0; EXEC SQL SELECT count(*) INTO :sCall0 FROM tb_ipivroutbound WHERE call_result=0; EXEC SQL SELECT count(*) INTO :sCall1 FROM tb_ipivroutbound WHERE call_result=1; EXEC SQL SELECT count(*) INTO :sCall2 FROM tb_ipivroutbound WHERE call_result=2; EXEC SQL SELECT count(*) INTO :sCall3 FROM tb_ipivroutbound WHERE call_result=3; EXEC SQL SELECT count(*) INTO :sCall4 FROM tb_ipivroutbound WHERE call_result=4; bs->debi_acct_type=sSt0; bs->debi_curr=sSt1; bs->cred_acct_type=sCall0; bs->cred_curr=sCall1; bs->deduct_type=sCall2; bs->pz_type=sCall3; bs->source_typ=sCall4; get_time_ymd( "%T", curr_time ); bms_trace("curr time[%s]", curr_time ); EXEC SQL DECLARE out_cur CURSOR FOR SELECT phone,trans_type,content_type,trans_content,subinfo_id,insertrecord_id FROM tb_ipivroutbound WHERE record_status=:sStatus AND ( valbegtime is NULL or valbegtime="" or :curr_time>=valbegtime ) AND ( valendtime is NULL or valendtime="" or :curr_time<=valendtime) ORDER BY insertrecord_id; bms_trace("SELECT ret[%d]", sqlca.sqlcode ); if ( sqlca.sqlcode < 0 ) return( sqlca.sqlcode) ; if ( sqlca.sqlcode == SQLNOTFOUND ) return( FAILURE) ; EXEC SQL OPEN out_cur; bms_trace("OPEN curr ret[%d]", sqlca.sqlcode ); if( sqlca.sqlcode<0 ) return( sqlca.sqlcode ); EXEC SQL FETCH out_cur INTO :sPhone,:sTrans_type,:sCon_type,:sTrans_con,:sSubinfo,:sIns_id; bms_trace("FETCH curr ret[%d]", sqlca.sqlcode ); if( sqlca.sqlcode< 0 ) { EXEC SQL CLOSE out_cur; EXEC SQL FREE out_cur; return( sqlca.sqlcode ); } if( sqlca.sqlcode==100 ) { EXEC SQL CLOSE out_cur; EXEC SQL FREE out_cur; return( 100 ); } pub_trim( sPhone ); pub_trim( sTrans_type ); pub_trim( sCon_type ); pub_trim( sTrans_con ); pub_trim( sSubinfo ); pub_trim( sIns_id ); strcpy( phone, sPhone ); strcpy( trans_type, sTrans_type ); strcpy( con_type, sCon_type ); strcpy( trans_con, sTrans_con ); strcpy( subinfo, sSubinfo ); strcpy( ins_id, sIns_id ); EXEC SQL CLOSE out_cur; EXEC SQL FREE out_cur; EXEC SQL SELECT attempt INTO :iAtt FROM tb_ipivroutbound WHERE insertrecord_id=:sIns_id; iAtt++; bms_trace("SELECT ret[%d]", sqlca.sqlcode ); EXEC SQL UPDATE tb_ipivroutbound set attempt=:iAtt WHERE insertrecord_id=:sIns_id; bms_trace("SELECT ret[%d]", sqlca.sqlcode ); return( sqlca.sqlcode);}int DB_update_outbound(BIG_STRC *bs, char * id, short stat, short result ){EXEC SQL BEGIN DECLARE SECTION ; short sStatus; short sResult; char sIns_id[40]; int sSt0,sSt1; int sCall0,sCall1,sCall2,sCall3,sCall4;EXEC SQL END DECLARE SECTION ; int flg=0; sSt0=sSt1=sCall0=sCall1=sCall2=sCall3=sCall4=0; strcpy( sIns_id, id ); sStatus=stat; sResult=result; bms_trace("id[%s] stat[%d] result[%d]",id, stat, result ); EXEC SQL PREPARE up_outb FROM "UPDATE tb_ipivroutbound \ SET call_result = ?, record_status =? \ WHERE insertrecord_id = ?" ; EXEC SQL EXECUTE up_outb USING :sResult, :sStatus, :sIns_id ; if ( sqlca.sqlcode < 0 || sqlca.sqlerrd[2] == 0 ) { flg=-1; } EXEC SQL FREE up_outb ; EXEC SQL SELECT count(*) INTO :sSt0 FROM tb_ipivroutbound WHERE record_status=0; EXEC SQL SELECT count(*) INTO :sSt1 FROM tb_ipivroutbound WHERE record_status!=0; EXEC SQL SELECT count(*) INTO :sCall0 FROM tb_ipivroutbound WHERE call_result=0; EXEC SQL SELECT count(*) INTO :sCall1 FROM tb_ipivroutbound WHERE call_result=1; EXEC SQL SELECT count(*) INTO :sCall2 FROM tb_ipivroutbound WHERE call_result=2; EXEC SQL SELECT count(*) INTO :sCall3 FROM tb_ipivroutbound WHERE call_result=3; EXEC SQL SELECT count(*) INTO :sCall4 FROM tb_ipivroutbound WHERE call_result=4; sprintf(bs->notes2, "%d", sSt0 ); sprintf(bs->notes3, "%d", sSt1 ); sprintf(bs->notes4, "%d", sCall0 ); sprintf(bs->notes5, "%d", sCall1 ); sprintf(bs->notes6, "%d", sCall2 ); sprintf(bs->notes7, "%d", sCall3 ); sprintf(bs->notes8, "%d", sCall4 ); if( flg==-1 ) return( FAILURE ); return( SUCCESS );}int DB_get_businessinfo_and_callid( char *calldeviceid, char *businessinfo , char *callid,char *ctiinstrument){ EXEC SQL BEGIN DECLARE SECTION ; char S_ctiinstrument[30+1]; char S_businessinfo[300+1]; char S_callid[60+1]; char S_deviceid[40+1]; long lSeiralNo; EXEC SQL END DECLARE SECTION ; memset( S_businessinfo, '\0', sizeof( S_businessinfo )); memset( S_ctiinstrument, '\0', sizeof( S_ctiinstrument )); memset( S_callid, '\0', sizeof( S_callid)); memset( S_deviceid, '\0', sizeof( S_deviceid)); strcpy( S_deviceid,calldeviceid ); EXEC SQL DECLARE cur_call1 CURSOR FOR SELECT callid,custinfo,ctiinstrument FROM tbctiexchange WHERE ctiinstrument = :S_deviceid ORDER BY serial_no desc ; if(sqlca.sqlcode != 0 ) { bms_trace("DB_get callid and businessinfo [%d] Failure!", sqlca.sqlcode) ; EXEC SQL FREE cur_call1; EXEC SQL DELETE FROM tbctiexchange WHERE ctiinstrument = :S_deviceid ; return( FAILURE ); } EXEC SQL OPEN cur_call1; if( sqlca.sqlcode<0 ) { bms_trace("open sqlcode=[%d], msg[%s]", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc); EXEC SQL FREE cur_call1; EXEC SQL DELETE FROM tbctiexchange WHERE ctiinstrument = :S_deviceid ; return( FAILURE ); } EXEC SQL FETCH cur_call1 INTO :S_callid,:S_businessinfo,:S_ctiinstrument; if( sqlca.sqlcode<0 ) { bms_trace("fetch sqlcode=[%d], msg[%s]", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc); EXEC SQL CLOSE cur_call1; EXEC SQL FREE cur_call1; EXEC SQL DELETE FROM tbctiexchange WHERE ctiinstrument = :S_deviceid ; return( FAILURE ); } EXEC SQL CLOSE cur_call1; EXEC SQL FREE cur_call1; EXEC SQL DELETE FROM tbctiexchange WHERE ctiinstrument = :S_deviceid; pub_trim( S_callid ); pub_trim( S_businessinfo ); pub_trim( S_ctiinstrument ); strcpy( businessinfo, S_businessinfo ); strcpy( callid, S_callid ); strcpy( ctiinstrument, S_ctiinstrument ); return( SUCCESS );}int DB_Insert_Param_Businessinfo( char *callid, char *ctiinstrument, char *businessinfo){ EXEC SQL BEGIN DECLARE SECTION ; char S_callid[100]; char S_businessinfo[300+1]; char S_ctiinstrument[30+1]; char sDate[20]; EXEC SQL END DECLARE SECTION ; memset( S_callid, '\0', sizeof( S_callid )); memset( S_businessinfo, '\0', sizeof( S_businessinfo )); memset( S_ctiinstrument, '\0', sizeof( S_ctiinstrument )); strcpy( S_callid, callid ); strcpy( S_businessinfo, businessinfo ); strcpy( S_ctiinstrument, ctiinstrument ); pub_get_y4md( sDate ); EXEC SQL INSERT INTO tbctiexchange( callid, custinfo, calldeviceid, flag, reg_date ) VALUES(:S_callid, :S_businessinfo, :S_ctiinstrument, '1', :sDate); if(sqlca.sqlcode != 0 ) { bms_trace("fetch sqlcode=[%d], msg[%s]", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc); return( FAILURE ); } return( SUCCESS) ;}void pub_insert_str_to_pipe1( int posi, char *sour, char *str) { char des[ 300 + 1] ; int pipe_posi, i, j, len ; int flag = 0 ; bms_trace("DB_get_businessinfo[%s][%s] Failure!", sour,str) ; pipe_posi = 0 ; i = j = 0 ; len = strlen( str) ; while ( sour[ i] != '\0' ) { des[ j] = sour[ i] ; if ( sour[ i] == '|' ) pipe_posi ++ ; if ( pipe_posi == posi&&flag ==0 ) { des[ j + 1 ] = 0 ; strcat( des, str) ; j = j + len ; flag = 1 ; } i ++ ; j ++ ; } des[ j ] = 0 ; sprintf( sour, "%s", des) ; return ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -