发明内容
本发明解决的技术问题实现了短时间内快速检测出话单中的交叉话单,以便于后续业务处理时保留交叉话单中的合理话单、剔除交叉话单中的异常话单,保证计费正确。
本发明所述交叉话单的检测方法的处理步骤如下:
第一步,将所有的待测话单按用户、时间进行排序;
对于脱机计费,则在所有话单入库后由数据库完成按用户、时间的排序操作;
对于立即计费,按用户建立链表并根据时间先后将实时话单顺序插入用户链表中;
第二步,对每个用户进行分别检测,用A、B、C三个指针指向话单的起始时间,其中A、B指针为交叉判断指针分别定位在不同的话单上,C指针为移位指针,并依据“前交叉判断指针定位的话单起始时间+话单时间间隔”与“后交叉判断指针定位的话单起始时间”来判断两交叉判断指针指向的话单是否为交叉话单;
本步骤又分为下列步骤:
1)判断该用户是否有两条及两条以上的话单,如果是,则结束对该用户的检测,否则继续;
2)用指针A指向第一条话单,指针B与C指向第二条话单;
3)读取A所指话单的起始时间和时间间隔及B所指话单的起始时间;
4)判断A的起始时间+时间间隔是否小于B的起始时间;如果小于,则执行第5)步,否则执行第7)步;
5)判断C所指的是否是最后一条话单,如果是,则结束对该用户的检测,否则执行第6)步;
6)将C赋值给A,取得C所指话单的下一条话单的指针赋值给B,C重复第3)步操作;
7)将A、B所指话单标识为交叉话单;
8)判断C所指的是否是最后一条话单,如果是,则结束对该用户的检测,否则执行第9)步;
9)判断B所指的话单是否为最后一条话单,如果是,则执行第6)步操作,否则执行第10)步操作;
10)取得B所指话单的下一条话单的指针赋值给B,重复第3)步操作;
第三步,提取所有被标识为交叉话单的话单记录进行分析,对正常的交叉话单按正常的计费方式处理,对错误的交叉话单予以剔除。
采用本发明所述交叉话单检测方法,检测时间短,使后续业务的进一步处理成为可能,提高了计费的正确性
本发明所述的交叉话单检测方法在背景技术中所示的例子实验证明能在半小时内将30万话单中的所有交叉话单检测出来,便于进一步判断是由三方通话、呼叫保持等形成的合理话单还是因异常导致的错误话单。
具体实施说明
下面结合附图对本发明提出的交叉话单检测方法的具体实施作进一步的详细描述:
如图1所示的交叉话单检测方法的指针设置与交叉话单标识的流程,在发明内容中的已经作了比较详细的说明,在此不再赘述。以下具体说明采用该流程如何对正常话单和各种类型的交叉话单进行快速的检测、标识。
对一个具体的用户来说,在所有产生的话单中,如图2所示的正常话单占绝大多数,通过当“前话单的起始时间+通话时长小于下一条话单的起始时间”这个条件筛选掉大部分正常话单,以便缩短检测时间。结合图2,其话单检测过程如下:
1.指针A指向通话1所产生的话单,指针B、C指向通话2所产生的话单,如图6。
2.A所指话单的起始时间为8:00,持续时间为1小时,B所指话单的起始时间为9:30。
3.A所指话单的起始时间+持续时间小于B所指话单的起始时间
4.A指向通话2所产生的话单,B、C指向通话3所产生的话单,如图7.并进行进一步操作。
交叉话单的时间模型可以分为以下三种:单交叉时间模型、连续交叉时间模型、复合交叉时间模型,分别如图3、4、5所示。下面具体说明如何采用本发明的方法在用户话单中检测交叉话单。
当遇到图3所示的交叉话单的时候,通过“当前话单的起始时间+通话时长是否小于下一条话单的起始时间”这个条件也能立即判断出交叉话单,这时绝大部分话单已经判断明白。结合图3,其话单检测过程如下:
1.指针A指向通话1所产生的话单,指针B、C指向通话2所产生的话单。如图8。
2.A所指话单的起始时间为8:00,持续时间为1小时,B所指话单的起始时间为8:30。
3.A所指话单的起始时间+持续时间大于B所指话单的起始时间。
4.将通话1产生的话单和通话2产生的话单标记为交叉话单。
5.将B所指话单的下一条话单的指针赋值给B,即B指向通话3产生的话单,如图9,并进行进一步操作。
当遇到图4所示的话单时,其处理过程如下:
1.指针A指向通话1所产生的话单,指针B、C指向通话2所产生的话单。如图10。
2.A所指话单的起始时间为8:00,持续时间为1小时,B所指话单的起始时间为8:30。
3.A所指话单的起始时间+持续时间大于B所指话单的起始时间。
4.将通话1产生的话单和通话2产生的话单标记为交叉话单。
5.将B所指话单的下一条话单的指针赋值给B,即B指向通话3产生的话单,如图11
6.A所指话单的起始时间为8:00,持续时间为1小时,B所指话单的起始时间为9:10。
7.A所指话单的起始时间+持续时间小于B所指话单的起始时间。
8.将C赋值给A,也就是A指向通话2所产生话单,将C所指话单的下一条的指针赋值给B、C,也就是B、C指向通话3所产生的话单,如图12,并进行进一步操作。
当遇到如图5所示的话单时,其处理过程如下:
1.指针A指向通话1所产生的话单,指针B、C指向通话2所产生的话单。如图13。
2.A所指话单的起始时间为8:00,持续时间为3.5小时,B所指话单的起始时间为8:30。
3.A所指话单的起始时间+持续时间大于B所指话单的起始时间。
4.将通话1产生的话单和通话2产生的话单标记为交叉话单。
5.将B所指话单的下一条话单的指针赋值给B,即B指向通话3产生的话单,如图14。
6.A所指话单的起始时间为8:00,持续时间为3.5小时,B所指话单的起始时间为9:00。
7.A所指话单的起始时间+持续时间大于B所指话单的起始时间。
8.将通话1产生的话单和通话3产生的话单标记为交叉话单。
9.将B所指话单的下一条话单的指针赋值给B,即B指向通话4产生的话单,如图15。
10.A所指话单的起始时间为8:00,持续时间为3.5小时,B所指话单的起始时间为10:20。
11.A所指话单的起始时间+持续时间大于B所指话单的起始时间。
12.将通话1产生的话单和通话4产生的话单标记为交叉话单。
13.将B所指话单的下一条话单的指针赋值给B,即B指向通话5产生的话单,如图16。
14.A所指话单的起始时间为8:00,持续时间为3.5小时,B所指话单的起始时间为12:00。
15.A所指话单的起始时间+持续时间小于B所指话单的起始时间。
16.将C赋值给A,即A指向通话2所产生的话单,将C所指话单的下一条话单的指针赋值给B、C,即B、C指向通话3所产生的话单。如图
17所示。并进行进一步操作。
本发明的交叉话单检测方法对所有交叉话单的时间模型都能够有效地予以检测、处理,为计费系统的准确计费提供了有效的保障,而且不增加任何系统硬件成本。