📄 datafunc.h
字号:
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];
long li;
if(pCuijiaoSet.IsEOF()){
//重新检索催缴表
if(maincounts>0){ //如果读到了表结尾,但缓冲区仍有数据则不检索
return(-1);
}
try{
if(pCuijiaoSet.Requery() == 0){
pCuijiaoSet.Close();
cjdata_flag=CJDATA_NO;
return(0);
}
else{
if((li=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);
szhth=pCuijiaoSet.m_HTH;
if(szhth.IsEmpty()){
pCuijiaoSet.MoveNext();
return(0);
}
//pCuijiaoSet.GetFieldValue( _T(qianfei) , szqianfei);
szqianfei=pCuijiaoSet.m_QIANFEI;
if(szqianfei.IsEmpty()){
pCuijiaoSet.MoveNext();
return(0);
}
//pCuijiaoSet.GetFieldValue( _T(qfmonth) , szqfmonth);
szqfmonth=pCuijiaoSet.m_QFMONTH;
//pCuijiaoSet.GetFieldValue( _T(flag) , szflag);
szflag=pCuijiaoSet.m_FLAG;
//pCuijiaoSet.GetFieldValue( _T(cjcount) , szcjcount);
szcjcount=pCuijiaoSet.m_CJCOUNT;
if(szcjcount.IsEmpty())
szcjcount="0";
//pCuijiaoSet.GetFieldValue( _T(cjmonth) , szcjmonth);
szcjmonth=pCuijiaoSet.m_CJMONTH;
//pCuijiaoSet.GetFieldValue( _T(cjyinflag) , szcjyinflag);
szcjyinflag=pCuijiaoSet.m_CJYIN_FLAG;
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;
::PostMessage( myhwnd, WM_COPY ,(WPARAM) 0, (LPARAM) 0);
//赋值
sprintf(rddata->cuijiao ,szqianfei);
sprintf(rddata->qfmonth ,szqfmonth);
sprintf(rddata->hth,szhth);
sprintf(tmp_cjcount ,szcjcount);
rddata->cjcount = atoi(tmp_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);
if(Cjtiaojian(rddata) == -1){
return(-1);
}
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 ) {
if(Miancj(sznum)==0){ //如果不是免催电话
//号码赋值
sprintf(rddata->num ,sznum);
Outmaindata(rddata);
::PostMessage( myhwnd, WM_COPY ,(WPARAM) 0, (LPARAM) 0);
}
}
while((maincounts >= MAINDATA_COUNTS)||(pauseflag==1)||(!Cmpcjarg(&cjarg))){ //若缓冲区写满或不在催缴时间,暂停读数据
Sleep(100);
if((stopdata==STOPTRUE)||(dba_connect == DBA_FALSE)){
//如果停止进程或失去连接,先关闭记录集再返回
pDakehuSet.Close();
return(-1);
}
}
if((stopdata==STOPTRUE)||(dba_connect == DBA_FALSE)){
//如果停止进程或失去连接,先关闭记录集再返回
pDakehuSet.Close();
return(-1);
}
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);
}
}
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 ) {
if(Miancj(sznum)==0){ //如果不是免催电话
//号码赋值
sprintf(rddata->num ,sznum);
Outmaindata(rddata);
::PostMessage( myhwnd, WM_COPY ,(WPARAM) 0, (LPARAM) 0);
}
}
while((maincounts >= MAINDATA_COUNTS)||(pauseflag==1)||(!Cmpcjarg(&cjarg))){ //若缓冲区写满或不在催缴时间,暂停读数据
Sleep(100);
if((stopdata==STOPTRUE)||(dba_connect == DBA_FALSE)){
//如果停止进程或失去连接,先关闭记录集再返回
pHetongSet.Close();
return(-1);
}
}
if((stopdata==STOPTRUE)||(dba_connect == DBA_FALSE)){
//如果停止进程或失去连接,先关闭记录集再返回
pHetongSet.Close();
return(-1);
}
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);
}
}
pHetongSet.Close();
}
}
if((dkh_flag == -1)&&(ht_flag == -1)){
return(-2); //-2表示没有取得号码
}
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;
//读信号灯在sysinit的时候已经进行
//for(i=0;i<MAXDEVS;i++) {
// itoa(i+1,ls_i,10);
// strcpy(signlight[i].app_id,(char *)ReadSemaphoneFile(ls_i,appid));
//}
//i=0;
while(1) {
//Sleep(0);
if(stopdata==STOPTRUE){
//AfxMessageBox("主控程序终止");
break;
}
//if((maincounts > 0)&&(Cmpcjarg(&cjarg))){ //如果缓冲区里有数据且到了催缴时间即开始催缴
if(maincounts > 0){ /*如果缓冲区里有数据就开始催缴,催缴时间的判断放到读缓冲区的线程中,
以实现实时读取更新数据*/
//取得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(cjarg.bohao_time); //拨了一个号码后,稍停顿,然后再拨下一个号码
}
/*else if(atoi(signlight[i].chn_value)==CHDEVUNOPEN) {
//重新打开一次
}*/
else
{
//Sleep(0);
}
}
if(i>=MAXDEVS-1){
i=0;
Sleep(100); //如果一次循环查找空闲通道完成,稍停再进行下一次循环查找。防止出现催缴通道
//全部占用而此时缓冲区又有数据时,系统会大量占用cpu资源。
}
else{
i++;
}
}
else{
//SysPrintf("主缓冲区无数据");
Sleep(cjarg.bohao_time); //没有数据时,稍停顿,等待有数据再拨号
}
}
return(0);
}
/************************************************************************
* 名称:BOOL Cmpcjarg(CJ_ARG* lpcjarg)
* 功能:判定是否到了催缴时间
************************************************************************/
BOOL Cmpcjarg(CJ_ARG* lpcjarg)
{
char ls_time[TIME_LENGTH];
char* ls_timea;
char* ls_timeb;
int li_year;
int li_month;
int li_day;
int li_hour;
int li_minute;
int li_second;
GetTime(ls_time);
ls_timea=ls_time;
ls_timeb=ls_timea+4;
*ls_timeb='\0';
ls_timeb++;
li_year=atoi(ls_timea);
ls_timea=ls_timeb;
ls_timeb=ls_timea+2;
*ls_timeb='\0';
ls_timeb++;
li_month=atoi(ls_timea);
ls_timea=ls_timeb;
ls_timeb=ls_timea+2;
*ls_timeb='\0';
ls_timeb++;
li_day=atoi(ls_timea);
ls_timea=ls_timeb;
ls_timeb=ls_timea+2;
*ls_timeb='\0';
ls_timeb++;
li_hour=atoi(ls_timea);
ls_timea=ls_timeb;
ls_timeb=ls_timea+2;
*ls_timeb='\0';
ls_timeb++;
li_minute=atoi(ls_timea);
ls_timea=ls_timeb;
ls_timeb=ls_timea+2;
*ls_timeb='\0';
li_second=atoi(ls_timea);
if(lpcjarg->cjtime_one == 1) {
if((li_month>=lpcjarg->cjtime[0].start_month)&&(li_month<=lpcjarg->cjtime[0].end_month)&&
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -