zhengbingbing 7 vuotta sitten
vanhempi
commit
6bcbcb1f38

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

15
         //获取表头
15
         //获取表头
16
         public ActionResult GetColumnList()
16
         public ActionResult GetColumnList()
17
         {
17
         {
18
-            String[] str = { "工号", "姓名", "接听次数", "呼出次数", "通话总时长", "在线时长", "置忙次数", "置忙时长" };
18
+            String[] str = { "工号", "姓名", "接听次数", "呼出次数", "通话总时长", "在线时长", "置忙次数", "置忙时长","满意量","不满意量","满意度" };
19
             return Success("获取坐席话务量统计表表头成功", str);
19
             return Success("获取坐席话务量统计表表头成功", str);
20
         }
20
         }
21
         //获取数据
21
         //获取数据
55
             DataColumn dc6 = new DataColumn("在线时长");
55
             DataColumn dc6 = new DataColumn("在线时长");
56
             DataColumn dc7 = new DataColumn("置忙次数");
56
             DataColumn dc7 = new DataColumn("置忙次数");
57
             DataColumn dc8 = new DataColumn("置忙时长");
57
             DataColumn dc8 = new DataColumn("置忙时长");
58
+            DataColumn dc9 = new DataColumn("满意量");
59
+            DataColumn dc10 = new DataColumn("不满意量");
60
+            DataColumn dc11 = new DataColumn("满意度");
58
 
61
 
59
             dtNew.Columns.Add(dc1);
62
             dtNew.Columns.Add(dc1);
60
             dtNew.Columns.Add(dc2);
63
             dtNew.Columns.Add(dc2);
64
             dtNew.Columns.Add(dc6);
67
             dtNew.Columns.Add(dc6);
65
             dtNew.Columns.Add(dc7);
68
             dtNew.Columns.Add(dc7);
66
             dtNew.Columns.Add(dc8);
69
             dtNew.Columns.Add(dc8);
70
+            dtNew.Columns.Add(dc9);
71
+            dtNew.Columns.Add(dc10);
72
+            dtNew.Columns.Add(dc11);
67
             #endregion
73
             #endregion
68
 
74
 
69
-            
75
+
70
             int CallInTotalData = 0;
76
             int CallInTotalData = 0;
71
             int CallOutTotalData = 0;
77
             int CallOutTotalData = 0;
72
             int CallTotalSummaryTime = 0;
78
             int CallTotalSummaryTime = 0;
75
             int CallNoTotalData = 0;
81
             int CallNoTotalData = 0;
76
             int CallNoTotalSummaryTime = 0;
82
             int CallNoTotalSummaryTime = 0;
77
             var userAccountList = new BLL.T_Sys_UserAccount().GetModelList("F_DeleteFlag=0 AND F_SeatRight=0");
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
             #region 时间搜索
87
             #region 时间搜索
79
             string sql = ""; // 呼入
88
             string sql = ""; // 呼入
80
             string sqlzm = ""; // 置忙
89
             string sqlzm = ""; // 置忙
94
             #endregion
103
             #endregion
95
 
104
 
96
             #region 根据条件获取所需数据
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
             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];
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
                 //置忙时长
130
                 //置忙时长
122
                 int CallNoTotalTime = dtno.AsEnumerable().Where(dr => dr.Field<int>("F_OptBy") == item.F_UserId).Sum(dri => dri.Field<int>("TalkNoTotalTime"));
131
                 int CallNoTotalTime = dtno.AsEnumerable().Where(dr => dr.Field<int>("F_OptBy") == item.F_UserId).Sum(dri => dri.Field<int>("TalkNoTotalTime"));
123
                 CallNoTotalSummaryTime += CallNoTotalTime;
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
                 #endregion
144
                 #endregion
125
                 #region 数据提交到dt
145
                 #region 数据提交到dt
126
                 DataRow drNew = dtNew.NewRow();
146
                 DataRow drNew = dtNew.NewRow();
128
                 drNew["姓名"] = item.F_UserName;
148
                 drNew["姓名"] = item.F_UserName;
129
                 drNew["接听次数"] = CallInNum;
149
                 drNew["接听次数"] = CallInNum;
130
                 drNew["呼出次数"] = CallOutNum;
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
                 drNew["置忙次数"] = CallNoNum;
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
                 dtNew.Rows.Add(drNew);
158
                 dtNew.Rows.Add(drNew);
136
                 #endregion
159
                 #endregion
137
             }
160
             }
142
             drtotal["姓名"] = "";
165
             drtotal["姓名"] = "";
143
             drtotal["接听次数"] = CallInTotalData;
166
             drtotal["接听次数"] = CallInTotalData;
144
             drtotal["呼出次数"] = CallOutTotalData;
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
             drtotal["置忙次数"] = CallNoTotalData;
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
             dtNew.Rows.Add(drtotal);
179
             dtNew.Rows.Add(drtotal);
150
             #endregion
180
             #endregion
151
             
181
             

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

200
         }
200
         }
201
 
201
 
202
         /// <summary>
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
         /// </summary>
238
         /// </summary>
205
         /// <returns>秒数</returns>
239
         /// <returns>秒数</returns>