📄 main_0214.ec
字号:
#include <fcntl.h>#include <errno.h>#include "../incl/bank.h"#include "../incl/sbsapi.h"#include <sys/time.h>$include sqlca;#define MAX_WORKERS 50#define MAX_COMMENT 50static void toolong1();jmp_buf oldenv1;extern WORKER *wk;extern int htime_out1;extern $char stockdb1[20];extern int sndrcv_account();SEND_NET_0214 send_net_0214;RECV_NET_0214 recv_net_0214;void GetFileName();void GetSystemTime();char buff_time[26];char FileName[40];char FileName1[40];char FileName2[40];char command[80];int net_tohost_0214(sockfd,rcv_data_package,snd_data_package)int sockfd;char *rcv_data_package;char *snd_data_package;{ int i,j,flag,iLen,k; char *tmp; char mac[50]; char manager_id[10]; char comment[10][80], buf[100]; char duizh_buffer[3000]; char rbuf[512]; char T_buf1[4],T_buf2[12]; FILE *fp,*fd; WORKER wks[ MAX_WORKERS ]; $char t_acco_type[2] ; $char tmp_lsh[16],tmp_buffer[16]; char str1[80]; char tmp_str1[80]; char str3[80]; double f; int a,b,c,d; char dzFlag[2]; int ret = 0; memset (tmp_buffer,'\0',sizeof(tmp_buffer)); $connect to $stockdb1; if ( sqlca.sqlcode ) { WriteLog ( LOGFILE,"Open database stock err![%d]\n",sqlca.sqlcode ); strcpy ( send_net.retcode,"8999"); strcpy ( send_net.errmsg,"数据库开启错误"); return( -1 ); }/******/ /* dzFlag: 0-不在对帐状态; 1-处于对帐状态 */ memset( dzFlag, 0x00, sizeof(dzFlag) ); ret = GetDzStatus( dzFlag ); if( ret != 0 ) { WriteLog(LOGFILE, "取对帐状态出错。\n"); strcpy ( send_net.retcode, "8999"); strcpy ( send_net.errmsg, "取对帐状态出错"); return (-1); } if( strncmp( dzFlag, "1", 1 ) == 0 ) { WriteLog(LOGFILE, "系统正处于对帐状态。\n"); strcpy ( send_net.retcode, "8999"); strcpy ( send_net.errmsg, "系统正处于对帐状态"); return (-1); } memset( dzFlag, 0x00, sizeof(dzFlag) ); strncpy( dzFlag, "1", 1 ); ret = SetDzStatus( dzFlag ); if( ret != 0 ) { WriteLog(LOGFILE, "设置对帐状态出错。\n"); strcpy ( send_net.retcode, "8999"); strcpy ( send_net.errmsg, "设置对帐状态出错"); return (-1); }/****/ tmp = rcv_data_package; WriteLog(LOGFILE,"********对帐主处理开始*************"); WriteLog(LOGFILE,"接收数据:\n[%s]",rcv_data_package); memset(rbuf,'\0',512); k = sndrcv_account(rcv_data_package,rbuf); if (k < 0){ WriteLog( LOGFILE, "对公下传文件失败" ); strcpy ( send_net_0214.retcode,"8999"); strcpy ( send_net_0214.errmsg,"下传文件失败"); goto aaa1; } WriteLog ( LOGFILE,"对公返回数据:[%s]\n",rbuf); sscanf(rbuf,"%12s%4s",T_buf2,T_buf1); if(strcmp(T_buf1,"0000")) { WriteLog( LOGFILE, "对公下传文件失败" ); strcpy ( send_net_0214.retcode,"8999"); strcpy ( send_net_0214.errmsg,"下传文件失败"); goto aaa1; } GetFileName(); fp = fopen( (char *)getfname( WORKDIR, FileName), "a"); if(fp == NULL) { WriteLog(LOGFILE,"对私对帐文件不存在"); strcpy ( send_net_0214.retcode,"8999"); strcpy ( send_net_0214.errmsg,"对私对帐文件不存在"); goto aaa1; } fd = fopen( (char *)getfname( WORKDIR, FileName2), "r"); if(fd == NULL) { WriteLog(LOGFILE,"对公对帐文件不存在"); strcpy ( send_net_0214.retcode,"8999"); strcpy ( send_net_0214.errmsg,"对公对帐文件不存在"); goto aaa1; } memset(duizh_buffer,'\0',2048); /* added by si xiao jun 2001 10 09 */ fseek(fd,0L,SEEK_SET); while(!feof(fd)) { memset(str1,'\0',sizeof(str1)); memset(tmp_lsh,'\0',sizeof(tmp_lsh)); fgets(str1,80,fd); /* add by lyf 2001 10 26 */ c = 0; b = 0; d = strlen(str1); if(d <= 0) break; for(a=0;a<d;a++) { if(str1[a] == '|') { b ++; continue; } if(b > 4) { tmp_lsh[c] = '\0'; break; } if(b < 4) continue; tmp_lsh[c] = str1[a]; c ++; } if(!strcmp(tmp_buffer,tmp_lsh)) continue; strcpy(tmp_buffer,tmp_lsh); $select acco_type into $t_acco_type from t_stock_serial where req_serial = $tmp_lsh; if ( sqlca.sqlcode ) continue; str1[5] = t_acco_type[0]; fprintf(fp, "%s", str1); } /* added end by si xiao jun *//* deleted by si xiao jun 2001 10.09 while(fscanf(fd, "%26s|%lf|%15s|%16s\n", str1,&f, tmp_lsh, str3)!=EOF) { $select acco_type into $t_acco_type from t_stock_serial where req_serial = $tmp_lsh; if ( sqlca.sqlcode ) continue; str1[5] = t_acco_type[0]; fprintf(fp, "%26s|%.2lf|%15s|%16s\n", str1, f, tmp_lsh, str3); }*/ fclose(fp); fclose(fd); sprintf(command, "PutFile %s 010", FileName1); if(system(command) == 0) { strcpy ( send_net_0214.retcode,"0000"); strcpy ( send_net_0214.errmsg,"交易成功"); strcpy ( send_net_0214.FileName,FileName1); iLen = strlen(FileName1); send_net_0214.FileName[iLen] = '\0'; if ((iLen = GetFileMac((char *)getfname(WORKDIR,FileName),mac)) != 0) { WriteLog ( LOGFILE,"iLen = %d\n",iLen); /*return -1;*/ goto aaa1; } strcpy ( send_net_0214.mac,mac); } else { WriteLog( LOGFILE, "下传文件失败" ); strcpy ( send_net_0214.retcode,"8999"); strcpy ( send_net_0214.errmsg,"下传文件失败"); goto aaa1; } signal( SIGALRM, SIG_IGN ); alarm ( 0 ); $delete from t_stock_serial; if ( sqlca.sqlcode ) { WriteLog ( LOGFILE,"删除日志流水出错![%d]\n",sqlca.sqlcode ); strcpy ( send_net_0214.retcode,"8999"); strcpy ( send_net_0214.errmsg,"删除日志流水出错"); }aaa1: $disconnect current; if ( sqlca.sqlcode ) { WriteLog ( LOGFILE, "Close database stock err![%d]\n",sqlca.sqlcode ); } pktonet_stock_0214(snd_data_package); /****/ memset( dzFlag, 0x00, sizeof(dzFlag) ); strncpy( dzFlag, "0", 1 ); ret = SetDzStatus( dzFlag ); if( ret != 0 ) { WriteLog(LOGFILE, "设置对帐状态出错。\n"); strcpy ( send_net.retcode, "8999"); strcpy ( send_net.errmsg, "设置对帐状态出错"); return (-1); } /****/ WriteLog(LOGFILE,"向代理集中点发送数据结束"); return(0);}static void toolong1 (){ htime_out1 = 1; alarm ( 0 ); signal ( SIGALRM, SIG_IGN ); longjmp( oldenv1, 1 );}void GetFileName(){ struct timeval tv; time_t clock; struct tm *tm1; gettimeofday(&tv,0); clock = tv.tv_sec; tm1 = localtime( &clock ); strftime(FileName,40,"/data/%Y%m%d.SBS",tm1); strftime(FileName2,40,"/data/%Y%m%d.SBS1",tm1); strftime(FileName1,19,"%Y%m%d.SBS",tm1);}int GetDzStatus( char* dzStatus ){ FILE *fp; int fd, ret = 0; struct stat fileStat; char fileName[100+1]; char lineBuf[100+1]; memset(fileName,0,sizeof(fileName)); sprintf(fileName,"%s/etc/DZStatus.cfg",getenv("WORKDIR")); ret = fstat( fileName, &fileStat); if ( (ret<0) && (errno==ENOENT) ) { strncpy( dzStatus, "0", 1 ); fp = fopen( fileName, "w" ); if ( fp == NULL ) return -1; fd = fileno(fp); lockf(fd, F_LOCK, 0l); fprintf( fp, "%s\n", dzStatus ); lockf(fd, F_ULOCK, 0l); fclose(fp); } else { fp = fopen( fileName, "r" ); if ( fp == NULL ) return -1; fd = fileno(fp); lockf(fd, F_LOCK, 0l); memset(lineBuf,0,sizeof(lineBuf)); if ( fgets(lineBuf, 100, fp) == NULL ) { fclose(fp); return -1; } strncpy( dzStatus, lineBuf, 1 ); lockf(fd, F_ULOCK, 0l); fclose(fp); } WriteLog( LOGFILE, "DzStatus=[%s]\n",dzStatus ); return 0;}int SetDzStatus( const char* dzStatus ){ FILE *fp; int fd; char fileName[100+1]; char lineBuf[100+1]; memset(fileName,0,sizeof(fileName)); sprintf(fileName,"%s/etc/DZStatus.cfg",getenv("WORKDIR")); fp = fopen( fileName, "w" ); if ( fp == NULL ) return -1; fd = fileno(fp); lockf(fd, F_LOCK, 0l); fprintf( fp, "%s\n", dzStatus ); lockf(fd, F_ULOCK, 0l); fclose(fp); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -