tuqin
22 小时以前 ba100c651a81162a9a9a4533ff4d072f2889171a
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceRecordServiceImpl.java
@@ -94,9 +94,22 @@
    }
    /**
     * 按考勤规则重算上下班打卡类型(正常/迟到/早退),与打卡逻辑保持一致
     * 按考勤规则重算上下班打卡类型(正常/迟到/早退/缺卡),与打卡逻辑保持一致
     *
     * <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;
        }