📄 hfcjzc.cpp
字号:
#include "stdafx.h"
#include "hfcjzc.h"
/************************************************************
* NAME: WinPrintf()
* DESCRIPTION: Popup error message box for cases where
* no child windows exist.
************************************************************/
/*void WinPrintf(char *szFormat, ...)
{
char szBuffer[256];
va_list pArguments;
HWND hWnd;
hWnd=AfxGetMainWnd()->m_hWnd;
va_start(pArguments,szFormat);
vsprintf(szBuffer, szFormat, pArguments);
MessageBox(hWnd, szBuffer, "信息窗口", MB_SYSTEMMODAL | MB_OK);
}*/
/************************************************************************
* 名称:UINT Writedata(LPVOID pParam)
* 功能:往主缓冲区写数据的线程
************************************************************************/
UINT Writedata(LPVOID pParam)
{
int rd_flag;
MAIN_CJDATA tmp_rddata;
char ls_time[TIME_LENGTH];
CString ls_month;
while(1) {
if(stopdata==STOPTRUE){
//AfxMessageBox("Stop the writedata thread");
break;
}
if((cjdata_flag == CJDATA_NO)||(dba_connect == DBA_FALSE)) {
Sleep(60000);
continue;
}
//清空上次的内容
tmp_rddata.hth[0]='\0';
tmp_rddata.num[0]='\0';
tmp_rddata.cuijiao[0]='\0';
tmp_rddata.qfmonth[0]='\0';
tmp_rddata.cjcount=0;
tmp_rddata.cjmonth[0]='\0';
tmp_rddata.cjyin_flag=1;
if(maincounts < MAINDATA_COUNTS){
//读一条记录
sLock.Lock();
if((dba_connect == DBA_TRUE)&&(cjdata_flag == CJDATA_YES))
rd_flag=Readrecord(&tmp_rddata);
else
rd_flag=-1;
sLock.Unlock();
//SysPrintf("主缓冲区读数据");
//取得当前催缴月份并判断是否超过当月最大催缴次数
GetTime(ls_time);
ls_time[7]='\0';
ls_month=&ls_time[5];
if(ls_month.Compare( tmp_rddata.cjmonth) != 0) {
tmp_rddata.cjcount=0;
sprintf(tmp_rddata.cjmonth,ls_month);
}
else
{
if((tmp_rddata.cjcount >= cjarg.max_count)&&(cjarg.maxcount_flag == 1))
rd_flag = -1;
}
//如果催缴音标志位为‘9’,不催
if(tmp_rddata.cjyin_flag==9){
rd_flag = -1;
}
if(rd_flag == 1) {
//清空上次的内容
maincjdata[writemain].hth[0]='\0';
maincjdata[writemain].num[0]='\0';
maincjdata[writemain].cuijiao[0]='\0';
maincjdata[writemain].qfmonth[0]='\0';
maincjdata[writemain].cjcount=0;
maincjdata[writemain].cjmonth[0]='\0';
maincjdata[writemain].cjyin_flag=1;
//赋新值
maincjdata[writemain]=tmp_rddata;
//SysPrintf("maincjdata %d ,cjcount=%d",writemain,tmp_rddata.cjcount);
//计数器加一
maincounts++;
//if(maincounts>MAINDATA_COUNTS-1)
// maincounts=MAINDATA_COUNTS-1;
if(writemain>=MAINDATA_COUNTS-1)
writemain=0;
else
writemain++;
}
}
Sleep(10);
}
//退出时关闭数据库
//sLock.Lock();
//pCuijiaoSet.Close();
//pDatabase.Close();
//sLock.Unlock();
return(0);
}
/************************************************************************
* 名称:int Readrecord(MAIN_CJDATA *rddata)
* 功能:读一条记录的函数
************************************************************************/
int Readrecord(MAIN_CJDATA *rddata)
{
int qz_flag;
int dkh_flag;
int ht_flag;
int mc_flag;
CString szhth;
CString szqianfei;
CString szqfmonth;
CString szflag;
CString szcjcount;
CString szcjmonth;
CString sznum;
CString szcmphth;
CString szcjyinflag;
char tmp_querySQL[200];
char tmp_cjcount[10];
char tmp_cjyinflag[10];
CRecordsetStatus rStatus;
char errormsg[100];
char ls_cjmonth[10];
if(pCuijiaoSet.IsEOF()){
//重新检索催缴表
try{
if(pCuijiaoSet.Requery() == 0){
pCuijiaoSet.Close();
cjdata_flag=CJDATA_NO;
return(0);
}
else{
if(pCuijiaoSet.GetRecordCount()==0){
pCuijiaoSet.Close();
cjdata_flag=CJDATA_NO;
return(0);
}
else{
cjdata_flag=CJDATA_YES;
}
}
}
catch(CDBException* e){
pCuijiaoSet.Close();
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
catch(CMemoryException* e){
pCuijiaoSet.Close();
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
}
try{
pCuijiaoSet.GetFieldValue( _T(hth) , szhth);
if(szhth.IsEmpty())
return(0);
pCuijiaoSet.GetFieldValue( _T(qianfei) , szqianfei);
if(szqianfei.IsEmpty())
return(0);
pCuijiaoSet.GetFieldValue( _T(qfmonth) , szqfmonth);
pCuijiaoSet.GetFieldValue( _T(flag) , szflag);
pCuijiaoSet.GetFieldValue( _T(cjcount) , szcjcount);
if(szcjcount.IsEmpty())
szcjcount="0";
pCuijiaoSet.GetFieldValue( _T(cjmonth) , szcjmonth);
pCuijiaoSet.GetFieldValue( _T(cjyinflag) , szcjyinflag);
if(szcjyinflag.IsEmpty())
szcjyinflag="1";
pCuijiaoSet.MoveNext();
}
catch(CDBException* e){
pCuijiaoSet.Close();
dba_connect=DBA_FALSE;
strcpy(errormsg, "数据库错误:");
strcat(errormsg, e->m_strError);
//AfxMessageBox(errormsg, MB_ICONEXCLAMATION );
e->Delete();
return(-1);
}
catch(CMemoryException* e){
pCuijiaoSet.Close();
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
//取得催缴记录的当前指针
pCuijiaoSet.GetStatus(rStatus);
lcuijiaocurrent = rStatus.m_lCurrentRecord;
sprintf(tmp_querySQL,"select num from t_data_dakehu where hth=\'%s\'",szhth);
try{
if(pDakehuSet.Open( CRecordset::forwardOnly, _T(tmp_querySQL))==0){
pDakehuSet.Close();
dkh_flag=-1;
}
else{
if(pDakehuSet.GetRecordCount()==0){
pDakehuSet.Close();
dkh_flag=-1;
}
else{
dkh_flag=1;
}
}
}
catch(CDBException* e){
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
catch(CMemoryException* e){
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
if(dkh_flag == 1) {
while(!pDakehuSet.IsEOF())
{
try{
pDakehuSet.GetFieldValue(_T(num), sznum);
if(sznum.GetLength()>=TELE_LENGTH ) {
dkh_flag=1;
break;
}
pDakehuSet.MoveNext();
}
catch(CDBException* e){
pDakehuSet.Close();
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
catch(CMemoryException* e){
pDakehuSet.Close();
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
dkh_flag=-1;
}
pDakehuSet.Close();
}
if(dkh_flag == -1) {
sprintf(tmp_querySQL,"select tele from t_data_hetong where hetong=\'%s\'",szhth);
try{
if(pHetongSet.Open( CRecordset::forwardOnly, _T(tmp_querySQL))==0){
pHetongSet.Close();
ht_flag=-1;
}
else{
if(pHetongSet.GetRecordCount()==0){
pHetongSet.Close();
ht_flag=-1;
}
else{
ht_flag=1;
}
}
}
catch(CDBException* e){
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
catch(CMemoryException* e){
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
if(ht_flag == 1) {
while(!pHetongSet.IsEOF())
{
try{
pHetongSet.GetFieldValue(_T(tele), sznum);
if(sznum.GetLength()>=TELE_LENGTH ) {
ht_flag=1;
break;;
}
pHetongSet.MoveNext();
}
catch(CDBException* e){
pHetongSet.Close();
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
catch(CMemoryException* e){
pHetongSet.Close();
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
ht_flag=-1;
}
pHetongSet.Close();
}
}
if((dkh_flag == -1)&&(ht_flag == -1)){
return(-2); //-2表示没有取得号码
}
//szcmphth
sprintf(tmp_querySQL,"select hth from t_data_miancui where num=\'%s\'",sznum);
try{
if(pMiancuiSet.Open( CRecordset::forwardOnly, _T(tmp_querySQL))==0){
pMiancuiSet.Close();
mc_flag=-1;
}
else{
if(pMiancuiSet.GetRecordCount()==0){
pMiancuiSet.Close();
mc_flag=-1;
}
else{
mc_flag=1;
}
}
}
catch(CDBException* e){
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
catch(CMemoryException* e){
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
if(mc_flag == 1) {
while(!pMiancuiSet.IsEOF())
{
try{
pMiancuiSet.GetFieldValue(_T(hth), szcmphth);
//if(!szcmphth.IsEmpty()) {
mc_flag=1;
break;;
//}
pMiancuiSet.MoveNext();
}
catch(CDBException* e){
pMiancuiSet.Close();
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
catch(CMemoryException* e){
pMiancuiSet.Close();
dba_connect=DBA_FALSE;
e->Delete();
return(-1);
}
mc_flag=-1;
}
pMiancuiSet.Close();
}
if(mc_flag == 1) {
return(-3); //-3表示取得的号码是免催号码
}
sprintf(rddata->hth,szhth);
sprintf(rddata->num ,sznum);
sprintf(rddata->cuijiao ,szqianfei);
sprintf(rddata->qfmonth ,szqfmonth);
sprintf(tmp_cjcount ,szcjcount);
rddata->cjcount = atoi(tmp_cjcount);
//SysPrintf("rddata->cjcount=%d",rddata->cjcount);
sprintf(rddata->cjmonth ,szcjmonth);
if((strcmp(rddata->cjmonth,"11")!=0)&&(strcmp(rddata->cjmonth,"12")!=0)){
strcpy(ls_cjmonth,"0");
strcat(ls_cjmonth,rddata->cjmonth);
sprintf(rddata->cjmonth,ls_cjmonth);
}
sprintf(tmp_cjyinflag ,szcjyinflag);
rddata->cjyin_flag = atoi(tmp_cjyinflag);
return(1);
}
/***************************************************************
* 名称:void GetTime(char* lstime)
* 功能:取当前时间并转变成字符串
***************************************************************/
void GetTime(char* lstime)
{
CTime Mytime;
time_t timer;
Mytime = CTime::GetCurrentTime();
timer = Mytime.GetTime();
sprintf(lstime,ctime(&timer));
CToSql(lstime);
}
/*******************************************************************
* 名称:void CToSql(char* lstime)
* 功能:转变时间字符串格式
*******************************************************************/
void CToSql(char* lstime)
{
int count;
CString stringC(lstime);
CString lsSqlMonth;
CString lsSqlDay;
CString lsSqlTime;
CString lsSqlYear;
lsSqlDay=stringC.Mid(8,2);
lsSqlTime=stringC.Mid(11,8);
lsSqlYear=stringC.Mid(20,4);
lsSqlMonth=stringC.Mid(4,3);
for(count=0;count<12;count++)
{
if(lsSqlMonth==tbMon[count][0])
{
lsSqlMonth=tbMon[count][1];
break;
}
}
stringC=lsSqlYear+"/"+lsSqlMonth+"/"+lsSqlDay+" "+lsSqlTime;
sprintf(lstime,stringC);
}
/************************************************************************
* 名称:UINT Maincontrol(LPVOID pParam)
* 功能:催缴主线程
* 判定是否满足催缴条件,是否进行催缴
************************************************************************/
UINT Maincontrol(LPVOID pParam)
{
int i=0;
char ls_i[10];
int li_flag;
//static int start_ch=MINCHAN;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -