📄 datafunc.c
字号:
/************************************************************
* 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 data thread");
break;
}
if((cjdata_flag == CJDATA_NO)||(dba_connect == DBA_FALSE)) {
idle(0);
delay(60);
continue;
}
//清空上次的内容
tmp_rddatachar.hth[0]='\0';
tmp_rddatachar.num[0]='\0';
tmp_rddatachar.cuijiao[0]='\0';
tmp_rddatachar.qfmonth[0]='\0';
tmp_rddatachar.cjcount=0;
tmp_rddatachar.cjmonth[0]='\0';
tmp_rddatachar.cjyin_flag=1;
if(maincounts < MAINDATA_COUNTS){
//读一条记录
sLock.Lock();
if((dba_connect == DBA_TRUE)&&(cjdata_flag == CJDATA_TRUE))
rd_flag=Readrecord(&tmp_rddata);
else
rd_flag=-1;
sLock.Unlock();
//取得当前催缴月份并判断是否超过当月最大催缴次数
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].append_count=0;
//赋新值
maincjdata[writemain]=tmp_rddata;
//计数器加一
maincounts++;
//if(maincounts>MAINDATA_COUNTS-1)
// maincounts=MAINDATA_COUNTS-1;
if(writemain>=MAINDATA_COUNTS-1)
writemain=0;
else
writemain++;
}
}
idle(0);
}
//退出时关闭数据库
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;
if(pCuijiaoSet.IsEOF()){
//重新检索催缴表
try{
if(pCuijiaoSet.Requery() == 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;
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
{
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
{
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
{
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);
sprintf(rddata->cjmonth ,szcjmonth);
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;
while(1) {
if(stopdata==STOPTRUE){
WinPrintf("主控程序终止");
break;
}
if((maincounts > 0)&&(Cmpcjarg(&cjarg)){ //如果缓冲区里有数据且到了催缴时间即开始催缴
//取得DLL函数指针应在初使化时做
//VERIFY(pReadxhd=(READXHDPROC*)::GetProcAddress(lpxhddll,"ReadSemaphoneFile"));
itoa(i+1,ls_i,10);
strcpy(signlight[i].app_id,(char *)ReadSemaphoneFile(ls_i,appid));
if(strcmp(signlight[i].app_id,cjappid)==0) {
strcpy(signlight[i].chn_value,(char *)ReadSemaphoneFile(ls_i,chnvalue));
if(atoi(signlight[i].chn_value)==CHDEVIDLE) {
//进行拨号工作
/*while(dxinfo[i].chdialcount<MAXDIALCOUNT){
if(yin_seize(i) != 1)
break;
sleep(30);
strcpy(signlight[i].chn_value,(char *)ReadSemaphoneFile(ls_i,chnvalue));
if(atoi(signlight[i].chn_value)==CHDEVWORK)
break;
dxinfo[i].chdialcount++;
idle(0);
}*/
yin_seize(i);
sleep(30);
}
else if(atoi(signlight[i].chn_value)==CHDEVUNOPEN) {
//重新打开一次
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -