📄 bak_workorder.pc
字号:
fflush(stdout) ;
OracleErrorProcess("deal_stmt_remain") ;
return SQLERR ;
}
int bill_statement_mast(char *cPeriod,char *cCycle,char cType)
{
int iRet = 0 ;
int RecNum = 0 ;
EXEC SQL BEGIN DECLARE SECTION ;
varchar vcPeriod[6+1] ;
varchar vcCycle[2+1] ;
varchar vcAccountId[10+1] ;
varchar vcStatementId[18+1] ;
varchar vcSelectSql[512] ;
varchar vcInsertSql[512] ;
varchar vcDeleteSql[512] ;
EXEC SQL END DECLARE SECTION ;
EXEC SQL WHENEVER NOT FOUND goto work_bill ;
EXEC SQL WHENEVER SQLERROR goto work_bill_error ;
vcPeriod.len = sprintf((char *)vcPeriod.arr,"%s",cPeriod) ;
vcCycle.len = sprintf((char *)vcCycle.arr,"%s",cCycle) ;
vcPeriod.arr[vcPeriod.len] = 0 ;
vcCycle.arr[vcCycle.len] = 0 ;
if(cType = 'C')
vcSelectSql.len = sprintf((char *)vcSelectSql.arr,"%s%s%s%s%s%s",
"SELECT account_id,statement_id ",
"FROM stbs_tb_bill_statement_mast WHERE acct_period = '",
vcPeriod.arr,
"' AND acct_cycle = '",
vcCycle.arr,
"' AND bill_status = 'O'") ;
else if(cType = 'H')
vcSelectSql.len = sprintf((char *)vcSelectSql.arr,"%s%s%s%s%s%s",
"SELECT account_id,statement_id ",
"FROM stbs_tb_bill_statement_mast_h WHERE acct_period = '",
vcPeriod.arr,
"' AND acct_cycle = '",
vcCycle.arr,
"'") ;
vcSelectSql.arr[vcSelectSql.len] = 0 ;
EXEC SQL PREPARE sel_mast_cur FROM :vcSelectSql ;
EXEC SQL DECLARE mast_cur CURSOR for sel_mast_cur ;
EXEC SQL OPEN mast_cur ;
if( bDebug )
{
fprintf(fpDbg,"vcSelectSql.arr is [%s] bill_statement_mast\n",vcSelectSql.arr) ;
fprintf(fpDbg,"vcCycle.arr is [%s] bill_statement_mast\n",vcCycle.arr) ;
fflush(stdout) ;
}
while(1)
{
EXEC SQL FETCH mast_cur INTO :vcAccountId, :vcStatementId ;
vcAccountId.arr[vcAccountId.len] = 0 ;
vcStatementId.arr[vcStatementId.len] = 0 ;
iRet = deal_statement_dtl((char *)vcAccountId.arr,cCycle,cPeriod,cType) ;
if(iRet != SQLOK)
{
EXEC SQL CLOSE mast_cur ;
EXEC SQL ROLLBACK ;
return SQLERR ;
}
iRet = deal_stmt_remain((char *)vcStatementId.arr,cCycle,cPeriod,cType) ;
if(iRet != SQLOK)
{
EXEC SQL CLOSE mast_cur ;
EXEC SQL ROLLBACK ;
return SQLERR ;
}
vcDeleteSql.len = sprintf((char *)vcDeleteSql.arr,"%s%s%s%s%s%s%s%s%s%s%s",
"DELETE ",
"stbs_tb_bill_statement_mast",
" WHERE account_id = '",
vcAccountId.arr,
"' AND statement_id = '",
vcStatementId.arr,
"' AND acct_period = '",
vcPeriod.arr,
"' AND acct_cycle = '",
vcCycle.arr,
"'") ;
vcDeleteSql.arr[vcDeleteSql.len] = 0 ;
if( bDebug )
{
fprintf(fpDbg,"vcDeleteSql.arr is [%s] bill_statement_mast\n",vcDeleteSql.arr) ;
fflush(stdout) ;
}
EXEC SQL PREPARE delete_sql3 FROM :vcDeleteSql ;
EXEC SQL EXECUTE delete_sql3 ;
RecNum = RecNum + 1 ;
if(RecNum >=1000)
{
EXEC SQL COMMIT ;
RecNum = 0 ;
}
}
work_bill:
EXEC SQL CLOSE mast_cur ;
EXEC SQL COMMIT ;
return SQLOK ;
work_bill_error:
fprintf(fpLog,"\nError occured when calling bill_statement_mast function!\n");
fflush(stdout) ;
OracleErrorProcess("bill_statement_mast") ;
return SQLERR ;
}
int ProcessBillStatement_h()
{
int iRet = 0 ;
int RecNum = 0 ;
char cHisTableName[31] ;
EXEC SQL BEGIN DECLARE SECTION ;
varchar vcPeriod[6+1] ;
varchar vcCycle[6+1] ;
varchar vcSelectPerCycle[256] ;
EXEC SQL END DECLARE SECTION ;
EXEC SQL WHENEVER NOT FOUND goto work_end_h ;
EXEC SQL WHENEVER SQLERROR goto work_error_h ;
vcSelectPerCycle.len = sprintf((char *)vcSelectPerCycle.arr,"%s%s%d",
"SELECT period,cycle FROM stbs_tb_para ",
"WHERE to_date(to_char(end_date,'yyyymmdd'),'yyyymmdd') < to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') - ",
iOfflineDur) ;
vcSelectPerCycle.arr[vcSelectPerCycle.len] = 0 ;
EXEC SQL PREPARE select_bill_h FROM :vcSelectPerCycle ;
EXEC SQL DECLARE select_h CURSOR for select_bill_h ;
EXEC SQL OPEN select_h ;
while(1)
{
EXEC SQL FETCH select_h INTO :vcPeriod, :vcCycle ;
vcPeriod.arr[vcPeriod.len] = 0 ;
vcCycle.arr[vcCycle.len] = 0 ;
if( bDebug )
{
fprintf(fpDbg,"vcPeriod.arr is [%s] ProcessBillStatement\n",vcPeriod.arr) ;
fprintf(fpDbg,"vcCycle.arr is [%s] ProcessBillStatement\n",vcCycle.arr) ;
fflush(stdout) ;
}
iRet = bill_statement_mast((char *)vcPeriod.arr,(char *)vcCycle.arr,'H') ;
if(iRet == SQLERR)
{
EXEC SQL CLOSE select_h ;
return SQLERR ;
}
}
return SQLOK ;
work_end_h:
EXEC SQL CLOSE select_h ;
EXEC SQL COMMIT ;
return SQLOK ;
work_error_h:
fprintf(fpLog,"\nError occured when calling ProcessBillStatement_h function!\n");
fflush(stdout) ;
OracleErrorProcess("ProcessBillStatement_h") ;
return SQLERR ;
}
int ProcessBillStatement_c()
{
int TableNum = 0 ;
int iRet = 0 ;
int i = 0 ;
int RecNum = 0 ;
char cHisTableName[31] ;
char cColumnFrom[1028] ;
char cColumnTo[1028] ;
EXEC SQL BEGIN DECLARE SECTION ;
varchar vcPeriod[6+1] ;
varchar vcCycle[6+1] ;
varchar vcAccountId[10+1] ;
varchar vcStatementId[18+1] ;
varchar vcSelectPerCycle[256] ;
EXEC SQL END DECLARE SECTION ;
EXEC SQL WHENEVER NOT FOUND goto work_end_c ;
EXEC SQL WHENEVER SQLERROR goto work_error_c ;
vcSelectPerCycle.len = sprintf((char *)vcSelectPerCycle.arr,"%s%s%d",
"SELECT period,cycle FROM stbs_tb_para ",
"WHERE to_date(to_char(end_date,'yyyymmdd'),'yyyymmdd') < to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') - ",
iOnlineDur[0]) ;
vcSelectPerCycle.arr[vcSelectPerCycle.len] = 0 ;
printf("vcSelectPerCycle[%s]\n",vcSelectPerCycle.arr) ;
EXEC SQL PREPARE select_bill_c FROM :vcSelectPerCycle ;
EXEC SQL DECLARE select_c CURSOR for select_bill_c ;
EXEC SQL OPEN select_c ;
while(1)
{
EXEC SQL FETCH select_c INTO :vcPeriod, :vcCycle ;
vcPeriod.arr[vcPeriod.len] = 0 ;
vcCycle.arr[vcCycle.len] = 0 ;
if( bDebug )
{
fprintf(fpDbg,"C vcPeriod.arr is [%s] ProcessBillStatement\n",vcPeriod.arr) ;
fprintf(fpDbg,"C vcCycle.arr is [%s] ProcessBillStatement\n",vcCycle.arr) ;
fflush(stdout) ;
}
iRet = bill_statement_mast((char *)vcPeriod.arr,(char *)vcCycle.arr,'C') ;
if(iRet == SQLERR)
{
EXEC SQL CLOSE select_c ;
return SQLERR ;
}
}
return SQLOK ;
work_end_c:
EXEC SQL CLOSE select_c ;
EXEC SQL COMMIT ;
return SQLOK ;
work_error_c:
fprintf(fpLog,"\nError occured when calling ProcessBillStatement_c function!\n");
fflush(stdout) ;
OracleErrorProcess("ProcessBillStatement_c") ;
return SQLERR ;
}
int ProcessBillStatement()
{
int TableNum = 0 ;
int iRet = 0 ;
int i = 0 ;
int RecNum = 0 ;
char cHisTableName[31] ;
char cColumnFrom[1028] ;
char cColumnTo[1028] ;
EXEC SQL BEGIN DECLARE SECTION ;
varchar vcPeriod[6+1] ;
varchar vcCycle[6+1] ;
varchar vcAccountId[10+1] ;
varchar vcStatementId[18+1] ;
varchar vcSelectPerCycle[256] ;
EXEC SQL END DECLARE SECTION ;
EXEC SQL WHENEVER NOT FOUND goto work_end ;
EXEC SQL WHENEVER SQLERROR goto work_error ;
iRet = GetTableNameFromManage(&TableNum,(char *)"2",(char *)"STBS_TB_BILL_STATEMENT_MAST") ;
if(iRet == SQLERR)
return SQLERR ;
if(TableNum != 0)
{
iRet = ProcessBillStatement_c() ;
if(iRet == SQLERR)
return SQLERR ;
iRet = ProcessBillStatement_h() ;
if(iRet == SQLERR)
return SQLERR ;
}
return SQLOK ;
work_end:
return SQLOK ;
work_error:
fprintf(fpLog,"\nError occured when calling ProcessBillStatement function!\n");
fflush(stdout) ;
OracleErrorProcess("ProcessBillStatement") ;
return SQLERR ;
}
int ProcessAcctSetoff()
{
int TableNum = 0 ;
int iRet = 0 ;
char cColumnFrom[1028] ;
char cColumnTo[1028] ;
EXEC SQL BEGIN DECLARE SECTION ;
varchar vcInsertSql[512] ;
varchar vcDeleteSql[512] ;
EXEC SQL END DECLARE SECTION ;
EXEC SQL WHENEVER NOT FOUND goto setoff_end ;
EXEC SQL WHENEVER SQLERROR goto setoff_error ;
iRet = GetTableNameFromManage(&TableNum,(char *)"2",(char *)"STBS_TB_ACCT_SETOFF") ;
if(iRet == SQLERR)
return SQLERR ;
if(TableNum != 0)
{
memset(cColumnFrom,0,sizeof(cColumnFrom)) ;
memset(cColumnTo,0,sizeof(cColumnTo)) ;
iRet = GetColumnOfTable("STBS_TB_ACCT_SETOFF_H",cColumnFrom,cColumnTo,"2") ;
if(iRet == SQLERR)
return SQLERR ;
vcInsertSql.len = sprintf((char *)vcInsertSql.arr,"%s%s%s%s%s%s%s%s%s%d",
"INSERT INTO ",
"STBS_TB_ACCT_SETOFF_H",
"(",
cColumnTo,
") SELECT ",
cColumnFrom,
" FROM ",
"STBS_TB_ACCT_SETOFF",
" WHERE to_date(to_char(pay_date,'yyyymmdd'),'yyyymmdd') < to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') -",
iOnlineDur[0]) ;
vcInsertSql.arr[vcInsertSql.len] = 0 ;
printf("vcInsertSql[%s]\n",vcInsertSql.arr) ;
if( bDebug )
{
fprintf(fpDbg,"vcInsertSql.arr is [%s] ProcessAcctSetoff\n",vcInsertSql.arr) ;
fflush(stdout) ;
}
EXEC SQL PREPARE insert_sql4 FROM :vcInsertSql ;
EXEC SQL EXECUTE insert_sql4 ;
if(sqlca.sqlerrd[2] == 0)
return SQLOK ;
vcDeleteSql.len = sprintf((char *)vcDeleteSql.arr,"%s%s%s%d",
"DELETE ",
"STBS_TB_ACCT_SETOFF",
" WHERE to_date(to_char(pay_date,'yyyymmdd'),'yyyymmdd') < to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') -",
iOnlineDur[0]) ;
printf("vcDeleteSql[%s]\n",vcDeleteSql.arr) ;
if( bDebug )
{
fprintf(fpDbg,"vcDeleteSql.arr is [%s] ProcessAcctSetoff\n",vcDeleteSql.arr) ;
fflush(stdout) ;
}
EXEC SQL PREPARE delete_sql4 FROM :vcDeleteSql ;
EXEC SQL EXECUTE delete_sql4 ;
vcDeleteSql.len = 0 ;
vcDeleteSql.len = sprintf((char *)vcDeleteSql.arr,"%s%s%s%d",
"DELETE ",
"STBS_TB_ACCT_SETOFF",
" WHERE to_date(to_char(pay_date,'yyyymmdd'),'yyyymmdd') < to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') -",
iOfflineDur[0]) ;
if( bDebug )
{
fprintf(fpDbg,"vcDeleteSql.arr is [%s] ProcessAcctSetoff\n",vcDeleteSql.arr) ;
fflush(stdout) ;
}
EXEC SQL PREPARE delete_sql5 FROM :vcDeleteSql ;
EXEC SQL EXECUTE delete_sql5 ;
}
setoff_end:
EXEC SQL COMMIT ;
return SQLOK ;
setoff_error:
fprintf(fpLog,"\nError occured when calling ProcessAcctSetoff function!\n");
fflush(stdout) ;
OracleErrorProcess("ProcessAcctSetoff") ;
return SQLERR ;
}
/*main function*/
int main(int argc,char *argv[])
{
int i = 0 ;
int iRet = 0 ;
char StartDate[4+1] ;
EXEC SQL BEGIN DECLARE SECTION ;
varchar vcExcuteTime[14+1] ;
varchar vcEndTime[14+1] ;
EXEC SQL END DECLARE SECTION ;
if (connect_database() == SQLERR)
{
printf("Failed to connect to Database!\n") ;
printf("Check your username and password!\n") ;
exit(-1) ;
}
EXEC SQL WHENEVER NOT FOUND continue ;
EXEC SQL WHENEVER SQLERROR continue ;
EXEC SQL SELECT TO_CHAR(sysdate,'yyyymmddhh24miss') INTO :vcExcuteTime FROM DUAL ;
vcExcuteTime.arr[vcExcuteTime.len] = '\0' ;
memset(StartDate,0,sizeof(StartDate)) ;
memcpy(StartDate,&vcExcuteTime.arr[4],4) ;
memset(logfilename,0,sizeof(logfilename)) ;
sprintf(logfilename,"%s%04sbackup.log",getenv("LOG_DIR"),StartDate) ;
if((fpLog = fopen(logfilename,"a+"))==NULL)
{
printf("Can't open the logfile[%s]\n",logfilename) ;
fflush(stdout) ;
exit(-1) ;
}
fprintf(fpLog,"Begin time is at [%s]!\n",vcExcuteTime.arr) ;
printf("1111111111111111\n") ;
iRet = MoveRecordToHistory("1") ;
if(iRet != SQLOK )
{
fprintf(fpLog,"Failed to MoveRecordToHistory!\n") ;
fflush(stdout) ;
}
printf("222222222222222222222\n") ;
iRet = ProcessWorkOrder('C') ;
printf("222222222222222222222\n") ;
if(iRet != SQLOK )
{
fprintf(fpLog,"Failed to ProcessWorkOrder('C') !\n") ;
fflush(stdout) ;
}
printf("333333333333333333333\n") ;
iRet = ProcessWorkOrder('H') ;
printf("333333333333333333333\n") ;
if(iRet != SQLOK )
{
fprintf(fpLog,"Failed to ProcessWorkOrder!\n") ;
fflush(stdout) ;
}
printf("44444444444444444\n") ;
iRet = ProcessRevenue() ;
printf("44444444444444444\n") ;
if(iRet != SQLOK )
{
fprintf(fpLog,"Failed to ProcessRevenue!\n") ;
fflush(stdout) ;
}
printf("55555555555555555555\n") ;
iRet = ProcessBillStatement() ;
printf("55555555555555555555\n") ;
if(iRet != SQLOK )
{
fprintf(fpLog,"Failed to ProcessBillStatement!\n") ;
fflush(stdout) ;
}
printf("6666666666666666666\n") ;
iRet = ProcessAcctSetoff() ;
printf("6666666666666666666\n") ;
if(iRet != SQLOK )
{
fprintf(fpLog,"Failed to ProcessAcctSetoff!\n") ;
fflush(stdout) ;
}
EXEC SQL SELECT TO_CHAR(sysdate,'yyyymmddhh24miss') INTO :vcEndTime FROM DUAL ;
vcEndTime.arr[vcEndTime.len] = '\0' ;
fprintf(fpLog,"End time is at [%s]!\n",vcEndTime.arr) ;
DetachFromDB() ;
return SQLOK ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -