#include "StdAfx.h" #include "SItemAgenStateTimeDetail.h" #include CSItemAgenStateTimeDetail::CSItemAgenStateTimeDetail(UINT AgentId) :m_AgentID(AgentId), m_CurrState(AGENT_STATE_UNKNOWN) { } CSItemAgenStateTimeDetail::~CSItemAgenStateTimeDetail(void) { } void CSItemAgenStateTimeDetail::onSEvent(REP_EVENT EvtType, PARAM Param) { switch (EvtType) { case REP_EVENT_LOGIN: break; case REP_EVENT_LOGOUT: __OnAgentLogout(); break; case REP_EVENT_STATE: __OnAgentState(Param); break; } } void CSItemAgenStateTimeDetail::__OnAgentLogin() { } void CSItemAgenStateTimeDetail::__OnAgentLogout() { __ProcStateEnd(m_CurrState); } void CSItemAgenStateTimeDetail::__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); } break; default: break; } m_CurrState = pStatus->State; } void CSItemAgenStateTimeDetail::__ProcStateStart(AGENT_STATE state) { CTime m_time; m_time = CTime::GetCurrentTime(); //获取当前时间日期 m_StartTime = m_time.Format(_T("%Y-%m-%d %H:%M:%S")); CString strDate; strDate = m_time.Format("%Y%m%d"); m_LoginDate = atoi(strDate); // 编写SQL语句 m_Sql.Format(_T("INSERT INTO rep_agentState_Detail (AgentId,LoginDate,Type,TimeStart)VALUES\ (%d, %d, %d, '%s')"), m_AgentID, m_LoginDate, state, m_StartTime ); __execSQL(); } void CSItemAgenStateTimeDetail::__ProcStateEnd(AGENT_STATE state) { CTime m_time; m_time = CTime::GetCurrentTime(); //获取当前时间日期 m_EndTime = m_time.Format(_T("%Y-%m-%d %H:%M:%S")); // 编写SQL语句 m_Sql.Format(_T("UPDATE rep_agentState_Detail SET TimeEnd = '%s' WHERE AgentId = %d AND LoginDate = %d AND TimeStart='%s'"), m_EndTime, m_AgentID, m_LoginDate, m_StartTime ); if (m_LoginDate != 0) // 2023-05-06 为0时,没有插入,无需执行更新 __execSQL(); }