考勤数据合并,求算法解决思路

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

求:
怎样使用一个算法,可以合理的分析出他中断时正常上下班的顺序和时间?如果在采集时漏掉了下班时间,怎么自动分离出来?对该算法准确性要求很高98-99%.因为一但计算不对,就存在工作人员必须每个人去核对,工作量异常 的大.
我想知道一般做考勤当设备异常时,怎么处理数据?还有一般排班的思路?关于考勤的一些解决思路请提供,非常感谢?
...全文
243 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fairyprince 2006-04-30
  • 打赏
  • 举报
回复
这个就是设计的不合理了,要有两台设备,
2 种方案
1、一个进设备,一个出设备 这个方案不必多说
2、两个设备,一个在进入区(门口 A),另一个在(即将进入工作区 B),对采集数据进行排序,最后你会得到两个相近的时间间隔(进出设备排序是相反的)这样你就可以进行分析了.
这时分以下几种情况
1、进或出时两个好用,出或进时一个不好用:这时两个相近的是进/出时间,单个的是出/进时间。(注意设备时间顺序和间隔时长,用此来判断)
2、进或出时一个好用,出或进时两个好用:分析同1
3、进时 A 好用B不好用,出时 B 好用A不好用: 那么此时 A 是进入时间 B出时间 ,顺序虽然是进入时产生的设置顺序但时间间隔太长,此时认为是一个完整班
4、进时 A 不好用B 好用,出时 B 不好用 A 好用:分析同3
5、进出时只有 A 好用,或 只有B好用 不能分析出来:但可以保留此条记录做为未解决记录,然后向下分析,如果下面可以分析出进出,那么再来判断。
jinxuliang 2006-04-28
  • 打赏
  • 举报
回复
现在给客户提供的方案是当计算下班时间时,用最近分站来进行代替.也可以手动来修正考勤数据.但是客户要求非常高,必须实现全部自动的准确计算.因为一旦通讯中断处理工作量很巨大.

to:fairyprince(精灵王子) ( )
1.该项目和传统的考勤有比较大的区别.
(1).存在多次在上下班处被检测的问题,根据客户要求必须将多次检测的进行合班.同时需要区别加班.传统考勤的做法是第一次刷卡是上班,第二次是下班;此规则不通用.
(2)中断归并后,如何合理隔断进行划班;
如:
A:
1#设备 2006-04-28 03:12:00 (实际情况:上班)
2#设备 2006-04-28 05:12:00 (实际情况:上班)
3#设备 2006-04-28 08:12:00 (实际情况:上班)
4#设备 2006-04-28 09:12:00 (实际情况:上班)
---------------------------------------
1#设备 2006-04-28 12:12:00 (实际情况:下班,但是因为设备故障漏掉了这条记录)
---------------------------------------
因为1#设备是关键点设备,所以此人没有出井时间;
1# 2006-04-28 23:15:00(实际情况:上班)
那么软件设定的逻辑会认为,其下班;这个时候此人上下班顺序刚好相反了.
==================================
可能大家会给建议所设定一个时间范围来确定.过了时间范围,就认为是下班漏了,是从新上班了.
但是客户的实际情况是:每个人的工作时长是不固定的,以完成任务为准.那么就可能某些人就是4-12个小时一个班,某些人他就要工作20个小时以上.时间无论怎么划分都有问题!

一旦一个人有问题,那么值班人员不知道哪个人有问题,必须去重新核对,那么工作量真的太大!所以这个是个非常复杂的环节.请大家给高招!
fairyprince 2006-04-25
  • 打赏
  • 举报
回复
当然是两次刷卡之间的时间是上班是上班时间了!,如果你指漏刷或机器坏了,有二种情况!
一个是在两台机器上刷(进/出各一台)那么这就好分析多了,漏掉了就认为上了完整的班。就行了。
一个是在一台机上刷(进/出在一个机器上)那么分析时就要看时段了(根据上班下班时间,这种情况下可以漏刷,如果只刷了一次那么就认为她上了一个完整班)分析。如果你又指可能遇到加班情况或上下班时间不定,有这么多种情况下是不可能分析出来的了,只能简单的认为两次刷卡之间是上班时间了,如果中间有漏掉的情况那么,数据就不准了。这种情况应及时发现。

就我认为前先人能分析出来的才能让机器去做,如果给你一些数据,用你的思维去分析这些东西如你也想不出个所以然来,那么这个问题更何况让机器去做!就目前看楼主的要求,对于你的设备来说,是一个过分的要求!做一个项目以前,应该先确定它的需求人群和应用范围,你想的太多,太完美就会把自困住,结果就是不能继续下去。不可能做到绝对完美(也不存在这样的东西),只有相对的完美。
菜牛 2006-04-24
  • 打赏
  • 举报
回复
我觉得只要这个数据带有日期和时间信息,有什么难的,可能是不知道具体的需求吧,而且也没有办法搞清楚。
jinxuliang 2006-04-24
  • 打赏
  • 举报
回复
基础通信数据带有时间.
进行时间排序后,主要是该怎样进行合理隔断一个完整的上下班是个难题
fairyprince 2006-04-24
  • 打赏
  • 举报
回复
最关键的设备所采集的信息,你没说,怎么分析
如果设置只采集一个触发信号,没有任何附加信息(主要是时间)。那就没什么办法分析了
如果带时间,并带年月日,也没什么好说的了按时间排序就行了。
如果只带时间,那么如果设备超过一天就不好用好么数据的准备性就不能保证了!也不可能做到100%准备,因为设备本身就存在缺陷!
jinxuliang 2006-04-24
  • 打赏
  • 举报
回复
ding

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