Quellcode durchsuchen

1.诉求受理对比
2.语音通知接口调整

yuqian vor 8 Jahren
Ursprung
Commit
5b3b1108f4

+ 18 - 0
CallCenterApi/CallCenterApi.BLL/T_Bus_WorkOrderReport.cs

@@ -168,6 +168,24 @@ namespace CallCenterApi.BLL
168 168
         }
169 169
         #endregion
170 170
 
171
+        #region 诉求受理对比
172
+        public List<Model.AppealReport> DataTableAppealList(DataTable dt)
173
+        {
174
+            List<Model.AppealReport> list = new List<Model.AppealReport>();
175
+            if (dt.Rows.Count > 0)
176
+            {
177
+                foreach (DataRow r in dt.Rows)
178
+                {
179
+                    list.Add(new Model.AppealReport
180
+                    {
181
+                        WorkOrderId = r["F_WorkOrderId"] == DBNull.Value ? "" : r["F_WorkOrderId"].ToString(),
182
+                        UserCode = r["F_CreateUser"] == DBNull.Value ? "" : r["F_CreateUser"].ToString()
183
+                    });
184
+                }
185
+            }
186
+            return list;
187
+        }
188
+        #endregion
171 189
 
172 190
 
173 191
 

+ 3 - 3
CallCenterApi/CallCenterApi.BLL/T_CTI_TaskVoiceTemp.cs

@@ -25,11 +25,11 @@ namespace CallCenterApi.BLL
25 25
             return dal.Update(model);
26 26
         }
27 27
         /// <summary>
28
-        /// 删除条数据
28
+        /// 删除条数据
29 29
         /// </summary>
30
-        public bool Delete(int id)
30
+        public bool DeleteBatch(string ids)
31 31
         {
32
-            return dal.Delete(id);
32
+            return dal.DeleteBatch(ids);
33 33
         }
34 34
         /// <summary>
35 35
         /// 得到一个对象实体

+ 34 - 31
CallCenterApi/CallCenterApi.DAL/T_CTI_Task.cs

