开篇:润墨网以专业的文秘视角,为您筛选了一篇某话务统计查询系统的Web实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:本文介绍了如何对web上的话务统计功能进行查询和实现,通过比较以及逻辑判断按月,日,小时三个统计粒度进行话务统计,如存在故障显示原因。方便找出故障原因和故障高发时间段,便于系统的维护和优化。
引言
对某业务的电话会议,呼入,呼出进行话务统计并在Web上显示,统计功能包括:一段时间内的会议数、系统呼出数、成员呼入数、成功呼叫数、失败呼叫数,失败的呼叫按照原因统计。统计粒度分为小时、日、月,如存在故障显示原因。
功能流程图如图所示
一.参数介绍
Web页面主菜单.起始时间结束时间.用一个下拉菜单来显示统计粒度。
二.Web页面判断
(一)起始、结束时间是否为空。如为空,提示输入时间为空。
(二)起始、结束时间时间是否符合时间格式。如不合格,提示时间格式输入错误。
(三)验证开始时间是否超出搜索范围(根据实际情况考虑,由于话务业务数据庞大,如限定只能查询最近三月数据。即将当前时间减去开始时间判断不能大于三个月)如果大于则提示开始时间超出搜索范围。
(四)结束时间是否大于起始时间,若小于提示结束时间小于起始时间。
(五)验证时间间隔是否超出了时间搜索范围(如规定时间间隔不能大于一个月,将结束时间减去起始时间判断是否大于一个月)如果大于提示时间间隔不能大于一个月。
(六)点击统计按钮,页面进行判断,成功后进入下一步。
三.根据传输的参数提交服务器进行处理并返回结果
在Web界面判断成功后,将提交服务器处理 来统计它的电话会议数,系统呼出数,成员呼入数,呼叫成功数,呼叫失败数以及失败原因故障分析。
在数据库中创建call_log表
create table call_log
(
id numeric(12,0) not null,
confid numeric(12,0) not null,
starttimevarchar(19) not null, --开始时间
endtimevarchar(19) not null, --结束时间
calltypenumeric(1,0), --1-普通呼叫2-会议呼叫3-短信
statusnumeric(1,0), --0-成功1-失败
recordtypenumeric(1,0), --1创建会议2-呼入3呼出
terminal_cause numeric(1,0) -- 0-系统挂断1-终端挂机2-终端忙3-无应答 4-路由失败5-路由不可达6-号码暂时不可用7-未知原因
)
根据输入的起始时间,结束时间还有统计粒度参数进行统计。对应于数据库中用相应SQL语句进行搜索。每项统计功能用一条相应的SQL语句列出:
(一)电话会议数
数据库call_log表中confid为电话会议ID,而创建一个会议的时候可能会有多个confid。统计会议数时必须去掉重复的会议ID数即得到会议数。SQL语句中使用distinct confide为select count(distinct confid),substring(starttime,1,13) from call_log group by substring(starttime 1,13)
substring(starttime,1,13)即统计粒度精确到按小时统计。即根据时间的格式如 2008.01.07 00使用substring()函数从左往右1到13位。(包括年月日之间小数点和日与小时之间的空格)。如需统计粒度为月,substring()则为substring(starttime,1,7)。按日统计则为substring(starttime,1,10)
(二)系统呼出数
select count(recordtype),substring(starttime,1,13) from call_log where recordtype = 3 and starttime>=’开始时间’and endtime
(三)成员呼入数
select count(recordtype),substring(starttime,1,13) from call_log where recordtype=2 and starttime>=’开始时间’ and endtime
(四)呼叫成功数
select count(status),substring(starttime,1,13) from call_log where status=0 and starttime>=’ 开始时间’ and endtime
呼叫成功对应call_log表中status的 status=0
(五)呼叫失败数
select count(status),substring(starttime,1,13) from call_log where status=1 and starttime>=’开始时间’ and endtime
显示截图如下(假设数据都为100个 显示按月)
在表格中分别横向列出1.会议数(the number of conference)2.系统呼出数(the number of system call out)3.成员呼入数(the number of member call in) 4.成功呼叫数(success call)这里包括了成功的呼出和成功的呼入5.失败呼叫数(the number of failing call),在点击失败呼叫错误时会链接到一张故障表。6.统计结果较多时可能一页显示显示不下,可以通过前后翻页查看详细内容,右侧增加跳转键。
(六)故障原因分析
点击失败呼叫次数时,会链接到一张故障表上:
表示在查询时间段中对应call_log表中呼叫失败的情况下出现故障原因。
假设100个故障,在上表中可以看到系统挂断10次,终端挂机20次,终端忙出现10次,无应答出现10次,路由失败10次,路由不可达20次,号码暂时不可用10次。还有10次的呼叫失败找不到原因暂时归到未知原因一类。
注意几个问题:
1.统计粒度的体现。该问题在相关的SQL语句中都没有体现如何实现统计粒度的问题。后在老师和同学指导下已有修改 加入group by substring(var,1,13)。根据时间格式 yyyy.mm.dd hh 对于不用的统计粒度,更改相关的字节数。
2.举例。必须遍历各种情况。
3.故障表查询没有时间。 虽然在故障表中没有显示时间,但是它是由呼叫失败链接过去的,是哪一段时间的故障引起的呼叫失败这个是最重要的。SQL语句中一定要加入starttime 和endtime。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文