中间件标准版5.1git,去除基础模块

proc_DataAnalysis_MySQL.txt 4.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. CREATE DEFINER=`root`@`%` PROCEDURE `proc_DataAnalysis`(nAgentID int,nLogInID int,BeginTime datetime,EndTime datetime)
  2. BEGIN
  3. DECLARE answer_ext int;
  4. DECLARE answer_trunk int;
  5. DECLARE call_in_ext int;
  6. DECLARE call_in_trunk int;
  7. DECLARE call_in_totalTime_ext int;
  8. DECLARE call_in_totalTime_trunk int;
  9. DECLARE call_out_ext int;
  10. DECLARE call_out_trunk int;
  11. DECLARE call_out_totalTime_ext int;
  12. DECLARE call_out_totalTime_trunk int;
  13. DECLARE call_out_success_ext int;
  14. DECLARE call_out_success_trunk int;
  15. DECLARE over_work_totalTime int;
  16. DECLARE alerting_totalTime int;
  17. DECLARE transfer_count int;
  18. DECLARE be_transfer_count int;
  19. DECLARE conference_count int;
  20. DECLARE be_conference_count int;
  21. DECLARE over_alerting_count int;
  22. DECLARE TalkTimesCount int;
  23. SELECT COUNT(1),IFNULL(SUM(periodtalking),0) into answer_ext,call_in_totalTime_ext FROM rep_ext_call_in WHERE calltype <> 1 AND isanswer = 1 AND CalleeAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  24. SELECT COUNT(1),IFNULL(SUM(periodtalking),0) into answer_trunk,call_in_totalTime_trunk FROM rep_ext_call_in WHERE calltype = 1 AND isanswer = 1 AND CalleeAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  25. SELECT COUNT(1) into call_in_ext FROM rep_ext_call_in WHERE calltype <> 1 AND CalleeAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  26. SELECT COUNT(1) into call_in_trunk FROM rep_ext_call_in WHERE calltype = 1 AND CalleeAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  27. SELECT COUNT(1) into call_out_ext FROM rep_ext_call_out WHERE peerlinetype = 0 AND CallerAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  28. SELECT COUNT(1) into call_out_trunk FROM rep_ext_call_out WHERE peerlinetype = 1 AND CallerAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  29. SELECT IFNULL(SUM(periodtalking),0) into call_out_totalTime_ext FROM rep_ext_call_out WHERE peerlinetype = 0 AND CallerAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  30. SELECT IFNULL(SUM(periodtalking),0) into call_out_totalTime_trunk FROM rep_ext_call_out WHERE peerlinetype = 1 AND CallerAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  31. SELECT COUNT(1) into call_out_success_ext FROM rep_ext_call_out WHERE peerlinetype = 0 AND iscalloutsucceed = 1 AND CallerAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  32. SELECT COUNT(1) into call_out_success_trunk FROM rep_ext_call_out WHERE peerlinetype = 1 AND iscalloutsucceed = 1 AND CallerAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  33. SELECT IFNULL(SUM(Duration),0) into over_work_totalTime FROM rep_agent_state WHERE State = 4 AND AgentId = nAgentID AND LoginId = nLogInID;
  34. SELECT IFNULL(SUM(PeriodAlerting),0) into alerting_totalTime FROM rep_ext_call_in WHERE CalleeAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  35. SELECT Count(1) into transfer_count FROM rep_transfer WHERE CallerAgentID = nAgentID AND TimeBeginTransfer BETWEEN BeginTime AND EndTime;
  36. SELECT Count(1) into be_transfer_count FROM rep_transfer WHERE CalleeAgentID = nAgentID AND TimeBeginTransfer BETWEEN BeginTime AND EndTime;
  37. SELECT Count(1) into conference_count FROM rep_conference WHERE CallerAgentID = nAgentID AND TimeConference BETWEEN BeginTime AND EndTime;
  38. SELECT Count(1) into be_conference_count FROM rep_conference WHERE CalleeAgentID = nAgentID AND TimeConference BETWEEN BeginTime AND EndTime;
  39. SELECT Count(1) into over_alerting_count FROM rep_ext_call_in WHERE PeriodAlerting > 10 AND CalleeAgentID = nAgentID AND TimeHangUp BETWEEN BeginTime AND EndTime;
  40. SET TalkTimesCount = call_in_totalTime_ext + call_in_totalTime_trunk + call_out_totalTime_ext + call_out_totalTime_trunk;
  41. UPDATE rep_agent_detail
  42. SET FreeTimes = LoginTimes - TalkTimesCount - ReposeTimes - over_work_totalTime,
  43. TalkTimes = TalkTimesCount,
  44. AnswerNumExt = answer_ext,
  45. AnswerNumTrunk = answer_trunk,
  46. CallInNumExt = call_in_ext,
  47. CallInNumTrunk = call_in_trunk,
  48. CallInTimesTotalExt = call_in_totalTime_ext,
  49. CallInTimesTotalTrunk = call_in_totalTime_trunk,
  50. CallOutNumExt = call_out_ext,
  51. CallOutNumTrunk = call_out_trunk,
  52. CallOutTimesTotalExt = call_out_totalTime_ext,
  53. CallOutTimesTotalTrunk = call_out_totalTime_trunk,
  54. CallOutOkNumExt = call_out_success_ext,
  55. CallOutOkNumTrunk = call_out_success_trunk,
  56. OverWorkTimesTotal = over_work_totalTime,
  57. TimeAlertingTotal = alerting_totalTime,
  58. TransferNum = transfer_count,
  59. BeTransferNum = be_transfer_count,
  60. ConferenceNum = conference_count,
  61. BeConferenceNum = be_conference_count,
  62. OverAlertingNum = over_alerting_count
  63. WHERE AgentId = nAgentID AND LoginId = nLogInID;
  64. UPDATE rep_agent_detail
  65. SET FreeTimes = 0
  66. WHERE AgentId = nAgentID AND LoginId = nLogInID AND FreeTimes<0;
  67. END