@@ -39,9 +39,9 @@ namespace CallCenterApi.DAL
39 39
         {
40 40
             StringBuilder strSql = new StringBuilder();
41 41
             strSql.Append("insert into T_CTI_Task(");
42
-            strSql.Append("TaskName,TrunkGroupID,CallerNum,CallType,ExInfo,MaxTrunkCount,IntensityCoefficient,ItemTableName,State,AddTime,y_PSort,y_TkModelId,y_SXH,y_FPCount,y_YJCount,y_HCCount,y_HSCount,y_HTCount,y_HMCount,y_OkCount,y_RFCount,y_ConsCount,y_InvlCount,y_NoAnswerCount,y_ShutDownCount,TaskType,Pre,Concurrency,ConcurrencyType,StartTime1,EndTime1,StartTime2,EndTime2,TaskCategoryId,TaskContent,IsExcuteNow,LoopTime)");
42
+            strSql.Append("TaskName,State,AddTime,y_YJCount,y_HMCount,Pre,Concurrency,ConcurrencyType,StartTime1,EndTime1,StartTime2,EndTime2,TaskCategoryId,TaskContent,IsExcuteNow,LoopTime)");
43 43
             strSql.Append(" values (");
44
-            strSql.Append("@TaskName,@TrunkGroupID,@CallerNum,@CallType,@ExInfo,@MaxTrunkCount,@IntensityCoefficient,@ItemTableName,@State,@AddTime,@y_PSort,@y_TkModelId,@y_SXH,@y_FPCount,@y_YJCount,@y_HCCount,@y_HSCount,@y_HTCount,@y_HMCount,@y_OkCount,@y_RFCount,@y_ConsCount,@y_InvlCount,@y_NoAnswerCount,@y_ShutDownCount,@TaskType,@Pre,@Concurrency,@ConcurrencyType,@StartTime1,@EndTime1,@StartTime2,@EndTime2,@TaskCategoryId,@TaskContent,@IsExcuteNow,@LoopTime)");
44
+            strSql.Append("@TaskName,@State,@AddTime,@y_YJCount,@y_HMCount,@Pre,@Concurrency,@ConcurrencyType,@StartTime1,@EndTime1,@StartTime2,@EndTime2,@TaskCategoryId,@TaskContent,@IsExcuteNow,@LoopTime)");
45 45
             strSql.Append(";select @@IDENTITY");
46 46
             SqlParameter[] parameters = {
47 47
                     new SqlParameter("@TaskName", SqlDbType.VarChar,200),
@@ -62,19 +62,21 @@ namespace CallCenterApi.DAL
62 62
                     new SqlParameter("@LoopTime", SqlDbType.Int)
63 63
         };
64 64
             parameters[0].Value = model.TaskName;
65
-            parameters[8].Value = model.State;
66
-            parameters[9].Value = model.AddTime;
67
-            parameters[26].Value = model.Pre;
68
-            parameters[27].Value = model.Concurrency;
69
-            parameters[28].Value = model.ConcurrencyType;
70
-            parameters[29].Value = model.StartTime1;
71
-            parameters[30].Value = model.EndTime1;
72
-            parameters[31].Value = model.StartTime2;
73
-            parameters[32].Value = model.EndTime2;
74
-            parameters[30].Value = model.TaskCategoryId;
75
-            parameters[31].Value = model.TaskContent;
76
-            parameters[32].Value = model.IsExcuteNow;
77
-            parameters[33].Value = model.LoopTime;
65
+            parameters[1].Value = model.State;
66
+            parameters[2].Value = model.AddTime;
67
+            parameters[3].Value = model.y_YJCount;
68
+            parameters[4].Value = model.y_HMCount;
69
+            parameters[5].Value = model.Pre;
70
+            parameters[6].Value = model.Concurrency;
71
+            parameters[7].Value = model.ConcurrencyType;
72
+            parameters[8].Value = model.StartTime1;
73
+            parameters[9].Value = model.EndTime1;
74
+            parameters[10].Value = model.StartTime2;
75
+            parameters[11].Value = model.EndTime2;
76
+            parameters[12].Value = model.TaskCategoryId;
77
+            parameters[13].Value = model.TaskContent;
78
+            parameters[14].Value = model.IsExcuteNow;
79
+            parameters[15].Value = model.LoopTime;
78 80
             object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
79 81
             if (obj == null)
80 82
             {
@@ -115,6 +117,7 @@ namespace CallCenterApi.DAL
115 117
                     new SqlParameter("@AddTime", SqlDbType.DateTime),
116 118
                     new SqlParameter("@y_YJCount", SqlDbType.Int,4),
117 119
                     new SqlParameter("@y_HMCount", SqlDbType.Int,4),
120
+                    new SqlParameter("@TaskID", SqlDbType.Int),
118 121
                     new SqlParameter("@Pre",SqlDbType.VarChar,300),
119 122
                     new SqlParameter("@Concurrency", SqlDbType.Int),
120 123
                     new SqlParameter("@ConcurrencyType", SqlDbType.Int),
@@ -128,22 +131,22 @@ namespace CallCenterApi.DAL
128 131
                     new SqlParameter("@LoopTime", SqlDbType.Int)
129 132
             };
130 133
             parameters[0].Value = model.TaskName;
131
-            parameters[8].Value = model.State;
132
-            parameters[9].Value = model.AddTime;
133
-            parameters[14].Value = model.y_YJCount;
134
-            parameters[18].Value = model.y_HMCount;
135
-            parameters[26].Value = model.TaskID;
136
-            parameters[27].Value = model.Pre;
137
-            parameters[28].Value = model.Concurrency;
138
-            parameters[29].Value = model.ConcurrencyType;
139
-            parameters[30].Value = model.StartTime1;
140
-            parameters[31].Value = model.EndTime1;
141
-            parameters[32].Value = model.StartTime2;
142
-            parameters[33].Value = model.EndTime2;
143
-            parameters[34].Value = model.TaskCategoryId;
144
-            parameters[35].Value = model.TaskContent;
145
-            parameters[36].Value = model.IsExcuteNow;
146
-            parameters[37].Value = model.LoopTime;
134
+            parameters[1].Value = model.State;
135
+            parameters[2].Value = model.AddTime;
136
+            parameters[3].Value = model.y_YJCount;
137
+            parameters[4].Value = model.y_HMCount;
138
+            parameters[5].Value = model.TaskID;
139
+            parameters[6].Value = model.Pre;
140
+            parameters[7].Value = model.Concurrency;
141
+            parameters[8].Value = model.ConcurrencyType;
142
+            parameters[9].Value = model.StartTime1;
143
+            parameters[10].Value = model.EndTime1;
144
+            parameters[11].Value = model.StartTime2;
145
+            parameters[12].Value = model.EndTime2;
146
+            parameters[13].Value = model.TaskCategoryId;
147
+            parameters[14].Value = model.TaskContent;
148
+            parameters[15].Value = model.IsExcuteNow;
149
+            parameters[16].Value = model.LoopTime;
147 150
 
148 151
 
149 152
             int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

+ 5 - 5
CallCenterApi/CallCenterApi.DAL/T_CTI_TaskVoiceTemp.cs

@@ -43,7 +43,7 @@ namespace CallCenterApi.DAL
43 43
         public bool Update(CallCenterApi.Model.T_CTI_TaskVoiceTemp model)
44 44
         {
45 45
             StringBuilder strSql = new StringBuilder();
46
-            strSql.Append("update T_CTI_Task set ");
46
+            strSql.Append("update T_CTI_TaskVoiceTemp set ");
47 47
             strSql.Append(" F_CategoryId=@F_CategoryId, ");
48 48
             strSql.Append(" F_Title=@F_Title, ");
49 49
             strSql.Append(" F_Content=@F_Content, ");
@@ -66,16 +66,16 @@ namespace CallCenterApi.DAL
66 66
             }
67 67
         }
