更合理方便的分类
签到(需要4值与4时,形成4时间段)
正常
迟到
严重迟到
缺卡/旷工
签退(需要2值与2时,形成4时间段)
正常
早退
缺卡
全组合有12种,但旷工特殊,算了旷工通常不管签退了
故有10中情况
正常到 正常退
正常到 早退
正常到 缺退卡
迟到 正常退
迟到 早退
迟到 缺退卡
严重迟到 正常退
严重迟到 早退
严重迟到 缺退卡
旷工
再分位置 正常/异常,就有
9 * 2 + 1 = 19种状态
缩写说明:
时间点:
上班时间、下班时间、最晚打卡时间
分别简称:上点、下点、界点
时间长度:
严重迟到判断时间、旷工判断时间
分别简称:严迟时、旷时
允许弹性晚到晚退时间T1
允许弹性第一天晚退第二天晚到时间T2
总结疑问点
允许弹性晚到晚退(先欠后补)
与
允许弹性第一天晚退第二天晚到(先补后用)
1. 确认打卡状态(上面的打卡分类)
2. 是否要互斥
3. 若不互斥,早上晚到的时间是否可以叠加
- 若能叠加,理论最晚正常上班打卡时间 = 上点 + T1 + T2
- 若不能叠加,理论最晚正常上班打卡时间 = 上点 + max(T1, T2)
还是 = 上点 + min(T1, T2)
4. 弹性班次的 早退逻辑是否变为
理论最早正常打卡下班时间为 = 下点
- 若叠加,理论最晚正常打卡下班时间为 = 下点 + T1 +T2
- 若不叠加,理论最晚正常打卡下班时间为 = 下点 + max(T1, T2)
还是 = 下点 + min(T1, T2)
打卡疑惑详情
当前思路,求验证的
后台班次管理的原型图上的控件有误导性,
意思是表示时间值的,而非时间段了,
由下面同样使用时间段但明显意思是时间值的可以判断出来
打卡(请假的不参与,单独统计)
****************************************
基础状态
正常、异常[迟到、(严重迟到、旷工、)早退、缺卡]
时间点:
上班时间、下班时间、最晚打卡时间
分别简称:上点、下点、界点
时间长度:
严重迟到判断时间、旷工判断时间
分别简称:严迟时、旷时
****************************************
########################################
不验证 严重迟到,不验证 旷工
只有四种基础状态:正常、迟到、早退、缺卡
是否少一个基础的迟到早退时间长度?类比 严迟时 与 旷时
正常
签到:(界点,上点]打卡
签退:[下点,界点)打卡
迟到:(上点,下点)打卡
早退:(上点,下点)打卡
早退与迟到范围一样,区别是迟到是第一次打卡,早退前必须有一次打卡
缺卡:~~(界点,界点)无打卡~~
(界点,下点)无打卡
一次打卡都没
假如在[下点,界点)第一次打卡,构不成签到打卡,无签到打卡就构不成签退打卡,
故范围可以缩小到(界点,下点)
等一下,应该分全日缺卡、签退缺卡
全日缺卡:(界点,下点)无打卡
签到缺卡:(界点,下点)无打卡,[下点,界点)有打卡
签退缺卡:(界点,下点)有一打卡,[下点,界点)无打卡
可能的实际状态:
正常到 正常退
正常到 早退
正常到 缺退卡
迟到 正常退
迟到 早退
迟到 缺退卡
########################################
验证 严重迟到,不验证 旷工
只有五种基础状态:正常、迟到、严重迟到、早退、缺卡
正常
签到:(界点,上点]打卡
签退:[下点,界点)打卡
迟到:(上点,上点 + 严迟时]打卡
严重迟到:(上点 + 严迟时,下点)打卡
早退:(上点,下点)打卡
迟到/严重迟到 是第一次打卡,早退前必须有一次打卡
缺卡:
全日缺卡:(界点,下点)无打卡
签到缺卡:(界点,下点)无打卡,[下点,界点)有打卡
签退缺卡:(界点,下点)有一打卡,[下点,界点)无打卡
可能的实际状态:
正常到 正常退
正常到 早退
正常到 缺退卡
迟到 正常退
迟到 早退
迟到 缺退卡
严重迟到 正常退
严重迟到 早退
严重迟到 缺退卡
########################################
不验证 严重迟到,验证 旷工
只有五种基础状态:正常、迟到、早退、缺卡、旷工
正常
签到:(界点,上点]打卡
签退:[下点,界点)打卡
迟到:(上点,上点 + 旷时]打卡
旷工:(界点,上点 + 旷时]未打卡,也就是签到范围内未打卡
早退:(上点,下点)打卡
早退与迟到范围一样,区别是迟到是第一次打卡,早退前必须有一次打卡
缺卡:
签退缺卡:(界点,下点)有一打卡,[下点,界点)无打卡
旷工:
全日缺卡:(界点,下点)无打卡
签到缺卡:(界点,下点)无打卡,[下点,界点)有打卡
简单统计:(界点,上点 + 旷时]无打卡 就行?
可能的实际状态:
正常到 正常退
正常到 早退
正常到 缺退卡
迟到 正常退
迟到 早退
迟到 缺退卡
旷工
########################################
验证 严重迟到,验证 旷工
只有六种基础状态:正常、迟到、严重迟到、早退、缺卡、旷工
正常
签到:(界点,上点]打卡
签退:[下点,界点)打卡
迟到:(上点,上点 + 严迟时]打卡
严重迟到:(上点 + 严迟时,上点 + 旷时)打卡
旷工:(界点,上点 + 旷时]未打卡,也就是签到范围内未打卡
早退:(上点,下点)打卡
早退与迟到范围一样,区别是迟到是第一次打卡,早退前必须有一次打卡
缺卡:
签退缺卡:(界点,下点)有一打卡,[下点,界点)无打卡
旷工:
全日缺卡:(界点,下点)无打卡
签到缺卡:(界点,下点)无打卡,[下点,界点)有打卡
简单统计:(界点,上点 + 旷时]无打卡 就行?
可能的实际状态:
正常到 正常退
正常到 早退
正常到 缺退卡
迟到 正常退
迟到 早退
迟到 缺退卡
严重迟到 正常退
严重迟到 早退
严重迟到 缺退卡
旷工
弹性打卡疑惑详情
弹性时间在没有统计两个时间实际 签到与签退 时,无法计算是否正常,有无时间偏移
好像还有冲突重复计算的可能
flexible_early
flexible_late
flexible_late_tomorrow
允许弹性晚到晚退 与 允许弹性第一天晚退第二天晚到
flexible_late = 1 && flexible_late_tomorrow = 1
因为晚到,所以导致的要晚退
可能成了 第一天晚退第二天晚到 的因,可以区分开,但复杂度会上升
两种思路,
- 不允许同时选【互斥】
- 看有无时间拆分累计的可能
假设晚到5min
晚退了10min
第二天能晚到5min,实际晚到了7min
那么晚上应该补2min,超过2min的部分才能作为下一天可以晚到不需要补的时间
也就是
flexible_late = 1 && flexible_late_tomorrow = 1时
晚到时间 = 前一天应得无惩罚的 + 不小心晚到的
晚走时间 = 弥补晚到的 + 想留给明天的无惩罚的
晚到时间 = [自愿晚走所得] + 不小心晚到的
晚走时间 = 弥补晚到的 + [自愿]
再考虑个时间限制
flexible_late_time
允许弹性晚到晚退时间(分钟)
flexible_late_today_time
允许弹性第一天晚退时间(分钟)
flexible_late_tomorrow_time
允许弹性第二天晚到时间(分钟)
弥补晚到的(不小心晚到的) <= 允许弹性晚到晚退时间
是否能叠加
允许弹性晚到晚退T1
先欠后补
允许弹性第一天晚退第二天晚到T2
先补后用
【若允许叠加】
理论最晚正常上班打卡时间 = 上点 + T1 + T2
理论下班时间 = 下点 + T1 + T2
例如昨天没有欠时间,但是补了时间(先补t21)
今天可以晚到的时间 理论上 是昨天补的时间(后用t22) + 可以晚到的时间(先欠t11)
= 实际晚到时间 t33
只要今天签退的时候晚走对应时间就行了?(后补t12)
【若不允许叠加】
理论最晚正常上班打卡时间 = 上点 + max(T1, T2)
理论下班时间 = 下点 + max(T1, T2)
也就是
t12 >= t11 >= T1
后补 >= 先欠 >= 晚到晚退时间
t21 >= t22 >= T2
先补 >= 后用 >= 第一天晚退第二天晚到
t33 <= max(T1,T2)?
t33 <= min(T1,T2)?
t33 先消耗 t21 ?
t12 = max(t33 - t21,0)?
【若互斥】
允许弹性晚到晚退T1(先欠后补)
与
允许弹性第一天晚退第二天晚到T2(先补后用)
只能二选一互斥
或者都不选