多数据源中间件标准版1.0

SItemAgenStateTimeDetail.cpp 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #include "StdAfx.h"
  2. #include "SItemAgenStateTimeDetail.h"
  3. #include <atltime.h>
  4. CSItemAgenStateTimeDetail::CSItemAgenStateTimeDetail(UINT AgentId):m_AgentID(AgentId),m_CurrState(AGENT_STATE_UNKNOWN)
  5. {
  6. }
  7. CSItemAgenStateTimeDetail::~CSItemAgenStateTimeDetail(void)
  8. {
  9. }
  10. void CSItemAgenStateTimeDetail::onSEvent(REP_EVENT EvtType, PARAM Param)
  11. {
  12. switch(EvtType)
  13. {
  14. case REP_EVENT_LOGIN:
  15. break;
  16. case REP_EVENT_LOGOUT:
  17. __OnAgentLogout();
  18. break;
  19. case REP_EVENT_STATE:
  20. __OnAgentState(Param);
  21. break;
  22. }
  23. }
  24. void CSItemAgenStateTimeDetail::__OnAgentLogin()
  25. {
  26. }
  27. void CSItemAgenStateTimeDetail::__OnAgentLogout()
  28. {
  29. __ProcStateEnd(m_CurrState);
  30. }
  31. void CSItemAgenStateTimeDetail::__OnAgentState( PARAM Param)
  32. {
  33. T_EvtStatus* pStatus = (T_EvtStatus*)Param;
  34. ASSERT(pStatus != NULL);
  35. if(pStatus == NULL)
  36. return;
  37. if(!pStatus->StartFlag) return;
  38. __ProcStateEnd(m_CurrState);
  39. switch(pStatus->State)
  40. {
  41. case AGENT_STATE_FREE:
  42. {
  43. __ProcStateStart(AGENT_STATE_FREE);
  44. }
  45. break;
  46. case AGENT_STATE_BUSY:
  47. {
  48. __ProcStateStart(AGENT_STATE_BUSY);
  49. }
  50. break;
  51. case AGENT_STATE_POST_PROCESSING:
  52. {
  53. __ProcStateStart(AGENT_STATE_POST_PROCESSING);
  54. }
  55. break;
  56. case AGENT_STATE_REPOSE:
  57. {
  58. __ProcStateStart(AGENT_STATE_REPOSE);
  59. }
  60. break;
  61. default:
  62. break;
  63. }
  64. m_CurrState = pStatus->State;
  65. }
  66. void CSItemAgenStateTimeDetail::__ProcStateStart(AGENT_STATE state)
  67. {
  68. CTime m_time;
  69. m_time=CTime::GetCurrentTime(); //获取当前时间日期
  70. m_StartTime=m_time.Format(_T("%Y-%m-%d %H:%M:%S"));
  71. CString strDate;
  72. strDate = m_time.Format("%Y%m%d");
  73. m_LoginDate = atoi(strDate);
  74. // 编写SQL语句
  75. m_Sql.Format(_T("INSERT INTO rep_agentState_Detail (AgentId,LoginDate,Type,TimeStart)VALUES\
  76. (%d, %d, %d, '%s')"),
  77. m_AgentID,
  78. m_LoginDate,
  79. state,
  80. m_StartTime
  81. );
  82. __execSQL();
  83. }
  84. void CSItemAgenStateTimeDetail::__ProcStateEnd(AGENT_STATE state)
  85. {
  86. CTime m_time;
  87. m_time=CTime::GetCurrentTime(); //获取当前时间日期
  88. m_EndTime=m_time.Format(_T("%Y-%m-%d %H:%M:%S"));
  89. // 编写SQL语句
  90. m_Sql.Format(_T("UPDATE rep_agentState_Detail SET TimeEnd = '%s' WHERE AgentId = %d AND LoginDate = %d AND TimeStart='%s'"),
  91. m_EndTime,
  92. m_AgentID,
  93. m_LoginDate,
  94. m_StartTime
  95. );
  96. __execSQL();
  97. }