浏览代码

坐席工作报表接口调整

yuqian 8 年之前
父节点
当前提交
304a19840c

+ 2 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/CallCenterApi.Interface.csproj

@@ -210,6 +210,7 @@
210 210
     <Compile Include="Controllers\Base\BaseController.cs" />
211 211
     <Compile Include="Controllers\CallOutOptController.cs" />
212 212
     <Compile Include="Controllers\callout\BanCallOutController.cs" />
213
+    <Compile Include="Controllers\callout\CallOutLimitController.cs" />
213 214
     <Compile Include="Controllers\callout\CallPlanController.cs" />
214 215
     <Compile Include="Controllers\callout\ExcelTmpController.cs" />
215 216
     <Compile Include="Controllers\customer\CustomerController.cs" />
@@ -359,6 +360,7 @@
359 360
     <Folder Include="Views\Callblack\" />
360 361
     <Folder Include="Views\CallIn\" />
361 362
     <Folder Include="Views\Callleave\" />
363
+    <Folder Include="Views\CallOutLimit\" />
362 364
     <Folder Include="Views\CallOutOpt\" />
363 365
     <Folder Include="Views\CallOutScreen\" />
364 366
     <Folder Include="Views\CallPlan\" />

+ 6 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/callout/BanCallOutController.cs

@@ -14,6 +14,8 @@ namespace CallCenterApi.Interface.Controllers.callout
14 14
     public class BanCallOutController : BaseController
15 15
     {
16 16
         private readonly BLL.T_Call_BanCallOut banCallOutBLL = new BLL.T_Call_BanCallOut();
17
+
18
+        #region 禁止外呼号码管理
17 19
         public ActionResult GetList(FilterBanCallOut filter)
18 20
         {
19 21
             StringBuilder sb = new StringBuilder();
@@ -69,7 +71,11 @@ namespace CallCenterApi.Interface.Controllers.callout
69 71
             banCallOutBLL.deleteBatch(idsStr);
70 72
             return Success("删除成功");
71 73
         }
74
+        #endregion
75
+
76
+        #region 限制外呼时间管理
72 77
 
78
+        #endregion
73 79
 
74 80
     }
75 81
 }

+ 17 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/callout/CallOutLimitController.cs

@@ -0,0 +1,17 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Web;
5
+using System.Web.Mvc;
6
+
7
+namespace CallCenterApi.Interface.Controllers.callout
8
+{
9
+    public class CallOutLimitController : Controller
10
+    {
11
+        // GET: CallOutLimit
12
+        public ActionResult Index()
13
+        {
14
+            return View();
15
+        }
16
+    }
17
+}

+ 226 - 126
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/report/ZuoXiWorkTotalController.cs

@@ -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;