瀏覽代碼

调整报表

zhengbingbing 7 年之前
父節點
當前提交
6bcbcb1f38

+ 39 - 9
codegit/CallCenterApi/CallCenterApi.Interface/CallCenterApi.Interface/Controllers/report/CallZuoXiController.cs

@@ -15,7 +15,7 @@ namespace CallCenterApi.Interface.Controllers.report
15 15
         //获取表头
16 16
         public ActionResult GetColumnList()
17 17
         {
18
-            String[] str = { "工号", "姓名", "接听次数", "呼出次数", "通话总时长", "在线时长", "置忙次数", "置忙时长" };
18
+            String[] str = { "工号", "姓名", "接听次数", "呼出次数", "通话总时长", "在线时长", "置忙次数", "置忙时长","满意量","不满意量","满意度" };
19 19
             return Success("获取坐席话务量统计表表头成功", str);
20 20
         }
21 21
         //获取数据
@@ -55,6 +55,9 @@ namespace CallCenterApi.Interface.Controllers.report
55 55
             DataColumn dc6 = new DataColumn("在线时长");
56 56
             DataColumn dc7 = new DataColumn("置忙次数");
57 57
             DataColumn dc8 = new DataColumn("置忙时长");
58
+            DataColumn dc9 = new DataColumn("满意量");
59
+            DataColumn dc10 = new DataColumn("不满意量");
60
+            DataColumn dc11 = new DataColumn("满意度");
58 61
 
59 62
             dtNew.Columns.Add(dc1);
60 63
             dtNew.Columns.Add(dc2);
@@ -64,9 +67,12 @@ namespace CallCenterApi.Interface.Controllers.report
64 67
             dtNew.Columns.Add(dc6);
65 68
             dtNew.Columns.Add(dc7);
66 69
             dtNew.Columns.Add(dc8);
70
+            dtNew.Columns.Add(dc9);
71
+            dtNew.Columns.Add(dc10);
72
+            dtNew.Columns.Add(dc11);
67 73
             #endregion
68 74
 
69
-            
75
+
70 76
             int CallInTotalData = 0;
71 77
             int CallOutTotalData = 0;
72 78
             int CallTotalSummaryTime = 0;
@@ -75,6 +81,9 @@ namespace CallCenterApi.Interface.Controllers.report
75 81
             int CallNoTotalData = 0;
76 82
             int CallNoTotalSummaryTime = 0;
77 83
             var userAccountList = new BLL.T_Sys_UserAccount().GetModelList("F_DeleteFlag=0 AND F_SeatRight=0");
84
+            int evtotal = 0;
85
+            int bmytotal = 0;
86
+            int mytotal = 0;
78 87
             #region 时间搜索
79 88
             string sql = ""; // 呼入
80 89
             string sqlzm = ""; // 置忙
@@ -94,7 +103,7 @@ namespace CallCenterApi.Interface.Controllers.report
94 103
             #endregion
95 104
 
96 105
             #region 根据条件获取所需数据
97
-            DataTable dt = DbHelperSQL.Query("select ISNULL(DATEDIFF(s,TalkStartTime,TalkEndTime),0) as TalkTotalTime,* from View_CallRecordList where  userid in (select F_UserId from T_Sys_UserAccount where F_DeleteFlag=0 AND F_SeatRight=0) and CallState=1" + sql).Tables[0];
106
+            DataTable dt = DbHelperSQL.Query("select ISNULL(DATEDIFF(s,TalkStartTime,TalkEndTime),0) as TalkTotalTime,isnull(MYD,0) as myds,* from View_CallRecordList where  userid in (select F_UserId from T_Sys_UserAccount where F_DeleteFlag=0 AND F_SeatRight=0) and CallState=1" + sql).Tables[0];
98 107
 
99 108
             DataTable dtno = DbHelperSQL.Query("select F_OptTime as TalkNoTotalTime,* from T_Sys_CallOptLogs where F_State=2 and F_OptBy in (select F_UserId from T_Sys_UserAccount where F_DeleteFlag=0 AND F_SeatRight=0)" + sqlzm).Tables[0];
100 109
 
@@ -121,6 +130,17 @@ namespace CallCenterApi.Interface.Controllers.report
121 130
                 //置忙时长
122 131
                 int CallNoTotalTime = dtno.AsEnumerable().Where(dr => dr.Field<int>("F_OptBy") == item.F_UserId).Sum(dri => dri.Field<int>("TalkNoTotalTime"));
123 132
                 CallNoTotalSummaryTime += CallNoTotalTime;
133
+                //评价量
134
+                int evcount= dt.AsEnumerable().Where(dr => dr.Field<int>("myds") >0).Count(dr => dr.Field<int>("userid") == item.F_UserId);
135
+                evtotal += evcount;
136
+                //满意量
137
+                int mycount = dt.AsEnumerable().Where(dr => dr.Field<int>("myds") > 0 && dr.Field<int>("myds") < 3).Count(dr => dr.Field<int>("userid") == item.F_UserId);
138
+                int bmycount = dt.AsEnumerable().Where(dr => dr.Field<int>("myds") == 3).Count(dr => dr.Field<int>("userid") == item.F_UserId);
139
+                mytotal += mycount;
140
+                bmytotal += bmycount;
141
+                decimal myd = 0;
142
+                if (evcount > 0)
143
+                    myd = (mycount / (decimal)evcount * 100);
124 144
                 #endregion