68 68
         /// <summary>
69
-        /// 删除条数据
69
+        /// 删除条数据
70 70
         /// </summary>
71
-        public bool Delete(int id)
71
+        public bool DeleteBatch(string ids)
72 72
         {
73 73
 
74 74
             StringBuilder strSql = new StringBuilder();
75 75
             strSql.Append("delete from T_CTI_TaskVoiceTemp ");
76
-            strSql.Append(" where F_Id=@F_Id");
76
+            strSql.Append(" where F_Id in(" + ids + ")");
77 77
 
78
-            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), new SqlParameter("@F_Id", SqlDbType.Int));
78
+            int rows = DbHelperSQL.ExecuteSql(strSql.ToString());
79 79
             if (rows > 0)
80 80
             {
81 81
                 return true;

+ 20 - 11
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/callout/CallPlanController.cs

@@ -41,6 +41,10 @@ namespace CallCenterApi.Interface.Controllers.callout
41 41
             {
42 42
                 sql += "  and (TaskName like '%" + filter.Name.Trim() + "%' ) ";
43 43
             }
44
+            if (filter.CategoryId > 0)
45
+            {
46
+                sql += "  and CategoryId=" + filter.CategoryId;
47
+            }
44 48
 
45 49
             Model.PageData<Model.T_CTI_Task> pageModel = new Model.PageData<Model.T_CTI_Task>();
46 50
             var recordCount = 0;
@@ -55,6 +59,7 @@ namespace CallCenterApi.Interface.Controllers.callout
55 59
                              true,
56 60
                              out recordCount);
57 61
             List<Model.T_CTI_Task> modelList = new BLL.T_CTI_Task().DataTableToList(dt);
62
+            var categoryList = taskCategoryBLL.DataTableToList(taskCategoryBLL.GetList("").Tables[0]);
58 63
             var list = new List<CallPlanDto>();
59 64
 
60 65
             var obj = new
