| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #include "StdAfx.h"
- #include "SItemAgentDetail.h"
- CSItemAgentDetail::CSItemAgentDetail(UINT AgentId, ULONG LoginId)
- {
- m_AgentID = AgentId;
- m_LoginID = LoginId;
- m_ExtID = 0;
- memset(m_AgentIP, 0, PDU_IP_LEN);
- m_GroupID = _T("");
- m_AgentType = 0;
- m_TimeLogin = 0;
- m_TimeLogout = 0;
- m_LogoutHost = 0;
- m_LoginTimes = 0;
- m_FreeTimes = 0;
- m_ReposeTimes = 0;
- m_TalkTimes = 0;
- m_ReposeNum = 0;
- m_AnswerNum = 0;
- }
- CSItemAgentDetail::~CSItemAgentDetail(void)
- {
- }
- /*****************************************************************
- **【函数名称】 __onEvtLogin
- **【函数功能】 坐席签入事件
- **【参数】 签入信息指针
- **【返回值】
- ****************************************************************/
- void CSItemAgentDetail::__onEvtLogin( PARAM Param )
- {
- // GetEvtInfo
- T_EvtLogIn* repInfo = (T_EvtLogIn*)Param;
- m_ExtID = repInfo->nExtID; // 关联分机
- lstrcpy(m_AgentIP, repInfo->szAgentIP); // 坐席IP
- m_GroupID = repInfo->szGroup; // 组号
- m_AgentType = repInfo->nAgentType; // 坐席类型
- m_TimeLogin = time(NULL); // 签入时间
- // 编写sql语句
- m_Sql.Format(_T("INSERT INTO rep_agent_detail(AgentId, LoginId, ExtId, AgentIP, GroupId, AgentType, TimeLogin)VALUES\
- (%d, %d, %d, '%s', '%s', %d, %s)"),
- m_AgentID,
- m_LoginID,
- m_ExtID,
- m_AgentIP,
- m_GroupID,
- m_AgentType,
- FormatTime(m_TimeLogin));
- __execSQL();
- }
- /*****************************************************************
- **【函数名称】 __onEvtLogout
- **【函数功能】 坐席签出事件
- **【参数】 签入信息指针
- **【返回值】
- ****************************************************************/
- void CSItemAgentDetail::__onEvtLogout( PARAM Param )
- {
- // GetEvtInfo
- T_EvtLogout* repInfo = (T_EvtLogout*)Param;
- m_TimeLogout = time(NULL); // 签出时间
- m_LogoutHost = repInfo->nLogoutHost; // 签出原因
- m_LoginTimes = (UINT)(m_TimeLogout - m_TimeLogin); // 签入时长
- m_FreeTimes = repInfo->nTimeFree; // 空闲时长
- m_ReposeTimes = repInfo->nTimeRepose; // 小休时长
- m_TalkTimes = repInfo->nTimeTalk; // 通话时长
- m_ReposeNum = repInfo->nReposeCount; // 置忙次数
- m_AnswerNum = repInfo->nAnswerCount; // 应答次数
- //根据签出原因,判断签出类型
- if (m_LogoutHost == 0)
- {
- m_LogoutType = 2; //异常签出,连接断开
- }
- else if (m_LogoutHost == m_AgentID)
- {
- m_LogoutType = 0; //正常签出
- }
- else if (m_LogoutHost != m_AgentID)
- {
- m_LogoutType = 1; //强制签出
- }
- // 编写sql语句
- m_Sql.Format(_T("UPDATE rep_agent_detail SET TimeLogout = %s, LogoutHost = %d, LogoutType = %d, LoginTimes = %d,\
- ReposeTimes = %d, TalkTimes = %d, ReposeNum = %d, AnswerNum = %d WHERE AgentId = %d AND LoginId = %d"),
- FormatTime(m_TimeLogout),
- m_LogoutHost,
- m_LogoutType, //签出类型
- m_LoginTimes,
- m_ReposeTimes,
- m_TalkTimes,
- m_ReposeNum,
- m_AnswerNum,
- m_AgentID,
- m_LoginID);
- __execSQL();
- //执行数据统计存储过程
- if (DB_MySQL == IOtlConnection::getInstance()->GetDatabaseType())
- m_Sql.Format(_T("CALL proc_DataAnalysis(%d,%d,%s,%s)"), m_AgentID, m_LoginID, FormatTime(m_TimeLogin), FormatTime(m_TimeLogout));
- else
- m_Sql.Format(_T("exec proc_DataAnalysis %d,%d,%s,%s"), m_AgentID, m_LoginID, FormatTime(m_TimeLogin), FormatTime(m_TimeLogout));
- __execSQL();
- }
- /*****************************************************************
- **【函数名称】 onSEvent
- **【函数功能】 统计事件变化通知
- **【参数】
- **【返回值】
- ****************************************************************/
- void CSItemAgentDetail::onSEvent( REP_EVENT EvtType, PARAM Param )
- {
- if(Param == NULL) return;
- switch(EvtType)
- {
- case REP_EVENT_LOGIN: // 座席签入统计
- __onEvtLogin(Param);
- break;
- case REP_EVENT_LOGOUT: // 座席签出统计
- __onEvtLogout(Param);
- break;
- default:
- return;
- }
- }
|