📄 mgetfee.c
字号:
/* MGETFEE(MQRYFEE):取费用(或查询费用)(该文件有改动需要同步更新mqryfee.cpp,完全一致,只有函数名不相同) Input : 序号 说明 长度 备注 1 客户编号 10 2 查询类别 1 0-只取该客户编号费用1-按该户合同号取费用 3 起始日期 8 YYYYMMDD,空白--不限制 4 截止日期 8 YYYYMMDD,空白--不限制 5 电费类别 2 00-全部(查询使用) 11-所有应收(收费使用) 6 强制标志 2 00--不返回费用明细数据包;且超过阈值也不返回费用记录结果集,但返回记录数; 10--返回费用明细数据包;但超过阈值只返回记录数; 01-强制返回费用记录结果集,不返回费用明细数据; 11-强制返回所有结果 (缴费时默认给11,查询时默认给00) Output: 1 返回状态(可以转换成int型) 8 >0-返回的费用记录数 =0-没有费用记录 <0-访问失败 -100-该客户编号不存在 2 实际的结果记录数n 4 如不等于上面的值,则认为查询结果太多 3 费用明细记录数m 4 用于校验 4 费用记录结果集 226 * n 将各费用记录以一定格式拼成的字符串,格式:附 5 费用明细数据包 37 * m 结果集的格式: 电费流水 CHAR(15) 费用月份 CHAR(6) YYYYMM 电费总额 CHAR(13) ##########.## 违约金额 CHAR(13) ##########.## 户名 CHAR(40) 用电地址 CHAR(80) 表号 CHAR(20) 平起码 CHAR(10) #######.## 平止码 CHAR(10) #######.## 客户编号 CHAR(10) 抄表顺序 CHAR(6) 明细结果的格式: 电费流水 CHAR(15) 项目代码 CHAR(2) 将电费中的各个项目进行编码,每一项都代表一个实际的名称 项目值 CHAR(20) 可以为金额、数量、说明等*/#include "public.h"#include "feeid.h"#define SIZE_OF_MAIN 223 /*主结构的大小*/#define SIZE_OF_DETAIL 37 /*明细结构的大小*/#define MAX_RESULT 100 /*最大的结果数,如不是强制处理,则大于该数则不处理*/#define MAX_DETAIL_ONE 40 /*每条记录的最大明细数*/#ifdef __cplusplusextern "C"#endifvoid#ifdef MW_CICSmain(MW_SVCINFO * transb)#endif#ifdef MW_TUXEDOMGETFEE(MW_SVCINFO * transb)#endif{ /*定义输入参数*/ char szKHBH[11] = ""; char szDateFrom[9] = ""; char szDateTo[9] = ""; int iFlag = 0; int iFeeFlag = 0; int iForceFlag = 0; /*定义输出参数*/ char *szResult ; /*主要信息结果集*/ char *szResultDetail; /*明细费用结果集*/ int iResultCount = 0; /*结果记录数*/ int iDetailCount = 0; /*明细记录数*/ /*定义数据库数据处理变量*/ double dFeeID = 0; /*电费流水 CHAR(15) */ char szFeeMonth[7] = ""; /*费用月份 CHAR(6) YYYYMM*/ double dSumFee = 0; /*电费总额 CHAR(13) ##########.##*/ double dLateFee = 0; /*违约金额 CHAR(13) ##########.##*/ char szAcctName[41] = "";/*户名 CHAR(40) */ char szAddress[81] = ""; /*用电地址 CHAR(80) */ char szMeterID[21] = "";/*表号 CHAR(20) */ double dBeginPos = 0;/*平起码 CHAR(10) #######.##*/ double dEndPos = 0;/*平止码 CHAR(10) #######.##*/ char szKH_NO[11] = "";/*客户编号 CHAR(10) */ char szCBSX[7] = "";/*抄表顺序 CHAR(6) */ /*明细变量:数据库中各字段对应的变量,将数据取到这些变量中,并对每一个有数据的字段设置到明细中*/double d_DFID;double d_CSYSHJ; double d_BSDF; double d_PDF ; double d_FDF ; double d_GDF ; double d_JBDF; double d_LLDF; double d_DSK1; double d_DSK2; double d_DSK3; double d_DSK4; double d_DSK5; double d_DSK6; double d_DSK7; double d_DSK8; double d_PZM ; double d_PQM ; double d_FZM ; double d_FQM ; double d_GZM ; double d_GQM ; double d_WGZM; double d_WGQM; double d_PBS ; double d_FBS ; double d_GBS ; double d_WGBS ; double d_PJFDL; double d_FJFDL; double d_GJFDL; double d_WGJFDL; double d_JFRL ; double d_TZL ; double d_PDFDJ ; double d_FDFDJ ; double d_GDFDJ ; double d_JBDFDJ; double d_DSK1DJ; double d_DSK2DJ; double d_DSK3DJ; double d_DSK4DJ; double d_DSK5DJ; double d_DSK6DJ; double d_DSK7DJ; double d_DSK8DJ; double d_PDL ; double d_FDL ; double d_GDL ; double d_WGDL ; double d_DL ; CS_NUMERIC cs_DFID; /*电费ID Numeric(15,0) IDENTITY,*/char sz_CBCBM[8] = ""; /*抄表册编码 VARCHAR(7),*/char sz_JLZZBH[13] = ""; /*计量装置编号 VARCHAR(12),*/char sz_DFNY[7] = ""; /*电费年月 CHAR(6) ,*/char sz_CBSXH[7] = ""; /*抄表顺序号 CHAR(6),*/char sz_YSKSSJ[11] = ""; /*应收开始时间 Datetime DEFAULT GETDATE(),*/CS_NUMERIC cs_CSYSHJ; /*初始应收合计 Numeric(15,4) Default 0,*/CS_NUMERIC cs_BSDF; /*补收电费 Numeric(15,4) Default 0,*/CS_NUMERIC cs_PDF ; /*平电费 Numeric(15,4) Default 0,*/CS_NUMERIC cs_FDF ; /*峰电费 Numeric(15,4) Default 0,*/CS_NUMERIC cs_GDF ; /*谷电费 Numeric(15,4) Default 0,*/CS_NUMERIC cs_JBDF; /*基本电费 Numeric(15,4) Default 0,*/CS_NUMERIC cs_LLDF; /*力率电费 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK1; /*代收款1 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK2; /*代收款2 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK3; /*代收款3 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK4; /*代收款4 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK5; /*代收款5 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK6; /*代收款6 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK7; /*代收款7 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK8; /*代收款8 Numeric(15,4) Default 0,*/CS_NUMERIC cs_PZM ; /*平止码 Numeric(10,2),*/CS_NUMERIC cs_PQM ; /*平起码 Numeric(10,2),*/CS_NUMERIC cs_FZM ; /*峰止码 Numeric(10,2),*/CS_NUMERIC cs_FQM ; /*峰起码 Numeric(10,2),*/CS_NUMERIC cs_GZM ; /*谷止码 Numeric(10,2),*/CS_NUMERIC cs_GQM ; /*谷起码 Numeric(10,2),*/CS_NUMERIC cs_WGZM; /*无功止码 Numeric(10,2),*/CS_NUMERIC cs_WGQM; /*无功起码 Numeric(10,2),*/int i_YGBL ;/*有功倍率 INT,*/int i_WGBL ;/*无功倍率 INT,*/CS_NUMERIC cs_PBS ; /*平变损 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_FBS ; /*峰变损 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_GBS ; /*谷变损 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_WGBS ; /*无功变损 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_PJFDL; /*平计费电量 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_FJFDL; /*峰计费电量 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_GJFDL; /*谷计费电量 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_WGJFDL; /*无功计费电量 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_JFRL ; /*计费容量 Numeric(13,0) DEFAULT 0,*/int i_GLYS ; /*功率因数 int,*/CS_NUMERIC cs_TZL ; /*调整率 Numeric(6,4),*/CS_NUMERIC cs_PDFDJ ; /*平电费单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_FDFDJ ; /*峰电费单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_GDFDJ ; /*谷电费单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_JBDFDJ; /*基本电费单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK1DJ; /*代收款1单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK2DJ; /*代收款2单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK3DJ; /*代收款3单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK4DJ; /*代收款4单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK5DJ; /*代收款5单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK6DJ; /*代收款6单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK7DJ; /*代收款7单价 Numeric(15,4) Default 0,*/CS_NUMERIC cs_DSK8DJ; /*代收款8单价 Numeric(15,4) Default 0,*/char sz_CCBH[21] = ""; /*出厂编号 VARCHAR(20) NULL, --表号*/int i_TSBZ; /*特殊标志 tinyint NULL, --对应多块表*/CS_NUMERIC cs_PDL ; /*平抄见电量 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_FDL ; /*峰抄见电量 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_GDL ; /*谷抄见电量 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_WGDL ; /*无功抄见电量 Numeric(13,0) DEFAULT 0,*/CS_NUMERIC cs_DL ; /*总表抄见电量 Numeric(13,0) DEFAULT 0,*/char sz_RZBZSM[21] = ""; /*入帐说明 VARCHAR(20)*/char sz_KHXM[41] = ""; /*户名 CHAR(40) */char sz_YDDZ[81] = ""; /*用电地址 CHAR(80) */char szKHBHTmp[11] = "";char szTemp1[100] = "";CS_NUMERIC cs_DF_SUM ; /*电费总额=CSYSHJ-YSZJE*/CS_NUMERIC cs_WYJ ; /*违约金=YSWYJCKJE-WYJSSJE-WYJJMSPJE-WYJHJSPJE*/double d_DF_SUM;double d_WYJ; /*定义临时变量*/ char szSql[5000] = ""; char szDelSql[100] = "delete from I_TMP_BANK_QRY where ID=@@spid"; void *ppVar[100]; unsigned char pParam[] = TYPE_CHAR TYPE_CHAR TYPE_CHAR TYPE_INT TYPE_INT TYPE_INT; int nStatus = 0; char szMsg[255]; int i,j; BOOL bRet; CMiddleWare mwMidWare; char *szInBuf; char *szOutBuf; char szTemp[1000]= ""; int iReturn; int nBufferSize = 0; /*输出的Buffer大小*/ MW_Init(&mwMidWare,transb); szInBuf = MW_GetInBuf(&mwMidWare); if (szInBuf == NULL) { gf_Return(&mwMidWare,-1,"没有输入参数!"); return; }/* MW_Trace("OK1");*/ MW_Trace("请注意下面是输入参数:"); MW_Trace(szInBuf); /*取输入参数*/ strncpy(szKHBH,szInBuf,10); szKHBH[10] = '\0'; strncpy(szTemp,szInBuf + 10,1); szTemp[1] = '\0'; iFlag = atoi(szTemp); strncpy(szDateFrom,szInBuf + 11,8); szDateFrom[8] = '\0'; strncpy(szDateTo ,szInBuf + 11 + 8,8); szDateTo[8] = '\0'; strncpy(szTemp,szInBuf + 11 + 8 + 8,2); szTemp[2] = '\0'; iFeeFlag = atoi(szTemp); strncpy(szTemp,szInBuf + 11 + 8 + 8 + 2,2); szTemp[2] = '\0'; iForceFlag = atoi(szTemp);/* 输入参数:客户编号;起始日期;截止日期; 根据合同号:0-否,1-是; 电费类别:0-全部(欠费表与历史表中), 11-所有应收应退, 21-所有欠费(超过收费期限), 22-当年欠费, 23-历欠(非当年欠费) 输出参数:查询结果:0-正常结束, -100-客户编号不存在或重复@ac_khbh VARCHAR(10),@act_from CHAR(8),@act_to CHAR(8),@ai_gjhth INT,@ai_dflb INT,@ai_cxjg INT output */ ppVar[0] = &iReturn; /*执行取费用存储过程*/ bRet = DB_ExecuteStoredProcedureWithResult(&theDatabase, "Up_c_bank_get_fee", &nStatus, ppVar,1, pParam,szKHBH,szDateFrom,szDateTo,iFlag,iFeeFlag,0); if(!bRet || nStatus) //失败 { DB_ExecuteSQL(&theDatabase,szDelSql); gf_Return(&mwMidWare,-1,"执行Up_c_bank_get_fee失败"); return; } if (iReturn == -100) { DB_ExecuteSQL(&theDatabase,szDelSql); gf_Return(&mwMidWare,-100,"该客户不存在"); return; } /*从临时表中取数据,并分配输出的数据缓冲*/ /*1、取记录数,并分配内存*/ sprintf(szSql,"select count(*) from I_TMP_BANK_QRY where ID=@@spid"); ppVar[0] = &iResultCount; if(!DB_SQLPrepare(&theDatabase, szSql, ppVar, 1)) { DB_ExecuteSQL(&theDatabase,szDelSql); sprintf(szMsg,"SQL = %s Prepare失败!",szSql); gf_Return(&mwMidWare,-1,szMsg); return; } DB_SQLFetch(&theDatabase); DB_SQLDone(&theDatabase); /*根据数据量分配内存空间*/ if (iForceFlag == 0) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -