作为我正在研究的程序的一部分,我需要一些建议。
问题:我收到包含员工时钟记录的报告。我需要根据班次设置确定当天的第一个时钟。例如,班次 A 从上午 8:00 开始,到下午 17:00 结束。这是向前推进的,但如果这个人加班到第二天凌晨 1:00,然后在 7:30 再次打卡,在 7:45 出去,在 7:48 打卡,会发生什么。如何确定当天的第一个时钟?
如果这个人正常工作时间,我可以计算得很好,但如果加班延长到第二天会发生什么?
考勤是通过特定员工的工作时间加上他在工作上花费的时间,然后是外出时间来衡量的。像这样的东西(只是一个伪代码)
employee_checks_in_event = in_time (a timer is started at this point)
fixed_out_time = expected_out_time (this is the normal out time of employee)
if employee_checks_in_again:
in_time = new_in_time # here the employee may have overlapped next shift IN time due to overtime
employee_checks_out_event = out_time - in_time (lets call it time_spent)
if time_spent < fixed_out_time:
employee_left_early
else:
we know employee completed his time and maybe he over-timed as well.
time_spent = over_time
现在您已经有了员工的time_spent,您可以跟踪第二天的签到时间,并确保它们不会重叠。请记住,您必须以某种方式区分输入和输出时间。
另一种方法是将签入和签出放在一个完全独立的时钟中,这样就很容易确定进出时间,并且保持加班将容易得多。