考勤数据合并,求算法解决思路
背景描述:
这本身是集成人员定位和考勤在一起的系统.根据人员当天的路由地方和时间分析出上下班时间.在通讯正常的情况下,没有任何问题.现在需要讨论的是,当通讯中断后,硬件设备会把数据保存在缓存中.当通讯恢复时,程序自动将数据采集分析进入数据库.
问题:
就出现在中断恢复后,怎么计算出正确的上下班时间.如果下班的时候漏掉了,怎么自动分离.使他不和下一个班混为一个班?
困惑处:
(1)通讯可能中断几个小时,或者几天(包括跨月和跨年的情况)
(2)因为其本身是定位设备,无线的.所以存在在某些设备上没有被感应到.设置在关键设备上(特指:用来表示上或者下班的设备)也可能存在漏掉的可能.
(3)人上下班没有规定的时间,成流水.现有计班方式是以第一次在关键设备上检测到为上班时间,在带有出口性质的设备上出现为下班时间.(因为通讯的特殊性可能存在时序颠倒:所以必须进行程序的自动轨迹再修正.简单的说就是:数据的采集顺序不是人真实的运行轨迹顺序,需要根据时间重排序)
(4)上班时间:可能存在2/4/6/8/10/12/18小时的实际上班时间一天内.也存在一天上两个班的情况.
(5)数据量:一天大约1000人次.轨迹大约是2万条.一个月的轨迹大概是60万条左右.
(6)中断数据的采集.中断数据的采集优先级比较低,始终是在当前没有需要正常采集数据时进行.所有每个设备的中断数据采集完毕时间不能准确确定,但可有个基本可界定的时间段.但存在一部分设备通讯中断,一部分通讯正常.也就是说,今天可能把以前的中断采集完了在设备A上,但是设备B今天可能又发生中断了.设备B今天中断的数据必须等待通讯恢复时才能进行正常采集.设备B的数据有可能影响班次计算.
求:
怎样使用一个算法,可以合理的分析出他中断时正常上下班的顺序和时间?如果在采集时漏掉了下班时间,怎么自动分离出来?对该算法准确性要求很高98-99%.因为一但计算不对,就存在工作人员必须每个人去核对,工作量异常 的大.
我想知道一般做考勤当设备异常时,怎么处理数据?还有一般排班的思路?关于考勤的一些解决思路请提供,非常感谢?