升龙物业 老版本 ocx IPO, 加密狗 转值班电话

AgentList.cpp 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. // ChannelList.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "AgentList.h"
  5. #include "../AcdCore.h"
  6. #include "../Agent.h"
  7. #include "../AgentOffice.h"
  8. // CChannelList
  9. IMPLEMENT_DYNAMIC(CAgentlList, CListCtrl)
  10. CAgentlList::CAgentlList()
  11. {
  12. }
  13. CAgentlList::~CAgentlList()
  14. {
  15. }
  16. BEGIN_MESSAGE_MAP(CAgentlList, CListCtrl)
  17. END_MESSAGE_MAP()
  18. /*****************************************************************
  19. **【函数名称】 __indexItem
  20. **【函数功能】 索引通道
  21. **【参数】
  22. **【返回值】
  23. *****************************************************************/
  24. int CAgentlList::__indexItem( UINT _itemNum )
  25. {
  26. for (int i=0; i < GetItemCount(); i++)
  27. {
  28. if (GetItemData(i) == _itemNum)
  29. return i;
  30. }
  31. return -1;
  32. }
  33. /*****************************************************************
  34. **【函数名称】 __transStateAgentState
  35. **【函数功能】 翻译状态
  36. **【参数】
  37. **【返回值】
  38. *****************************************************************/
  39. void CAgentlList::__transStateAgentState(AGENT_STATE _state, CString& Data)
  40. {
  41. switch(_state)
  42. {
  43. case AGENT_STATE_LOGING:
  44. Data = _T("登录中");
  45. break;
  46. case AGENT_STATE_FREE:
  47. Data = _T("空闲");
  48. break;
  49. case AGENT_STATE_BUSY:
  50. Data = _T("通话中");
  51. break;
  52. case AGENT_STATE_POST_PROCESSING:
  53. Data = _T("话后处理");
  54. break;
  55. case AGENT_STATE_REPOSE:
  56. Data = _T("小休");
  57. break;
  58. case AGENT_STATE_REQUESTED:
  59. Data = _T("被请求");
  60. break;
  61. case AGENT_STATE_LOGOUT:
  62. Data = _T("被请求");
  63. break;
  64. case AGENT_STATE_UNKNOWN:
  65. default:
  66. Data = _T("未知");
  67. break;
  68. }
  69. }
  70. /*****************************************************************
  71. **【函数名称】 __transStateAgentType
  72. **【函数功能】 翻译座席类型
  73. **【参数】
  74. **【返回值】
  75. *****************************************************************/
  76. void CAgentlList::__transStateAgentType(AGENT_TYPE _type, CString& Data)
  77. {
  78. switch(_type)
  79. {
  80. case AGENT_TYPE_NORMAL:
  81. Data = _T("普通");
  82. break;
  83. case AGENT_TYPE_MONITOR:
  84. Data = _T("普通班长");
  85. break;
  86. case AGENT_TYPE_NOQUEUE:
  87. Data = _T("非排队");
  88. break;
  89. case AGENT_TYPE_NORMAL_TEL:
  90. Data = _T("纯电话");
  91. break;
  92. case AGENT_TYPE_MONITOR_TEL:
  93. Data = _T("纯电话班长");
  94. break;
  95. default:
  96. ASSERT(FALSE);
  97. Data = _T("普通");
  98. break;
  99. }
  100. }
  101. /*****************************************************************
  102. **【函数名称】 __showTask
  103. **【函数功能】 显示任务
  104. **【参数】
  105. **【返回值】
  106. *****************************************************************/
  107. void CAgentlList::__showAgent(Agent2Show& Info)
  108. {
  109. CString Data;
  110. Data.Format(_T("%d"), Info.AgentId);
  111. InsertItem(0, Data);
  112. Data.Format(_T("%d"), Info.ExtId);
  113. SetItemText(0, 1, Data);
  114. SetItemText(0, 2, Info.GroupNo);
  115. Data = _T("");
  116. __transStateAgentType((AGENT_TYPE)Info.AgentType, Data);
  117. SetItemText(0, 3, Data);
  118. Data = _T("");
  119. __transStateAgentState((AGENT_STATE)Info.State, Data);
  120. SetItemText(0, 4, Data);
  121. SetItemData(0, Info.AgentId);
  122. }
  123. /*****************************************************************
  124. **【函数名称】 __updateTaskState
  125. **【函数功能】 更新任务
  126. **【参数】
  127. **【返回值】
  128. *****************************************************************/
  129. void CAgentlList::__updateAgentlState(int Item, Agent2Show& Info)
  130. {
  131. CString Data = _T("");
  132. /*Data.Format(_T("%d"), Info->ExtId);
  133. SetItemText(Item, 1, Data);
  134. Data = _T("");
  135. Data.Format(_T("%d"), Info.GroupNo);
  136. SetItemText(Item, 2, Data);
  137. __transStateAgentType((AGENT_TYPE)Info.AgentType, Data);
  138. SetItemText(Item, 3, Data);*/
  139. __transStateAgentState((AGENT_STATE)Info.State, Data);
  140. SetItemText(Item, 4, Data);
  141. }
  142. /*****************************************************************
  143. **【函数名称】 format
  144. **【函数功能】 格式化控件
  145. **【参数】
  146. **【返回值】
  147. *****************************************************************/
  148. void CAgentlList::format( void )
  149. {
  150. CRect mRect;
  151. GetClientRect(&mRect);
  152. int length = mRect.right - mRect.left;
  153. int perLength = length / 5;
  154. //加载日志列表
  155. SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
  156. InsertColumn(0, (LPCTSTR)_T("座席工号"), LVCFMT_LEFT, perLength, -1);
  157. InsertColumn(1, (LPCTSTR)_T("关联分机号"), LVCFMT_LEFT, perLength, -1);
  158. InsertColumn(2, (LPCTSTR)_T("座席组号"), LVCFMT_LEFT, perLength, -1);
  159. InsertColumn(3, (LPCTSTR)_T("座席类型"), LVCFMT_LEFT, perLength, -1);
  160. InsertColumn(4, (LPCTSTR)_T("座席状态"), LVCFMT_LEFT, perLength, -1);
  161. }
  162. /*****************************************************************
  163. **【函数名称】 onTaskStateUpdated
  164. **【函数功能】 任务状态变化处理函数
  165. **【参数】
  166. **【返回值】
  167. *****************************************************************/
  168. void CAgentlList::onAgentStateUpdated(UINT AgentNo)
  169. {
  170. Agent2Show Info;
  171. Info.AgentId = AgentNo;
  172. int Item = __indexItem(AgentNo);
  173. if(CAcdCore::GetInstance().getAgentOffice().getAgentInfo(Info))
  174. {
  175. if(Item != -1)
  176. __updateAgentlState(Item, Info);
  177. else
  178. __showAgent(Info);
  179. }
  180. else
  181. {
  182. if(Item != -1)
  183. DeleteItem(Item);
  184. }
  185. }
  186. /*****************************************************************
  187. **【函数名称】 onAgentLogout
  188. **【函数功能】 座席签出界面处理
  189. **【参数】
  190. **【返回值】
  191. *****************************************************************/
  192. void CAgentlList::onAgentLogout( UINT AgentNo )
  193. {
  194. int Item = __indexItem(AgentNo);
  195. if(Item != -1)
  196. DeleteItem(Item);
  197. }
  198. // CChannelList 消息处理程序