|
|
@@ -18,19 +18,19 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
18
|
18
|
{
|
|
19
|
19
|
ActionResult res = NoToken("未知错误,请重新登录");
|
|
20
|
20
|
|
|
21
|
|
- String[] str = { "部门", "坐席", "坐席工号","角色" ,"呼入电话数", "坐席接通量", "呼损量"
|
|
22
|
|
- ,"接通率","呼损率","平均排队时间","接听通话次数","通话分钟数","通话秒数"
|
|
23
|
|
- ,"平均接听通话秒数","平均振铃秒数","呼入占有率","用户评价","坐席登录次数"
|
|
24
|
|
- ,"登录时长分钟数","工作时长分钟数","平均每天工作时长(小时)","平均操作分钟数"
|
|
25
|
|
- ,"置忙次数","休息时长分钟数","平均每天休息时长(小时)"
|
|
26
|
|
- ,"置忙平均休息分钟数","质检平均成绩"
|
|
27
|
|
- };
|
|
28
|
|
-
|
|
29
|
|
- //string[] str = { "部门", "坐席姓名", "角色", "固话号码",
|
|
30
|
|
- // "呼入电话数", "坐席接通量", "接通率", "通话分钟数",
|
|
31
|
|
- // "呼出电话数", "坐席呼通量", "接通率", "通话分钟数",
|
|
32
|
|
- // "坐席登陆次数", "登陆时长分钟数", "工作时长分钟数", "平均每天工作时长(小时)", "休息时长分钟数", "质检平均成绩"
|
|
33
|
|
- //};
|
|
|
21
|
+ //String[] str = { "部门", "坐席", "坐席工号","角色" ,"呼入电话数", "坐席接通量", "呼损量"
|
|
|
22
|
+ // ,"接通率","呼损率","平均排队时间","接听通话次数","通话分钟数","通话秒数"
|
|
|
23
|
+ // ,"平均接听通话秒数","平均振铃秒数","呼入占有率","用户评价","坐席登录次数"
|
|
|
24
|
+ // ,"登录时长分钟数","工作时长分钟数","平均每天工作时长(小时)","平均操作分钟数"
|
|
|
25
|
+ // ,"置忙次数","休息时长分钟数","平均每天休息时长(小时)"
|
|
|
26
|
+ // ,"置忙平均休息分钟数","质检平均成绩"
|
|
|
27
|
+ // };
|
|
|
28
|
+
|
|
|
29
|
+ string[] str = { "部门", "坐席姓名", "角色", "固话号码",
|
|
|
30
|
+ "呼入电话数", "接通量", "接通率", "呼入通话分钟数",
|
|
|
31
|
+ "呼出电话数", "呼通量", "呼通率", "呼出通话分钟数",
|
|
|
32
|
+ "坐席登录次数", "登录时长分钟数", "工作时长分钟数", "平均每天工作时长(小时)", "休息时长分钟数", "质检平均成绩"
|
|
|
33
|
+ };
|
|
34
|
34
|
res = Success("获取坐席工作统计表头成功", str);
|
|
35
|
35
|
|
|
36
|
36
|
return res;
|
|
|
@@ -417,95 +417,102 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
417
|
417
|
{
|
|
418
|
418
|
DataTable dtNew = new DataTable();
|
|
419
|
419
|
#region
|
|
420
|
|
- //dtNew.Columns.AddRange(new DataColumn[] {
|
|
421
|
|
- // new DataColumn("部门"),
|
|
422
|
|
- // new DataColumn("坐席姓名"),
|
|
423
|
|
- // new DataColumn("角色"),
|
|
424
|
|
- // new DataColumn("固话号码"),
|
|
425
|
|
- // new DataColumn("呼入电话数"),
|
|
426
|
|
- // new DataColumn("坐席接通量"),
|
|
427
|
|
- // new DataColumn("接通率"),
|
|
428
|
|
- // new DataColumn("通话分钟数"),
|
|
429
|
|
- // new DataColumn("呼出电话数"),
|
|
430
|
|
- // new DataColumn("坐席呼通量"),
|
|
431
|
|
- // new DataColumn("接通率"),
|
|
432
|
|
- // new DataColumn("通话分钟数"),
|
|
433
|
|
- // new DataColumn("坐席登陆次数"),
|
|
434
|
|
- // new DataColumn("登陆时长分钟数"),
|
|
435
|
|
- // new DataColumn("工作时长分钟数"),
|
|
436
|
|
- // new DataColumn("平均每天工作时长(小时)"),
|
|
437
|
|
- // new DataColumn("休息时长分钟数"),
|
|
438
|
|
- // new DataColumn("质检平均成绩")
|
|
439
|
|
- //});
|
|
440
|
|
-
|
|
441
|
|
- DataColumn dc1 = new DataColumn("部门");
|
|
442
|
|
- DataColumn dc2 = new DataColumn("坐席");
|
|
443
|
|
- DataColumn dc3 = new DataColumn("坐席工号");
|
|
444
|
|
- DataColumn dc3_ = new DataColumn("角色");
|
|
445
|
|
- DataColumn dc4 = new DataColumn("呼入电话数");
|
|
446
|
|
- DataColumn dc5 = new DataColumn("坐席接通量");
|
|
447
|
|
- DataColumn dc6 = new DataColumn("呼损量");
|
|
448
|
|
- DataColumn dc7 = new DataColumn("接通率");
|
|
449
|
|
- DataColumn dc8 = new DataColumn("呼损率");
|
|
450
|
|
- DataColumn dc9 = new DataColumn("平均排队时间");
|
|
451
|
|
- DataColumn dc10 = new DataColumn("接听通话次数");
|
|
452
|
|
- DataColumn dc11 = new DataColumn("通话分钟数");
|
|
453
|
|
- DataColumn dc12 = new DataColumn("通话秒数");
|
|
454
|
|
- DataColumn dc13 = new DataColumn("平均接听通话秒数");
|
|
455
|
|
- DataColumn dc14 = new DataColumn("平均振铃秒数");
|
|
456
|
|
- DataColumn dc15 = new DataColumn("呼入占有率");
|
|
457
|
|
- DataColumn dc16 = new DataColumn("用户评价");
|
|
458
|
|
- DataColumn dc17 = new DataColumn("坐席登录次数");
|
|
459
|
|
- DataColumn dc18 = new DataColumn("登录时长分钟数");
|
|
460
|
|
- DataColumn dc19 = new DataColumn("工作时长分钟数");
|
|
461
|
|
- DataColumn dc20 = new DataColumn("平均每天工作时长");
|
|
462
|
|
- DataColumn dc21 = new DataColumn("平均操作分钟数");
|
|
463
|
|
- DataColumn dc22 = new DataColumn("置忙次数");
|
|
464
|
|
- DataColumn dc23 = new DataColumn("休息时长分钟数");
|
|
465
|
|
- DataColumn dc24 = new DataColumn("平均每天休息时长");
|
|
466
|
|
- DataColumn dc25 = new DataColumn("置忙平均休息分钟数");
|
|
467
|
|
- DataColumn dc26 = new DataColumn("质检平均成绩");
|
|
468
|
|
-
|
|
469
|
|
- dtNew.Columns.Add(dc1);
|
|
470
|
|
- dtNew.Columns.Add(dc2);
|
|
471
|
|
- dtNew.Columns.Add(dc3);
|
|
472
|
|
- dtNew.Columns.Add(dc3_);
|
|
473
|
|
- dtNew.Columns.Add(dc4);
|
|
474
|
|
- dtNew.Columns.Add(dc5);
|
|
475
|
|
- dtNew.Columns.Add(dc6);
|
|
476
|
|
- dtNew.Columns.Add(dc7);
|
|
477
|
|
- dtNew.Columns.Add(dc8);
|
|
478
|
|
- dtNew.Columns.Add(dc9);
|
|
479
|
|
- dtNew.Columns.Add(dc10);
|
|
480
|
|
- dtNew.Columns.Add(dc11);
|
|
481
|
|
- dtNew.Columns.Add(dc12);
|
|
482
|
|
- dtNew.Columns.Add(dc13);
|
|
483
|
|
- dtNew.Columns.Add(dc14);
|
|
484
|
|
- dtNew.Columns.Add(dc15);
|
|
485
|
|
- dtNew.Columns.Add(dc16);
|
|
486
|
|
- dtNew.Columns.Add(dc17);
|
|
487
|
|
- dtNew.Columns.Add(dc18);
|
|
488
|
|
- dtNew.Columns.Add(dc19);
|
|
489
|
|
- dtNew.Columns.Add(dc20);
|
|
490
|
|
- dtNew.Columns.Add(dc21);
|
|
491
|
|
- dtNew.Columns.Add(dc22);
|
|
492
|
|
- dtNew.Columns.Add(dc23);
|
|
493
|
|
- dtNew.Columns.Add(dc24);
|
|
494
|
|
- dtNew.Columns.Add(dc25);
|
|
495
|
|
- dtNew.Columns.Add(dc26);
|
|
|
420
|
+ dtNew.Columns.AddRange(new DataColumn[] {
|
|
|
421
|
+ new DataColumn("部门"),
|
|
|
422
|
+ new DataColumn("坐席姓名"),
|
|
|
423
|
+ new DataColumn("角色"),
|
|
|
424
|
+ new DataColumn("固话号码"),
|
|
|
425
|
+ new DataColumn("呼入电话数"),
|
|
|
426
|
+ new DataColumn("接通量"),
|
|
|
427
|
+ new DataColumn("接通率"),
|
|
|
428
|
+ new DataColumn("呼入通话分钟数"),
|
|
|
429
|
+ new DataColumn("呼出电话数"),
|
|
|
430
|
+ new DataColumn("呼通量"),
|
|
|
431
|
+ new DataColumn("呼通率"),
|
|
|
432
|
+ new DataColumn("呼出通话分钟数"),
|
|
|
433
|
+ new DataColumn("坐席登录次数"),
|
|
|
434
|
+ new DataColumn("登录时长分钟数"),
|
|
|
435
|
+ new DataColumn("工作时长分钟数"),
|
|
|
436
|
+ new DataColumn("平均每天工作时长"),
|
|
|
437
|
+ new DataColumn("休息时长分钟数"),
|
|
|
438
|
+ new DataColumn("质检平均成绩")
|
|
|
439
|
+ });
|
|
|
440
|
+
|
|
|
441
|
+ //DataColumn dc1 = new DataColumn("部门");
|
|
|
442
|
+ //DataColumn dc2 = new DataColumn("坐席");
|
|
|
443
|
+ //DataColumn dc3 = new DataColumn("坐席工号");
|
|
|
444
|
+ //DataColumn dc3_ = new DataColumn("角色");
|
|
|
445
|
+ //DataColumn dc4 = new DataColumn("呼入电话数");
|
|
|
446
|
+ //DataColumn dc5 = new DataColumn("坐席接通量");
|
|
|
447
|
+ //DataColumn dc6 = new DataColumn("呼损量");
|
|
|
448
|
+ //DataColumn dc7 = new DataColumn("接通率");
|
|
|
449
|
+ //DataColumn dc8 = new DataColumn("呼损率");
|
|
|
450
|
+ //DataColumn dc9 = new DataColumn("平均排队时间");
|
|
|
451
|
+ //DataColumn dc10 = new DataColumn("接听通话次数");
|
|
|
452
|
+ //DataColumn dc11 = new DataColumn("通话分钟数");
|
|
|
453
|
+ //DataColumn dc12 = new DataColumn("通话秒数");
|
|
|
454
|
+ //DataColumn dc13 = new DataColumn("平均接听通话秒数");
|
|
|
455
|
+ //DataColumn dc14 = new DataColumn("平均振铃秒数");
|
|
|
456
|
+ //DataColumn dc15 = new DataColumn("呼入占有率");
|
|
|
457
|
+ //DataColumn dc16 = new DataColumn("用户评价");
|
|
|
458
|
+ //DataColumn dc17 = new DataColumn("坐席登录次数");
|
|
|
459
|
+ //DataColumn dc18 = new DataColumn("登录时长分钟数");
|
|
|
460
|
+ //DataColumn dc19 = new DataColumn("工作时长分钟数");
|
|
|
461
|
+ //DataColumn dc20 = new DataColumn("平均每天工作时长");
|
|
|
462
|
+ //DataColumn dc21 = new DataColumn("平均操作分钟数");
|
|
|
463
|
+ //DataColumn dc22 = new DataColumn("置忙次数");
|
|
|
464
|
+ //DataColumn dc23 = new DataColumn("休息时长分钟数");
|
|
|
465
|
+ //DataColumn dc24 = new DataColumn("平均每天休息时长");
|
|
|
466
|
+ //DataColumn dc25 = new DataColumn("置忙平均休息分钟数");
|
|
|
467
|
+ //DataColumn dc26 = new DataColumn("质检平均成绩");
|
|
|
468
|
+
|
|
|
469
|
+ //dtNew.Columns.Add(dc1);
|
|
|
470
|
+ //dtNew.Columns.Add(dc2);
|
|
|
471
|
+ //dtNew.Columns.Add(dc3);
|
|
|
472
|
+ //dtNew.Columns.Add(dc3_);
|
|
|
473
|
+ //dtNew.Columns.Add(dc4);
|
|
|
474
|
+ //dtNew.Columns.Add(dc5);
|
|
|
475
|
+ //dtNew.Columns.Add(dc6);
|
|
|
476
|
+ //dtNew.Columns.Add(dc7);
|
|
|
477
|
+ //dtNew.Columns.Add(dc8);
|
|
|
478
|
+ //dtNew.Columns.Add(dc9);
|
|
|
479
|
+ //dtNew.Columns.Add(dc10);
|
|
|
480
|
+ //dtNew.Columns.Add(dc11);
|
|
|
481
|
+ //dtNew.Columns.Add(dc12);
|
|
|
482
|
+ //dtNew.Columns.Add(dc13);
|
|
|
483
|
+ //dtNew.Columns.Add(dc14);
|
|
|
484
|
+ //dtNew.Columns.Add(dc15);
|
|
|
485
|
+ //dtNew.Columns.Add(dc16);
|
|
|
486
|
+ //dtNew.Columns.Add(dc17);
|
|
|
487
|
+ //dtNew.Columns.Add(dc18);
|
|
|
488
|
+ //dtNew.Columns.Add(dc19);
|
|
|
489
|
+ //dtNew.Columns.Add(dc20);
|
|
|
490
|
+ //dtNew.Columns.Add(dc21);
|
|
|
491
|
+ //dtNew.Columns.Add(dc22);
|
|
|
492
|
+ //dtNew.Columns.Add(dc23);
|
|
|
493
|
+ //dtNew.Columns.Add(dc24);
|
|
|
494
|
+ //dtNew.Columns.Add(dc25);
|
|
|
495
|
+ //dtNew.Columns.Add(dc26);
|
|
496
|
496
|
#endregion
|
|
497
|
497
|
int days = 30;
|
|
498
|
498
|
string sqltimeCallRecords = "";
|
|
499
|
499
|
string strsqlcall = "";
|
|
|
500
|
+ string strCallOutSql = "";
|
|
500
|
501
|
if (stime != null && stime.Trim() != "")
|
|
501
|
502
|
{
|
|
502
|
|
- sqltimeCallRecords += " and CONVERT(varchar , TimeAlerting, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
|
|
503
|
|
- strsqlcall += " and CONVERT(varchar , BeginTime, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
|
|
|
503
|
+ sqltimeCallRecords += $" and datediff(d,'{stime.Trim()} 00:00:01',TimeAlerting)>=0 ";
|
|
|
504
|
+ strsqlcall += $" and datediff(d,'{stime.Trim()} 00:00:01',BeginTime)>=0 ";
|
|
|
505
|
+ strCallOutSql += $" and datediff(d,'{stime.Trim()} 00:00:01',TimeRingBack)>=0 ";
|
|
|
506
|
+ //sqltimeCallRecords += " and CONVERT(varchar , TimeAlerting, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
|
|
|
507
|
+ //strsqlcall += " and CONVERT(varchar , BeginTime, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
|
|
504
|
508
|
}
|
|
505
|
509
|
if (endtime != null && endtime.Trim() != "")
|
|
506
|
510
|
{
|
|
507
|
|
- sqltimeCallRecords += " and CONVERT(varchar , TimeAlerting, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
|
|
508
|
|
- strsqlcall += " and CONVERT(varchar , BeginTime, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
|
|
|
511
|
+ sqltimeCallRecords += $" and datediff(d,'{stime.Trim()} 23:59:59',TimeAlerting)>=0 ";
|
|
|
512
|
+ strsqlcall += $" and datediff(d,'{stime.Trim()} 23:59:59',BeginTime)>=0 ";
|
|
|
513
|
+ strCallOutSql += $" and datediff(d,'{endtime.Trim()} 23:59:59',TimeRingBack)>=0 ";
|
|
|
514
|
+ //sqltimeCallRecords += " and CONVERT(varchar , TimeAlerting, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
|
|
|
515
|
+ //strsqlcall += " and CONVERT(varchar , BeginTime, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
|
|
509
|
516
|
}
|
|
510
|
517
|
if (dayss != null && dayss.Trim() != "")
|
|
511
|
518
|
{
|
|
|
@@ -534,6 +541,14 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
534
|
541
|
double itrunkjtl = 0.00;//接通率
|
|
535
|
542
|
double itrunkhsl = 0.00;//互损率
|
|
536
|
543
|
double itrunkpjpd = 0.00;//平均排队
|
|
|
544
|
+
|
|
|
545
|
+ var callOutCount = 0; //呼出总次数
|
|
|
546
|
+ var callOutJTCount = 0;//呼出接通总次数
|
|
|
547
|
+ var callOutJTRate = 0.00;//呼出接通率
|
|
|
548
|
+ var callOutJTSeconds = 0;//呼出接通秒数
|
|
|
549
|
+ var callOutJTMinutes = 0;//呼出接通分钟数
|
|
|
550
|
+
|
|
|
551
|
+
|
|
537
|
552
|
#endregion
|
|
538
|
553
|
|
|
539
|
554
|
//17=系统管理员,36=客服,37=组长,38=组员,39=业主,40=话务员,41=客服主管,43=分公司市场部主任,45=业务稽核,46=集团客户部,
|
|
|
@@ -591,26 +606,30 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
591
|
606
|
foreach (DataRow dr in dtdpt.Rows)
|
|
592
|
607
|
{
|
|
593
|
608
|
DataTable dt = new DataTable();
|
|
594
|
|
- string sql = $"SELECT F_UserCode,F_UserName,F_WorkNumber,F_UserId,T_Sys_RoleInfo.F_RoleName FROM T_Sys_UserAccount left join T_Sys_RoleInfo on T_Sys_RoleInfo.F_RoleId=T_Sys_UserAccount.F_RoleId where f_seatFlag=1 and F_DeptId={dr["F_DeptId"]} and F_WorkNumber!='' {usercodeSQL} order by F_WorkNumber asc";
|
|
|
609
|
+ string sql = $"SELECT F_UserCode,F_UserName,F_WorkNumber,F_ExtensionNumber,F_UserId,T_Sys_RoleInfo.F_RoleName FROM T_Sys_UserAccount left join T_Sys_RoleInfo on T_Sys_RoleInfo.F_RoleId=T_Sys_UserAccount.F_RoleId where f_seatFlag=1 and F_DeptId={dr["F_DeptId"]} and F_WorkNumber!='' {usercodeSQL} order by F_WorkNumber asc";
|
|
595
|
610
|
dt = DbHelperSQL.Query(sql).Tables[0];
|
|
596
|
611
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
597
|
612
|
{
|
|
598
|
613
|
if (!string.IsNullOrEmpty(dt.Rows[i]["F_WorkNumber"].ToString()))
|
|
599
|
614
|
{
|
|
600
|
615
|
DataRow drNew = dtNew.NewRow();
|
|
601
|
|
- drNew["部门"] = dr["F_DeptName"].ToString();
|
|
602
|
|
- drNew["坐席"] = dt.Rows[i]["F_UserName"].ToString();
|
|
603
|
|
- drNew["坐席工号"] = dt.Rows[i]["F_WorkNumber"].ToString();
|
|
604
|
|
- drNew["角色"] = dt.Rows[i]["F_RoleName"].ToString();
|
|
605
|
|
-
|
|
606
|
616
|
//drNew["部门"] = dr["F_DeptName"].ToString();
|
|
607
|
|
- //drNew["坐席姓名"] = $"{dt.Rows[i]["F_WorkNumber"].ToString()}—{dt.Rows[i]["F_UserName"].ToString()}";
|
|
|
617
|
+ //drNew["坐席"] = dt.Rows[i]["F_UserName"].ToString();
|
|
|
618
|
+ //drNew["坐席工号"] = dt.Rows[i]["F_WorkNumber"].ToString();
|
|
608
|
619
|
//drNew["角色"] = dt.Rows[i]["F_RoleName"].ToString();
|
|
609
|
|
- //drNew["固话号码"] = "15537150907"; // TODO 固话号码
|
|
|
620
|
+ drNew["部门"] = dr["F_DeptName"].ToString();
|
|
|
621
|
+ drNew["坐席姓名"] = $"{dt.Rows[i]["F_WorkNumber"].ToString()}—{dt.Rows[i]["F_UserName"].ToString()}";
|
|
|
622
|
+ drNew["角色"] = dt.Rows[i]["F_RoleName"].ToString();
|
|
|
623
|
+ drNew["固话号码"] = dt.Rows[i]["F_ExtensionNumber"].ToString();
|
|
610
|
624
|
|
|
611
|
625
|
//if (i == 0)
|
|
612
|
626
|
//{//呼入电话
|
|
613
|
627
|
|
|
|
628
|
+
|
|
|
629
|
+
|
|
|
630
|
+
|
|
|
631
|
+ #region 呼入
|
|
|
632
|
+
|
|
614
|
633
|
string strsql = "";
|
|
615
|
634
|
if (stime != null && stime.Trim() != "")
|
|
616
|
635
|
{
|
|
|
@@ -621,41 +640,53 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
621
|
640
|
strsql += " and CONVERT(varchar , TimeCallIn, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
|
|
622
|
641
|
}
|
|
623
|
642
|
|
|
|
643
|
+ //ct=总呼入/呼出次数? dd=总等待时长
|
|
624
|
644
|
DataTable dtTrunk = DbHelperSQL.Query("select COUNT(*) as ct,SUM(DATEDIFF(Second,timewantagent,timeconnected)) as dd from rep_trunk_call_in where AgentID='" + dt.Rows[i]["F_UserCode"].ToString() + "' " + strsql).Tables[0];
|
|
|
645
|
+ //ct=总呼入次数? jt=总呼入接通数
|
|
625
|
646
|
DataTable dtcall = DbHelperSQL.Query("select COUNT(*) as ct,(select COUNT(*) from T_Call_CallRecords where CallState=1 and CallType=0 and UserCode='" + dt.Rows[i]["F_UserCode"].ToString() + "' " + strsqlcall + ") as jt from T_Call_CallRecords where CallType=0 and UserCode='" + dt.Rows[i]["F_UserCode"].ToString() + "' " + strsqlcall).Tables[0];
|
|
626
|
647
|
|
|
627
|
648
|
if (dtcall != null && dtcall.Rows.Count > 0)
|
|
628
|
649
|
{
|
|
629
|
650
|
if (dtcall.Rows[0]["ct"].ToString() != "")
|
|
630
|
651
|
{
|
|
|
652
|
+ //ct=次数
|
|
631
|
653
|
itrunkct = int.Parse(dtcall.Rows[0]["ct"].ToString());
|
|
632
|
654
|
}
|
|
633
|
655
|
else
|
|
634
|
656
|
{
|
|
|
657
|
+ //ct=次数
|
|
635
|
658
|
itrunkct = 0;
|
|
636
|
659
|
}
|
|
637
|
660
|
if (dtcall.Rows[0]["jt"].ToString() != "")
|
|
638
|
661
|
{
|
|
|
662
|
+ //jt = 总呼入接通数
|
|
639
|
663
|
itrunkjj = int.Parse(dtcall.Rows[0]["jt"].ToString());
|
|
640
|
664
|
}
|
|
641
|
665
|
else
|
|
642
|
666
|
{
|
|
|
667
|
+ //jt = 总呼入接通数
|
|
643
|
668
|
itrunkjj = 0;
|
|
644
|
669
|
}
|
|
645
|
670
|
if (dtTrunk.Rows.Count > 0 && dtTrunk.Rows[0]["dd"].ToString() != "")
|
|
646
|
671
|
{
|
|
|
672
|
+ //dd=总等待时长
|
|
647
|
673
|
itrunkpjsc = int.Parse(dtTrunk.Rows[0]["dd"].ToString());
|
|
648
|
674
|
}
|
|
649
|
675
|
else
|
|
650
|
676
|
{
|
|
|
677
|
+ //dd=总等待时长
|
|
651
|
678
|
itrunkpjsc = 0;
|
|
652
|
679
|
}
|
|
653
|
680
|
}
|
|
|
681
|
+ // 总呼入次数-总呼入接通数=0
|
|
654
|
682
|
itrunkhs = itrunkct - itrunkjj;
|
|
655
|
683
|
if (itrunkct != 0)
|
|
656
|
684
|
{
|
|
|
685
|
+ //呼入接通率 = 总呼入接通数/总呼入次数
|
|
657
|
686
|
itrunkjtl = itrunkjj / double.Parse(itrunkct.ToString());
|
|
|
687
|
+ //呼入呼损率 = (总呼入次数-总呼入接通数)/总呼叫次数
|
|
658
|
688
|
itrunkhsl = itrunkhs / double.Parse(itrunkct.ToString());
|
|
|
689
|
+ //平均排队时长 = 总等待时长/总呼入次数
|
|
659
|
690
|
itrunkpjpd = itrunkpjsc / double.Parse(itrunkct.ToString());
|
|
660
|
691
|
}
|
|
661
|
692
|
else
|
|
|
@@ -664,17 +695,17 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
664
|
695
|
itrunkhsl = 0.00;
|
|
665
|
696
|
itrunkpjpd = 0.00;
|
|
666
|
697
|
}
|
|
667
|
|
- drNew["呼入电话数"] = itrunkct;
|
|
668
|
|
- drNew["坐席接通量"] = itrunkjj;
|
|
669
|
|
- drNew["呼损量"] = itrunkhs;
|
|
670
|
|
- drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%";
|
|
671
|
|
- drNew["呼损率"] = (itrunkhsl * 100).ToString("0.00") + "%";
|
|
672
|
|
- drNew["平均排队时间"] = itrunkpjpd.ToString("0.00");
|
|
673
|
|
-
|
|
674
|
|
-
|
|
675
|
698
|
//drNew["呼入电话数"] = itrunkct;
|
|
676
|
699
|
//drNew["坐席接通量"] = itrunkjj;
|
|
|
700
|
+ //drNew["呼损量"] = itrunkhs;
|
|
677
|
701
|
//drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%";
|
|
|
702
|
+ //drNew["呼损率"] = (itrunkhsl * 100).ToString("0.00") + "%";
|
|
|
703
|
+ //drNew["平均排队时间"] = itrunkpjpd.ToString("0.00");
|
|
|
704
|
+
|
|
|
705
|
+
|
|
|
706
|
+ drNew["呼入电话数"] = itrunkct;
|
|
|
707
|
+ drNew["接通量"] = itrunkjj;
|
|
|
708
|
+ drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%";
|
|
678
|
709
|
|
|
679
|
710
|
//}
|
|
680
|
711
|
//else
|
|
|
@@ -687,52 +718,121 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
687
|
718
|
// drNew["平均排队时间"] = "0.00";
|
|
688
|
719
|
//}
|
|
689
|
720
|
|
|
690
|
|
-
|
|
|
721
|
+ //-- ct=总呼入次数? sc=总通话时长 pa=总xxx
|
|
691
|
722
|
DataTable dtext = DbHelperSQL.Query("select COUNT(*) as ct,SUM(PeriodTalking) as sc,SUM(PeriodAlerting) as pa from rep_ext_call_in where CalleeAgentID=" + dt.Rows[i]["F_WorkNumber"] + " " + sqltimeCallRecords).Tables[0];
|
|
|
723
|
+ //-- ct=总呼入接通次数? sc=总通话时长
|
|
692
|
724
|
DataTable dtCallEvey = DbHelperSQL.Query("select COUNT(*) as ct,SUM(TalkLongTime) as sc from T_Call_CallRecords where CallState=1 and userid=" + dt.Rows[i]["F_UserId"] + " " + strsqlcall).Tables[0];
|
|
693
|
725
|
if (dtCallEvey != null && dtCallEvey.Rows.Count > 0)
|
|
694
|
726
|
{
|
|
695
|
727
|
if (dtCallEvey.Rows[0]["ct"].ToString() != "")
|
|
696
|
728
|
{
|
|
|
729
|
+ //-- ct=总呼入接通次数
|
|
697
|
730
|
ijtcs = int.Parse(dtCallEvey.Rows[0]["ct"].ToString());//接听次数
|
|
698
|
731
|
}
|
|
699
|
732
|
else
|
|
700
|
733
|
{
|
|
|
734
|
+ //-- ct=总呼入接通次数
|
|
701
|
735
|
ijtcs = 0;
|
|
702
|
736
|
}
|
|
703
|
737
|
if (dtCallEvey.Rows[0]["sc"].ToString() != "")
|
|
704
|
738
|
{
|
|
|
739
|
+ //sc = 总通话时长
|
|
705
|
740
|
ithms = int.Parse(dtCallEvey.Rows[0]["sc"].ToString());//通话秒数
|
|
706
|
741
|
}
|
|
707
|
742
|
else
|
|
708
|
743
|
{
|
|
|
744
|
+ //sc = 总通话时长
|
|
709
|
745
|
ithms = 0;
|
|
710
|
746
|
}
|
|
711
|
747
|
if (dtext.Rows[0]["pa"].ToString() != "")
|
|
712
|
748
|
{
|
|
|
749
|
+ //pa=总振铃秒数
|
|
713
|
750
|
izlms = int.Parse(dtext.Rows[0]["pa"].ToString());//振铃秒数
|
|
714
|
751
|
}
|
|
715
|
752
|
else
|
|
716
|
753
|
{
|
|
|
754
|
+ //pa=总振铃秒数
|
|
717
|
755
|
izlms = 0;
|
|
718
|
756
|
}
|
|
719
|
757
|
}
|
|
720
|
|
- drNew["接听通话次数"] = ijtcs.ToString();
|
|
721
|
|
- drNew["通话分钟数"] = (ithms / 60).ToString();
|
|
722
|
|
- drNew["通话秒数"] = ithms.ToString();
|
|
|
758
|
+ //drNew["接听通话次数"] = ijtcs.ToString();
|
|
|
759
|
+ drNew["呼入通话分钟数"] = (ithms / 60).ToString();
|
|
|
760
|
+ //drNew["通话秒数"] = ithms.ToString();
|
|
|
761
|
+
|
|
|
762
|
+ //if (ijtcs != 0)
|
|
|
763
|
+ //{
|
|
|
764
|
+ // ipjjtms = ithms / ijtcs;//平均接通秒数
|
|
|
765
|
+ // ipjzlms = izlms / ijtcs;//平均振铃秒数
|
|
|
766
|
+ //}
|
|
|
767
|
+ //else
|
|
|
768
|
+ //{
|
|
|
769
|
+ // ipjjtms = 0;//平均接通秒数
|
|
|
770
|
+ // ipjzlms = 0;//平均振铃秒数
|
|
|
771
|
+ //}
|
|
|
772
|
+ //drNew["平均接听通话秒数"] = ipjjtms.ToString();
|
|
|
773
|
+ //drNew["平均振铃秒数"] = ipjzlms.ToString();
|
|
|
774
|
+
|
|
|
775
|
+ #endregion
|
|
|
776
|
+
|
|
|
777
|
+ #region 呼出
|
|
|
778
|
+
|
|
|
779
|
+ //--ct=呼出总次数 st=呼出总通话时长
|
|
|
780
|
+ DataTable dtCallOut = DbHelperSQL.Query($"select count(CallID) as ct,SUM(PeriodTalking) as st from rep_ext_call_out where IsCallOutSucceed = 1 and CallerAgentID ={dt.Rows[i]["F_WorkNumber"].ToString()} {strCallOutSql}").Tables[0];
|
|
|
781
|
+ //-- ct=呼出接通次数
|
|
|
782
|
+ DataTable dtCallOut2 = DbHelperSQL.Query($"select count(CallID) as ct from rep_ext_call_out where IsCallOutSucceed=1 and CallerAgentID={dt.Rows[i]["F_WorkNumber"].ToString()} {strCallOutSql} and IsCallOutSucceed=1 ").Tables[0];
|
|
|
783
|
+
|
|
|
784
|
+ if (dtCallOut.Rows.Count > 0)
|
|
|
785
|
+ {
|
|
|
786
|
+ callOutCount = dtCallOut.Rows[0]["ct"] != DBNull.Value ? Convert.ToInt32(dtCallOut.Rows[0]["ct"]) : 0;
|
|
|
787
|
+ callOutJTSeconds = dtCallOut.Rows[0]["st"] != DBNull.Value ? Convert.ToInt32(dtCallOut.Rows[0]["st"]) : 0;
|
|
|
788
|
+ }
|
|
|
789
|
+ if (dtCallOut2.Rows.Count > 0)
|
|
|
790
|
+ {
|
|
|
791
|
+ callOutJTCount = dtCallOut2.Rows[0]["ct"] != DBNull.Value ? Convert.ToInt32(dtCallOut2.Rows[0]["ct"]) : 0;
|
|
|
792
|
+ }
|
|
723
|
793
|
|
|
724
|
|
- if (ijtcs != 0)
|
|
|
794
|
+ if (callOutCount != 0)
|
|
725
|
795
|
{
|
|
726
|
|
- ipjjtms = ithms / ijtcs;//平均接通秒数
|
|
727
|
|
- ipjzlms = izlms / ijtcs;//平均振铃秒数
|
|
|
796
|
+ drNew["呼出电话数"] = callOutCount;
|
|
|
797
|
+ drNew["呼通量"] = callOutJTCount;
|
|
|
798
|
+ drNew["呼通率"] = (callOutJTCount / callOutCount * 100).ToString("0.00") + "%";
|
|
|
799
|
+ drNew["呼出通话分钟数"] = (callOutJTSeconds / 60).ToString();
|
|
728
|
800
|
}
|
|
729
|
801
|
else
|
|
730
|
802
|
{
|
|
731
|
|
- ipjjtms = 0;//平均接通秒数
|
|
732
|
|
- ipjzlms = 0;//平均振铃秒数
|
|
|
803
|
+ drNew["呼出电话数"] = 0;
|
|
|
804
|
+ drNew["呼通量"] = 0;
|
|
|
805
|
+ drNew["呼通率"] = "0%";
|
|
|
806
|
+ drNew["呼出通话分钟数"] = 0;
|
|
733
|
807
|
}
|
|
734
|
|
- drNew["平均接听通话秒数"] = ipjjtms.ToString();
|
|
735
|
|
- drNew["平均振铃秒数"] = ipjzlms.ToString();
|
|
|
808
|
+
|
|
|
809
|
+ #endregion
|
|
|
810
|
+
|
|
|
811
|
+ #region 登录
|
|
|
812
|
+
|
|
|
813
|
+ #endregion
|
|
|
814
|
+
|
|
|
815
|
+ // "呼入电话数", "坐席接通量", "接通率", "通话分钟数",
|
|
|
816
|
+ // "呼出电话数", "坐席呼通量", "接通率", "呼出分钟数",
|
|
|
817
|
+
|
|
|
818
|
+
|
|
|
819
|
+
|
|
|
820
|
+
|
|
|
821
|
+
|
|
|
822
|
+
|
|
|
823
|
+
|
|
|
824
|
+
|
|
|
825
|
+
|
|
|
826
|
+
|
|
|
827
|
+
|
|
|
828
|
+
|
|
|
829
|
+
|
|
|
830
|
+
|
|
|
831
|
+
|
|
|
832
|
+
|
|
|
833
|
+
|
|
|
834
|
+
|
|
|
835
|
+
|
|
736
|
836
|
|
|
737
|
837
|
//坐席登录次数
|
|
738
|
838
|
DataTable dtAgent = DbHelperSQL.Query("select COUNT(*) as dl,SUM(LoginTimes) as dlsc,SUM(reposenum) as zm,SUM(ReposeTimes) as xx from rep_agent_detail where AgentId=" + dt.Rows[i]["F_WorkNumber"] + " " + sqltimeCallRecords.Replace("TimeAlerting", "TimeLogin")).Tables[0];
|
|
|
@@ -799,7 +899,7 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
799
|
899
|
{
|
|
800
|
900
|
ihrzyl = 0.00;
|
|
801
|
901
|
}
|
|
802
|
|
- drNew["呼入占有率"] = (ihrzyl * 100).ToString("0.00") + "%";
|
|
|
902
|
+ //drNew["呼入占有率"] = (ihrzyl * 100).ToString("0.00") + "%";
|
|
803
|
903
|
//用户评价
|
|
804
|
904
|
|
|
805
|
905
|
object obj = DbHelperSQL.GetSingle("select count(*) from T_Call_CallRecords where MYD is not null and CallState=1 and userid=" + dt.Rows[i]["F_UserId"] + strsqlcall);
|
|
|
@@ -808,16 +908,16 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
808
|
908
|
{
|
|
809
|
909
|
myd = obj.ToString();
|
|
810
|
910
|
}
|
|
811
|
|
- drNew["用户评价"] = myd;
|
|
|
911
|
+ //drNew["用户评价"] = myd;
|
|
812
|
912
|
drNew["坐席登录次数"] = izxdlcs.ToString();
|
|
813
|
913
|
drNew["登录时长分钟数"] = (idlsc / 60).ToString();
|
|
814
|
914
|
drNew["工作时长分钟数"] = (iWorktime / 60).ToString();
|
|
815
|
915
|
drNew["平均每天工作时长"] = Math.Round((double.Parse(iWorktime.ToString()) / 60 / 60 / days), 2).ToString();
|
|
816
|
|
- drNew["平均操作分钟数"] = (ipjczsc / 60).ToString();
|
|
817
|
|
- drNew["置忙次数"] = izmcs.ToString();
|
|
|
916
|
+ //drNew["平均操作分钟数"] = (ipjczsc / 60).ToString();
|
|
|
917
|
+ //drNew["置忙次数"] = izmcs.ToString();
|
|
818
|
918
|
drNew["休息时长分钟数"] = (ixxsc / 60).ToString();
|
|
819
|
|
- drNew["平均每天休息时长"] = Math.Round((double.Parse(ixxsc.ToString()) / 60 / 60 / days), 2).ToString();
|
|
820
|
|
- drNew["置忙平均休息分钟数"] = (ipjzmxxsc / 60).ToString();
|
|
|
919
|
+ //drNew["平均每天休息时长"] = Math.Round((double.Parse(ixxsc.ToString()) / 60 / 60 / days), 2).ToString();
|
|
|
920
|
+ //drNew["置忙平均休息分钟数"] = (ipjzmxxsc / 60).ToString();
|
|
821
|
921
|
|
|
822
|
922
|
DataSet dszj = DbHelperSQL.Query("select convert(int,SUM(f_qcscore)) as fs,COUNT(*) as fsct from T_Call_CallRecords where F_QCState=1 and UserId=" + dt.Rows[i]["F_UserId"] + strsqlcall);
|
|
823
|
923
|
int zfs = 0;
|