| | |
| | | } |
| | | |
| | | /** |
| | | * 按考勤规则重算上下班打卡类型(正常/迟到/早退),与打卡逻辑保持一致 |
| | | * 按考勤规则重算上下班打卡类型(正常/迟到/早退/缺卡),与打卡逻辑保持一致 |
| | | * |
| | | * <p>缺卡标记不依赖考勤规则:只要某一侧没有打卡时间就是缺卡。 |
| | | * 原实现只在「该侧有打卡时间」时才设置类型,导致「只打上班卡、没打下班卡」的记录 |
| | | * clockOutType 一直是 null;而考勤统计只认 MISSING 类型, |
| | | * 于是缺卡次数永远统计为 0(客户反馈「缺卡数据统计不对、没和考勤记录联动」)。 |
| | | */ |
| | | private void fillClockTypes(HrmAttendanceRecordDO record) { |
| | | // 1. 缺卡优先:某一侧没有打卡时间即为缺卡,不依赖部门与考勤规则 |
| | | if (record.getClockInTime() == null) { |
| | | record.setClockInType(HrmAttendanceClockTypeEnum.MISSING.getType()); |
| | | } |
| | | if (record.getClockOutTime() == null) { |
| | | record.setClockOutType(HrmAttendanceClockTypeEnum.MISSING.getType()); |
| | | } |
| | | |
| | | if (record.getDeptId() == null) { |
| | | return; |
| | | } |