资源描述
60
海昌医用塑胶瓶黑点检测软件V1.0
#ifndef TaskHandleH
#define TaskHandleH
#include <SysUtils.hpp>
#include "IACTSVC.h"
#include "ISMSSVC.h"
//
class TTaskHandler
{
public:
virtual fastcall ~TTaskHandler(){};
virtual int fastcall Run(char *pBuf){return ;}
virtual int fastcall GetErrorCode(AnsiString RetCode, int &nErrCode);
virtual int fastcall GetUserHead(const char *pBuf,int nCmd);
//virtual int fastcall ParsePack(char *pPack, unsigned int nPackLen)= ;
int m_nErrCode;
char m_szIVRSerial[];
TACTUser *pUserInfo;
TACTHead *pHeadInfo;
int nDime;
};
//-
//enum {SelfSingel=, RandomSingle=, Multle=, Mixture=};
class TInvestHandler : public TTaskHandler
{
//virtual int fastcall GenerateNum(int nCount, char *pNum){return ;}
//virtual int fastcall CheckNum(int nType, char *pNum, int &nCount){return ;}
protected:
fastcall TInvestHandler(){};
virtual fastcall ~TInvestHandler(){};
//virtual int fastcall Factorial(int nNum);
//virtual int fastcall Permutation(int nUpNum, int nDownNum); /
virtual int fastcall Combination(int nUpNum, int nDownNum);
virtual int fastcall ParsePack(char *pPack, unsigned int nPackLen){return ;}
virtual int CheckMultiNum(char *pNum, unsigned int nMin,unsigned int nMax,
unsigned int nHigh, int &nCount);
virtual int CheckSingleNum(char *pNum, unsigned int nMin, unsigned int nMax);
virtual int CheckMixtureNum(char *pNum, unsigned int nMin,
unsigned int nMax, unsigned int nHigh, int &nCount);
virtual int CheckMixtureNumD(char *pNum, unsigned int nMin,
unsigned int nMax, unsigned int nHigh, int &nCount,int Times);
int CheckSingleDNum(char *pNum, unsigned int nDime);
int CheckMultiSingleDNum(char *pNum, unsigned int nMin, unsigned int nMax);
virtual int SortedNumber(char *pNum);
TACTInvestInfo *pInvestInfo;
int m_nMoney;
AnsiString m_asIssue;
int m_nPlay;
int m_nSaleMode;
int m_nInvestMode;
public:
_di_IACTSVC SOAPService;
virtual int fastcall Run(char *pBuf){return ;}
virtual int fastcall Invest(){return ;}
class TQueryHandler : public TTaskHandler
{
virtual int Query(char *pBuf){return ;}
protected:
//virtual int fastcall GetErrorCode(AnsiString RetCode, int &pErrCode);
public:
//TACTUser *pUserInfo;
//TACTHead *pHeadInfo;
_di_IACTSVC SOAPService;
fastcall TQueryHandler(){};
virtual fastcall ~TQueryHandler(){};
}
class TMoneyTransHandler : public TTaskHandler
{
virtual int Transfer(char *pBuf){return ;}
protected:
//virtual int fastcall GetUserHead(const char *pBuf, int nCom);
//virtual int fastcall GetErrorCode(AnsiString RetCode, char *pErrCode);
public:
//TACTUser *pUserInfo;
//TACTHead *pHeadInfo;
_di_IACTSVC SOAPService;
fastcall TMoneyTransHandler(){};
virtual fastcall ~TMoneyTransHandler(){};
};
//
class TCustomizeHandler : public TTaskHandler
{
virtual int Customize(char *pBuf);
AnsiString m_asServ;
int m_nRegType;
int m_nSendLimit;
public:
TSMSUser *pSMUserInfo;
TSMSHead *pSMHeadInfo;
_di_ISMSSVC SOAPService;
fastcall TCustomizeHandler();
virtual fastcall ~TCustomizeHandler();
virtual int fastcall GetUserHead(const char *pBuf,int nCmd);
virtual int fastcall Run(char *pBuf);
};class TRegisteHandler : public TTaskHandler
{
virtual int Registe(char *pBuf){return ;}
public:
//TACTUser *pUserInfo;
//TACTHead *pHeadInfo;
_di_IACTSVC SOAPService;
fastcall TRegisteHandler(){};
virtual fastcall ~TRegisteHandler(){};
};
class TQueryAwardBulletin : TQueryHandler
{
virtual int Query(char *pBuf);
AnsiString m_asPlay;
AnsiString m_asIssue;
int m_nBulletin;
int m_nRespType;
public:
TSMSUser *pSMUserInfo;
TSMSHead *pSMHeadInfo;
_di_ISMSSVC SOAPService;
fastcall TQueryAwardBulletin();
virtual fastcall ~TQueryAwardBulletin();
int fastcall GetUserHead(const char *pBuf,int nCmd);
virtual int fastcall GetErrorCode(AnsiString RetCode, int &nErrCode);
virtual int fastcall Run(char *pBuf);
};
clase TInsertSMS
{
TSMSUser *pSMUserInfo;
TSMSHead *pSMHeadInfo;
_di_ISMSSVC SOAPService;
public:
fastcall TInsertSMS();
virtual fastcall ~TInsertSMS();
int fastcall Run();
*/
#endif
// // TaskHandle.cpp
#pragma hdrstop
#include <list.h>
#include "TaskHandle.h"
#include "DataModule.h"
#include "LogInvoker.h"
#include "IniInvoker.h"
#include "SystemListener.h"
#include "LotteryUtils.h"
int fastcall TTaskHandler :: GetErrorCode(AnsiString RetCode, int &nErrCode)
{
if (RetCode.SubString(,) == "")
{
nErrCode = ;
return ;
}
TOraStoredProc *pStoreProc = new TOraStoredProc(NULL);
int nRes = ;
if (!DataLib->CheckDB())
{
nErrCode = ;
delete pStoreProc;
return ;
}
pStoreProc->Active = false;
pStoreProc->Session = DataLib->Oracle;
pStoreProc->StoredProcName = "Pr_Query_RetCode";
pStoreProc->Params->Clear();
pStoreProc->Params->Add();
pStoreProc->Params->Items[]->Name = "iTelNum";
pStoreProc->Params->Items[]->DataType = ftString;
pStoreProc->Params->Items[]->ParamType = ptInput;
pStoreProc->Params->Items[]->AsString = pUserInfo->Phone;
pStoreProc->Params->Add();
pStoreProc->Params->Items[]->Name = "iErrCode";
pStoreProc->Params->Items[]->DataType = ftString;
pStoreProc->Params->Items[]->ParamType = ptInput;
pStoreProc->Params->Items[]->AsString = RetCode;
pStoreProc->Params->Add();
pStoreProc->Params->Items[]->Name = "iCmd";
pStoreProc->Params->Items[]->DataType = ftInteger;
pStoreProc->Params->Items[]->ParamType = ptInput;
pStoreProc->Params->Items[]->AsInteger = pHeadInfo->Cmd;
pStoreProc->Params->Add();
pStoreProc->Params->Items[]->Name = "iSerial";
pStoreProc->Params->Items[]->DataType = ftString;
pStoreProc->Params->Items[]->ParamType = ptInput;
pStoreProc->Params->Items[]->AsString = pHeadInfo->;
pStoreProc->Params->Add();
pStoreProc->Params->Items[]->Name = "oResult";
pStoreProc->Params->Items[]->DataType = ftString;
pStoreProc->Params->Items[]->ParamType = ptOutput;
pStoreProc->Params->Add();
pStoreProc->Params->Items[]->Name = "oIvrCode";
pStoreProc->Params->Items[]->DataType = ftInteger;
pStoreProc->Params->Items[]->ParamType = ptOutput;
pStoreProc->Params->Add();
pStoreProc->Params->Items[]->Name = "oVoice";
pStoreProc->Params->Items[]->DataType = ftString;
pStoreProc->Params->Items[]->ParamType = ptOutput;
try
{
pStoreProc->ExecProc();
AnsiString asTmp = pStoreProc->Params->Items[]->AsString;
if (asTmp == "")
{
nErrCode = pStoreProc->Params->Items[]->AsInteger;
nRes = ;
}
}
catch(...)
{
nRes = ;
pLog->SysLog(IVRMOD,"TQueryHandler::GetErrorCode", "DataBase",
"Error", "Oracle Exception Occurs When Exec Stored Proc");
} if (pStoreProc != NULL)
delete pStoreProc;
} if (nRes == )
{ nErrCode = ;
} return nRes;
int fastcall TTaskHandler :: GetUserHead(const char *pBuf,int nCmd)
{
char szTel[];
char szArea[];
GetWord(pBuf, m_szIVRSerial, , '|');
GetWord(pBuf, szTel, , '|');
GetWord(pBuf, szArea, , '|');
pHeadInfo->Cmd = nCmd;
pHeadInfo->Source = IVR;
pHeadInfo-> = TSystemState::Instance()->Get();
pUserInfo->Area = szArea;
pHeadInfo->Vender = VENDER;
pUserInfo->Phone = szTel;
return ;
int fastcall TInvestHandler :: Combination(int nUpNum, int nDownNum) //组合
{
int nRes = ;
int j = ;
if (nDownNum < nUpNum)
return ;
for (int i = nDownNum-nUpNum+; i <= nDownNum; i++)
{
nRes = nRes * i / (j++);
}
return nRes;
}
//-
int TInvestHandler :: CheckSingleNum(char *pNum, unsigned int nMin, unsigned int nMax)
{
std::list<int> NumSerial;
list<int>::iterator pos;
NumSerial.clear();
unsigned int i, num, nLen = strlen(pNum);
if ((nLen%) == )
return ;
nLen = nLen / ;
char szDigits[];
memset(szDigits, '\', sizeof(szDigits));
if (nLen != nMin)
return ;
for (i=; i<nLen; i++)
{
memcpy(szDigits, pNum+(i*), );
num = atoi(szDigits);
if (num <= )
return ;
if (num <= nMax)
NumSerial.push_back(num);
else
return ;
}
NumSerial.sort();
NumSerial.unique();
if (NumSerial.size() != nLen)
return ;
i = ;
for (pos=NumSerial.begin(); pos != NumSerial.end(); pos++)
{
sprintf(pNum+(i++)*, "%d", *pos);
}
sprintf(pNum+nLen*,"^");
return ;
}
int TInvestHandler :: CheckSingleDNum(char *pNum, unsigned int nDime) //CheckSingleDNum(pNum, )
{
std::list<int> NumSerial;
list<int>::iterator pos;
NumSerial.clear();
unsigned int i, num, nLen = strlen(pNum);
if (nLen != nDime)
return ;
for (i=; i<nLen; i++)
{
num = pNum[i] - '';
// if (num <= )
if (num < )
return ;
if (num <= )
NumSerial.push_back(num);
else
return ;
}
NumSerial.sort();
//NumSerial.unique();
if (NumSerial.size() != nLen)
return ;
i = ;
for (pos=NumSerial.begin(); pos != NumSerial.end(); pos++)
{
sprintf(pNum + i, "%d*", *pos);
i = strlen( pNum );
}
nLen = i - ;
sprintf(pNum+nLen,"^");
return ;
}
//
int TInvestHandler :: CheckMultiNum(char *pNum, unsigned int nMin,
unsigned int nMax, unsigned int nHigh, int &nCount)
{
std::list<int> NumSerial;
list<int>::iterator pos;
NumSerial.clear();
unsigned int i, num, nLen = strlen(pNum);
if ((nLen%) == )
return ;
nLen = nLen / ;
char szDigits[];
memset(szDigits, '\', sizeof(szDigits));
if ((nLen <= nMin ) || (nLen > nHigh))
return ;
for (i=; i<nLen; i++)
{
memcpy(szDigits, pNum+(i*), );
num = atoi(szDigits);
if (num <= )
return ;
if (num <= nMax)
{
NumSerial.push_back(num);
}
else
#ifdef _TRCLOG
pTrcLogger->WriteLog("TBaseOperation::CheckDBSms","before send sms",aACTHead->,
"","","","","",aACTHead->Cmd,"CheckDBSms");
#endif
lp_HTTPRIO = new THTTPRIO(NULL);
if(aACTCfg.SMSUseURL)
{
lp_HTTPRIO->URL = aACTCfg.SMSURL;
}
else
{
lp_HTTPRIO->WSDLLocation = aACTCfg.SMSWsdlLocation;
lp_HTTPRIO->Service = aACTCfg.SMSService;
lp_HTTPRIO->Port = aACTCfg.SMSPort;
} _di_ISMSSVC iSMSSvc;
OleCheck(lp_HTTPRIO->QueryInterface(iSMSSvc));
pSMSHead = new TSMSHead;
pSMSUser = new TSMSUser;
pSMSHead-> = aACTHead->;
pSMSHead->Vender = aACTHead->Vender;
pSMSHead->Cmd = SMSSUBMITCMD;
pSMSHead->Source = aACTCfg.Module;
pSMSHead->SubSys = aACTCfg.SMSSubSys;
pQuery = new TOraQuery(NULL);
pQuery->Session = DataLib->ACTDB;
char strSQL[];
ZeroMemory(strSQL,);
sprintf(strSQL,"select * from tb_sms_info where = : and send_flag = ");
pQuery->SQL->Add(strSQL);
pQuery->ParamByName("")->AsString = aACTHead->;
pQuery->Open();
pQuery->First();
pUpdater= new TOraQuery(NULL);
pUpdater->Session = DataLib->ACTDB;
AnsiString aErrorCode = "",aServiceType = "";
int aFeeType = , aFeeValue = ,aReportFlag = ;
while(!pQuery->Eof)
{
pSMSUser->Phone = pQuery->FieldByName("Phone")->AsString;
pSMSUser->Area = pQuery->FieldByName("Area_")->AsString;
iSMSSvc->SmsSubmit(pSMSHead, pSMSUser, aACTCfg.SMSAccessNo,
aACTCfg.SMSInvestServ,,
aFeeType, aFeeValue, aReportFlag, pQuery->FieldByName("SMS")->AsString, aErrorCode);
#ifdef _TRCLOG
pTrcLogger->WriteLog("TBaseOperation::CheckDBSms","send sms result",aACTHead->,
"","","","","",aACTHead->Cmd,aErrorCode);
#endif
sprintf(strSQL,"update tb_sms_info set SEND_FLAG = where =: and send_order = :Send_order");
pUpdater->SQL->Clear();
pUpdater->SQL->Add(strSQL);
pUpdater->ParamByName("")->AsString = aACTHead->;
pUpdater->ParamByName("Send_order")->AsInteger = pQuery->FieldByName("Send_order")->AsInteger;
pUpdater->ExecSQL();
pQuery->Next();
}
#ifdef _TRCLOG
pTrcLogger->WriteLog("TBaseOperation::CheckDBSms","after send sms",aACTHead->,
"","","","","",aACTHead->Cmd,aErrorCode);
#endif
}
catch(Exception &e)
{
pErrLogger->WriteLog("TBaseOperation","CheckDBSms",aACTHead->,
"","","","","",SMSSUBMITCMD,e.Message);
} if(lp_HTTPRIO != NULL)
{ lp_HTTPRIO = NULL;
} if(pSMSHead != NULL)
{
delete pSMSHead;
pSMSHead = NULL;
}
if(pSMSUser != NULL)
{ delete pSMSUser;
pSMSUser = NULL;
}
if(pQuery != NULL)
{
delete pQuery;
pQuery = NULL;
}
if(pUpdater != NULL)
{
delete pUpdater;
展开阅读全文