首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个变态的考勤偏题(倒班+无上班、下班指示)

2013-09-28 
一个变态的考勤难题(倒班+无上班、下班指示)某公司电子考勤系统主要有两张表,一张《考勤记录表》,一张《刷卡记

一个变态的考勤难题(倒班+无上班、下班指示)
某公司电子考勤系统主要有两张表,一张《考勤记录表》,一张《刷卡记录表》。要实现统计迟到、早退和矿工
现在困难有两点:
1.公司是常白班和四班三运转制(0:00——8:00 夜班;8:00——16:00 白班;16:00——24:00 中班),上班时间必须提前15分钟刷卡,否则为迟到。下班必须在下班时间后刷卡,否则为早退。如果不迟到早退,则夜班和中班的上班刷卡和下班刷卡就跨越半夜12点了,而刷卡记录是按日存储的。
2.刷卡记录只是简单地记录了某人某天的刷卡记录(第一次刷卡时间和最后一次刷卡时间),并不知道上班、下班。而且还存在漏刷情况。

/***考勤记录表**/
ID工号姓名日期出勤
120013001丁*2013-09-01休
220013002高**2013-09-01常
320013003张**2013-09-01夜
420013004蔡**2013-09-01白
520013008李**2013-09-01中
......................

记录每日所有人应该的考勤记录,每人对应一个工号,此表由人工维护。
出勤定义为:
休——请假、出差、节假日、休息日等不需要上班的情况
常——常白班,7:45——17:00
夜——倒班夜班,先天23:45——8:00
白——倒班白班,7:45——16:00
中——倒班中班,15:45——24:00

/****刷卡记录表*******/
ID工号日期刷卡1刷卡2
1200130022013-09-017:2518:00/*说明*/ 早上 7:25上班,晚上 18:00 下班
2200130032013-09-018:1523:36/*说明*/上夜班 早上 8:15 下班,晚上 23:36上班
3200130042013-09-017:5516:01/*说明*/ 早上 7:45上班,晚上 16:01 下班
4200130082013-09-0115:30/*说明*/ 上中班 15:30 上班,无刷卡2表明第二天下班签退

刷卡记录表示日期当天的记录
对于倒班的来说,夜班、中班正常情况下(无迟到早退)签到在今天,签退则在次日
刷卡1、刷卡2 仅按时间显示当天第一次刷卡时间和最后一次刷卡时间,除了白班和常白班外不能对应上班、下班
存在漏刷情况:1、上班漏刷;2、下班漏刷;3、上下班都漏刷
若某天无某人无刷卡,则次日无该人记录。

考勤?电子?倒班
[解决办法]
一定有很多规则要预先确定的,比如某人某天打一次卡,你当是上班还是下班卡?
有的跨天打卡,那么上班时间在一天,下班时间在第二天,这是很正常的

这是设计问题,也不是什么变态问题
[解决办法]
考勤记录表如有人维护,对考勤系统并不是件难事,只要根据考勤记录表的员工班次+原始刷卡判断,
如果没有人工维护每天的班次,或者员工上班随意性很大,让系统智能根据刷卡分析出员工的班次,
难度增加N倍。
[解决办法]
数据库就保存最简单的数据,谁在什么时间打了一次卡,
各种考勤的统计放到程序语言比如jsp、c#里面去做
写存储过程都可能会吃力不讨好
[解决办法]

引用:
某人某天打一次卡,只能通过《考勤记录表》来倒退上下班刷卡:如果上班时间4小时以内按上班迟到,4小时后为早退


这个sql语句并难,最好你给出测试数据来

[解决办法]
1. 还有一点你就是你表设计的问题,考勤表可以记录当天的标准上班时间,标准下班时间,第一次刷卡时间,第二次刷卡时间.

2. 如果上班时间刷卡两次,就以最后一次为主,如果下班时间刷卡两次,就以第一次为主,这样一条记录可以记下一个员工一天的刷卡记录.

3. 我觉得你的表结构应该这样
ID ,工号, 日期, 标准上班时间,标准下班时间,实际上班刷卡时间,实际下班刷卡时间,状态(是否出差\休息等)

4.  请不要用白,中,夜来替代标准上下班时间,如果哪天时间又改多了两个班,你又什么定义?


[解决办法]
如果他们的考勤处理是用存储过程写的,估计你还能改一下,如果用前台开发工具写的,就没有办法改了。
优先找原供应商提供服务/升级软件。

[解决办法]
佰思维吧,我有维护过他的产品,几百M的数据把服务器都拖跨,功夫了得
若要根本解决,自己重新设计和开发报表喽
[解决办法]
有班次表和排班表,还好计算一点。
一天一个人的循环判断。
先读班次,再找相应的排班,查出应该的上班时间及下班时间,再在这两个时间点的前后2个小时查找打卡记录。找到后,再判断迟到、早退、漏打。
[解决办法]
这是个巨难得问题,我们公司就实行电脑计算加人工审核,调整的方式,特别是工厂,不同的工种岗位规则都不一样,搞死人
[解决办法]
www.onlyit.cn
上这个下个人力资源系统,里面考勤是可以自己写脚本程序控制的,很方便

热点排行