@@ -63,6 +68,7 @@ namespace CallCenterApi.Interface.Controllers.callout
63 68
                 {
64 69
                     id = x.TaskID,
65 70
                     name = x.TaskName,
71
+                    categoryname = categoryList.SingleOrDefault(y => y.F_Id == x.TaskCategoryId)?.F_Name ?? "",
66 72
                     allcount = x.y_HMCount,     //号码总数
67 73
                     connected = x.y_YJCount,    //已接总数
68 74
                     connectfailed = (x.y_HMCount - x.y_YJCount) < 0 ? 0 : (x.y_HMCount - x.y_YJCount)  //未接总数
@@ -93,16 +99,16 @@ namespace CallCenterApi.Interface.Controllers.callout
93 99
                 content = model.TaskContent,
94 100
                 isexcutenow = model.IsExcuteNow ?? false,
95 101
                 looptime = model.LoopTime,
96
-                state = "暂停",
102
+                //state = "暂停",
97 103
                 addtime = Convert.ToDateTime(model.AddTime).ToString("yyyy-MM-dd HH:mm:ss"),
98
-                pre = model.Pre, //线路前缀
99
-                concurrencytypestr = model.ConcurrencyType == 0 ? "并发数" : "并发速率",
100
-                concurrencytype = model.ConcurrencyType,
101
-                concurrency = model.Concurrency,
102
-                starttime1 = model.StartTime1.ToString("HH:mm"),
103
-                endtime1 = model.EndTime1.ToString("HH:mm"),
104
-                starttime2 = model.StartTime2.ToString("HH:mm"),
105
-                endtime2 = model.EndTime2.ToString("HH:mm"),
104
+                //pre = model.Pre, //线路前缀
105
+                //concurrencytypestr = model.ConcurrencyType == 0 ? "并发数" : "并发速率",
106
+                //concurrencytype = model.ConcurrencyType,
107
+                //concurrency = model.Concurrency,
108
+                starttime1 = model.StartTime1?.ToString("yyyy-MM-dd HH:mm:ss") ?? "",
109
+                endtime1 = model.EndTime1?.ToString("yyyy-MM-dd HH:mm:ss") ?? "",
110
+                starttime2 = model.StartTime2?.ToString("yyyy-MM-dd HH:mm:ss") ?? "",
111
+                endtime2 = model.EndTime2?.ToString("yyyy-MM-dd HH:mm:ss") ?? "",
106 112
             });
107 113
         }
108 114
         /// <summary>
@@ -525,11 +531,14 @@ namespace CallCenterApi.Interface.Controllers.callout
525 531
         /// <param name="id"></param>
526 532
         /// <param name="state"></param>
527 533
         /// <returns></returns>
528
-        public ActionResult DeleteVoiceTemp(int id)
534
+        public ActionResult DeleteVoiceTemp(int[] ids)
529 535
         {
530 536
             //if (!Request.IsAuthenticated)
531 537
             //    return NoToken("未知错误,请重新登录");
532
-            if (taskVoiceTempBLL.Delete(id))
538
+            if (ids == null || ids.Length <= 0)
539
+                return Error("获取参数失败");
540
+            var idStr = string.Join(",", ids);
541
+            if (taskVoiceTempBLL.DeleteBatch(idStr))
533 542
                 return Success("修改成功");
534 543
             return Error("修改失败");
535 544
         }

+ 49 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/report/WorkOrderReportController.cs

@@ -664,6 +664,55 @@ namespace CallCenterApi.Interface.Controllers.report
664 664
             }.ToJson());
665 665
         }
666 666
 
