规则:用餐时间定义11:30-13:00(1.5小时)、17:00-18:00(1小时);
考勤记录是:2011-07-20 08:30:00~2011-07-20 17:30:00
考勤时间=out时间- in时间-用餐时间由于上班是弹性上班的,啥时都行,有的时候跨过3次用餐时间都有,像这种情况如何很好的判断跨越用餐时间的并扣除啊?大家给个思路,谢谢。
考勤记录是:2011-07-20 08:30:00~2011-07-20 17:30:00
考勤时间=out时间- in时间-用餐时间由于上班是弹性上班的,啥时都行,有的时候跨过3次用餐时间都有,像这种情况如何很好的判断跨越用餐时间的并扣除啊?大家给个思路,谢谢。
解决方案 »
- 我在用linq时vs自动生成的代码怎么还报错啊?!
- RadioButtonList如何依次放到table中。
- 页面加载问题
- 我用office.interop.excel开发了EXCEL应用,当发布到IIS上时,系统报错:System.Runtime.InteropServices.COMException,需要在服务器安装office软件吗?
- xml的问题
- 汇总sql问题,请各位帮忙!
- 求《asp.net数据库系统项目开发实践》书本的源代码,马上结!!!
- 如何向数据库批量插入数据
- 高分盼求asp.net(C#)编码规范!
- 那里有asp.net的购物程序,要能用的for C#的
- 如何分别截取数据库里的时间字段?
- ASP.net MVC UI层代码结构问题
并不能剥夺我这种选择吧
你只记录一个in和一个out时间想把他做的这么细化不太可能
1.划分两大时间段 a.正常上班时间段8:00-18:30 b.加班时间段(例:18:30-8:00[第二天])2.分别记录两个时间段内各自时间段内的第一次打卡时间和最后一次打卡时间 wt1,wt2 和et1,et23.设午餐ft1=1.5h 晚餐ft2=1h 正常工作时间w 加班时间e4.若8:00<wt1<=8:30 and 11:30<wt2<=13:00 则 w=(11:30-8:30)-(8:30-wt1)=3-(8:30-wt1)
若8:30<wt1<=11:30 and 11:30<wt2<=13:00 则 w=11:30-wt1
若8:00<wt1<=8:30 and wt2<=11:30 则 w=(wt2-8:30)-(8:30-wt1)
若8:30<wt1<=11:30 and wt2<=11:30 则 w=wt2-wt1 若8:00<wt1<=8:30 and 17:30<wt2<=18:00 则 w=(17:30-8:30)-ft1=9-ft1
若8:30<wt1<11:30 and 17:30<wt2<=18:00 则 w=17:30-wt1-ft1
若8:00<wt1<=8:30 and 13:00<wt2<=17:30 则 w=wt2-wt1-ft1-(8:30-wt1)
若8:30<wt1<11:30 and 13:00<wt2<=17:30 则 w=wt2-wt1-ft1
同理求8:30<=wt1<11:30,11:30<=wt1<13:00,13:00<=wt1<17:30,13:00<wt2<=17:30,17:30<wt2<=18:00
的情况……5.同理求加班的情况注意两次8:00-8:30和18:00-18:30分是判断正常上班和加班的间隔区间 若正常上班后需要加班
需要员工两次打卡还需要判断无效的单次打卡情况 总之要根据需求定规则 也少不了人为的干预
员工打卡每次都是来时打一次上班记录,走时打一次下班记录。
考勤记录是:
员工id 打卡时间 上班/下班 考勤机ip
0001 2011-07-20 08:30:00 上班 192.168.1.20
0001 2011-07-20 17:30:00 下班 192.168.1.20有时上班时间还跨天的,现在是要从这个一上一下的记录中扣除这个用餐时间。
还要考虑漏打上班卡或下班卡的情况,估计简单的sql语句处理不了这个问题,现在只能想着C#该如何实现呢。
第三次考勤-第四次考勤=t2
第五次考勤-第六次考勤=t3
.....
然后
t1+t2+t3得到工作时间当然,还必须作一些规则,来判断考勤的有效性
譬如
8:00打第一次考勤
8:01打第二考勤,显然要判断第二次考勤无效
确实,多次打卡可以简化汇总的工作,但是实际情况是员工大多非常抵触多次打卡,总会有各种理由忘记打卡,后来没办法我这边做法是又采购了一个rfid门禁通道