125 145
                 #region 数据提交到dt
126 146
                 DataRow drNew = dtNew.NewRow();
@@ -128,10 +148,13 @@ namespace CallCenterApi.Interface.Controllers.report
128 148
                 drNew["姓名"] = item.F_UserName;
129 149
                 drNew["接听次数"] = CallInNum;
130 150
                 drNew["呼出次数"] = CallOutNum;
131
-                drNew["通话总时长"] = DateTimeConvert.parseTimeSeconds(CallTotalTime, 1);
132
-                drNew["在线时长"] = DateTimeConvert.parseTimeSeconds(SummaryOnlineTime, 1);
151
+                drNew["通话总时长"] = DateTimeConvert.parseSecondsToHour(CallTotalTime, 0);
152
+                drNew["在线时长"] = DateTimeConvert.parseSecondsToHour(SummaryOnlineTime, 0);
133 153
                 drNew["置忙次数"] = CallNoNum;
134
-                drNew["置忙时长"] = DateTimeConvert.parseTimeSeconds(CallNoTotalTime, 1);
154
+                drNew["置忙时长"] = DateTimeConvert.parseSecondsToHour(CallNoTotalTime, 0);
155
+                drNew["满意量"] = mycount;
156
+                drNew["不满意量"] = bmycount;
157
+                drNew["满意度"] = Math.Round(myd, 2).ToString() + "%";
135 158
                 dtNew.Rows.Add(drNew);
136 159
                 #endregion
137 160
             }
@@ -142,10 +165,17 @@ namespace CallCenterApi.Interface.Controllers.report
142 165
             drtotal["姓名"] = "";
143 166
             drtotal["接听次数"] = CallInTotalData;
144 167
             drtotal["呼出次数"] = CallOutTotalData;
145
-            drtotal["通话总时长"] = DateTimeConvert.parseTimeSeconds(CallTotalSummaryTime, 1);
146
-            drtotal["在线时长"] = DateTimeConvert.parseTimeSeconds(SummaryOnlineTotalTime, 1);
168
+            drtotal["通话总时长"] = DateTimeConvert.parseSecondsToHour(CallTotalSummaryTime, 0);
169
+            drtotal["在线时长"] = DateTimeConvert.parseSecondsToHour(SummaryOnlineTotalTime, 0);
147 170
             drtotal["置忙次数"] = CallNoTotalData;
148
-            drtotal["置忙时长"] = DateTimeConvert.parseTimeSeconds(CallNoTotalSummaryTime, 1);
171
+            drtotal["置忙时长"] = DateTimeConvert.parseSecondsToHour(CallNoTotalSummaryTime, 0);
172
+
173
+            drtotal["满意量"] = mytotal;
174
+            drtotal["不满意量"] = bmytotal;
175
+            decimal myds = 0;
176
+            if (evtotal > 0)
177
+                myds = (mytotal / (decimal)evtotal * 100);
178
+            drtotal["满意度"] = Math.Round(myds, 2).ToString() + "%";
149 179
             dtNew.Rows.Add(drtotal);
150 180
             #endregion
151 181
             

+ 34 - 0
codegit/CallCenterCommon/CallCenter.Utility/Time/DateTimeConvert.cs

@@ -200,6 +200,40 @@ namespace CallCenter.Utility
200 200
         }
201 201
 
202 202
         /// <summary>
203
+        /// 由秒数转为小时
204
+        /// </summary>
205
+        ///<param name="t">秒数</param>
206
+        ///<param name="type">0:转换后小数点后两位,1:转换后取整数</param>
207
+        /// <returns></returns>
208
+        public static string parseSecondsToHour(int t,int type)
209
+        {
210
+            string r = "";
211
+            int hour, minute, second;
212
+            if (t >= 3600)//时,
213
+            {
214
+                hour = Convert.ToInt16(t / 3600);
215
+                minute = Convert.ToInt16((t % 3600) / 60);
216
+                second = Convert.ToInt16(t % 3600 % 60);
217
+                if (type == 0)
218
+                    r = hour + ("小时") + minute + ("分") + second + ("秒");
219
+                else
220
+                    r = hour + ("小时") + minute + ("分");
221
+            }
222
+            else if (t >= 60)//分
223
+            {
224
+                minute = Convert.ToInt16(t / 60);
225
+                second = Convert.ToInt16(t % 60);
226
+                r = minute + ("分") + second + ("秒");
227
+            }
228
+            else
229
+            {
230
+                second = Convert.ToInt16(t);
231
+                r = second + ("秒");
232
+            }
233
+            return r;
234
+        }
235
+
236
+        /// <summary>
203 237
         /// 当前日期时间,转换为秒
204 238
         /// </summary>
205 239
         /// <returns>秒数</returns>