CN103020464B - 一种车机累计工作时间修正方法 - Google Patents
一种车机累计工作时间修正方法 Download PDFInfo
- Publication number
- CN103020464B CN103020464B CN201210569269.2A CN201210569269A CN103020464B CN 103020464 B CN103020464 B CN 103020464B CN 201210569269 A CN201210569269 A CN 201210569269A CN 103020464 B CN103020464 B CN 103020464B
- Authority
- CN
- China
- Prior art keywords
- time
- value
- cumulative operation
- record
- revise
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Time Recorders, Dirve Recorders, Access Control (AREA)
Abstract
本发明涉及一种车机累计工作时间修正方法,特别适用于GPS车载监控系统中,基于Oracle数据库的车机累计工作时间的修正方法。该方法包括1)从数据库中获取需要修正的车机唯一编号及待修正的时间段;2)判断修正是否为首次执行,如果是首次执行,则执行步骤3),否则执行步骤4);3)查找第一个正确修正值;4)获取上一个正确修正值;5)修正车机工作时间记录。本发明方法修正率达到95%以上,消除异常的跳变数据,从而使车机上传的工作时间值按时间段符合递增规律,修正的准确率高,简单易于实现,可延展性搞。其作用是使有误差的工作时间得有修正,从而减少后续基于该累计工作时间的分析统计的误差。
Description
技术领域
本发明涉及一种车机累计工作时间修正方法,特别适用于GPS车载监控系统中,基于Oracle数据库的车机累计工作时间的修正方法。
背景技术
在GPS车载监控系统中,需要对车辆的每天、每周、每月、每年累计的工作时间进行跟踪分析和统计,从而实现透明化管理和控制成本的目的,但是目前车载终端由于各种硬软原因导致上传的累计工作时间数据波动较大,不稳定,出现很多异常数据值,如突然变大,或突然变小,或为空,或为0,或同一时间点上传多个不同工作时间记录等等错误的工作时间记录值,从而导致用户在获取每天、每周、每月、每年的累计工作小时数时所得到的统计结果误差较大,不能满足要求。
发明内容
本发明的目的是针对上述不足之处提供一种车机累计工作时间修正方法,针对目前车机上传累计工作时间误差的问题,提供一种基于Oracle的车机累计工作时间修正方法,采用查找第一个正确修正值、获取上一个正确修正值和修正车机工作时间记录方法来灵活有效地对有误差的车机工作时间值进行修正,从而能够提高车载终端上传的累计工作时间值的准确性。
一种车机累计工作时间修正方法是采取以下技术方案实现的:
一种车机累计工作时间修正方法,包括如下步骤:
1)从数据库中获取需要修正的车机唯一编号及待修正的时间段,其中车机唯一编号是一台车机唯一编号或多个车机唯一编号的集合;待修正的时间段是某一天的一段时间或是跨度多天的一段时间。
2)判断修正是否为首次执行,如果是首次执行,则执行步骤3),否则执行步骤4)。
3)查找第一个正确修正值
查找第一个正确修正值的目的是用于获取新注册的车机所上传的第一条正确工作时间值,即开关量为0,表示开,工作时间值不小于0,且与该记录后连续的3(该值可人为设定,表示误差的允许范围)条不同的工作时间值之间符合步骤5)修正车机工作时间记录中的要求。通过步骤3)获得第一个正确的工作时间所对应的日期、第一个正确的工作时间所对应的时间、第一个正确的工作时间所对应的开关量以及第一个正确的工作时间所对应的工作时间值,并分别记录为前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量以及前一个正确工作时间所对应的工作时间值,然后执行步骤5)。
查找第一个正确修正值包括以下步骤:
3-1)首先获取包括该待修正工作时间记录值在内的符合误差允许范围内的至少3条不同的且不为空的工作时间记录值,且这些记录要按照日期、时间、工作时间值进行升序排序,然后逐条执行步骤3-2)。
3-2)判断该待修正工作时间值对应的开关量值是否为0,如果为0,则执行步骤3-2-1),如果不是0,则执行步骤3-2-2)。
3-2-1)判断该待修正工作时间值是否大于等于0,如果大于等于0,则执行步骤5-6)中的是否人为调大来判断该值是否为正确的记录值,如果符合人为调大规律,则将该待修正工作时间值对应的当前日期、当前时间、当前开关量和待修正工作时间值缓存到指定的数组A中进行保存,并执行步骤3-3);如果不符合人为调大规律,则判断该记录为错误的记录,将删除该待修正工作时间记录值。如果小于0,则判断该记录为错误的记录,将删除该待修正工作时间记录值。
3-2-2)判断该待修正工作时间值是否为第一条不为空的工作时间值,如果是,则执行步骤3-2-2-1),如果不是,则执行步骤3-2-2-2)。
3-2-2-1)执行步骤5-6)中是否人为调大判断该值是否符合人为调大规律,如果不符合,则判断该记录为错误的记录,将删除该待修正工作时间值;如果符合,则将该待修正工作时间值对应的当前日期、当前时间、当前开关量以及待修正工作时间值缓存到指定的数组A中进行保存,继续判断下一条待修正的工作时间记录值,直到找到一条符合步骤3-2-1)中要求的工作时间值不为空的工作时间值,且开关量等于0,且符合人为调大规律要求的累计工作时间记录值为止,并执行步骤3-3),如果直到所有的累计工作时间记录值都判断完任没有找到符合步骤3-2-1)中要求的工作时间值,则也执行步骤3-3)。
3-2-2-2)判断该待修正的累计工作时间值与已缓存的数组A中记录值是否符合递增或者与后续的数据符合人为调大规律,如果符合,则将该值也报错到缓存数组A中,继续判断下一条待修正的工作时间记录值,直到找到一条符合步骤3-2-1)中要求的工作时间值不为空的工作时间值,且开关量等于0,且符合人为调大算法规律要求的累计工作时间记录值为止,并执行步骤3-3),如果直到所有的累计工作时间记录值都判断完任没有找到符合步骤3-2-1)中要求的工作时间值,则也执行步骤3-3)。如果不符合,则判断该记录为错误的记录,将删除该待修正工作时间值。
3-3)按缓存数组A中的时间顺序对该数组所涉及的时间范围的所有累计工作时间记录值按范围进行更新修正,并将每一个工作时间值对应的当前日期、当前时间、当前开关量、待修正工作时间值更新到前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量、前一个正确工作时间所对应的工作时间值中,为后续的修正提供判断依据。
4)获取上一个正确修正值
获取上一个正确修正值的主要目的是获取某天之前的最后一条工作时间值最早出现的日期、时间及工作时间值。通过该步骤可获得待修正这天之前的最后一条工作时间值最早出现的日期、时间、及工作时间值已经经过修正后的最后一条工作时间,如果未找到,则继续执行步骤3),如果找到,则执行步骤5)来完成累计工作时间的修正。
获取上一个正确修正值的步骤如下:
4-1)由于所有数据是按照月份保存在Oracle的不同数据表中的,因此首先判断该待修正的累计工作时间值所对应的日期是否为某月的1号,如果不是1号,则从当月oracle数据表中获取所有不同的累计工作时间记录值,并按照日期升序、时间升序、工作时间值降序进行排序,并将获得的第一条记录所对应的工作时间值缓存到变量B中;如果不是,则在已修正的oracle数据表找查找符合上述要求的工作时间值,并缓存到变量B中。
4-2)根据待修正的累计工作时间记录值所对应的月份,从最近的一个月份开始倒序在oracle各数据表中查找到该变量B第一次出现的日期、时间,并将该值记录到对应的前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量、前一个正确工作时间所对应的工作时间值中,为后续的修正提供判断依据。
5)修正车机工作时间记录
修正车机工作时间记录的主要目的是在前一条工作时间值(即上传的工作时间1)已经被判断为正确值的前提下,判断新一条工作时间值(即上传的工作时间2)是否正确,判断方法如下:
A、计算GPS时间差与上传的工作时间差
Time1= 上传的工作时间2- 上传的工作时间1
Time2= GPS上传时间2- GPS上传时间1
B、比较Time1与Time2
当Time1<=Time2+允许的误差,则判断该新的工作时间值(即上传的工作时间2)为正确值,保留该值;
当Time1>Time2+允许的误差,则判断该新的工作时间值(即上传的工作时间2)为错误记录,直接用前一工作时间值(即上传的工作时间1)替换。
所述的Time1表示上传的工作时间差,Time2表示GPS时间差。
所述允许的误差能人为设定。
修正车机工作时间记录包括以下步骤:
5-1)首先获取待修正车机唯一编号某一天中的按日期、时间、工作时间值进行排序的所有累计工作时间记录值,然后按顺序比较待修正工作时间记录值对应的日期、时间是否与已经经过修正的最后一个累计工作时间值对应的日期、时间相同,如果相同,则用前一个已经经过修正的累计工作时间值来更新相关字段的该工作时间值,该步骤能够对同一时间点上传多条不同累计工作时间值的误差进行修正;如果不同,则执行步骤5-2)。
5-2)判断该工作时间值是否为空,如果为空,则用前一个已经经过修正的累计工作时间值来更新相关字段的该累计工作时间值,该步骤能够对空的累计工作时间值的记录进行修正;如果不同,则执行步骤5-3)。
5-3)判断该待修正的工作时间记录值是否与前一个已经经过修正的累计工作时间值相等,如果相等,则直接更新相关字段的记录值,该步骤能够保证已符合步骤5)中规律要求的不同时间点上传同一累计工作时间值能被正确的保留;如果不等,则执行步骤5-4)。
5-4)判断该待修正的工作时间记录值是否大于前一个已经经过修正的累计工作时间值,如果大于,则执行步骤5-5),如果小于,则执行步骤5-7)。
5-5)按照步骤5)中的A、B判断方法来判断该是否符合正确的数据变化规律,如果符合,则直接用该更新相关字段的累计工作时间记录值,并用该记录所对应的日期、时间、开关量和工作时间值来更新已有的前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量和前一个正确工作时间所对应的工作时间值,从而为下一次修正提供判断依据。该步骤能够保证已符合步骤5)中规律要求按时间变化递增的累计工作时间记录值能被正确的保留;如果不符合,则执行步骤5-6)来判断是否为人为调大。
5-6)人为调大
该步骤首先假定该带修正的累计工作时间记录值为车机上传的第一条记录,然后按照允许的误差范围在后续的所有累计工作时间记录中查找N条不同的工作时间记录值,并按照步骤5)中的A和B判断方法进行判断,如果该N条记录符合按时间顺序递增的规律要求,则说明该待修正的累计工作时间值符合人为调大的规律要求,则直接用该待修正的累计工作时间值更新相关字段的累计工作时间记录值,并用该记录所对应的日期、时间、开关量、工作时间值来更新已有的前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量和前一个正确工作时间所对应的工作时间值,从而为下一次修正提供判断依据,该步骤能够保证累计工作时间记录值在被人为在车机上重新设定后的工作时间记录也能够被正确的保留;如果不符合人为调大的规律要求,则直接用前一个已经经过修正的累计工作时间值来更新相关字段的该累计工作时间值,该步骤能够对突然变大的累计工作时间值进行修正。
5-7)人为调小
该步骤首先假定该带修正的累计工作时间记录值为车机上传的第一条记录,然后按照允许的误差范围在后续的所有累计工作时间记录中查找N条不同的工作时间记录值,并按照步骤5)中的A和B判断方法进行判断,如果该N条记录符合按时间顺序递增的规律要求,则说明该待修正的累计工作时间值符合人为调小的规律要求,则直接用该待修正的累计工作时间值更新相关字段的累计工作时间记录值,并用该记录所对应的日期、时间、开关量和工作时间值来更新已有的前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量和前一个正确工作时间所对应的工作时间值,从而为下一次修正提供判断依据,该步骤能够保证累计工作时间记录值在被人为在车机上重新设定后的工作时间记录也能够被正确的保留;如果不符合人为调小的规律要求,则直接用前一个已经经过修正的累计工作时间值来更新相关字段的该累计工作时间值,该步骤能够对突然变大的累计工作时间值进行修正。
本发明方法可以根据客户的需求精度设定允许的误差范围定时对指定的某一车机、或某一机构下的所有车机、或整个系统中的所有车机在某指定日期范围内的所有累计工作时间数据进行修正,通过本方法可以对车机所上传的突然变大,或突然变小,或为空,或为0,或同一时间点上传多个不同累计工作时间值等等错误的累计工作时间记录值进行修正,其修正率达到95%以上,消除异常的跳变数据,从而使车机上传的工作时间值按时间段符合递增规律,进而为客户基于该累计工作时间的对车辆的每天、每周、每月、每年总的累计工作时间进行的跟踪分析和统计提供精确的参考数据。本发明方法其修正的准确率高,简单易于实现,可延展性搞。其作用是使有误差的工作时间得有修正,从而减少后续基于该累计工作时间的分析统计的误差。
附图说明
以下将结合附图对本发明作进一步说明:
图1是本发明车机累计工作时间修正方法的步骤流程简图。
图2是本发明车机累计工作时间修正方法的涉及数据库记录示意图。
图3是本发明车机累计工作时间修正方法对没有误差数据前后修正的结果对比图。
图4是本发明车机累计工作时间修正方法对“突然变小”误差数据前后修正的结果对比图。
图5是本发明车机累计工作时间修正方法对“相同时间上传多个不同时间值”误差数据前后修正的结果对比图。
图6是本发明车机累计工作时间修正方法对“突然变为0”误差数据前后修正的结果对比图。
图7是本发明车机累计工作时间修正方法对“突然变大”误差数据前后修正的结果对比图。
具体实施方式
参照附图1~7,一种车机累计工作时间修正方法,包括如下步骤:
1)从数据库中获取需要修正的车机唯一编号(ID)及待修正的时间段(Date),其中车机唯一编号(ID)是一台车机唯一编号(ID),或多个车机唯一编号(ID)的集合;待修正的时间段(Date)是某一天的一段时间或是跨度多天的一段时间。
2)判断修正是否为首次执行,如果是首次执行,则执行步骤3),否则执行步骤4)。
3)查找第一个正确修正值(FindFirstTrueRecord)
查找第一个正确修正值的目的是用于获取新注册的车机所上传的第一条正确工作时间值(Cb_Acctimes_bak),即开关量(Acc)为0,表示开,工作时间值不小于0(Cb_Acctimes_bak>=0),且与该记录后连续的3(该值可人为设定,表示误差的允许范围)条不同的工作时间值之间符合步骤5)修正车机工作时间记录说明中的要求。通过步骤3)获得第一个正确的工作时间所对应的日期(FirstTrueDate)、第一个正确的工作时间所对应的时间(FirstTrueTime)、第一个正确的工作时间所对应的开关量(FirstTrueACC)、第一个正确的工作时间所对应的工作时间值(FirstTrueAcctime),并分别记录为前一个正确工作时间所对应的日期(LastTrueDate)、前一个正确工作时间所对应的时间(LastTrueTime)、前一个正确工作时间所对应的开关量(LastTrueACC)、前一个正确工作时间所对应的工作时间值(LastTrueAcctime),然后执行步骤5)。
查找第一个正确修正值包括以下步骤:
3-1)首先获取包括该待修正工作时间记录值在内的符合误差允许范围内的至少3条不同的且不为空的工作时间记录值,且这些记录要按照日期(Date)、时间(Time)、工作时间值(Cb_Acctimes_bak)进行升序排序,然后逐条执行步骤3-2)。
3-2)判断该待修正工作时间值(NAcctime)对应的开关量(ACC)值是否为0,如果为0,则执行步骤3-2-1),如果不是0,则执行步骤3-2-2)。
3-2-1)判断该待修正工作时间值(NAcctime)是否大于等于0,如果大于等于0,则执行步骤5-6)中的是否人为调大来判断该值是否为正确的记录值,如果符合人为调大规律,则将该待修正工作时间值(NAcctime)对应的当前日期(NDate)、当前时间(NTime)、当前开关量(NACC)和待修正工作时间值(NAcctime)缓存到指定的数组A中进行保存,并执行步骤3-3);如果不符合人为调大规律,则判断该记录为错误的记录,将删除该待修正工作时间记录值(NAcctime)。如果小于0,则判断该记录为错误的记录,将删除该待修正工作时间记录值(NAcctime)。
3-2-2)判断该待修正工作时间值(NAcctime)是否为第一条不为空的工作时间值(NAcctime),如果是,则执行步骤3-2-2-1),如果不是,则执行步骤3-2-2-2)。
3-2-2-1)执行步骤5-6)中是否人为调大判断该值是否符合人为调大规律,如果不符合,则判断该记录为错误的记录,将删除该待修正工作时间值(NAcctime);如果符合,则将该待修正工作时间值(NAcctime)对应的当前日期(NDate)、当前时间(NTime)、当前开关量(NACC)以及待修正工作时间值(NAcctime)缓存到指定的数组A中进行保存,继续判断下一条待修正的工作时间记录值,直到找到一条符合步骤3-2-1)中要求的工作时间值不为空的工作时间值(NAcctime),且开关量(Acc)等于0,且符合人为调大规律要求的累计工作时间记录值为止,并执行步骤3-3),如果直到所有的累计工作时间记录值都判断完任没有找到符合步骤3-2-1)中要求的工作时间值,则也执行步骤3-3)。
3-2-2-2)判断该待修正的累计工作时间值(NAcctime)与已缓存的数组A中记录值是否符合递增或者与后续的数据符合人为调大规律,如果符合,则将该值也报错到缓存数组A中,继续判断下一条待修正的工作时间记录值,直到找到一条符合步骤3-2-1)中要求的工作时间值不为空的工作时间值(NAcctime),且开关量(Acc)等于0,且符合人为调大算法规律要求的累计工作时间记录值为止,并执行步骤3-3),如果直到所有的累计工作时间记录值都判断完任没有找到符合步骤3-2-1)中要求的工作时间值,则也执行步骤3-3)。如果不符合,则判断该记录为错误的记录,将删除该待修正工作时间值(NAcctime)。
3-3)按缓存数组A中的时间顺序对该数组所涉及的时间范围的所有累计工作时间记录值按范围进行更新修正,并将每一个工作时间值(NAcctime)对应的当前日期(NDate)、当前时间(NTime)、当前开关量(NACC)、待修正工作时间值(NAcctime)更新到前一个正确工作时间所对应的日期(LastTrueDate)、前一个正确工作时间所对应的时间(LastTrueTime)、前一个正确工作时间所对应的开关量(LastTrueACC)、前一个正确工作时间所对应的工作时间值(LastTrueAcctime)中,为后续的修正提供判断依据。
4)获取上一个正确修正值(GetLastTrueRecord)
获取上一个正确修正值的主要目的是获取某天之前的最后一条工作时间值最早出现的日期、时间及工作时间值。通过该步骤可获得待修正这天之前的最后一条工作时间值最早出现的日期、时间、及工作时间值已经经过修正后的最后一条工作时间,如果未找到,则继续执行步骤3),如果找到,则执行步骤5)来完成累计工作时间的修正。
获取上一个正确修正值的步骤如下:
4-1)由于所有数据是按照月份保存在Oracle的不同数据表中的,因此首先判断该待修正的累计工作时间值(NAcctime)所对应的日期(Date)是否为某月的1号,如果不是1号,则从当月oracle数据表中获取所有不同的累计工作时间记录值,并按照日期(Date)升序、时间(Time)升序、工作时间值(Acctime)降序进行排序,并将获得的第一条记录所对应的工作时间值(Cb_Acctimes_bak )缓存到变量B中;如果不是,则在已修正的oracle数据表找查找符合上述要求的工作时间值(Cb_Acctimes_bak ),并缓存到变量B中。
4-2)根据待修正的累计工作时间记录值所对应的月份,从最近的一个月份开始倒序在oracle各数据表中查找到该变量B第一次出现的日期(Date)、时间(Time),并将该值记录到对应的前一个正确工作时间所对应的日期(LastTrueDate)、前一个正确工作时间所对应的时间(LastTrueTime)、前一个正确工作时间所对应的开关量(LastTrueACC)、前一个正确工作时间所对应的工作时间值(LastTrueAcctime)中,为后续的修正提供判断依据。
5)修正车机工作时间记录(ChangeAcctimes)
修正车机工作时间记录的主要目的是在前一条工作时间值(即上传的工作时间1)已经被判断为正确值的前提下,判断新一条工作时间值(即上传的工作时间2)是否正确,判断方法如下:
A、计算GPS时间差与上传的工作时间差
Time1= 上传的工作时间2- 上传的工作时间1
Time2= GPS上传时间2- GPS上传时间1
B、比较Time1与Time2
当Time1<=Time2+允许的误差(Error),则判断该新的工作时间值(即上传的工作时间2)为正确值,保留该值;
当Time1>Time2+允许的误差(Error),则判断该新的工作时间值(即上传的工作时间2)为错误记录,直接用前一工作时间值(即上传的工作时间1)替换。
所述的Time1表示上传的工作时间差,Time2表示GPS时间差。
所述允许的误差能人为设定。
修正车机工作时间记录包括以下步骤:
5-1)首先获取待修正车机唯一编号(ID)某一天中的按日期(Date)、时间(Time)、工作时间值(Cb_Acctimes_bak)进行排序的所有累计工作时间记录值(Acctimes),然后按顺序比较待修正工作时间记录值(NAcctime)对应的日期(NDate)、时间(NDime)是否与已经经过修正的最后一个累计工作时间值对应的日期(LDate)、时间(LDime)相同,如果相同,则用前一个已经经过修正的累计工作时间值(LAcctime)来更新相关字段的该工作时间值(NAcctime),该步骤能够对同一时间点上传多条不同累计工作时间值的误差进行修正;如果不同,则执行步骤5-2)。
5-2)判断该工作时间值(NAcctime)是否为空,如果为空,则用前一个已经经过修正的累计工作时间值(LAcctime)来更新相关字段的该累计工作时间值(NAcctime),该步骤能够对空的累计工作时间值的记录进行修正;如果不同,则执行步骤5-3)。
5-3)判断该待修正的工作时间记录值(NAcctime)是否与前一个已经经过修正的累计工作时间值(LAcctime)相等,如果相等,则直接更新相关字段的记录值,该步骤能够保证已符合步骤5)中规律要求的不同时间点上传同一累计工作时间值能被正确的保留;如果不等,则执行步骤5-4)。
5-4)判断该待修正的工作时间记录值(NAcctime)是否大于前一个已经经过修正的累计工作时间值(LAcctime),如果大于,则执行步骤5-5),如果小于,则执行步骤5-7)。
5-5)按照步骤5)中的A、B判断方法来判断该(NAcctime)是否符合正确的数据变化规律,如果符合,则直接用该(NAcctime)更新相关字段的累计工作时间记录值,并用该记录所对应的日期(NDate)、时间(NTime)、开关量(NACC)和工作时间值(NAcctime)来更新已有的前一个正确工作时间所对应的日期(LastTrueDate)、前一个正确工作时间所对应的时间(LastTrueTime)、前一个正确工作时间所对应的开关量(LastTrueACC)和前一个正确工作时间所对应的工作时间值(LastTrueAcctime),从而为下一次修正提供判断依据。该步骤能够保证已符合步骤5)中规律要求按时间变化递增的累计工作时间记录值能被正确的保留;如果不符合,则执行步骤5-6)来判断是否为人为调大。
5-6)人为调大
该步骤首先假定该带修正的累计工作时间记录值(NAcctime)为车机上传的第一条记录,然后按照允许的误差范围在后续的所有累计工作时间记录中查找N条不同的工作时间记录值,并按照步骤5)中的A和B判断方法进行判断,如果该N条记录符合按时间顺序递增的规律要求,则说明该待修正的累计工作时间值(NAcctime)符合人为调大的规律要求,则直接用该待修正的累计工作时间值(NAcctime)更新相关字段的累计工作时间记录值,并用该记录所对应的日期(NDate)、时间(NTime)、开关量(NACC)、工作时间值(NAcctime)来更新已有的前一个正确工作时间所对应的日期(LastTrueDate)、前一个正确工作时间所对应的时间(LastTrueTime)、前一个正确工作时间所对应的开关量(LastTrueACC)和前一个正确工作时间所对应的工作时间值(LastTrueAcctime),从而为下一次修正提供判断依据,该步骤能够保证累计工作时间记录值在被人为在车机上重新设定后的工作时间记录也能够被正确的保留;如果不符合人为调大的规律要求,则直接用前一个已经经过修正的累计工作时间值(LastTrueAcctime)来更新相关字段的该累计工作时间值(NAcctime),该步骤能够对突然变大的累计工作时间值进行修正。
5-7)人为调小
该步骤首先假定该带修正的累计工作时间记录值(NAcctime)为车机上传的第一条记录,然后按照允许的误差范围在后续的所有累计工作时间记录中查找N条不同的工作时间记录值,并按照步骤5)中的A和B判断方法进行判断,如果该N条记录符合按时间顺序递增的规律要求,则说明该待修正的累计工作时间值(NAcctime)符合人为调小的规律要求,则直接用该待修正的累计工作时间值(NAcctime)更新相关字段的累计工作时间记录值,并用该记录所对应的日期(NDate)、时间(NTime)、开关量(NACC)和工作时间值(NAcctime)来更新已有的前一个正确工作时间所对应的日期(LastTrueDate)、前一个正确工作时间所对应的时间(LastTrueTime)、前一个正确工作时间所对应的开关量(LastTrueACC)和前一个正确工作时间所对应的工作时间值(LastTrueAcctime),从而为下一次修正提供判断依据,该步骤能够保证累计工作时间记录值在被人为在车机上重新设定后的工作时间记录也能够被正确的保留;如果不符合人为调小的规律要求,则直接用前一个已经经过修正的累计工作时间值(LastTrueAcctime)来更新相关字段的该累计工作时间值(NAcctime),该步骤能够对突然变大的累计工作时间值进行修正。
Claims (3)
1.一种车机累计工作时间修正方法,其特征在于,包括如下步骤:
1)从数据库中获取需要修正的车机唯一编号及待修正的时间段,其中车机唯一编号是一台车机唯一编号或多个车机唯一编号的集合;待修正的时间段是某一天的一段时间或是跨度多天的一段时间;
2)判断修正是否为首次执行,如果是首次执行,则执行步骤3),否则执行步骤4);
3)查找第一个正确修正值,执行步骤5);
4)获取上一个正确修正值,如未找到上一个正确修正值,则执行步骤3);
5)修正车机工作时间记录
在前一条工作时间值,即上传的工作时间1已经被判断为正确值的前提下,判断新一条工作时间值,即上传的工作时间2是否正确,判断方法如下:
A、计算GPS时间差与上传的工作时间差;
Time1= 上传的工作时间2- 上传的工作时间1;
Time2= GPS上传时间2- GPS上传时间1 ;
B、比较Time1与Time2;
当Time1<=Time2+允许的误差,则判断该新一条工作时间值,即上传的工作时间2为正确值,保留该值;
当Time1>Time2+允许的误差,则判断该新一条工作时间值,即上传的工作时间2为错误记录,直接用前一工作时间值,即上传的工作时间1替换;
所述的Time1表示上传的工作时间差,Time2表示GPS时间差;
所述允许的误差能人为设定;
修正车机工作时间记录包括以下步骤:
5-1)首先获取待修正车机唯一编号某一天中的按日期、时间、工作时间值进行排序的所有累计工作时间记录值,然后按顺序比较待修正工作时间记录值对应的日期、时间是否与已经经过修正的最后一个累计工作时间值对应的日期、时间相同,如果相同,则用前一个已经经过修正的累计工作时间值来更新相关字段的待修正工作时间记录值,该步骤能够对同一时间点上传多条不同累计工作时间值的误差进行修正;如果不同,则执行步骤5-2);
5-2)判断待修正工作时间记录值是否为空,如果为空,则用前一个已经经过修正的累计工作时间值来更新相关字段的该累计工作时间值,该步骤能够对空的累计工作时间值的记录进行修正;如果不为空,则执行步骤5-3);
5-3)判断该待修正工作时间记录值是否与前一个已经经过修正的累计工作时间值相等,如果相等,则直接更新相关字段的记录值,该步骤能够保证已符合步骤5)中规律要求的不同时间点上传同一累计工作时间值能被正确的保留;如果不等,则执行步骤5-4);
5-4)判断该待修正工作时间记录值是否大于前一个已经经过修正的累计工作时间值,如果大于,则执行步骤5-5),如果小于,则执行步骤5-7);
5-5)按照步骤5)中的A、B判断方法来判断该待修正工作时间记录值是否符合正确的数据变化规律,如果符合,则直接用该更新相关字段的累计工作时间记录值,并用该记录所对应的日期、时间、开关量和工作时间值来更新已有的前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量和前一个正确工作时间所对应的工作时间值,从而为下一次修正提供判断依据;
该步骤能够保证已符合步骤5)中规律要求按时间变化递增的累计工作时间记录值能被正确的保留;如果不符合,则执行步骤5-6)来判断是否为人为调大;
5-6)人为调大;
所述人为调大方法为:首先假定该待修正工作时间记录值为车机上传的第一条记录,然后按照允许的误差范围在后续的所有累计工作时间记录中查找N条不同的工作时间记录值,并按照步骤5)中的A和B判断方法进行判断,如果该N条不同的工作时间记录值符合按时间顺序递增的规律要求,则说明该待修正工作时间记录值符合人为调大的规律要求,则直接用该待修正工作时间记录值更新相关字段的累计工作时间记录值,并用该记录所对应的日期、时间、开关量、工作时间值来更新已有的前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量和前一个正确工作时间所对应的工作时间值,从而为下一次修正提供判断依据,该步骤能够保证累计工作时间记录值在被人为在车机上重新设定后的工作时间记录也能够被正确的保留;如果不符合人为调大的规律要求,则直接用前一个已经经过修正的累计工作时间值来更新相关字段的该累计工作时间值,该步骤能够对突然变大的累计工作时间值进行修正;
5-7)人为调小;
所述人为调小的方法为:首先假定该待修正工作时间记录值为车机上传的第一条记录,然后按照允许的误差范围在后续的所有累计工作时间记录中查找N条不同的工作时间记录值,并按照步骤5)中的A和B判断方法进行判断,如果该N条不同的工作时间记录值符合按时间顺序递增的规律要求,则说明该待修正工作时间记录值符合人为调小的规律要求,则直接用该待修正工作时间记录值更新相关字段的累计工作时间记录值,并用该记录所对应的日期、时间、开关量和工作时间值来更新已有的前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量和前一个正确工作时间所对应的工作时间值,从而为下一次修正提供判断依据,该步骤能够保证累计工作时间记录值在被人为在车机上重新设定后的工作时间记录也能够被正确的保留;如果不符合人为调小的规律要求,则直接用前一个已经经过修正的累计工作时间值来更新相关字段的该累计工作时间值,该步骤能够对突然变大的累计工作时间值进行修正。
2.根据权利要求1所述的车机累计工作时间修正方法,其特征在于,所述步骤4)中获取上一个正确修正值的步骤如下:
4-1)首先判断该待修正工作时间记录值所对应的日期是否为某月的1号,如果不是1号,则从当月oracle数据表中获取所有不同的累计工作时间记录值,并按照日期升序、时间升序、工作时间值降序进行排序,并将获得的第一条记录所对应的工作时间值缓存到变量B中;如果是某月的1号,则在已修正的oracle数据表查找第一条记录所对应的待修正工作时间记录值,并缓存到变量B中;
4-2)根据待修正工作时间记录值所对应的月份,从最近的一个月份开始倒序在oracle各数据表中查找到该变量B第一次出现的日期、时间,并将该变量B第一次出现的日期、时间记录到对应的前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量、前一个正确工作时间所对应的工作时间值中,为后续的修正提供判断依据。
3.根据权利要求1所述的车机累计工作时间修正方法,其特征在于,所述步骤3)中查找第一个正确修正值,包括以下步骤:
3-1)首先获取包括该待修正工作时间记录值在内的符合误差允许范围内的至少3条不同的且不为空的工作时间记录值,且这些记录要按照日期、时间、工作时间值进行升序排序,然后逐条执行步骤3-2);
3-2)判断该待修正工作时间记录值对应的开关量值是否为0,如果为0,则执行步骤3-2-1),如果不是0,则执行步骤3-2-2);
3-2-1)判断该待修正工作时间记录值是否大于等于0,如果大于等于0,则执行步骤5-6)中的是否人为调大来判断该值是否为正确的记录值,如果符合人为调大规律,则将该待修正工作时间记录值对应的当前日期、当前时间、当前开关量和待修正工作时间记录值缓存到指定的数组A中进行保存,并执行步骤3-3);如果不符合人为调大规律,则判断该记录为错误的记录,将删除该待修正工作时间记录值;如果小于0,则判断该记录为错误的记录,将删除该待修正工作时间记录值;
3-2-2)判断该待修正工作时间记录值是否为第一条不为空的工作时间值,如果是,则执行步骤3-2-2-1),如果不是,则执行步骤3-2-2-2);
3-2-2-1)执行步骤5-6)中是否人为调大判断该值是否符合人为调大规律,如果不符合,则判断该记录为错误的记录,将删除该待修正工作时间记录值;如果符合,则将该待修正工作时间记录值对应的当前日期、当前时间、当前开关量以及待修正工作时间记录值缓存到指定的数组A中进行保存,继续判断下一条待修正工作时间记录值,直到找到一条符合步骤3-2-1)中要求的工作时间值不为空的工作时间值,且开关量等于0,且符合人为调大规律要求的累计工作时间记录值为止,并执行步骤3-3),如果直到所有的累计工作时间记录值都判断完任没有找到符合步骤3-2-1)中要求的工作时间值,则也执行步骤3-3);
3-2-2-2)判断该待修正工作时间记录值与已缓存的数组A中记录值是否符合递增或者与后续的数据符合人为调大规律,如果符合,则将待修正工作时间记录值也报错到缓存数组A中,继续判断下一条待修正工作时间记录值,直到找到一条符合步骤3-2-1)中要求的工作时间值不为空的工作时间值,且开关量等于0,且符合人为调大算法规律要求的累计工作时间记录值为止,并执行步骤3-3),如果直到所有的累计工作时间记录值都判断完任没有找到符合步骤3-2-1)中要求的工作时间值,则也执行步骤3-3);如果不符合,则判断该记录为错误的记录,将删除该待修正工作时间记录值;
3-3)按缓存数组A中的时间顺序对该数组所涉及的时间范围的所有累计工作时间记录值按范围进行更新修正,并将每一个工作时间值对应的当前日期、当前时间、当前开关量、待修正工作时间记录值更新到前一个正确工作时间所对应的日期、前一个正确工作时间所对应的时间、前一个正确工作时间所对应的开关量、前一个正确工作时间所对应的工作时间值中,为后续的修正提供判断依据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210569269.2A CN103020464B (zh) | 2012-12-25 | 2012-12-25 | 一种车机累计工作时间修正方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210569269.2A CN103020464B (zh) | 2012-12-25 | 2012-12-25 | 一种车机累计工作时间修正方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103020464A CN103020464A (zh) | 2013-04-03 |
CN103020464B true CN103020464B (zh) | 2015-10-28 |
Family
ID=47969062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210569269.2A Active CN103020464B (zh) | 2012-12-25 | 2012-12-25 | 一种车机累计工作时间修正方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103020464B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990387B (zh) * | 2019-11-29 | 2024-02-27 | 广东电网有限责任公司 | 一种电能计量设备停电记录错误处理方法及装置 |
CN111159139B (zh) * | 2019-12-30 | 2022-04-22 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置、存储介质及监视设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020029840A (ko) * | 2000-10-14 | 2002-04-20 | 구자홍 | Cdma 이동 통신에서 bsm의 시스템 시간 변환 방법 |
CN101211429A (zh) * | 2006-12-27 | 2008-07-02 | 厦门雅迅网络股份有限公司 | 一种车辆使用统计方法 |
CN102156403A (zh) * | 2010-02-12 | 2011-08-17 | 上海博泰悦臻电子设备制造有限公司 | 车载时钟装置及其实现方法 |
CN102521900A (zh) * | 2011-02-24 | 2012-06-27 | 中华电信股份有限公司 | 车辆里程应用整合系统及其方法 |
CN102520608A (zh) * | 2011-12-19 | 2012-06-27 | 深圳市航盛电子股份有限公司 | 自动校正汽车车载时钟的方法及装置 |
-
2012
- 2012-12-25 CN CN201210569269.2A patent/CN103020464B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020029840A (ko) * | 2000-10-14 | 2002-04-20 | 구자홍 | Cdma 이동 통신에서 bsm의 시스템 시간 변환 방법 |
CN101211429A (zh) * | 2006-12-27 | 2008-07-02 | 厦门雅迅网络股份有限公司 | 一种车辆使用统计方法 |
CN102156403A (zh) * | 2010-02-12 | 2011-08-17 | 上海博泰悦臻电子设备制造有限公司 | 车载时钟装置及其实现方法 |
CN102521900A (zh) * | 2011-02-24 | 2012-06-27 | 中华电信股份有限公司 | 车辆里程应用整合系统及其方法 |
CN102520608A (zh) * | 2011-12-19 | 2012-06-27 | 深圳市航盛电子股份有限公司 | 自动校正汽车车载时钟的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103020464A (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109495318B (zh) | 一种移动通信网络流量预测方法、装置及可读存储介质 | |
CN104090889B (zh) | 数据处理方法及系统 | |
CN103390066B (zh) | 一种数据库全局性自动化优化预警装置及其处理方法 | |
CN110292775B (zh) | 获取差异数据的方法及装置 | |
EP3456360B1 (en) | Device and method for tuning relational database | |
CN107748766B (zh) | 一种基于Presto和Elasticsearch的大数据快速查询方法 | |
CN101140587A (zh) | 一种搜索方法及装置 | |
CN103389974A (zh) | 进行信息搜索的方法及服务器 | |
CN109682436B (zh) | 物联网燃气表抄表数据补抄的方法 | |
CN1975772B (zh) | 整合多个系统中的信息的方法和装置 | |
CN104376073A (zh) | 一种数据库恢复方法及装置 | |
CN107315657B (zh) | 一种数据备份的方法及装置 | |
CN104657387A (zh) | 一种数据查询方法及装置 | |
CN103020464B (zh) | 一种车机累计工作时间修正方法 | |
CN106227510A (zh) | 应用推荐方法及装置 | |
CN111324781A (zh) | 一种数据分析方法、装置及设备 | |
CN106682017B (zh) | 一种数据库更新方法及装置 | |
CN104636401A (zh) | 一种scada系统数据回滚的方法及装置 | |
CN104765782A (zh) | 一种索引排序更新方法及装置 | |
CN103246539B (zh) | 基于用户使用习惯的gis系统模块加载方法 | |
CN112307002A (zh) | 一种数据补偿的方法、系统及计算机可读存储介质 | |
Chen | Fractional programming approach to two stochastic inventory problems | |
CN112148942A (zh) | 基于数据聚类的业务指标数据分类方法及装置 | |
CN114511314A (zh) | 一种支付账户管理的方法、装置、计算机设备和存储介质 | |
CN111046003B (zh) | 一种土壤侵蚀因子数据的更新方法、装置和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20130403 Assignee: JIANGSU SEA LEVEL DATA TECHNOLOGY Co.,Ltd. Assignor: TIANZE INFORMATION INDUSTRY Corp. Contract record no.: X2020320000015 Denomination of invention: Method for correcting vehicle machine accumulated working time Granted publication date: 20151028 License type: Exclusive License Record date: 20200518 |