记考勤功能的简单实现

    好久没有记录最近遇到的问题了,源于实在是有点忙。

    好吧,废话不多说,正式开始。

    考勤功能的实现,首先需要考虑到考勤人,考勤时间,以及考勤状态这些属性。说起来很简单,无非就是当用户点击考勤按钮之后,更改考勤状态,并复刻当前的时间到对应考勤人的表记录中。

    目前我默认'0'为未打卡状态,'1'为打卡状态,则SQL语句如下所示:

update table_kq set kqsj='2018-5-6 20:55:27',status='1';

    此刻,就能够在后台对应显示各个人的考勤状态了,在网页前端使用打勾或者打叉的图片来进行直观展示。

    接下来,问题就来了,这里反映的是每个考勤人单次的考勤状态。当我第一天打卡后,数据库中的‘staus’字段信息就一直是‘1’,之后的每一次打卡无非是更改打卡时间,需要采取哪一种方式来使得每天凌晨自动复位每一个考勤人的考勤时间和考勤状态。目前我考虑到的是用java来实现一个简单定时器,调用一次复位功能的服务。

    此外,我在思考是否还有其他实现方案。出去抽了个烟,在群里提了一下这个问题,有人告诉我在数据库中写一个事件定时触发器就ok了。由于之前从来没接触过在数据库中写定时触发器,所以不免又是一个新的学习机会。但是至少有了第二种实现方案。

    假设在实现了自动触发器的前提下,这个简单的打卡功能只提供了当天考勤状态的查询。如果,我想查看过去一个星期,或者一个月的人员考勤状况,这该如何进行处理。

    目前没有一点头绪,因为考勤表只有一张,除非我联表进行更新数据,主表储存当天的数据,副表进行存储每天的人员考勤状况,副表涉及到的字段有kqrq(yyyy-MM-dd),kqr1,kqr2,kqr3....,kqstatus.这样就等于将每一个考勤人的名字作为一个字段,而查看历史考勤只需要通过对应某一个,如2018年5月6号,小明的考勤状况是未打卡还是打卡:

   select kqstatus from tab_history_kq where kqsj='2018-5-6' 

    虽然该方法有点笨,但是最后还是能实现历史考勤状态的查询,不过肯定还有其他更聪明的方法。

    不说了,抽根烟,再去想一下优化方法。


 
 

猜你喜欢

转载自blog.csdn.net/imVainiycos/article/details/80218230