667
+        /// <summary>
668
+        /// 诉求受理对比
669
+        /// </summary>
670
+        /// <returns></returns>
671
+        public ActionResult GetAppeal(DateTime? start, DateTime? end, int pageIndex = 1, int pageSize = 10, bool isExport = false)
672
+        {
673
+            if (start == null)
674
+            {
675
+                start = DateTools.FirstDayOfMonth(DateTime.Now.Date);
676
+            }
677
+            if (end == null)
678
+            {
679
+                end = DateTools.LastDayOfMonth(DateTime.Now.Date);
680
+            }
681
+            var lastStart = DateTools.FirstDayOfPreviousMonth(DateTime.Now.Date);
682
+            var lastEnd = DateTools.LastDayOfPrdviousMonth(DateTime.Now.Date);
683
+            var lastYearStart = DateTools.FirstDayOfMonth(DateTime.Now.AddYears(-1).Date);
684
+            var lastYearEnd = DateTools.LastDayOfMonth(DateTime.Now.AddYears(-1).Date);
685
+            // var deptList = departmentBLL.DataTableToList(departmentBLL.GetList(" F_State=0 AND  F_DeptNameSpell=3 ").Tables[0]);
686
+            var userList = userAccount.DataTableToList(userAccount.GetList(" F_DeleteFlag=0  AND F_SeatFlag=1 ").Tables[0]);
687
+            var workOrderListNow = new BLL.T_Bus_WorkOrderReport().DataTableAppealList(DbHelperSQL.Query($"SELECT F_WorkOrderId,F_CreateUser FROM T_Bus_WorkOrder WHERE  datediff(s, '{start}', F_CreateTime) > 0  and   datediff(s, '{end}', F_CreateTime) < 0  and F_IsDelete = 0 AND F_WorkOrderId IS NOT NULL").Tables[0]);
688
+            var workOrderListLast = new BLL.T_Bus_WorkOrderReport().DataTableAppealList(DbHelperSQL.Query($"SELECT F_WorkOrderId,F_CreateUser FROM T_Bus_WorkOrder WHERE  datediff(s, '{lastStart}', F_CreateTime) > 0  and   datediff(s, '{lastEnd}', F_CreateTime) < 0  and F_IsDelete = 0 AND F_WorkOrderId IS NOT NULL").Tables[0]);
689
+            var workOrderListLastYear = new BLL.T_Bus_WorkOrderReport().DataTableAppealList(DbHelperSQL.Query($"SELECT F_WorkOrderId,F_CreateUser FROM T_Bus_WorkOrder WHERE  datediff(s, '{lastYearStart}', F_CreateTime) > 0  and   datediff(s, '{lastYearEnd}', F_CreateTime) < 0  and F_IsDelete = 0 AND F_WorkOrderId IS NOT NULL").Tables[0]);
690
+            List<AppealDto> list = new List<AppealDto>();
691
+            userList.ForEach(x =>
692
+            {
693
+                var count = workOrderListNow.Where(y => x.F_UserCode == y.UserCode).ToList().Count();
694
+                var lastCount = workOrderListLast.Where(y => x.F_UserCode == y.UserCode).ToList().Count();
695
+                var lastYearCount = workOrderListLastYear.Where(y => x.F_UserCode == y.UserCode).ToList().Count();
696
+                list.Add(new AppealDto
697
+                {
698
+                    name = x.F_UserName,
699
+                    count = count,
700
+                    mom = lastCount == 0 ? "0%" : count == 0 ? "0%" : ((double)count / lastCount * 100).ToString("f2") + "%",
701
+                    yoy = lastYearCount == 0 ? "0%" : count == 0 ? "0%" : ((double)count / lastYearCount * 100).ToString("f2") + "%"
702
+                });
703
+            });
704
+            if (isExport)
705
+            {
706
+                var dt = list.ToDataTable(new string[] { "name", "count", "mom", "yoy" });
707
+                new NPOIHelper().ExportToExcel($"诉求受理对比{Convert.ToDateTime(start).ToString("yyyyMMdd")}-{Convert.ToDateTime(end).ToString("yyyyMMdd")}", dt, new string[] { "坐席名称", "受理数量", "上月环比", "去年同期同比" });
708
+                return Success("导出excel");
709
+            }
710
+            return Content(new
711
+            {
712
+                rows = list.Skip((pageIndex - 1) * pageSize).Take(pageSize),
713
+                total = list.Count
714
+            }.ToJson());
715
+        }
667 716
 
668 717
         /// <summary>
669 718
         /// 工单周报

+ 21 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Models/Dto/WorkOrderReportDto.cs

@@ -282,4 +282,25 @@ namespace CallCenterApi.Interface.Models.Dto
282 282
         public string noticerate { get; set; }
283 283
 
284 284
     }
285
+
286
+    public class AppealDto
287
+    {
288
+        /// <summary>
289
+        /// 坐席名称
290
+        /// </summary>
291
+        public string name { get; set; }
292
+        /// <summary>
293
+        /// 坐席处理工单数量
294
+        /// </summary>
295
+        public int count { get; set; }
296
+        /// <summary>
297
+        /// 上月环比
298
+        /// </summary>
299
+        public string mom { get; set; }
300
+        /// <summary>
301
+        /// 去年同期同比
302
+        /// </summary>
303
+        public string yoy { get; set; }
304
+
305
+    }
285 306
 }

