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

CallList.cpp 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. // TaskList.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "CallList.h"
  5. #include "../AcdCore.h"
  6. #include "../IncomingCall.h"
  7. // CTaskList
  8. IMPLEMENT_DYNAMIC(CCallList, CListCtrl)
  9. CCallList::CCallList()
  10. {
  11. }
  12. CCallList::~CCallList()
  13. {
  14. }
  15. BEGIN_MESSAGE_MAP(CCallList, CListCtrl)
  16. END_MESSAGE_MAP()
  17. /*****************************************************************
  18. **【函数名称】 __indexItem
  19. **【函数功能】 索引任务
  20. **【参数】
  21. **【返回值】
  22. *****************************************************************/
  23. int CCallList::__indexItem( int _index )
  24. {
  25. for (int i=0; i < GetItemCount(); i++)
  26. {
  27. if (GetItemData(i) == _index)
  28. return i;
  29. }
  30. return -1;
  31. }
  32. /*****************************************************************
  33. **【函数名称】 __transStrategy
  34. **【函数功能】 翻译座席分配策略
  35. **【参数】
  36. **【返回值】
  37. *****************************************************************/
  38. void CCallList::__transStrategy( AGENT_STRATEGY Strategy, CString& Data )
  39. {
  40. switch(Strategy)
  41. {
  42. case AGENT_STRATEGY_LOOP:
  43. Data = _T("循环接听");
  44. break;
  45. case AGENT_STRATEGY_MAX_CUR_FREE_TIME:
  46. Data = _T("目前空闲最长");
  47. break;
  48. case AGENT_STRATEGY_SUMMAX_FREE_TIME:
  49. Data = _T("总空闲最长");
  50. break;
  51. case AGENT_STRATEGY_MINI_CALLS:
  52. Data = _T("接听最少");
  53. break;
  54. case AGENT_STRATEGY_MAX_SKILL:
  55. Data = _T("最高技能");
  56. break;
  57. case AGENT_STRATEGY_MIN_SKILL:
  58. Data = _T("最低技能");
  59. break;
  60. case AGENT_STRATEGY_KNOWN:
  61. Data = _T("之前服务过");
  62. break;
  63. case AGENT_STRATEGY_MAXAVGFREE_TIME:
  64. Data = _T("平均最大空闲");
  65. break;
  66. case AGENT_STRATEGY_MINAVG_CALLS:
  67. Data = _T("平均接听最少");
  68. break;
  69. case AGENT_STRATEGY_LESS_SKILL:
  70. Data = _T("最少技能种类");
  71. break;
  72. case AGENT_STRATEGY_UNKNOWN:
  73. default:
  74. ASSERT(FALSE);
  75. Data = _T("未知策略");
  76. break;
  77. }
  78. }
  79. /*****************************************************************
  80. **【函数名称】 __transState
  81. **【函数功能】 翻译来电状态
  82. **【参数】
  83. **【返回值】
  84. *****************************************************************/
  85. void CCallList::__transState( OUTER_CALL_STATE State, CString& Data )
  86. {
  87. if(State == OUTER_CALL_WAITING)
  88. Data = _T("等待排队");
  89. else if(State = OUTER_CALL_PAUSE)
  90. Data = _T("暂停排队");
  91. else if(State == OUTER_CALL_QUEUE)
  92. Data = _T("排队中");
  93. }
  94. /*****************************************************************
  95. **【函数名称】 __showTask
  96. **【函数功能】 显示任务
  97. **【参数】
  98. **【返回值】
  99. *****************************************************************/
  100. void CCallList::__showTask( Call2Show& Info )
  101. {
  102. CString Data;
  103. Data.Format(_T("%d"), Info.Index);
  104. InsertItem(0, Data);
  105. Data = _T("");
  106. Data.Format(_T("%d"), Info.CallId);
  107. SetItemText(0, 1, Data);
  108. Data = _T("");
  109. __transState(Info.State, Data);
  110. SetItemText(0, 2, Data);
  111. Data = _T("");
  112. Data.Format(_T("%d"), Info.VipLevel);
  113. SetItemText(0, 3, Data);
  114. Data.Format(_T("%u"), Info.Group);
  115. SetItemText(0, 4, Data);
  116. SetItemText(0, 5, Info.Caller);
  117. Data = _T("");
  118. __transStrategy(Info.Strategy, Data);
  119. SetItemText(0, 6, Data);
  120. SetItemData(0, Info.Index);
  121. }
  122. /*****************************************************************
  123. **【函数名称】 __updateTaskState
  124. **【函数功能】 更新任务
  125. **【参数】
  126. **【返回值】
  127. *****************************************************************/
  128. void CCallList::__updateCallState(int Item, Call2Show& Info)
  129. {
  130. CString Data = _T("");
  131. /*Data.Format(_T("%d"), Info.callId);
  132. SetItemText(Item, 1, Data);*/
  133. Data = _T("");
  134. __transState(Info.State, Data);
  135. SetItemText(0, 2, Data);
  136. /*Data = _T("");
  137. Data.Format(_T("%d"), Info.VipLevel);
  138. SetItemText(Item, 3, Data);
  139. Data.Format(_T("%u"), Info.Group);
  140. SetItemText(Item, 4, Data);
  141. SetItemText(Item, 5, Info.Caller);
  142. Data = _T("");
  143. __transStrategy(Info.Strategy, Data);
  144. SetItemText(Item, 6, Data);*/
  145. }
  146. /*****************************************************************
  147. **【函数名称】 format
  148. **【函数功能】 格式化控件
  149. **【参数】
  150. **【返回值】
  151. *****************************************************************/
  152. void CCallList::format( void )
  153. {
  154. CRect mRect;
  155. GetWindowRect(&mRect);
  156. int length = mRect.right - mRect.left;
  157. int perLength = length / 6;
  158. //加载日志列表
  159. SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
  160. InsertColumn(0, (LPCTSTR)_T("流程ID"), LVCFMT_LEFT, perLength - 5);
  161. InsertColumn(1, (LPCTSTR)_T("呼叫ID"), LVCFMT_LEFT, perLength);
  162. InsertColumn(2, (LPCTSTR)_T("状态"), LVCFMT_LEFT, perLength);
  163. InsertColumn(3, (LPCTSTR)_T("VIP级别"), LVCFMT_LEFT,perLength);
  164. InsertColumn(4, (LPCTSTR)_T("座席组"), LVCFMT_LEFT, perLength);
  165. InsertColumn(5, (LPCTSTR)_T("主叫号码"), LVCFMT_LEFT, perLength);
  166. InsertColumn(6, (LPCTSTR)_T("座席策略"), LVCFMT_LEFT, perLength);
  167. }
  168. /*****************************************************************
  169. **【函数名称】 onTaskStateUpdated
  170. **【函数功能】 任务状态变化处理函数
  171. **【参数】
  172. **【返回值】
  173. *****************************************************************/
  174. void CCallList::onCallStateUpdated( int _index )
  175. {
  176. Call2Show Info;
  177. Info.Index = _index;
  178. int Item = __indexItem(_index);
  179. if(CAcdCore::GetInstance().getQueueMgr().getCallInfo(Info))
  180. {
  181. if(Item != -1)
  182. __updateCallState(Item, Info);
  183. else
  184. __showTask(Info);
  185. }
  186. else
  187. {
  188. if (Item != -1)
  189. DeleteItem(Item);
  190. }
  191. }
  192. /*****************************************************************
  193. **【函数名称】 onCallFinish
  194. **【函数功能】 来电结束处理函数
  195. **【参数】
  196. **【返回值】
  197. *****************************************************************/
  198. void CCallList::onCallFinish( int _index )
  199. {
  200. int Item = __indexItem(_index);
  201. if (Item != -1)
  202. DeleteItem(Item);
  203. }