|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+using HySoft.Common;
|
|
|
2
|
+using System;
|
|
|
3
|
+using System.Collections.Generic;
|
|
|
4
|
+using System.Data;
|
|
|
5
|
+using System.Linq;
|
|
|
6
|
+using System.Web;
|
|
|
7
|
+
|
|
|
8
|
+namespace HySoft.BaseCallCenter.Web.reportmanage.operationdata.controls
|
|
|
9
|
+{
|
|
|
10
|
+ /// <summary>
|
|
|
11
|
+ /// ZuoXiReport 的摘要说明
|
|
|
12
|
+ /// </summary>
|
|
|
13
|
+ public class ZuoXiReport : IHttpHandler
|
|
|
14
|
+ {
|
|
|
15
|
+
|
|
|
16
|
+ public void ProcessRequest(HttpContext context)
|
|
|
17
|
+ {
|
|
|
18
|
+ context.Response.ContentType = "text/plain";
|
|
|
19
|
+ string action = context.Request.QueryString["action"];
|
|
|
20
|
+ switch (action)
|
|
|
21
|
+ {
|
|
|
22
|
+ case "getlist":
|
|
|
23
|
+ context.Response.Write(GetDataList(context));//读取数据
|
|
|
24
|
+ break;
|
|
|
25
|
+ }
|
|
|
26
|
+ }
|
|
|
27
|
+ #region
|
|
|
28
|
+ //岗位 工号 姓名 来话接听数量-lhjtl 受理座席转接量-slzxzjl 接听电话总量-jtdhzl 外呼电话量-whdhl 外呼电话接起量-whdhjql
|
|
|
29
|
+ //签入时长-qrsc 来话接听时长(秒)-ldjtsc 转接电话接听时长(秒)-zjdhjtsc 总接听时长(秒)-zjtsc
|
|
|
30
|
+ //平均来话接听时长(秒 / 次)-pjlhjtsc 平均转接电话接听时长(秒 / 次)-pjzjdhjtsc 平均接听通话时长(秒 / 次)-pjjtthsc
|
|
|
31
|
+ //总呼出通话时长(秒)-zhcthsc 总呼出成功通话时长(秒)-zhccgthsc
|
|
|
32
|
+ //平均呼出通话时长(秒 / 次)-pjhcthsc 平均成功呼出通话时长(秒 / 次)-pjcghcthsc
|
|
|
33
|
+ //来话话后置忙总时长(秒)-lhhhzmzsc 转接电话话后置忙总时长(秒)-zjdhhhzmzsc 话后置忙总时长(秒)-hhzmzsc
|
|
|
34
|
+ //来话话后置忙平均时长(秒 / 次)-lhhhzmpjsc 转接电话话后置忙平均时长(秒 / 次)-zjdhhhzmpjsc
|
|
|
35
|
+ //平均话后置忙时长(秒 / 次)-pjhhzmsc
|
|
|
36
|
+ //来话持线等待总时长(秒)-lhcxddzsc 转接电话持线等待总时长(秒)-zjdhcxddzsc
|
|
|
37
|
+ //持线等待总时长(秒)-cxddzsc 来话持线等待平均时长(秒 / 次)-lhcxddpjsc
|
|
|
38
|
+ //转接电话持线等待平均时长(秒 / 次)-zjdhcxddpjsc 持线等待平均时长(秒 / 次)-cxddpjsc
|
|
|
39
|
+ //未准备好总时长(秒)-wzbhzsc 示闲总时长(秒)-sxzsc 事后处理时长(秒)-shclsc
|
|
|
40
|
+ //来电信息点击量 -ldxxdjl 信息点击总量-xxdjzl
|
|
|
41
|
+ int lhjtl = 0; int slzxzjl = 0; int jtdhzl = 0; int whdhl = 0; int whdhjql = 0;
|
|
|
42
|
+ int qrsc = 0; int ldjtsc = 0; int zjdhjtsc = 0; int zjtsc = 0;
|
|
|
43
|
+ string pjlhjtsc = "0"; string pjzjdhjtsc = "0"; string pjjtthsc = "0";
|
|
|
44
|
+ int zhcthsc = 0; int zhccgthsc = 0;
|
|
|
45
|
+ string pjhcthsc = "0"; string pjcghcthsc = "0";
|
|
|
46
|
+ int lhhhzmzsc = 0; int zjdhhhzmzsc = 0; int hhzmzsc = 0;
|
|
|
47
|
+ int lhhhzmpjsc = 0; int zjdhhhzmpjsc = 0;
|
|
|
48
|
+ string pjhhzmsc = "0";
|
|
|
49
|
+ int lhcxddzsc = 0; int zjdhcxddzsc = 0;
|
|
|
50
|
+ int cxddzsc = 0; string lhcxddpjsc = "0";
|
|
|
51
|
+ int zjdhcxddpjsc = 0; string cxddpjsc = "0";
|
|
|
52
|
+ int wzbhzsc = 0; int sxzsc = 0; int shclsc = 0; int ldxxdjl = 0; int xxdjzl = 0;
|
|
|
53
|
+ #endregion
|
|
|
54
|
+ private string GetDataList(HttpContext context)
|
|
|
55
|
+ {
|
|
|
56
|
+ string res = "";
|
|
|
57
|
+ try
|
|
|
58
|
+ {
|
|
|
59
|
+ string sqlu = "";
|
|
|
60
|
+ string dpt = CommonRequest.GetQueryString("dpt");
|
|
|
61
|
+ string txtStartTime = CommonRequest.GetQueryString("starttime");
|
|
|
62
|
+ string txtEndTime = CommonRequest.GetQueryString("endtime");
|
|
|
63
|
+
|
|
|
64
|
+ string strpageindex = context.Request.Params["page"];
|
|
|
65
|
+ int pageindex = 1;
|
|
|
66
|
+ string strpagesize = context.Request.Params["pagesize"];
|
|
|
67
|
+ int pagesize = 20;
|
|
|
68
|
+ sqlu = " F_SeatFlag=1 and F_DeleteFlag=0";
|
|
|
69
|
+ if (dpt.Trim() != "")
|
|
|
70
|
+ {
|
|
|
71
|
+ sqlu += " and F_DeptId=" + dpt.Trim();
|
|
|
72
|
+ }
|
|
|
73
|
+ string sqltimeCallRecords = "";
|
|
|
74
|
+ string strsqlcall = " 1=1 ";
|
|
|
75
|
+ if (txtStartTime != null && txtStartTime.Trim() != "")
|
|
|
76
|
+ {
|
|
|
77
|
+ sqltimeCallRecords += " and CONVERT(varchar , TimeAlerting, 120)>=CONVERT(varchar , '" + txtStartTime.Trim() + " 00:00:01', 120) ";
|
|
|
78
|
+ strsqlcall += " and CONVERT(varchar , BeginTime, 120)>=CONVERT(varchar , '" + txtStartTime.Trim() + " 00:00:01', 120) ";
|
|
|
79
|
+ }
|
|
|
80
|
+ if (txtEndTime != null && txtEndTime.Trim() != "")
|
|
|
81
|
+ {
|
|
|
82
|
+ sqltimeCallRecords += " and CONVERT(varchar , TimeAlerting, 120)<=CONVERT(varchar , '" + txtEndTime.Trim() + " 23:59:59', 120) ";
|
|
|
83
|
+ strsqlcall += " and CONVERT(varchar , BeginTime, 120)<=CONVERT(varchar , '" + txtEndTime.Trim() + " 23:59:59', 120) ";
|
|
|
84
|
+ }
|
|
|
85
|
+
|
|
|
86
|
+ Model.PageData<object> pageData = new Model.PageData<object>();
|
|
|
87
|
+ var userslist = new BLL.T_Sys_UserAccount().GetModelList(sqlu);
|
|
|
88
|
+ var calllist = new BLL.T_Call_CallRecords().GetModelList(strsqlcall);
|
|
|
89
|
+ var rolelist = new BLL.T_Sys_RoleInfo().GetModelList("");
|
|
|
90
|
+ pageData.Rows = userslist.Select(n =>
|
|
|
91
|
+ {
|
|
|
92
|
+ GetTimes(n.F_WorkNumber, sqltimeCallRecords, strsqlcall);
|
|
|
93
|
+ lhjtl = calllist.Where(c => c.UserCode == n.F_WorkNumber && c.CallType == 0 && c.CallState == 1).ToList().Count();//来话接听数量
|
|
|
94
|
+ whdhl = calllist.Where(c => c.UserCode == n.F_WorkNumber && c.CallType == 1).ToList().Count();//外呼电话量
|
|
|
95
|
+ whdhjql = calllist.Where(c => c.UserCode == n.F_WorkNumber && c.CallType == 1 && c.CallState == 1).ToList().Count();//外呼电话接起量
|
|
|
96
|
+ ldxxdjl = calllist.Where(c => c.UserCode == n.F_WorkNumber && c.F_ZXreasonid > 0).ToList().Count();//来电信息点击量
|
|
|
97
|
+ string rolename = rolelist.Where(r => r.F_RoleId == n.F_RoleId).FirstOrDefault<Model.T_Sys_RoleInfo>().F_RoleName;
|
|
|
98
|
+ return new
|
|
|
99
|
+ {
|
|
|
100
|
+ RoleName = rolename,
|
|
|
101
|
+ UserCode = n.F_WorkNumber,
|
|
|
102
|
+ UserName = n.F_UserName,
|
|
|
103
|
+ LHJTL = lhjtl,
|
|
|
104
|
+ SLZXZJL = slzxzjl,
|
|
|
105
|
+ JTDHZL = jtdhzl,
|
|
|
106
|
+ WHDHL = whdhl,
|
|
|
107
|
+ WHDHJQL = whdhjql,
|
|
|
108
|
+ QRSC = qrsc,
|
|
|
109
|
+ LDJTSC = ldjtsc,
|
|
|
110
|
+ ZJDHJTSC = zjdhjtsc,
|
|
|
111
|
+ ZJTSC = zjtsc,
|
|
|
112
|
+ PJLHJTSC = pjlhjtsc,
|
|
|
113
|
+ PJZJDHJTSC = pjzjdhjtsc,
|
|
|
114
|
+ PJJTTHSC = pjjtthsc,
|
|
|
115
|
+ ZHCTHSC = zhcthsc,
|
|
|
116
|
+ ZHCCGTHSC = zhccgthsc,
|
|
|
117
|
+ PJHCTHSC = pjhcthsc,
|
|
|
118
|
+ PJCGHCTHSC = pjcghcthsc,
|
|
|
119
|
+ LHHHZMZSC = lhhhzmzsc,
|
|
|
120
|
+ ZJDHHHZMZSC = zjdhhhzmzsc,
|
|
|
121
|
+ HHZMZSC = hhzmzsc,
|
|
|
122
|
+ LHHHZMPJSC = lhhhzmpjsc,
|
|
|
123
|
+ ZJDHHHZMPJSC = zjdhhhzmpjsc,
|
|
|
124
|
+ PJHHZMSC = pjhhzmsc,
|
|
|
125
|
+ LHCXDDZSC = lhcxddzsc,
|
|
|
126
|
+ ZJDHCXDDZSC = zjdhcxddzsc,
|
|
|
127
|
+ CXDDZSC = cxddzsc,
|
|
|
128
|
+ LHCXDDPJSC = lhcxddpjsc,
|
|
|
129
|
+ ZJDHCXDDPJSC = zjdhcxddpjsc,
|
|
|
130
|
+ CXDDPJSC = cxddpjsc,
|
|
|
131
|
+ WZBHZSC = wzbhzsc,
|
|
|
132
|
+ SXZSC = sxzsc,
|
|
|
133
|
+ SHCLSC = shclsc,
|
|
|
134
|
+ LDXXDJL = ldxxdjl,
|
|
|
135
|
+ XXDJZL = xxdjzl
|
|
|
136
|
+ };
|
|
|
137
|
+ }).ToList<object>().Skip((pageindex - 1) * pagesize).Take(pagesize).ToList();
|
|
|
138
|
+ pageData.Total = userslist.Count;
|
|
|
139
|
+
|
|
|
140
|
+ res = pageData.ToJson();
|
|
|
141
|
+ }
|
|
|
142
|
+ catch (Exception ex)
|
|
|
143
|
+ { }
|
|
|
144
|
+ return res;
|
|
|
145
|
+ }
|
|
|
146
|
+ private void GetTimes(string usercode, string sqltimeCallRecords, string strsqlcall)
|
|
|
147
|
+ {
|
|
|
148
|
+ //岗位 工号 姓名 *来话接听数量-lhjtl 受理座席转接量-slzxzjl 接听电话总量-jtdhzl *外呼电话量-whdhl *外呼电话接起量-whdhjql
|
|
|
149
|
+ //*签入时长-qrsc *来话接听时长(秒)-ldjtsc 转接电话接听时长(秒)-zjdhjtsc 总接听时长(秒)-zjtsc
|
|
|
150
|
+ //*平均来话接听时长(秒 / 次)-pjlhjtsc 平均转接电话接听时长(秒 / 次)-pjzjdhjtsc 平均接听通话时长(秒 / 次)-pjjtthsc
|
|
|
151
|
+ //*总呼出通话时长(秒)-zhcthsc 总呼出成功通话时长(秒)-zhccgthsc
|
|
|
152
|
+ //*平均呼出通话时长(秒 / 次)-pjhcthsc 平均成功呼出通话时长(秒 / 次)-pjcghcthsc
|
|
|
153
|
+ //来话话后置忙总时长(秒)-lhhhzmzsc 转接电话话后置忙总时长(秒)-zjdhhhzmzsc 话后置忙总时长(秒)-hhzmzsc
|
|
|
154
|
+ //来话话后置忙平均时长(秒 / 次)-lhhhzmpjsc 转接电话话后置忙平均时长(秒 / 次)-zjdhhhzmpjsc
|
|
|
155
|
+ //平均话后置忙时长(秒 / 次)-pjhhzmsc
|
|
|
156
|
+ //*来话持线等待总时长(秒)-lhcxddzsc 转接电话持线等待总时长(秒)-zjdhcxddzsc
|
|
|
157
|
+ //持线等待总时长(秒)-cxddzsc *来话持线等待平均时长(秒 / 次)-lhcxddpjsc
|
|
|
158
|
+ //转接电话持线等待平均时长(秒 / 次)-zjdhcxddpjsc 持线等待平均时长(秒 / 次)-cxddpjsc
|
|
|
159
|
+ //未准备好总时长(秒)-wzbhzsc *示闲总时长(秒)-sxzsc 事后处理时长(秒)-shclsc
|
|
|
160
|
+ //*来电信息点击量 -ldxxdjl 信息点击总量-xxdjzl
|
|
|
161
|
+
|
|
|
162
|
+ #region 来话持线等待总时长 来话持线等待平均时长
|
|
|
163
|
+ DataTable dtTrunk = DBUtility.DbHelperSQL.Query("select COUNT(*) as ct,SUM(DATEDIFF(Second,timewantagent,timeconnected)) as dd from rep_trunk_call_in where AgentId=" + usercode + " " + sqltimeCallRecords.Replace("TimeAlerting", "TimeCallIn")).Tables[0];
|
|
|
164
|
+ if (dtTrunk.Rows.Count > 0 )
|
|
|
165
|
+ {
|
|
|
166
|
+ int itrunkct = 0;
|
|
|
167
|
+ if (dtTrunk.Rows[0]["ct"].ToString() != "")
|
|
|
168
|
+ {
|
|
|
169
|
+ itrunkct = int.Parse(dtTrunk.Rows[0]["ct"].ToString());
|
|
|
170
|
+ }
|
|
|
171
|
+ if (dtTrunk.Rows[0]["dd"].ToString() != "")
|
|
|
172
|
+ {
|
|
|
173
|
+ lhcxddzsc = int.Parse(dtTrunk.Rows[0]["dd"].ToString());
|
|
|
174
|
+ }
|
|
|
175
|
+ else
|
|
|
176
|
+ {
|
|
|
177
|
+ lhcxddzsc = 0;
|
|
|
178
|
+ }
|
|
|
179
|
+
|
|
|
180
|
+ if (itrunkct != 0)
|
|
|
181
|
+ {
|
|
|
182
|
+ lhcxddpjsc = (lhcxddzsc / itrunkct).ToString();
|
|
|
183
|
+ }
|
|
|
184
|
+ else
|
|
|
185
|
+ {
|
|
|
186
|
+ lhcxddpjsc = "0";
|
|
|
187
|
+ }
|
|
|
188
|
+ }
|
|
|
189
|
+
|
|
|
190
|
+ #endregion
|
|
|
191
|
+
|
|
|
192
|
+ #region 来话接听时长 平均来话接听时长
|
|
|
193
|
+ int iLHjtcs = 0;
|
|
|
194
|
+ DataTable dtCallEvey = DBUtility.DbHelperSQL.Query("select COUNT(*) as ct,SUM(TalkLongTime) as sc from T_Call_CallRecords where CallState=1 and CallType=0 and usercode=" + usercode + " " + strsqlcall).Tables[0];
|
|
|
195
|
+ if (dtCallEvey != null && dtCallEvey.Rows.Count > 0)
|
|
|
196
|
+ {
|
|
|
197
|
+ if (dtCallEvey.Rows[0]["ct"].ToString() != "")
|
|
|
198
|
+ {
|
|
|
199
|
+ iLHjtcs = int.Parse(dtCallEvey.Rows[0]["ct"].ToString());//接听次数
|
|
|
200
|
+ }
|
|
|
201
|
+ if (dtCallEvey.Rows[0]["sc"].ToString() != "")
|
|
|
202
|
+ {
|
|
|
203
|
+ ldjtsc = int.Parse(dtCallEvey.Rows[0]["sc"].ToString());//通话秒数
|
|
|
204
|
+ }
|
|
|
205
|
+ else
|
|
|
206
|
+ {
|
|
|
207
|
+ ldjtsc = 0;
|
|
|
208
|
+ }
|
|
|
209
|
+ if (iLHjtcs != 0)
|
|
|
210
|
+ {
|
|
|
211
|
+ pjlhjtsc = (ldjtsc / iLHjtcs).ToString();
|
|
|
212
|
+ }
|
|
|
213
|
+ else
|
|
|
214
|
+ pjlhjtsc = "0";
|
|
|
215
|
+ }
|
|
|
216
|
+ #endregion
|
|
|
217
|
+
|
|
|
218
|
+ #region 总接听时长 平均接听通话时长
|
|
|
219
|
+ int iZjtcs = 0;
|
|
|
220
|
+ DataTable dtCallZEvey = DBUtility.DbHelperSQL.Query("select COUNT(*) as ct,SUM(TalkLongTime) as sc from T_Call_CallRecords where CallState=1 and usercode=" + usercode + " " + strsqlcall).Tables[0];
|
|
|
221
|
+ if (dtCallZEvey != null && dtCallZEvey.Rows.Count > 0)
|
|
|
222
|
+ {
|
|
|
223
|
+ if (dtCallZEvey.Rows[0]["ct"].ToString() != "")
|
|
|
224
|
+ {
|
|
|
225
|
+ iZjtcs = int.Parse(dtCallZEvey.Rows[0]["ct"].ToString());//接听次数
|
|
|
226
|
+ }
|
|
|
227
|
+ if (dtCallZEvey.Rows[0]["sc"].ToString() != "")
|
|
|
228
|
+ {
|
|
|
229
|
+ zjtsc = int.Parse(dtCallZEvey.Rows[0]["sc"].ToString());//通话秒数
|
|
|
230
|
+ }
|
|
|
231
|
+ else
|
|
|
232
|
+ {
|
|
|
233
|
+ zjtsc = 0;
|
|
|
234
|
+ }
|
|
|
235
|
+ if (iZjtcs != 0)
|
|
|
236
|
+ {
|
|
|
237
|
+ pjjtthsc = (ldjtsc / iZjtcs).ToString();
|
|
|
238
|
+ }
|
|
|
239
|
+ else
|
|
|
240
|
+ pjjtthsc = "0";
|
|
|
241
|
+ }
|
|
|
242
|
+ #endregion
|
|
|
243
|
+
|
|
|
244
|
+ #region 总呼出通话时长 平均呼出通话时长
|
|
|
245
|
+ zhcthsc = zjtsc - ldjtsc;
|
|
|
246
|
+ int iHCjtcs = 0;
|
|
|
247
|
+ iHCjtcs=iZjtcs - iLHjtcs;
|
|
|
248
|
+ if (iHCjtcs != 0)
|
|
|
249
|
+ {
|
|
|
250
|
+ pjhcthsc = (zhcthsc / iHCjtcs).ToString();
|
|
|
251
|
+ }
|
|
|
252
|
+ else
|
|
|
253
|
+ pjhcthsc = "0";
|
|
|
254
|
+ #endregion
|
|
|
255
|
+
|
|
|
256
|
+ #region 签入时长 示闲总时长
|
|
|
257
|
+ DataTable dtAgent = DBUtility.DbHelperSQL.Query("select COUNT(*) as dl,SUM(LoginTimes) as dlsc,SUM(reposenum) as zm,SUM(ReposeTimes) as xx from rep_agent_detail where AgentId=" + usercode + " " + sqltimeCallRecords.Replace("TimeAlerting", "TimeLogin")).Tables[0];
|
|
|
258
|
+ if (dtAgent != null && dtAgent.Rows.Count > 0)
|
|
|
259
|
+ {
|
|
|
260
|
+ if (dtAgent.Rows[0]["dlsc"] != null && dtAgent.Rows[0]["dlsc"].ToString() != "")
|
|
|
261
|
+ {
|
|
|
262
|
+ qrsc = int.Parse(dtAgent.Rows[0]["dlsc"].ToString());//签入时长
|
|
|
263
|
+ }
|
|
|
264
|
+ else
|
|
|
265
|
+ {
|
|
|
266
|
+ qrsc = 0;
|
|
|
267
|
+ }
|
|
|
268
|
+ if (dtAgent.Rows[0]["xx"] != null && dtAgent.Rows[0]["xx"].ToString() != "")
|
|
|
269
|
+ {
|
|
|
270
|
+ sxzsc = int.Parse(dtAgent.Rows[0]["xx"].ToString());//示闲总时长
|
|
|
271
|
+ }
|
|
|
272
|
+ else
|
|
|
273
|
+ {
|
|
|
274
|
+ sxzsc = 0;
|
|
|
275
|
+ }
|
|
|
276
|
+
|
|
|
277
|
+ }
|
|
|
278
|
+ else
|
|
|
279
|
+ {
|
|
|
280
|
+ qrsc = 0;
|
|
|
281
|
+ sxzsc = 0;
|
|
|
282
|
+ }
|
|
|
283
|
+ #endregion
|
|
|
284
|
+ }
|
|
|
285
|
+ public bool IsReusable
|
|
|
286
|
+ {
|
|
|
287
|
+ get
|
|
|
288
|
+ {
|
|
|
289
|
+ return false;
|
|
|
290
|
+ }
|
|
|
291
|
+ }
|
|
|
292
|
+ }
|
|
|
293
|
+}
|