|
|
@@ -12,25 +12,20 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
12
|
12
|
{
|
|
13
|
13
|
public class ZuoXiWorkTotalController : BaseController
|
|
14
|
14
|
{
|
|
|
15
|
+ private readonly BLL.T_Sys_UserAccount userAccountBLL = new BLL.T_Sys_UserAccount();
|
|
|
16
|
+ private List<string> str = new List<string>() { "公司","部门", "坐席工号", "坐席姓名", "角色", "固话号码",
|
|
|
17
|
+ "呼入电话数", "接通量", "接通率", "呼入通话分钟数",
|
|
|
18
|
+ "呼出电话数", "呼通量", "呼通率", "呼出通话分钟数",
|
|
|
19
|
+ "坐席登录次数", "登录时长分钟数", "工作时长分钟数", "平均每天工作小时数", "休息时长分钟数", "质检平均成绩"
|
|
|
20
|
+ };
|
|
|
21
|
+
|
|
15
|
22
|
//坐席工作统计
|
|
16
|
23
|
//获取表头
|
|
17
|
24
|
public ActionResult GetColumnList()
|
|
18
|
25
|
{
|
|
19
|
26
|
ActionResult res = NoToken("未知错误,请重新登录");
|
|
20
|
27
|
|
|
21
|
|
- //String[] str = { "部门", "坐席", "坐席工号","角色" ,"呼入电话数", "坐席接通量", "呼损量"
|
|
22
|
|
- // ,"接通率","呼损率","平均排队时间","接听通话次数","通话分钟数","通话秒数"
|
|
23
|
|
- // ,"平均接听通话秒数","平均振铃秒数","呼入占有率","用户评价","坐席登录次数"
|
|
24
|
|
- // ,"登录时长分钟数","工作时长分钟数","平均每天工作时长(小时)","平均操作分钟数"
|
|
25
|
|
- // ,"置忙次数","休息时长分钟数","平均每天休息时长(小时)"
|
|
26
|
|
- // ,"置忙平均休息分钟数","质检平均成绩"
|
|
27
|
|
- // };
|
|
28
|
28
|
|
|
29
|
|
- string[] str = { "公司","部门", "坐席工号", "坐席姓名", "角色", "固话号码",
|
|
30
|
|
- "呼入电话数", "接通量", "接通率", "呼入通话分钟数",
|
|
31
|
|
- "呼出电话数", "呼通量", "呼通率", "呼出通话分钟数",
|
|
32
|
|
- "坐席登录次数", "登录时长分钟数", "工作时长分钟数", "平均每天工作时长(小时)", "休息时长分钟数", "质检平均成绩"
|
|
33
|
|
- };
|
|
34
|
29
|
res = Success("获取坐席工作统计表头成功", str);
|
|
35
|
30
|
|
|
36
|
31
|
return res;
|
|
|
@@ -43,364 +38,30 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
43
|
38
|
|
|
44
|
39
|
DataTable dtNew = new DataTable();
|
|
45
|
40
|
dtNew = getData(stime, endtime, dpt, dayss, usercode, extensionnumber);
|
|
46
|
|
- #region
|
|
47
|
|
- //#region
|
|
48
|
|
- //DataColumn dc1 = new DataColumn("部门");
|
|
49
|
|
- //DataColumn dc2 = new DataColumn("坐席");
|
|
50
|
|
- //DataColumn dc3 = new DataColumn("坐席工号");
|
|
51
|
|
- //DataColumn dc4 = new DataColumn("呼入电话数");
|
|
52
|
|
- //DataColumn dc5 = new DataColumn("坐席接通量");
|
|
53
|
|
- //DataColumn dc6 = new DataColumn("呼损量");
|
|
54
|
|
- //DataColumn dc7 = new DataColumn("接通率");
|
|
55
|
|
- //DataColumn dc8 = new DataColumn("呼损率");
|
|
56
|
|
- //DataColumn dc9 = new DataColumn("平均排队时间");
|
|
57
|
|
- //DataColumn dc10 = new DataColumn("接听通话次数");
|
|
58
|
|
- //DataColumn dc11 = new DataColumn("通话分钟数");
|
|
59
|
|
- //DataColumn dc12 = new DataColumn("通话秒数");
|
|
60
|
|
- //DataColumn dc13 = new DataColumn("平均接听通话秒数");
|
|
61
|
|
- //DataColumn dc14 = new DataColumn("平均振铃秒数");
|
|
62
|
|
- //DataColumn dc15 = new DataColumn("呼入占有率");
|
|
63
|
|
- //DataColumn dc16 = new DataColumn("用户评价");
|
|
64
|
|
- //DataColumn dc17 = new DataColumn("坐席登录次数");
|
|
65
|
|
- //DataColumn dc18 = new DataColumn("登录时长分钟数");
|
|
66
|
|
- //DataColumn dc19 = new DataColumn("工作时长分钟数");
|
|
67
|
|
- //DataColumn dc20 = new DataColumn("平均每天工作时长");
|
|
68
|
|
- //DataColumn dc21 = new DataColumn("平均操作分钟数");
|
|
69
|
|
- //DataColumn dc22 = new DataColumn("置忙次数");
|
|
70
|
|
- //DataColumn dc23 = new DataColumn("休息时长分钟数");
|
|
71
|
|
- //DataColumn dc24 = new DataColumn("平均每天休息时长");
|
|
72
|
|
- //DataColumn dc25 = new DataColumn("置忙平均休息分钟数");
|
|
73
|
|
- //DataColumn dc26 = new DataColumn("质检平均成绩");
|
|
74
|
|
-
|
|
75
|
|
- //dtNew.Columns.Add(dc1);
|
|
76
|
|
- //dtNew.Columns.Add(dc2);
|
|
77
|
|
- //dtNew.Columns.Add(dc3);
|
|
78
|
|
- //dtNew.Columns.Add(dc4);
|
|
79
|
|
- //dtNew.Columns.Add(dc5);
|
|
80
|
|
- //dtNew.Columns.Add(dc6);
|
|
81
|
|
- //dtNew.Columns.Add(dc7);
|
|
82
|
|
- //dtNew.Columns.Add(dc8);
|
|
83
|
|
- //dtNew.Columns.Add(dc9);
|
|
84
|
|
- //dtNew.Columns.Add(dc10);
|
|
85
|
|
- //dtNew.Columns.Add(dc11);
|
|
86
|
|
- //dtNew.Columns.Add(dc12);
|
|
87
|
|
- //dtNew.Columns.Add(dc13);
|
|
88
|
|
- //dtNew.Columns.Add(dc14);
|
|
89
|
|
- //dtNew.Columns.Add(dc15);
|
|
90
|
|
- //dtNew.Columns.Add(dc16);
|
|
91
|
|
- //dtNew.Columns.Add(dc17);
|
|
92
|
|
- //dtNew.Columns.Add(dc18);
|
|
93
|
|
- //dtNew.Columns.Add(dc19);
|
|
94
|
|
- //dtNew.Columns.Add(dc20);
|
|
95
|
|
- //dtNew.Columns.Add(dc21);
|
|
96
|
|
- //dtNew.Columns.Add(dc22);
|
|
97
|
|
- //dtNew.Columns.Add(dc23);
|
|
98
|
|
- //dtNew.Columns.Add(dc24);
|
|
99
|
|
- //dtNew.Columns.Add(dc25);
|
|
100
|
|
- //dtNew.Columns.Add(dc26);
|
|
101
|
|
- //#endregion
|
|
102
|
|
- //int days = 30;
|
|
103
|
|
- //string sqltimeCallRecords = "";
|
|
104
|
|
- //string strsqlcall = "";
|
|
105
|
|
- //if (stime != null && stime.Trim() != "")
|
|
106
|
|
- //{
|
|
107
|
|
- // sqltimeCallRecords += " and CONVERT(varchar , TimeAlerting, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
|
|
108
|
|
- // strsqlcall += " and CONVERT(varchar , BeginTime, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
|
|
109
|
|
- //}
|
|
110
|
|
- //if (endtime != null && endtime.Trim() != "")
|
|
111
|
|
- //{
|
|
112
|
|
- // sqltimeCallRecords += " and CONVERT(varchar , TimeAlerting, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
|
|
113
|
|
- // strsqlcall += " and CONVERT(varchar , BeginTime, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
|
|
114
|
|
- //}
|
|
115
|
|
- //if (dayss != null && dayss.Trim() != "")
|
|
116
|
|
- //{
|
|
117
|
|
- // days = int.Parse(dayss.Trim());
|
|
118
|
|
- //}
|
|
119
|
|
- //#region
|
|
120
|
|
- //int ijtcs = 0;//接听通话次数
|
|
121
|
|
- //int ithms = 0;//通话秒数
|
|
122
|
|
- //int izlms = 0;//振铃秒数
|
|
123
|
|
- //int ipjjtms = 0;//平均接听秒数
|
|
124
|
|
- //int ipjzlms = 0;//平均振铃秒数
|
|
125
|
|
- //double ihrzyl = 0.00;//呼入占有率
|
|
126
|
|
- //int izxdlcs = 0;//坐席登录次数
|
|
127
|
|
- //int idlsc = 0;//登录时长
|
|
128
|
|
- //int iWorktime = 0;//工作时长
|
|
129
|
|
- //int izmcs = 0;//置忙次数
|
|
130
|
|
- //int ixxsc = 0;//休息时长
|
|
131
|
|
- //int ipjczsc = 0;//平均操作时长
|
|
132
|
|
- //int ipjzmxxsc = 0;//平均置忙休息时长
|
|
133
|
|
-
|
|
134
|
|
-
|
|
135
|
|
- //int itrunkct = 0;//总数
|
|
136
|
|
- //int itrunkjj = 0;//总接听
|
|
137
|
|
- //int itrunkhs = 0;//呼损量
|
|
138
|
|
- //int itrunkpjsc = 0;//平均排队时间
|
|
139
|
|
- //double itrunkjtl = 0.00;//接通率
|
|
140
|
|
- //double itrunkhsl = 0.00;//互损率
|
|
141
|
|
- //double itrunkpjpd = 0.00;//平均排队
|
|
142
|
|
- //#endregion
|
|
143
|
|
- //DataTable dtdpt = null;
|
|
144
|
|
- //if (dpt != null && dpt.Trim() != "")
|
|
145
|
|
- //{
|
|
146
|
|
- // dtdpt = DbHelperSQL.Query("select F_DeptId,F_DeptName,F_Remark from T_Sys_Department where F_ParentId!=0 and F_DeptId=" + dpt).Tables[0];
|
|
147
|
|
- //}
|
|
148
|
|
- //else
|
|
149
|
|
- //{
|
|
150
|
|
- // dtdpt = DbHelperSQL.Query("select F_DeptId,F_DeptName,F_Remark from T_Sys_Department where F_ParentId!=0").Tables[0];
|
|
151
|
|
- //}
|
|
152
|
|
- //if (dtdpt != null && dtdpt.Rows.Count > 0)
|
|
153
|
|
- //{
|
|
154
|
|
- // foreach (DataRow dr in dtdpt.Rows)
|
|
155
|
|
- // {
|
|
156
|
|
- // DataTable dt = new DataTable();
|
|
157
|
|
- // string sql = "SELECT F_UserCode,F_UserName,F_WorkNumber,F_UserId FROM T_Sys_UserAccount where f_seatFlag=1 and F_DeptId=" + dr["F_DeptId"] + " and F_WorkNumber!='' order by F_WorkNumber asc";
|
|
158
|
|
- // dt = DbHelperSQL.Query(sql).Tables[0];
|
|
159
|
|
- // for (int i = 0; i < dt.Rows.Count; i++)
|
|
160
|
|
- // {
|
|
161
|
|
- // if (!string.IsNullOrEmpty(dt.Rows[i]["F_WorkNumber"].ToString()))
|
|
162
|
|
- // {
|
|
163
|
|
- // DataRow drNew = dtNew.NewRow();
|
|
164
|
|
- // drNew["部门"] = dr["F_DeptName"].ToString();
|
|
165
|
|
- // drNew["坐席"] = dt.Rows[i]["F_UserName"].ToString();
|
|
166
|
|
- // drNew["坐席工号"] = dt.Rows[i]["F_WorkNumber"].ToString();
|
|
167
|
|
- // if (i == 0)
|
|
168
|
|
- // {//呼入电话
|
|
169
|
|
-
|
|
170
|
|
- // string strsql = "";
|
|
171
|
|
- // if (stime != null && stime.Trim() != "")
|
|
172
|
|
- // {
|
|
173
|
|
- // strsql += " and CONVERT(varchar , TimeCallIn, 120)>=CONVERT(varchar , '" + stime.Trim() + " 00:00:01', 120) ";
|
|
174
|
|
- // }
|
|
175
|
|
- // if (endtime != null && endtime.Trim() != "")
|
|
176
|
|
- // {
|
|
177
|
|
- // strsql += " and CONVERT(varchar , TimeCallIn, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
|
|
178
|
|
- // }
|
|
179
|
|
-
|
|
180
|
|
- // 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];
|
|
181
|
|
- // 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];
|
|
182
|
|
-
|
|
183
|
|
- // if (dtcall != null && dtcall.Rows.Count > 0)
|
|
184
|
|
- // {
|
|
185
|
|
- // if (dtcall.Rows[0]["ct"].ToString() != "")
|
|
186
|
|
- // {
|
|
187
|
|
- // itrunkct = int.Parse(dtcall.Rows[0]["ct"].ToString());
|
|
188
|
|
- // }
|
|
189
|
|
- // else
|
|
190
|
|
- // {
|
|
191
|
|
- // itrunkct = 0;
|
|
192
|
|
- // }
|
|
193
|
|
- // if (dtcall.Rows[0]["jt"].ToString() != "")
|
|
194
|
|
- // {
|
|
195
|
|
- // itrunkjj = int.Parse(dtcall.Rows[0]["jt"].ToString());
|
|
196
|
|
- // }
|
|
197
|
|
- // else
|
|
198
|
|
- // {
|
|
199
|
|
- // itrunkjj = 0;
|
|
200
|
|
- // }
|
|
201
|
|
- // if (dtTrunk.Rows.Count > 0 && dtTrunk.Rows[0]["dd"].ToString() != "")
|
|
202
|
|
- // {
|
|
203
|
|
- // itrunkpjsc = int.Parse(dtTrunk.Rows[0]["dd"].ToString());
|
|
204
|
|
- // }
|
|
205
|
|
- // else
|
|
206
|
|
- // {
|
|
207
|
|
- // itrunkpjsc = 0;
|
|
208
|
|
- // }
|
|
209
|
|
- // }
|
|
210
|
|
- // itrunkhs = itrunkct - itrunkjj;
|
|
211
|
|
- // if (itrunkct != 0)
|
|
212
|
|
- // {
|
|
213
|
|
- // itrunkjtl = itrunkjj / double.Parse(itrunkct.ToString());
|
|
214
|
|
- // itrunkhsl = itrunkhs / double.Parse(itrunkct.ToString());
|
|
215
|
|
- // itrunkpjpd = itrunkpjsc / double.Parse(itrunkct.ToString());
|
|
216
|
|
- // }
|
|
217
|
|
- // else
|
|
218
|
|
- // {
|
|
219
|
|
- // itrunkjtl = 0.00;
|
|
220
|
|
- // itrunkhsl = 0.00;
|
|
221
|
|
- // itrunkpjpd = 0.00;
|
|
222
|
|
- // }
|
|
223
|
|
- // drNew["呼入电话数"] = itrunkct;
|
|
224
|
|
- // drNew["坐席接通量"] = itrunkjj;
|
|
225
|
|
- // drNew["呼损量"] = itrunkhs;
|
|
226
|
|
- // drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%";
|
|
227
|
|
- // drNew["呼损率"] = (itrunkhsl * 100).ToString("0.00") + "%";
|
|
228
|
|
- // drNew["平均排队时间"] = itrunkpjpd.ToString("0.00");
|
|
229
|
|
-
|
|
230
|
|
- // }
|
|
231
|
|
- // else
|
|
232
|
|
- // {
|
|
233
|
|
- // drNew["呼入电话数"] = "0";
|
|
234
|
|
- // drNew["坐席接通量"] = "0";
|
|
235
|
|
- // drNew["呼损量"] = "0";
|
|
236
|
|
- // drNew["接通率"] = "0.00" + "%";
|
|
237
|
|
- // drNew["呼损率"] = "0.00" + "%";
|
|
238
|
|
- // drNew["平均排队时间"] = "0.00";
|
|
239
|
|
- // }
|
|
240
|
|
-
|
|
241
|
|
-
|
|
242
|
|
- // 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];
|
|
243
|
|
- // 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];
|
|
244
|
|
- // if (dtCallEvey != null && dtCallEvey.Rows.Count > 0)
|
|
245
|
|
- // {
|
|
246
|
|
- // if (dtCallEvey.Rows[0]["ct"].ToString() != "")
|
|
247
|
|
- // {
|
|
248
|
|
- // ijtcs = int.Parse(dtCallEvey.Rows[0]["ct"].ToString());//接听次数
|
|
249
|
|
- // }
|
|
250
|
|
- // else
|
|
251
|
|
- // {
|
|
252
|
|
- // ijtcs = 0;
|
|
253
|
|
- // }
|
|
254
|
|
- // if (dtCallEvey.Rows[0]["sc"].ToString() != "")
|
|
255
|
|
- // {
|
|
256
|
|
- // ithms = int.Parse(dtCallEvey.Rows[0]["sc"].ToString());//通话秒数
|
|
257
|
|
- // }
|
|
258
|
|
- // else
|
|
259
|
|
- // {
|
|
260
|
|
- // ithms = 0;
|
|
261
|
|
- // }
|
|
262
|
|
- // if (dtext.Rows[0]["pa"].ToString() != "")
|
|
263
|
|
- // {
|
|
264
|
|
- // izlms = int.Parse(dtext.Rows[0]["pa"].ToString());//振铃秒数
|
|
265
|
|
- // }
|
|
266
|
|
- // else
|
|
267
|
|
- // {
|
|
268
|
|
- // izlms = 0;
|
|
269
|
|
- // }
|
|
270
|
|
- // }
|
|
271
|
|
- // drNew["接听通话次数"] = ijtcs.ToString();
|
|
272
|
|
- // drNew["通话分钟数"] = (ithms / 60).ToString();
|
|
273
|
|
- // drNew["通话秒数"] = ithms.ToString();
|
|
274
|
|
-
|
|
275
|
|
- // if (ijtcs != 0)
|
|
276
|
|
- // {
|
|
277
|
|
- // ipjjtms = ithms / ijtcs;//平均接通秒数
|
|
278
|
|
- // ipjzlms = izlms / ijtcs;//平均振铃秒数
|
|
279
|
|
- // }
|
|
280
|
|
- // else
|
|
281
|
|
- // {
|
|
282
|
|
- // ipjjtms = 0;//平均接通秒数
|
|
283
|
|
- // ipjzlms = 0;//平均振铃秒数
|
|
284
|
|
- // }
|
|
285
|
|
- // drNew["平均接听通话秒数"] = ipjjtms.ToString();
|
|
286
|
|
- // drNew["平均振铃秒数"] = ipjzlms.ToString();
|
|
287
|
|
-
|
|
288
|
|
- // //坐席登录次数
|
|
289
|
|
- // 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];
|
|
290
|
|
- // if (dtAgent != null && dtAgent.Rows.Count > 0)
|
|
291
|
|
- // {
|
|
292
|
|
- // if (dtAgent.Rows[0]["dl"] != null && dtAgent.Rows[0]["dl"].ToString() != "")
|
|
293
|
|
- // {
|
|
294
|
|
- // izxdlcs = int.Parse(dtAgent.Rows[0]["dl"].ToString());//登录次数
|
|
295
|
|
- // }
|
|
296
|
|
- // else
|
|
297
|
|
- // {
|
|
298
|
|
- // izxdlcs = 0;
|
|
299
|
|
- // }
|
|
300
|
|
- // if (dtAgent.Rows[0]["dlsc"] != null && dtAgent.Rows[0]["dlsc"].ToString() != "")
|
|
301
|
|
- // {
|
|
302
|
|
- // idlsc = int.Parse(dtAgent.Rows[0]["dlsc"].ToString());//登录时长
|
|
303
|
|
- // }
|
|
304
|
|
- // else
|
|
305
|
|
- // {
|
|
306
|
|
- // idlsc = 0;
|
|
307
|
|
- // }
|
|
308
|
|
- // if (dtAgent.Rows[0]["zm"] != null && dtAgent.Rows[0]["zm"].ToString() != "")
|
|
309
|
|
- // {
|
|
310
|
|
- // izmcs = int.Parse(dtAgent.Rows[0]["zm"].ToString());//置忙次数
|
|
311
|
|
- // }
|
|
312
|
|
- // else
|
|
313
|
|
- // {
|
|
314
|
|
- // izmcs = 0;
|
|
315
|
|
- // }
|
|
316
|
|
- // if (dtAgent.Rows[0]["xx"] != null && dtAgent.Rows[0]["xx"].ToString() != "")
|
|
317
|
|
- // {
|
|
318
|
|
- // ixxsc = int.Parse(dtAgent.Rows[0]["xx"].ToString());//休息时长
|
|
319
|
|
- // }
|
|
320
|
|
- // else
|
|
321
|
|
- // {
|
|
322
|
|
- // ixxsc = 0;
|
|
323
|
|
- // }
|
|
324
|
|
-
|
|
325
|
|
- // }
|
|
326
|
|
- // iWorktime = idlsc - ixxsc;//工作时长
|
|
327
|
|
- // if (izxdlcs != 0)
|
|
328
|
|
- // {
|
|
329
|
|
- // ipjczsc = iWorktime / izxdlcs;//平均操作秒数
|
|
330
|
|
- // }
|
|
331
|
|
- // else
|
|
332
|
|
- // {
|
|
333
|
|
- // ipjczsc = 0;
|
|
334
|
|
- // }
|
|
335
|
|
- // if (izmcs != 0)
|
|
336
|
|
- // {
|
|
337
|
|
- // ipjzmxxsc = ixxsc / izmcs;//置忙平均操作时长
|
|
338
|
|
- // }
|
|
339
|
|
- // else
|
|
340
|
|
- // {
|
|
341
|
|
- // ipjzmxxsc = 0;
|
|
342
|
|
- // }
|
|
343
|
|
-
|
|
344
|
|
- // //呼入占有率
|
|
345
|
|
- // if (iWorktime != 0)
|
|
346
|
|
- // {
|
|
347
|
|
- // ihrzyl = ithms / Convert.ToDouble(iWorktime);
|
|
348
|
|
- // }
|
|
349
|
|
- // else
|
|
350
|
|
- // {
|
|
351
|
|
- // ihrzyl = 0.00;
|
|
352
|
|
- // }
|
|
353
|
|
- // drNew["呼入占有率"] = (ihrzyl * 100).ToString("0.00") + "%";
|
|
354
|
|
- // //用户评价
|
|
355
|
|
-
|
|
356
|
|
- // 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);
|
|
357
|
|
- // string myd = "";
|
|
358
|
|
- // if (obj != null)
|
|
359
|
|
- // {
|
|
360
|
|
- // myd = obj.ToString();
|
|
361
|
|
- // }
|
|
362
|
|
- // drNew["用户评价"] = myd;
|
|
363
|
|
- // drNew["坐席登录次数"] = izxdlcs.ToString();
|
|
364
|
|
- // drNew["登录时长分钟数"] = (idlsc / 60).ToString();
|
|
365
|
|
- // drNew["工作时长分钟数"] = (iWorktime / 60).ToString();
|
|
366
|
|
- // drNew["平均每天工作时长"] = Math.Round((double.Parse(iWorktime.ToString()) / 60 / 60 / days), 2).ToString();
|
|
367
|
|
- // drNew["平均操作分钟数"] = (ipjczsc / 60).ToString();
|
|
368
|
|
- // drNew["置忙次数"] = izmcs.ToString();
|
|
369
|
|
- // drNew["休息时长分钟数"] = (ixxsc / 60).ToString();
|
|
370
|
|
- // drNew["平均每天休息时长"] = Math.Round((double.Parse(ixxsc.ToString()) / 60 / 60 / days), 2).ToString();
|
|
371
|
|
- // drNew["置忙平均休息分钟数"] = (ipjzmxxsc / 60).ToString();
|
|
372
|
|
-
|
|
373
|
|
- // 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);
|
|
374
|
|
- // int zfs = 0;
|
|
375
|
|
- // if (dszj != null && dszj.Tables.Count > 0)
|
|
376
|
|
- // {
|
|
377
|
|
- // DataTable dtzj = dszj.Tables[0];
|
|
378
|
|
- // if (dtzj.Rows.Count > 0 && dtzj.Rows[0]["fs"].ToString() != "" && dtzj.Rows[0]["fsct"].ToString() != "")
|
|
379
|
|
- // {
|
|
380
|
|
- // zfs = Convert.ToInt32(dtzj.Rows[0]["fs"].ToString()) / int.Parse(dtzj.Rows[0]["fsct"].ToString());
|
|
381
|
|
- // }
|
|
382
|
|
- // }
|
|
383
|
|
- // drNew["质检平均成绩"] = zfs.ToString();
|
|
384
|
|
-
|
|
385
|
|
- // dtNew.Rows.Add(drNew);
|
|
386
|
|
- // }
|
|
387
|
|
- // }
|
|
388
|
|
- // }
|
|
389
|
|
- //}
|
|
390
|
|
- #endregion
|
|
391
|
41
|
res = Success("获取坐席工作统计数据成功", dtNew);
|
|
392
|
42
|
|
|
393
|
43
|
return res;
|
|
394
|
44
|
}
|
|
395
|
45
|
|
|
396
|
|
- //导出数据
|
|
397
|
|
- public ActionResult ExptList(string stime, string endtime, string dpt, string dayss)
|
|
|
46
|
+ /// <summary>
|
|
|
47
|
+ /// 导出数据
|
|
|
48
|
+ /// </summary>
|
|
|
49
|
+ /// <param name="stime">开始时间</param>
|
|
|
50
|
+ /// <param name="endtime">结束时间</param>
|
|
|
51
|
+ /// <param name="dpt">部门</param>
|
|
|
52
|
+ /// <param name="dayss">天数</param>
|
|
|
53
|
+ /// <param name="indexs">未选中导出的字段索引数组</param>
|
|
|
54
|
+ /// <returns></returns>
|
|
|
55
|
+ public ActionResult ExptList(string stime, string endtime, string dpt, string dayss, string indexstr = "")
|
|
398
|
56
|
{
|
|
399
|
57
|
ActionResult res = NoToken("未知错误,请重新登录");
|
|
400
|
58
|
if (Request.IsAuthenticated)
|
|
401
|
59
|
{
|
|
402
|
60
|
NPOIHelper npoi = new NPOIHelper();
|
|
403
|
|
- DataTable dt = getData(stime, endtime, dpt, dayss);
|
|
|
61
|
+ List<int> indexs = new List<int>();
|
|
|
62
|
+ if (!string.IsNullOrWhiteSpace(indexstr))
|
|
|
63
|
+ indexs.AddRange(indexstr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().Select(x => Convert.ToInt32(x)));
|
|
|
64
|
+ DataTable dt = getData(stime, endtime, dpt, dayss, "", "", indexs);
|
|
404
|
65
|
if (npoi.ExportToExcel("坐席工作数据", dt) == "")
|
|
405
|
66
|
{
|
|
406
|
67
|
return Success("导出成功");
|
|
|
@@ -413,88 +74,19 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
413
|
74
|
return res;
|
|
414
|
75
|
}
|
|
415
|
76
|
|
|
416
|
|
- private DataTable getData(string stime, string endtime, string dpt, string dayss, string _usercode = "", string extensionnumber = "")
|
|
|
77
|
+ private DataTable getData(string stime, string endtime, string dpt, string dayss, string _usercode = "", string extensionnumber = "", List<int> indexs = null)
|
|
417
|
78
|
{
|
|
418
|
79
|
DataTable dtNew = new DataTable();
|
|
|
80
|
+ var columns = dtNew.Columns;
|
|
419
|
81
|
#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
|
|
- new DataColumn("休息时长分钟数"),
|
|
440
|
|
- new DataColumn("质检平均成绩")
|
|
441
|
|
- });
|
|
442
|
|
-
|
|
443
|
|
- //DataColumn dc1 = new DataColumn("部门");
|
|
444
|
|
- //DataColumn dc2 = new DataColumn("坐席");
|
|
445
|
|
- //DataColumn dc3 = new DataColumn("坐席工号");
|
|
446
|
|
- //DataColumn dc3_ = new DataColumn("角色");
|
|
447
|
|
- //DataColumn dc4 = new DataColumn("呼入电话数");
|
|
448
|
|
- //DataColumn dc5 = new DataColumn("坐席接通量");
|
|
449
|
|
- //DataColumn dc6 = new DataColumn("呼损量");
|
|
450
|
|
- //DataColumn dc7 = new DataColumn("接通率");
|
|
451
|
|
- //DataColumn dc8 = new DataColumn("呼损率");
|
|
452
|
|
- //DataColumn dc9 = new DataColumn("平均排队时间");
|
|
453
|
|
- //DataColumn dc10 = new DataColumn("接听通话次数");
|
|
454
|
|
- //DataColumn dc11 = new DataColumn("通话分钟数");
|
|
455
|
|
- //DataColumn dc12 = new DataColumn("通话秒数");
|
|
456
|
|
- //DataColumn dc13 = new DataColumn("平均接听通话秒数");
|
|
457
|
|
- //DataColumn dc14 = new DataColumn("平均振铃秒数");
|
|
458
|
|
- //DataColumn dc15 = new DataColumn("呼入占有率");
|
|
459
|
|
- //DataColumn dc16 = new DataColumn("用户评价");
|
|
460
|
|
- //DataColumn dc17 = new DataColumn("坐席登录次数");
|
|
461
|
|
- //DataColumn dc18 = new DataColumn("登录时长分钟数");
|
|
462
|
|
- //DataColumn dc19 = new DataColumn("工作时长分钟数");
|
|
463
|
|
- //DataColumn dc20 = new DataColumn("平均每天工作时长");
|
|
464
|
|
- //DataColumn dc21 = new DataColumn("平均操作分钟数");
|
|
465
|
|
- //DataColumn dc22 = new DataColumn("置忙次数");
|
|
466
|
|
- //DataColumn dc23 = new DataColumn("休息时长分钟数");
|
|
467
|
|
- //DataColumn dc24 = new DataColumn("平均每天休息时长");
|
|
468
|
|
- //DataColumn dc25 = new DataColumn("置忙平均休息分钟数");
|
|
469
|
|
- //DataColumn dc26 = new DataColumn("质检平均成绩");
|
|
470
|
|
-
|
|
471
|
|
- //dtNew.Columns.Add(dc1);
|
|
472
|
|
- //dtNew.Columns.Add(dc2);
|
|
473
|
|
- //dtNew.Columns.Add(dc3);
|
|
474
|
|
- //dtNew.Columns.Add(dc3_);
|
|
475
|
|
- //dtNew.Columns.Add(dc4);
|
|
476
|
|
- //dtNew.Columns.Add(dc5);
|
|
477
|
|
- //dtNew.Columns.Add(dc6);
|
|
478
|
|
- //dtNew.Columns.Add(dc7);
|
|
479
|
|
- //dtNew.Columns.Add(dc8);
|
|
480
|
|
- //dtNew.Columns.Add(dc9);
|
|
481
|
|
- //dtNew.Columns.Add(dc10);
|
|
482
|
|
- //dtNew.Columns.Add(dc11);
|
|
483
|
|
- //dtNew.Columns.Add(dc12);
|
|
484
|
|
- //dtNew.Columns.Add(dc13);
|
|
485
|
|
- //dtNew.Columns.Add(dc14);
|
|
486
|
|
- //dtNew.Columns.Add(dc15);
|
|
487
|
|
- //dtNew.Columns.Add(dc16);
|
|
488
|
|
- //dtNew.Columns.Add(dc17);
|
|
489
|
|
- //dtNew.Columns.Add(dc18);
|
|
490
|
|
- //dtNew.Columns.Add(dc19);
|
|
491
|
|
- //dtNew.Columns.Add(dc20);
|
|
492
|
|
- //dtNew.Columns.Add(dc21);
|
|
493
|
|
- //dtNew.Columns.Add(dc22);
|
|
494
|
|
- //dtNew.Columns.Add(dc23);
|
|
495
|
|
- //dtNew.Columns.Add(dc24);
|
|
496
|
|
- //dtNew.Columns.Add(dc25);
|
|
497
|
|
- //dtNew.Columns.Add(dc26);
|
|
|
82
|
+
|
|
|
83
|
+
|
|
|
84
|
+ for (int i = 0; i < str.Count(); i++)
|
|
|
85
|
+ {
|
|
|
86
|
+ if (!indexs.Contains(i))
|
|
|
87
|
+ dtNew.Columns.Add(new DataColumn(str[i]));
|
|
|
88
|
+ }
|
|
|
89
|
+
|
|
498
|
90
|
#endregion
|
|
499
|
91
|
int days = 30;
|
|
500
|
92
|
string sqltimeCallRecords = "";
|
|
|
@@ -603,34 +195,26 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
603
|
195
|
{
|
|
604
|
196
|
dtdpt = DbHelperSQL.Query("select t1.F_DeptId,t1.F_DeptName,t1.F_Remark,t2.F_DeptName as ParentName from T_Sys_Department t1 left join T_Sys_Department t2 ON t1.F_ParentId=t2.F_DeptId where t1.F_ParentId!=0" + deptSQL).Tables[0];
|
|
605
|
197
|
}
|
|
606
|
|
- //if (dtdpt != null && dtdpt.Rows.Count > 0)
|
|
607
|
|
- //{
|
|
|
198
|
+
|
|
|
199
|
+ string sql = $"SELECT F_UserCode,F_UserName,F_WorkNumber,F_ExtensionNumber,F_UserId,F_DeptId,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_WorkNumber!='' {usercodeSQL} order by F_WorkNumber asc";
|
|
|
200
|
+ var userAccountList = DbHelperSQL.Query(sql).Tables[0];
|
|
|
201
|
+
|
|
608
|
202
|
foreach (DataRow dr in dtdpt.Rows)
|
|
609
|
203
|
{
|
|
610
|
|
- DataTable dt = new DataTable();
|
|
611
|
|
- 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";
|
|
612
|
|
- dt = DbHelperSQL.Query(sql).Tables[0];
|
|
613
|
|
- for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
204
|
+ //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";
|
|
|
205
|
+ //dt = DbHelperSQL.Query(sql).Tables[0];
|
|
|
206
|
+ var arr = userAccountList.Select($"F_DeptId={dr["F_DeptId"]}");
|
|
|
207
|
+ for (int i = 0; i < arr.Length; i++)
|
|
614
|
208
|
{
|
|
615
|
|
- if (!string.IsNullOrEmpty(dt.Rows[i]["F_WorkNumber"].ToString()))
|
|
|
209
|
+ if (!string.IsNullOrEmpty(arr[i]["F_WorkNumber"].ToString()))
|
|
616
|
210
|
{
|
|
617
|
211
|
DataRow drNew = dtNew.NewRow();
|
|
618
|
|
- //drNew["部门"] = dr["F_DeptName"].ToString();
|
|
619
|
|
- //drNew["坐席"] = dt.Rows[i]["F_UserName"].ToString();
|
|
620
|
|
- //drNew["坐席工号"] = dt.Rows[i]["F_WorkNumber"].ToString();
|
|
621
|
|
- //drNew["角色"] = dt.Rows[i]["F_RoleName"].ToString();
|
|
622
|
|
- drNew["公司"] = dr["ParentName"].ToString();
|
|
623
|
|
- drNew["部门"] = dr["F_DeptName"].ToString();
|
|
624
|
|
- drNew["坐席工号"] = $"{dt.Rows[i]["F_WorkNumber"].ToString()}";
|
|
625
|
|
- drNew["坐席姓名"] = $"{dt.Rows[i]["F_UserName"].ToString()}";
|
|
626
|
|
- drNew["角色"] = dt.Rows[i]["F_RoleName"].ToString();
|
|
627
|
|
- drNew["固话号码"] = dt.Rows[i]["F_ExtensionNumber"].ToString();
|
|
628
|
|
-
|
|
629
|
|
- //if (i == 0)
|
|
630
|
|
- //{//呼入电话
|
|
631
|
|
-
|
|
632
|
|
-
|
|
633
|
|
-
|
|
|
212
|
+ if (columns.Contains("公司")) { drNew["公司"] = dr["ParentName"].ToString(); }
|
|
|
213
|
+ if (columns.Contains("部门")) { drNew["部门"] = dr["F_DeptName"].ToString(); }
|
|
|
214
|
+ if (columns.Contains("坐席工号")) { drNew["坐席工号"] = $"{arr[i]["F_WorkNumber"].ToString()}"; }
|
|
|
215
|
+ if (columns.Contains("坐席姓名")) { drNew["坐席姓名"] = $"{arr[i]["F_UserName"].ToString()}"; }
|
|
|
216
|
+ if (columns.Contains("角色")) { drNew["角色"] = arr[i]["F_RoleName"].ToString(); }
|
|
|
217
|
+ if (columns.Contains("固话号码")) { drNew["固话号码"] = arr[i]["F_ExtensionNumber"].ToString(); }
|
|
634
|
218
|
|
|
635
|
219
|
#region 呼入
|
|
636
|
220
|
|
|
|
@@ -645,9 +229,9 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
645
|
229
|
}
|
|
646
|
230
|
|
|
647
|
231
|
//ct=总呼入/呼出次数? dd=总等待时长
|
|
648
|
|
- 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];
|
|
|
232
|
+ DataTable dtTrunk = DbHelperSQL.Query("select COUNT(*) as ct,SUM(DATEDIFF(Second,timewantagent,timeconnected)) as dd from rep_trunk_call_in where AgentID='" + arr[i]["F_UserCode"].ToString() + "' " + strsql).Tables[0];
|
|
649
|
233
|
//ct=总呼入次数? jt=总呼入接通数
|
|
650
|
|
- 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];
|
|
|
234
|
+ DataTable dtcall = DbHelperSQL.Query("select COUNT(*) as ct,(select COUNT(*) from T_Call_CallRecords where CallState=1 and CallType=0 and UserCode='" + arr[i]["F_UserCode"].ToString() + "' " + strsqlcall + ") as jt from T_Call_CallRecords where CallType=0 and UserCode='" + arr[i]["F_UserCode"].ToString() + "' " + strsqlcall).Tables[0];
|
|
651
|
235
|
|
|
652
|
236
|
if (dtcall != null && dtcall.Rows.Count > 0)
|
|
653
|
237
|
{
|
|
|
@@ -699,33 +283,15 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
699
|
283
|
itrunkhsl = 0.00;
|
|
700
|
284
|
itrunkpjpd = 0.00;
|
|
701
|
285
|
}
|
|
702
|
|
- //drNew["呼入电话数"] = itrunkct;
|
|
703
|
|
- //drNew["坐席接通量"] = itrunkjj;
|
|
704
|
|
- //drNew["呼损量"] = itrunkhs;
|
|
705
|
|
- //drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%";
|
|
706
|
|
- //drNew["呼损率"] = (itrunkhsl * 100).ToString("0.00") + "%";
|
|
707
|
|
- //drNew["平均排队时间"] = itrunkpjpd.ToString("0.00");
|
|
708
|
|
-
|
|
709
|
|
-
|
|
710
|
|
- drNew["呼入电话数"] = itrunkct;
|
|
711
|
|
- drNew["接通量"] = itrunkjj;
|
|
712
|
|
- drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%";
|
|
713
|
|
-
|
|
714
|
|
- //}
|
|
715
|
|
- //else
|
|
716
|
|
- //{
|
|
717
|
|
- // drNew["呼入电话数"] = "0";
|
|
718
|
|
- // drNew["坐席接通量"] = "0";
|
|
719
|
|
- // drNew["呼损量"] = "0";
|
|
720
|
|
- // drNew["接通率"] = "0.00" + "%";
|
|
721
|
|
- // drNew["呼损率"] = "0.00" + "%";
|
|
722
|
|
- // drNew["平均排队时间"] = "0.00";
|
|
723
|
|
- //}
|
|
|
286
|
+ if (columns.Contains("呼入电话数")) { drNew["呼入电话数"] = itrunkct; }
|
|
|
287
|
+ if (columns.Contains("接通量")) { drNew["接通量"] = itrunkjj; }
|
|
|
288
|
+ if (columns.Contains("接通率")) { drNew["接通率"] = (itrunkjtl * 100).ToString("0.00") + "%"; }
|
|
|
289
|
+
|
|
724
|
290
|
|
|
725
|
291
|
//-- ct=总呼入次数? sc=总通话时长 pa=总xxx
|
|
726
|
|
- 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];
|
|
|
292
|
+ DataTable dtext = DbHelperSQL.Query("select COUNT(*) as ct,SUM(PeriodTalking) as sc,SUM(PeriodAlerting) as pa from rep_ext_call_in where CalleeAgentID=" + arr[i]["F_WorkNumber"] + " " + sqltimeCallRecords).Tables[0];
|
|
727
|
293
|
//-- ct=总呼入接通次数? sc=总通话时长
|
|
728
|
|
- 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];
|
|
|
294
|
+ DataTable dtCallEvey = DbHelperSQL.Query("select COUNT(*) as ct,SUM(TalkLongTime) as sc from T_Call_CallRecords where CallState=1 and userid=" + arr[i]["F_UserId"] + " " + strsqlcall).Tables[0];
|
|
729
|
295
|
if (dtCallEvey != null && dtCallEvey.Rows.Count > 0)
|
|
730
|
296
|
{
|
|
731
|
297
|
if (dtCallEvey.Rows[0]["ct"].ToString() != "")
|
|
|
@@ -759,31 +325,16 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
759
|
325
|
izlms = 0;
|
|
760
|
326
|
}
|
|
761
|
327
|
}
|
|
762
|
|
- //drNew["接听通话次数"] = ijtcs.ToString();
|
|
763
|
|
- drNew["呼入通话分钟数"] = (ithms / 60).ToString();
|
|
764
|
|
- //drNew["通话秒数"] = ithms.ToString();
|
|
765
|
|
-
|
|
766
|
|
- //if (ijtcs != 0)
|
|
767
|
|
- //{
|
|
768
|
|
- // ipjjtms = ithms / ijtcs;//平均接通秒数
|
|
769
|
|
- // ipjzlms = izlms / ijtcs;//平均振铃秒数
|
|
770
|
|
- //}
|
|
771
|
|
- //else
|
|
772
|
|
- //{
|
|
773
|
|
- // ipjjtms = 0;//平均接通秒数
|
|
774
|
|
- // ipjzlms = 0;//平均振铃秒数
|
|
775
|
|
- //}
|
|
776
|
|
- //drNew["平均接听通话秒数"] = ipjjtms.ToString();
|
|
777
|
|
- //drNew["平均振铃秒数"] = ipjzlms.ToString();
|
|
|
328
|
+ if (columns.Contains("呼入通话分钟数")) { drNew["呼入通话分钟数"] = (ithms / 60).ToString(); }
|
|
778
|
329
|
|
|
779
|
330
|
#endregion
|
|
780
|
331
|
|
|
781
|
332
|
#region 呼出
|
|
782
|
333
|
|
|
783
|
334
|
//--ct=呼出总次数 st=呼出总通话时长
|
|
784
|
|
- 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];
|
|
|
335
|
+ DataTable dtCallOut = DbHelperSQL.Query($"select count(CallID) as ct,SUM(PeriodTalking) as st from rep_ext_call_out where IsCallOutSucceed = 1 and CallerAgentID ={arr[i]["F_WorkNumber"].ToString()} {strCallOutSql}").Tables[0];
|
|
785
|
336
|
//-- ct=呼出接通次数
|
|
786
|
|
- 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];
|
|
|
337
|
+ DataTable dtCallOut2 = DbHelperSQL.Query($"select count(CallID) as ct from rep_ext_call_out where IsCallOutSucceed=1 and CallerAgentID={arr[i]["F_WorkNumber"].ToString()} {strCallOutSql} and IsCallOutSucceed=1 ").Tables[0];
|
|
787
|
338
|
|
|
788
|
339
|
if (dtCallOut.Rows.Count > 0)
|
|
789
|
340
|
{
|
|
|
@@ -797,17 +348,17 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
797
|
348
|
|
|
798
|
349
|
if (callOutCount != 0)
|
|
799
|
350
|
{
|
|
800
|
|
- drNew["呼出电话数"] = callOutCount;
|
|
801
|
|
- drNew["呼通量"] = callOutJTCount;
|
|
802
|
|
- drNew["呼通率"] = (callOutJTCount / callOutCount * 100).ToString("0.00") + "%";
|
|
803
|
|
- drNew["呼出通话分钟数"] = (callOutJTSeconds / 60).ToString();
|
|
|
351
|
+ if (columns.Contains("呼出电话数")) { drNew["呼出电话数"] = callOutCount; }
|
|
|
352
|
+ if (columns.Contains("呼通量")) { drNew["呼通量"] = callOutJTCount; }
|
|
|
353
|
+ if (columns.Contains("呼通率")) { drNew["呼通率"] = (callOutJTCount / callOutCount * 100).ToString("0.00") + "%"; }
|
|
|
354
|
+ if (columns.Contains("呼出通话分钟数")) { drNew["呼出通话分钟数"] = (callOutJTSeconds / 60).ToString(); }
|
|
804
|
355
|
}
|
|
805
|
356
|
else
|
|
806
|
357
|
{
|
|
807
|
|
- drNew["呼出电话数"] = 0;
|
|
808
|
|
- drNew["呼通量"] = 0;
|
|
809
|
|
- drNew["呼通率"] = "0%";
|
|
810
|
|
- drNew["呼出通话分钟数"] = 0;
|
|
|
358
|
+ if (columns.Contains("呼出电话数")) { drNew["呼出电话数"] = 0; }
|
|
|
359
|
+ if (columns.Contains("呼通量")) { drNew["呼通量"] = 0; }
|
|
|
360
|
+ if (columns.Contains("呼通率")) { drNew["呼通率"] = "0%"; }
|
|
|
361
|
+ if (columns.Contains("呼出通话分钟数")) { drNew["呼出通话分钟数"] = 0; }
|
|
811
|
362
|
}
|
|
812
|
363
|
|
|
813
|
364
|
#endregion
|
|
|
@@ -815,31 +366,8 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
815
|
366
|
#region 登录
|
|
816
|
367
|
|
|
817
|
368
|
#endregion
|
|
818
|
|
-
|
|
819
|
|
- // "呼入电话数", "坐席接通量", "接通率", "通话分钟数",
|
|
820
|
|
- // "呼出电话数", "坐席呼通量", "接通率", "呼出分钟数",
|
|
821
|
|
-
|
|
822
|
|
-
|
|
823
|
|
-
|
|
824
|
|
-
|
|
825
|
|
-
|
|
826
|
|
-
|
|
827
|
|
-
|
|
828
|
|
-
|
|
829
|
|
-
|
|
830
|
|
-
|
|
831
|
|
-
|
|
832
|
|
-
|
|
833
|
|
-
|
|
834
|
|
-
|
|
835
|
|
-
|
|
836
|
|
-
|
|
837
|
|
-
|
|
838
|
|
-
|
|
839
|
|
-
|
|
840
|
|
-
|
|
841
|
369
|
//坐席登录次数
|
|
842
|
|
- 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];
|
|
|
370
|
+ 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=" + arr[i]["F_WorkNumber"] + " " + sqltimeCallRecords.Replace("TimeAlerting", "TimeLogin")).Tables[0];
|
|
843
|
371
|
if (dtAgent != null && dtAgent.Rows.Count > 0)
|
|
844
|
372
|
{
|
|
845
|
373
|
if (dtAgent.Rows[0]["dl"] != null && dtAgent.Rows[0]["dl"].ToString() != "")
|
|
|
@@ -906,24 +434,18 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
906
|
434
|
//drNew["呼入占有率"] = (ihrzyl * 100).ToString("0.00") + "%";
|
|
907
|
435
|
//用户评价
|
|
908
|
436
|
|
|
909
|
|
- 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);
|
|
|
437
|
+ object obj = DbHelperSQL.GetSingle("select count(*) from T_Call_CallRecords where MYD is not null and CallState=1 and userid=" + arr[i]["F_UserId"] + strsqlcall);
|
|
910
|
438
|
string myd = "";
|
|
911
|
439
|
if (obj != null)
|
|
912
|
440
|
{
|
|
913
|
441
|
myd = obj.ToString();
|
|
914
|
442
|
}
|
|
915
|
|
- //drNew["用户评价"] = myd;
|
|
916
|
|
- drNew["坐席登录次数"] = izxdlcs.ToString();
|
|
917
|
|
- drNew["登录时长分钟数"] = (idlsc / 60).ToString();
|
|
918
|
|
- drNew["工作时长分钟数"] = (iWorktime / 60).ToString();
|
|
919
|
|
- drNew["平均每天工作时长"] = Math.Round((double.Parse(iWorktime.ToString()) / 60 / 60 / days), 2).ToString();
|
|
920
|
|
- //drNew["平均操作分钟数"] = (ipjczsc / 60).ToString();
|
|
921
|
|
- //drNew["置忙次数"] = izmcs.ToString();
|
|
922
|
|
- drNew["休息时长分钟数"] = (ixxsc / 60).ToString();
|
|
923
|
|
- //drNew["平均每天休息时长"] = Math.Round((double.Parse(ixxsc.ToString()) / 60 / 60 / days), 2).ToString();
|
|
924
|
|
- //drNew["置忙平均休息分钟数"] = (ipjzmxxsc / 60).ToString();
|
|
925
|
|
-
|
|
926
|
|
- 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);
|
|
|
443
|
+ if (columns.Contains("坐席登录次数")) { drNew["坐席登录次数"] = izxdlcs.ToString(); }
|
|
|
444
|
+ if (columns.Contains("登录时长分钟数")) { drNew["登录时长分钟数"] = (idlsc / 60).ToString(); }
|
|
|
445
|
+ if (columns.Contains("工作时长分钟数")) { drNew["工作时长分钟数"] = (iWorktime / 60).ToString(); }
|
|
|
446
|
+ if (columns.Contains("平均每天工作小时数")) { drNew["平均每天工作小时数"] = Math.Round((double.Parse(iWorktime.ToString()) / 60 / 60 / days), 2).ToString(); }
|
|
|
447
|
+ if (columns.Contains("休息时长分钟数")) { drNew["休息时长分钟数"] = (ixxsc / 60).ToString(); }
|
|
|
448
|
+ 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=" + arr[i]["F_UserId"] + strsqlcall);
|
|
927
|
449
|
int zfs = 0;
|
|
928
|
450
|
if (dszj != null && dszj.Tables.Count > 0)
|
|
929
|
451
|
{
|
|
|
@@ -933,8 +455,10 @@ namespace CallCenterApi.Interface.Controllers.report
|
|
933
|
455
|
zfs = Convert.ToInt32(dtzj.Rows[0]["fs"].ToString()) / int.Parse(dtzj.Rows[0]["fsct"].ToString());
|
|
934
|
456
|
}
|
|
935
|
457
|
}
|
|
936
|
|
- drNew["质检平均成绩"] = zfs.ToString();
|
|
937
|
|
-
|
|
|
458
|
+ if (columns.Contains("质检平均成绩"))
|
|
|
459
|
+ {
|
|
|
460
|
+ drNew["质检平均成绩"] = zfs.ToString();
|
|
|
461
|
+ }
|
|
938
|
462
|
dtNew.Rows.Add(drNew);
|
|
939
|
463
|
}
|
|
940
|
464
|
}
|