+ 4 - 0
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Models/Filter/FilterCallPlan.cs

@@ -12,6 +12,10 @@ namespace CallCenterApi.Interface.Models.Filter
12 12
         /// 任务名称
13 13
         /// </summary>
14 14
         public string Name { get; set; }
15
+        /// <summary>
16
+        /// 分类Id
17
+        /// </summary>
18
+        public int CategoryId { get; set; } = 0;
15 19
 
16 20
     }
17 21
 }

+ 5 - 5
CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Models/Input/CallPlanInput.cs

@@ -26,7 +26,7 @@ namespace CallCenterApi.Interface.Models.Input
26 26
         /// <summary>
27 27
         /// 并发数/进号速率
28 28
         /// </summary>
29
-        public float Concurrency { get; set; } = 0;
29
+        public float Concurrency { get; set; } = 10;
30 30
         /// <summary>
31 31
         /// 坐席组Id
32 32
         /// </summary>
@@ -54,19 +54,19 @@ namespace CallCenterApi.Interface.Models.Input
54 54
         /// <summary>
55 55
         /// 生效开始时间段1
56 56
         /// </summary>
57
-        public DateTime StartTime1 { get; set; }
57
+        public DateTime? StartTime1 { get; set; }
58 58
         /// <summary>
59 59
         /// 生效结束时间段2
60 60
         /// </summary>
61
-        public DateTime EndTime1 { get; set; }
61
+        public DateTime? EndTime1 { get; set; }
62 62
         /// <summary>
63 63
         /// 生效开始时间段2
64 64
         /// </summary>
65
-        public DateTime StartTime2 { get; set; }
65
+        public DateTime? StartTime2 { get; set; }
66 66
         /// <summary>
67 67
         /// 生效结束时间段2
68 68
         /// </summary>
69
-        public DateTime EndTime2 { get; set; }
69
+        public DateTime? EndTime2 { get; set; }
70 70
         /// <summary>
71 71
         /// 导入类型
72 72
         /// </summary>

+ 22 - 0
CallCenterApi/CallCenterApi.Model/T_Bus_WorkOrderReport.cs

@@ -35,4 +35,26 @@ namespace CallCenterApi.Model
35 35
         public bool IsOverdue { get; set; }
36 36
         public bool IsSatisfie { get; set; }
37 37
     }
38
+
39
+    public class AppealReport
40
+    {
41
+        public string WorkOrderId { get; set; }
42
+        public string UserCode { get; set; }
43
+        ///// <summary>
44
+        ///// 坐席Code
45
+        ///// </summary>
46
+        //public string AccountCode { get; set; }
47
+        ///// <summary>
48
+        ///// 处理工单数量
49
+        ///// </summary>
50
+        //public int count { get; set; }
51
+        ///// <summary>
52
+        ///// 上个月环比
53
+        ///// </summary>
54
+        //public int MoM { get; set; }
55
+        ///// <summary>
56
+        ///// 去年同期同比
57
+        ///// </summary>
58
+        //public bool YoY { get; set; }
59
+    }
38 60
 }

+ 4 - 4
CallCenterApi/CallCenterApi.Model/T_CTI_Task.cs

@@ -70,19 +70,19 @@ namespace CallCenterApi.Model
70 70
         /// <summary>
71 71
         /// 生效开始时间段1
72 72
         /// </summary>
73
-        public DateTime StartTime1 { get; set; }
73
+        public DateTime? StartTime1 { get; set; }
74 74
         /// <summary>
75 75
         /// 生效结束时间段2
76 76
         /// </summary>
77
-        public DateTime EndTime1 { get; set; }
77
+        public DateTime? EndTime1 { get; set; }
78 78
         /// <summary>
79 79
         /// 生效开始时间段2
80 80
         /// </summary>
81
-        public DateTime StartTime2 { get; set; }
81
+        public DateTime? StartTime2 { get; set; }
82 82
         /// <summary>
83 83
         /// 生效结束时间段2
84 84
         /// </summary>
85
-        public DateTime EndTime2 { get; set; }
85
+        public DateTime? EndTime2 { get; set; }
86 86
 
87 87
         #endregion Model
88 88