📄 proc2.ec
字号:
} else result=1;/*success*/ }/*end while*/ if(result==0)/*fail*/ { printf("储蓄签到失败\n"); return(1); } printf("签到成功\n"); memcpy(msg->rc,PATR_OK,2); return(1); break; }}proc75(msg)/*将代扣文本文件转入gdjydb表*/DL_MSG *msg; /* insert all records read from from_gdj.txt file into gdjydb */{$ gdjyd_file gdjyd;char je[13],zje[13];int i=0;float je_tot=0.0;FILE *fp;/*处理代扣文件*/fp=fopen("/usr/hcdl/dlmg/server/report/fromgdj1","r");if(fp==NULL){memcpy(msg->rc,PATR_NOFILE,2); return(0);}$begin work;$lock table gdjydb in exclusive mode;gdjyd.wdtot=0.0;gdjyd.pltot=0.0;gdjyd.gdjtot=0.0;while(!feof(fp)){ memset(gdjyd.cxh,0x00,sizeof(gdjyd_file)); fscanf(fp,"%10c%50c%50c%13c%10c%10c%3c%10c%8c%7c%12c%12c%8c%14c%9c%9c%6c\n", gdjyd.cxh,gdjyd.yhm,gdjyd.dz, gdjyd.zh,gdjyd.yhh,gdjyd.cbrq,gdjyd.ydflh,gdjyd.ydflm, gdjyd.ygzdl,gdjyd.dj,je, zje,gdjyd.dbch,gdjyd.dbjh,gdjyd.sybd, gdjyd.bybd,gdjyd.bl); gdjyd.je=atof(je); gdjyd.zje=atof(zje); if(strcmp(gdjyd.cxh,"9999999999")!=0) { $insert into gdjydb values ($gdjyd); if(sqlca.sqlcode!=0) { $ rollback work; memcpy(msg->rc,PATR_INSERT,2); fclose(fp); return(0); } i++; je_tot=je_tot+gdjyd.je; } else { sprintf(je,"%12.2f",je_tot); sprintf(zje,"%12.2f",gdjyd.zje); if(i!=atol(gdjyd.bl)) { printf("笔数不一致\n"); printf("tot=%d\n",i); printf("999=%ld\n",atol(gdjyd.bl)); } if(strcmp(je,zje)) { printf("tot=%s\n",je); printf("999=%s\n",zje); printf("金额不一致\n"); } } } $commit work; fclose(fp); memcpy(msg->rc,PATR_OK,2); return(1);}proc76(msg)/*将已在供电局缴费数据转入gdjydb表*/DL_MSG *msg; /* update all records read from from_gdj2.txt file into gdjydb */{ $ long f_date; $ char cxh[11]; $ char db_cxh[11],db_yhm[51],db_cbrq[11]; $ float db_zje,db_je,db_pltot,db_wdtot,db_gdjtot; $ double skje; $ int money_left,needed_fee,sl; char je[13],zje[13],bs[6]; int i=0; float je_tot=0.0; FILE *fp;/*处理在供电局缴款的用户数据文件*/fp=fopen("/usr/hcdl/dlmg/server/report/fromgdj2","r");if(fp==NULL){ memcpy(msg->rc,PATR_NOFILE,2); return(0);}while(!feof(fp)) { fscanf(fp,"%10c%12c%5c\n",cxh,zje,bs); skje=atof(zje); if(strcmp(cxh,"9999999999")!=0) { $ begin work; /* 查供电局月度表 */ $ select count(*) into $sl from gdjydb where cxh=$cxh and overflag=NOT_OVER; if(sqlca.sqlcode!=0 && sqlca.sqlcode!=100) /* fail to execute sql */ { $rollback work; puts("数据库操作错误"); fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } if(sl==0) continue; /* 定义给定查询号电费cursor,一个月份一条记录*/ $declare gdj_xj cursor for select distinct cxh,yhm,cbrq,zje, pltot,wdtot,gdjtot into $db_cxh,$db_yhm,$db_cbrq,$db_zje, $db_pltot,$db_wdtot,$db_gdjtot from gdjydb where cxh=$cxh and overflag=NOT_OVER; if(sqlca.sqlcode!=0) /* fail to execute sql */ { $rollback work; puts("数据库操作错误"); fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } $open gdj_xj; if(sqlca.sqlcode<0) { $rollback work; puts("数据库操作错误"); fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } rtoday(&f_date); /*按月扣电费*/ money_left=skje;/*剩余金额*/ while(1) { $fetch gdj_xj; if(sqlca.sqlcode<0) { $rollback work; puts("数据库操作错误"); fclose(fp); $close gdj_xj; $free gdj_xj; memcpy(msg->rc,PATR_DBERROR,2); return(0); } if(sqlca.sqlcode==SQLNOTFOUND) { break; } needed_fee=db_zje-db_pltot-db_wdtot-db_gdjtot;/*本月欠费金额*/ if(needed_fee<=0) { $rollback work; puts("收费金额不同步"); fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); $close gdj_xj; $free gdj_xj; return(0); } if(money_left<needed_fee)/*本月只缴部份电费*/ { /*修改供电局月度表*/ db_wdtot+=money_left; $update gdjydb set (fse,gdjtot,overrq)=($money_left, $db_wdtot,$f_date) where cxh=$db_cxh and cbrq=$db_cbrq; if(sqlca.sqlcode!=0) /* fail to execute sql */ { $rollback work; $close gdj_xj; $free gdj_xj; fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } /*记供电局明细表*/ $insert into gdjmxb (cxh,cbrq,fse,ydfse,jyrq,jkfs,gyh,zje) values ($db_cxh,$db_cbrq,$skje, $money_left,$f_date,FROM_GDJ,"88888",$db_zje); if(sqlca.sqlcode!=0) /* fail to execute sql */ { $rollback work; puts("数据库操作错误"); fclose(fp); $close gdj_xj; $free gdj_xj; memcpy(msg->rc,PATR_DBERROR,2); return(0); } money_left=0.0; } else/*本月电费结清*/ { /*修改供电局月度表*/ db_wdtot+=needed_fee; $update gdjydb set (fse,wdtot,overrq,overflag,dyflag)= ($needed_fee,$db_wdtot,$f_date, GDJ_OVER,HAS_PRINTED) where cxh=$db_cxh and cbrq=$db_cbrq; if(sqlca.sqlcode!=0) /* fail to execute sql */ { $rollback work; puts("数据库操作错误"); fclose(fp); $close gdj_xj; $free gdj_xj; memcpy(msg->rc,PATR_DBERROR,2); return(0); } /*记供电局明细表*/ $insert into gdjmxb (cxh,cbrq,fse,ydfse,jyrq,jkfs,gyh,zje) values ($db_cxh,$db_cbrq,$skje, $needed_fee,$f_date,FROM_GDJ,"88888",$db_zje); if(sqlca.sqlcode!=0) /* fail to execute sql */ { $rollback work; puts("数据库操作错误"); fclose(fp); $close gdj_xj; $free gdj_xj; memcpy(msg->rc,PATR_DBERROR,2); return(0); } money_left-=needed_fee; } if(money_left==0.0) break; } $close gdj_xj; $free gdj_xj; i++; je_tot=je_tot+skje; } else { sprintf(je,"%12.2f",je_tot); sprintf(zje,"%12.2f",skje); if(i!=atol(bs)) { printf("笔数不一致\n"); printf("tot=%d\n",i); printf("999=%ld\n",atol(bs)); } if(strcmp(je,zje)) { printf("tot=%s\n",je); printf("999=%s\n",zje); printf("金额不一致\n"); } } }/*end while*/ fclose(fp); memcpy(msg->rc,PATR_OK,2); return(1);}proc77(msg)/*生成批量文件*/DL_MSG *msg;{ $ long f_date; $ char cxh[11]; $ char db_cxh[11],db_yhm[51],db_cbrq[11],db_zh[13]; $ float db_zje,db_je,db_pltot,db_wdtot,db_gdjtot; $ double skje; $ int money_left,needed_fee,sl; char je[13],zje[13],bs[6]; int i=0; float je_tot=0.0; FILE *fp; fp=fopen("/usr/hcdl/dlmg/server/report/dfto9k","r"); if(fp==NULL) { memcpy(msg->rc,PATR_NOFILE,2); return(0); } $ begin work; /* 定义给定查询号电费cursor,一个月份一条记录*/ $declare gdj_pl cursor for select distinct cxh into $db_cxh from gdjydb; if(sqlca.sqlcode!=0) /* fail to execute sql */ { $rollback work; puts("数据库操作错误"); fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } $open gdj_pl; if(sqlca.sqlcode<0) { $rollback work; puts("数据库操作错误"); fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } rtoday(&f_date); while(1) { $fetch gdj_pl; if(sqlca.sqlcode<0) { $rollback work; puts("数据库操作错误"); $close gdj_pl; $free gdj_pl; fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } if(sqlca.sqlcode==SQLNOTFOUND) { break; } $select distinct cxh,cbrq,zje,pltot,wdtot,gdjtot from gdjydb where cxh=$db_cxh and overflag=NOT_OVER into temp tmp_wj; if(sqlca.sqlcode<0) { $rollback work; puts("数据库操作错误"); $close gdj_pl; $free gdj_pl; fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } $select count(*),sum(zje),sum(pltot),sum(wdtot),sum(gdjtot) into $sl,$db_zje,$db_pltot,$db_wdtot,$db_gdjtot from tmp_wj; if(sl!=0) { needed_fee=db_zje-db_pltot-db_wdtot-db_gdjtot;/*欠费金额*/ fprintf(fp,"%10s%13s%12.2f",db_cxh,db_zh,needed_fee); } } fclose(fp); memcpy(msg->rc,PATR_OK,2); return(1);}proc78(msg)/*接收大机批量结果文件数据转入gdjydb表*/DL_MSG *msg; /* update all records read from gdjfrom9k.txt file into gdjydb */{ $ long f_date; $ char cxh[11],zh[13]; $ char db_cxh[11],db_yhm[51],db_cbrq[11]; $ float db_zje,db_je,db_pltot,db_wdtot,db_gdjtot; $ double skje; $ int money_left,needed_fee,sl; char je[13],zje[13],bs[6]; int i=0; float je_tot=0.0; FILE *fp;fp=fopen("/usr/hcdl/dlmg/server/report/dffrom9k","r");if(fp==NULL){ memcpy(msg->rc,PATR_NOFILE,2); return(0);}while(!feof(fp)) { fscanf(fp,"%10c%13c%12c\n",cxh,zh,zje); skje=atof(zje); if(strcmp(cxh,"9999999999")!=0) { $ begin work; /* 查供电局月度表 */ $ select count(*) into $sl from gdjydb where cxh=$cxh and overflag=NOT_OVER; if(sqlca.sqlcode!=0 && sqlca.sqlcode!=100) /* fail to execute sql */ { $rollback work; puts("数据库操作错误"); fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } if(sl==0) continue; /* 定义给定查询号电费cursor,一个月份一条记录*/ $declare gdj_9k cursor for select distinct cxh,yhm,cbrq,zje, pltot,wdtot,gdjtot into $db_cxh,$db_yhm,$db_cbrq,$db_zje, $db_pltot,$db_wdtot,$db_gdjtot from gdjydb where cxh=$cxh and overflag=NOT_OVER; if(sqlca.sqlcode!=0) /* fail to execute sql */ { $rollback work; puts("数据库操作错误"); fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } $open gdj_9k; if(sqlca.sqlcode<0) { $rollback work; puts("数据库操作错误"); fclose(fp); memcpy(msg->rc,PATR_DBERROR,2); return(0); } rtoday(&f_date); /*按月扣电费*/ money_left=skje;/*剩余金额*/ while(1) { $fetch gdj_9k; if(sqlca.sqlcode<0) { $rollback work; puts("数据库操
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -