有如下数据:
工作时段:
上午:08:30~12:00
下午:14:00~18:006 1 0 周承杰 2008-09-19 17:44:32 1200735872000
19 1 0 陈子兰 2008-09-19 17:50:20 1200736220000
12 1 0 成程 2008-09-19 17:51:36 1200736296000
21 1 0 颜枝军 2008-09-19 17:57:05 1200736625000
16 1 0 黄建强 2008-09-19 17:57:09 1200736629000
16 1 0 黄建强 2008-09-19 17:59:23 1200736763000
17 1 0 王伟 2008-09-19 18:01:54 1200736914000
22 1 0 陈勇 2008-09-19 18:08:21 1200737301000
9 1 0 杨关云 2008-09-19 18:39:12 1200739152000
8 1 0 白玉明 2008-09-19 19:29:03 1200742143000
10 1 0 曹之浩 2008-09-19 20:32:29 1200745949000
22 1 0 陈勇 2008-09-22 08:23:36 1200961416000
19 1 0 陈子兰 2008-09-22 08:24:00 1200961440000需要解决的问题:
1、如何过滤掉重复刷卡的记录(如上班时刷了两次)
2、如何判断迟到、早退、加班等情况!求助各位大师!

解决方案 »

  1.   

    把你的数据放入HashMap,key为员工编号,value为刷卡时间.超过一定的时间比如9:00,不接受任何刷卡.
    只HashMap中有key,表示已经刷过卡了,刷卡就无效.下班时再刷一次卡,放到另一个HashMap中.
    迟到、早退根据两次刷卡时间来判断.日常加班也好做.
    不好做的是假日加班.比如春节,中秋节之类的农历加班.
      

  2.   


    不能放MAP啊~~因为数据量太大~我没放完出来,时间不止是当天的啊~~
      

  3.   

    是不能放Map中.断电怎么办.
    那就查询数据库好.
      

  4.   

    这个好像有很大的难度啊,像这样打卡的问题,有好多种case,像什么通宵跟早上忘记打卡之类的,还有其他的一大堆问题,程序是区分不来的。
      

  5.   

    这个我做过。虽然设计语言不是用的JAVA,但是思路可以与各位分享下。
    1. 首先有个配置的文档,用来设置上午上班时间、迟到时间、上午下班时间、下午上班时间、早退时间、下午下班时间2. 当上午某个人打卡之后,再次做打卡操作时,显示已打卡,当然就不会二次记录了;下午如果提前打卡,会记录为早退,当下班时间到了,再次打卡了,将早退记录去除。3. 要有个定时的东西,主要时针对某个人如果不打卡的情况,要将其的记录补上。4. 考虑统计的问题
      

  6.   

    看了上面的回复,我发现大家都没有说到点子上。
    首先要明确的一点是:我们是在打卡的时候进行过滤判断等等一些操作,还是数据录入之后进行判断。很显然,楼主是要对录入后的数据进行统计。所以,上面绝大多数的回复都没有意义。这个数据结构让人挺郁闷的,但是不管怎么说,总该有一列是可以区分重名的主键吧。
    我个人觉得,这样的数据必须每天处理(最主要的就是算法简单,而且把任务平均分配到每一天,不会到集中的某一天被老板追着骂^^)。如果是很多天都要统计,那就循环查询吧)。
    前面讨论了更多的是漏打开和加班到第二天才打卡的情况。毫无疑问:漏打卡是需要提交申请审批的,并且会限制一个月只能允许漏打卡几次,超过了就要按照早退处理。而这时候存在一种很特殊的情况:这小子上班只打过一次卡,o.o这怎么算就涉及到业务逻辑了。至于加班的问题,公司是不允许随便加班的,加班同样需要审批,或许你早上5点打卡,那我可以给你判断是加班了。要是倒霉孩子加班到早上10点呢?如果有坏小子早上不睡觉偷偷的跑来早早的打卡……。你的数据库查询、导出数据不是万能的,这一步的职责就是处理简单的逻辑,然后导出数据,至于更复杂的判断,肯定涉及到审批了。所以那些更复杂的逻辑,交给助理或者其他相关人员去手动处理。
    其实很多人的思维都进了一个误区,需要明白的是:程序不是万能的,有些东西根本没办法交给程序去进行逻辑判断(如果说前一天下班没打卡,第二天早上N点之前打卡就算是通宵加班,这个逻辑的漏洞就比较恐怖了吧o.o,想不明白的自觉靠墙边站着去),复杂的逻辑,必然要拆分成更多的合理步骤去处理。
      

  7.   

    直接INSERT 啊,用员工ID,和 年月日做唯一关键字
      

  8.   

    怎么图贴不出来?编辑自己的贴子也不能编辑啊图的地址
    http://photo2.bababian.com/upload2/20090718/4148E7132FE377D45A22930318574F46_500.jpg