| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- #include "StdAfx.h"
- #include "SItemAgenStateDuration.h"
- #include <atltime.h>
- CSItemAgenState::CSItemAgenState(UINT AgentId,UINT Exten, ULONG LoginId) :m_AgentID(AgentId),m_Exten(Exten),m_LoginID(LoginId),m_CurrState(AGENT_STATE_UNKNOWN)
- {
-
- }
- CSItemAgenState::~CSItemAgenState(void)
- {
- }
- void CSItemAgenState::onSEvent(REP_EVENT EvtType, PARAM Param)
- {
- switch(EvtType)
- {
- case REP_EVENT_LOGIN:
- __OnAgentLogin();
- break;
- case REP_EVENT_LOGOUT:
- __OnAgentLogout();
- break;
- case REP_EVENT_STATE:
- __OnAgentState(Param);
- break;
- }
- }
- void CSItemAgenState::__OnAgentLogin()
- {
- m_CurrState = AGENT_STATE_FREE;
- CString m_strLoginDate;
- CTime m_time;
- m_time=CTime::GetCurrentTime(); //获取当前时间日期
- m_strLoginDate=m_time.Format(_T("%Y-%m-%d %H:%M:%S"));
- // 编写SQL语句
- m_Sql.Format(_T("INSERT INTO rep_agentState_Duration (AgentId, Exten,LoginId, LoginTime,LogoutTime)VALUES\
- (%d,%d, %d, '%s',NULL)"),
- m_AgentID,
- m_Exten,
- m_LoginID,
- m_strLoginDate
- );
- __execSQL();
- }
- void CSItemAgenState::__OnAgentLogout()
- {
- __ProcStateEnd(m_CurrState);
- CString m_strLogoutDate;
- CTime m_time;
- m_time=CTime::GetCurrentTime(); //获取当前时间日期
- m_strLogoutDate=m_time.Format(_T("%Y-%m-%d %H:%M:%S"));
- m_Sql.Format(_T("UPDATE rep_agentState_Duration SET LogoutTime = '%s' WHERE AgentId = %d AND LoginId = %d"),
- m_strLogoutDate,
- m_AgentID,
- m_LoginID
- );
- __execSQL();
- }
- void CSItemAgenState::__OnAgentState( PARAM Param)
- {
- T_EvtStatus* pStatus = (T_EvtStatus*)Param;
- ASSERT(pStatus != NULL);
- if(pStatus == NULL)
- return;
- if(!pStatus->StartFlag) return;
-
- __ProcStateEnd(m_CurrState);
- switch(pStatus->State)
- {
- case AGENT_STATE_FREE:
- {
- __ProcStateStart(AGENT_STATE_FREE);
- }
- break;
- case AGENT_STATE_BUSY:
- {
- __ProcStateStart(AGENT_STATE_BUSY);
- }
- break;
- case AGENT_STATE_POST_PROCESSING:
- {
- __ProcStateStart(AGENT_STATE_POST_PROCESSING);
- }
- break;
- case AGENT_STATE_REPOSE:
- {
- __ProcStateStart(AGENT_STATE_REPOSE);
- __ProcReposeCount();
- }
- break;
- default:
- break;
- }
- m_CurrState = pStatus->State;
- }
- void CSItemAgenState::__ProcStateStart(AGENT_STATE state)
- {
- m_StartTime=CTime::GetCurrentTime(); //获取当前时间日期
- }
- void CSItemAgenState::__ProcStateEnd(AGENT_STATE state)
- {
- if(m_StartTime==0) return;
- m_EndTime=CTime::GetCurrentTime(); //获取当前时间日期
- CTimeSpan m_DuringTime = m_EndTime - m_StartTime;
- LONGLONG durtime= m_DuringTime.GetTotalSeconds();
- __WriteToSQL(durtime,state);
- }
- void CSItemAgenState::__WriteToSQL(int second,AGENT_STATE state)
- {
- switch(state)
- {
- case AGENT_STATE_FREE:
- {
- m_Sql.Format(_T("UPDATE rep_agentState_Duration SET Free = Free+%d WHERE AgentId = %d AND LoginId = %d"),
- second,
- m_AgentID,
- m_LoginID
- );
- }
- break;
- case AGENT_STATE_BUSY:
- {
- m_Sql.Format(_T("UPDATE rep_agentState_Duration SET Talking = Talking+%d WHERE AgentId = %d AND LoginId = %d"),
- second,
- m_AgentID,
- m_LoginID
- );
- }
- break;
- case AGENT_STATE_POST_PROCESSING:
- {
- m_Sql.Format(_T("UPDATE rep_agentState_Duration SET PostProcess = PostProcess+%d WHERE AgentId = %d AND LoginId = %d"),
- second,
- m_AgentID,
- m_LoginID
- );
-
- }
- break;
- case AGENT_STATE_REPOSE:
- {
- m_Sql.Format(_T("UPDATE rep_agentState_Duration SET Repose =Repose+%d WHERE AgentId = %d AND LoginId = %d"),
- second,
- m_AgentID,
- m_LoginID
- );
-
- }
- break;
- default:
- break;
- }
- __execSQL();
- }
- void CSItemAgenState::__ProcReposeCount()
- {
- m_Sql.Format(_T("UPDATE rep_agentState_Duration SET ReposeConut =ReposeConut+%d WHERE AgentId = %d AND LoginId = %d"),
- 1,
- m_AgentID,
- m_LoginID
- );
- __execSQL();
- }
|