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

📄 charge_ncpatch.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "charge_ncpatch.h"#include "charge_public.h"#include "payment.flds.h"CNCpatch::CNCpatch(char *pcInp,COracle *pcDatabase){	cDatabase = pcDatabase;	pInp = pcInp;}//------------------------------------------------------------------------//服务PPIsCharge调用函数//取帐目周期数据,参数staff_id,acct_id//------------------------------------------------------------------------void CNCpatch::GetItemChargeInfo(){	char lsSql[2048],lsTemp[1024],lsErr[500];	char staff_id[20],acct_id[20];	char *lparm[3];	long lrow;	int isqlcode,lpnum,rpnum;	char pay_serial_nbr[30];					lpnum=2;		rpnum=GetInputParm(pInp,lparm,50);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		strcpy(lsTemp,"解析客户端传入参数失败,可能参数数据或传输格式不正确!\n");		StrReturn(-2,lsTemp);	}	strcpy(staff_id,lparm[0]);	strcpy(acct_id,lparm[1]);	lpfree(lparm,rpnum);			sprintf(lsSql,"select max(a.pay_serial_nbr) from bill a	" 		" where a.pay_date=( "		" select max(a.pay_date) "		" from bill a "		" where a.acct_id=%s	"		" and state='40C') "		" and a.acct_id=%s "		" and a.state='40C' "		,acct_id,acct_id );			//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	//userlog("检索返回行数:%d",cDatabase->GetRowCount());		if(isqlcode<0)	{		strcpy(lsTemp,"判断是否交费提取付款流水号出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_charge",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		lrow=cDatabase->GetRowCount();	if(lrow==0)	{		StrReturn(100,"没有找到对应销帐记录!");		}		strcpy(pay_serial_nbr,cDatabase->GetData());	ltrim(rtrim(pay_serial_nbr));	if(strcmp(pay_serial_nbr,NULL)==0||strcmp(pay_serial_nbr,"")==0)		strcpy(pay_serial_nbr,"NULL");			sprintf(lsSql,"select a.acct_id,sum(a.amount)/100,a.staff_id,b.name,to_char(a.pay_date,'YYYY-MM-DD HH24:MI:SS')	" 			" from bill a,staff b "			" where a.acct_id=%s " 			" and a.staff_id=b.staff_id " 			" and pay_serial_nbr=to_number(%s) " 			" and a.state='40C' "			" group by a.acct_id,a.staff_id,b.name,a.pay_date "		,acct_id,pay_serial_nbr ); 			//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{		strcpy(lsTemp,"提取是否交费相关数据出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_charge",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		lrow=cDatabase->GetRowCount();	if(lrow==0)	{		StrReturn(100,"没有找到对应数据!");		}					cDatabase->Commit();	if(isqlcode==0 && cDatabase->GetRowCount()==0) StrReturn(100,NULL);	StrReturn(0,cDatabase->GetData());}//------------------------------------------------------------------------//服务PSChargeSum调用函数//取帐目周期数据,参数staff_id,start_date,end_date//------------------------------------------------------------------------void CNCpatch::GetChargeSum(){	char lsSql[2048],lsTemp[1024],lsErr[500],lstmp[20];	char *lparm[5];	char staff_id[40],start_date[100],end_date[100];	int i,isqlcode,lpnum,rpnum;	long len;					lpnum=3;		rpnum=GetInputParm(pInp,lparm,50);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		strcpy(lsTemp,"解析客户端传入参数失败,可能参数数据或传输格式不正确!\n");		StrReturn(-2,lsTemp);	}	sprintf(staff_id,"%s",lparm[0]);	sprintf(start_date,"to_date('%s','yyyy-mm-dd hh24:mi:ss')",lparm[1]);	sprintf(end_date,"to_date('%s','yyyy-mm-dd hh24:mi:ss')",lparm[2]);		lpfree(lparm,rpnum);				//删除营业员收费统计中间表记录	sprintf(lsSql,"delete stat_staff_item where stid = %s",staff_id);		cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{		strcpy(lsTemp,"删除营业员收费统计中间表记录出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		//插入收费明细统计费用		sprintf(lsSql,"insert into stat_staff_item(stid,staff_id,staff_name,bill_item_id,amount) "			" SELECT %s,%s,null,a.invo_item_id,sum(NVL(a.charge,0))/100.00 " 			" FROM B_ACCT_ITEM_O a ,BILL b "			" WHERE a.bill_serial_nbr=b.bill_serial_nbr "			" and b.pay_date >= %s  "		        " and b.pay_date < %s   " 						" and a.state in ('20P','20R','20X','20U') "			" and b.state='40C' "			" and b.staff_id = %s "			" GROUP BY a.invo_item_id "		,staff_id,staff_id,start_date,end_date,staff_id ); 		cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{		strcpy(lsTemp,"插入收费明细统计数据出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		//插入预付款用户数据        sprintf(lsSql,        "insert into stat_staff_item(stid,staff_id,staff_name,bill_item_id,amount) "        "select %s,staff_id,null,-4000,count(distinct acct_id) "        "from BALANCE_HIST_ADMIN " 	"WHERE BALANCE_HIST_ADMIN.use_catg in ( '1','2','3') AND  "		"BALANCE_HIST_ADMIN.staff_id = %s AND   "		"BALANCE_HIST_ADMIN.use_date >= %s AND   "		"BALANCE_HIST_ADMIN.use_date < %s AND  "		"BALANCE_HIST_ADMIN.state='01' "		"group by staff_id "          ,staff_id,staff_id,start_date,end_date);                  cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{		strcpy(lsTemp,"插入预付金额用户数出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	        //插入预付款统计数据        sprintf(lsSql,        "insert into stat_staff_item(stid,staff_id,staff_name,bill_item_id,amount) "        "select %s,staff_id,null,-3000,sum(NVL(amount,0))/100.00 "        "from BALANCE_HIST_ADMIN " 	"WHERE BALANCE_HIST_ADMIN.use_catg in ( '1','2','3') AND  "		"BALANCE_HIST_ADMIN.staff_id = %s AND   "		"BALANCE_HIST_ADMIN.use_date >= %s AND   "		"BALANCE_HIST_ADMIN.use_date < %s AND "		"BALANCE_HIST_ADMIN.state='01' "		"group by staff_id "          ,staff_id,staff_id,start_date,end_date);                  cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{		strcpy(lsTemp,"插入预付金额统计数据出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		//插入实收金额统计数据		sprintf(lsSql,	"insert into stat_staff_item(stid,staff_id,staff_name,bill_item_id,amount) "		       " SELECT  %s,a.staff_id,null,-2000,sum(NVL(a.amount,0))/100.00 " 			" FROM bill a"			" where a.state = '40C' "			" and a.staff_id = %s "			" and a.pay_date >= %s  "		        " and a.pay_date < %s " 			" group by a.staff_id "		,staff_id,staff_id,start_date,end_date); 			cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{		strcpy(lsTemp,"插入实收金额统计数据出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		//插入实收户数统计数据		sprintf(lsSql,	"insert into stat_staff_item(stid,staff_id,staff_name,bill_item_id,amount) "		       " SELECT  %s,a.staff_id,null,-1000,NVL(count(DISTINCT a.acct_id),0) " 			" FROM bill a"			" where a.state = '40C' "			" and a.staff_id = %s "			" and a.pay_date >= %s  "		        " and a.pay_date < %s  " 			" group by a.staff_id "		,staff_id,staff_id,start_date,end_date); 			cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{		strcpy(lsTemp,"插入实收户数统计数据出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	//检索营业收费分项统计数据	sprintf(lsSql,"select bill_item_id,sum(amount) "			" from stat_staff_item "                        " where staff_id = %s "                        " and stid = %s "                        " group by bill_item_id "		       ,staff_id,staff_id );  							cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();			if(isqlcode<0)	{		strcpy(lsTemp,"检索营业员收费统计数据出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}					cDatabase->Commit();	if(isqlcode==0 && cDatabase->GetRowCount()==0) StrReturn(100,NULL);	StrReturn(0,cDatabase->GetData());}//------------------------------------------------------------------------//服务PSSiteSum调用函数//取帐目周期数据,参数staff_id,start_date,end_date//------------------------------------------------------------------------void CNCpatch::GetSiteSum(){	char lsSql[2048],lsTemp[1024],lsErr[500],lstmp[20];	char *lparm[5];	char staff_id[40],site_id[30],start_date[100],end_date[100];	int i,isqlcode,lpnum,rpnum;	long len;					lpnum=3;		rpnum=GetInputParm(pInp,lparm,50);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		strcpy(lsTemp,"解析客户端传入参数失败,可能参数数据或传输格式不正确!\n");		StrReturn(-2,lsTemp);	}	sprintf(staff_id,"%s",lparm[0]);	sprintf(start_date,"to_date('%s','yyyy-mm-dd hh24:mi:ss')",lparm[1]);	sprintf(end_date,"to_date('%s','yyyy-mm-dd hh24:mi:ss')",lparm[2]);		lpfree(lparm,rpnum);			//取营业点标识	sprintf(lsSql,	"SELECT site_id  "	  "FROM STAFF  "	"WHERE staff_id = %s  "        ,staff_id);		cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();			if(isqlcode<0 || cDatabase->GetRowCount()!=1)	{			strcpy(lsTemp,"取营业点标识出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();

⌨️ 快捷键说明

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