
SpringBootVue3 考勤补卡闭环设计规则校验、审批通过后如何合法回写打卡记录演示地址http://ruoyioffice.com | 源码1·GitHubruoyi-office | 源码2·GitCoderuoyi-office | 源码3·Giteeruoyi-office | 微信17156169080备注「RuoYi Office」员工忘打卡、地铁晚点导致迟到——现场第一反应往往是「让考勤员改一下记录」。改一次还好改成习惯后迟到统计、扣款规则、劳动争议举证全部失真。补卡的正解不是手改 PunchRecord而是部门规则允许 → 仅异常可提 → 审批通过 → 系统回写并打上「补卡」状态与单号。本文按 RuoYi Office 假勤模块把这条闭环写透。▲ 四步闭环部门配置 → 提交五校验 → 流程审批 → 回写打卡记录统计吃的是回写后的真相源引言补卡解决的是「合法修正」不是「偷偷抹掉异常」错误做法后果闭环做法管理员直接改打卡时间无审批、无痕迹统计口径被污染审批通过才回写正常出勤也能补补卡变「随意改班」仅迟到/早退/缺卡等异常可提不限次数、不限窗口月底扎堆补一个月月上限 截止类型当天/本周/本月/自定义天通过后只改单据状态打卡记录仍异常统计仍扣分onProcessApproved改 PunchRecord相对《考勤打卡设计》只讲怎么打本文专攻打坏了怎么合法修。一、产品入口补卡管理 假勤配置员工/管理员在人力 → 假勤管理 → 补卡管理发起与跟踪单据规则在假勤配置按部门维护可继承上级组织。▲ 补卡列表单号、状态审批中/通过、补卡日期/类型/时间、原上下班时刻和 OA 单据同一套列表体验▲ 申请单补卡日期、上班卡/下班卡类型、补卡时间、原因、附件证明提交才进流程▲ 部门级考勤规则可继承上级表单内含允许补卡、每月次数与截止窗口——关掉则整部门不能提流程定义 keyhr_card_replacement_bill单据类型码206。二、提交前五道校验防「随便补」CardReplacementBillServiceImpl.validateCardReplacementSubmit在submit时执行1. allowCardReplacement 1否则整单拒绝 2. 补卡日期落在截止窗内当天 / 本周周一日 / 本月 / today-N 天 3. 当月「在途已通过」次数 monthlyLimitlimit0 时 4. 对应上班/下班有打卡时间且状态非异常 → 拒绝正常不能补 5. 同用户 同日期 同类型不能再有在途/已通过单据关键语义摘录// 仅异常可补迟到/早退等异常或尚未打卡正常/已补卡不可再提if(punchRecord.getCheckInTime()!null!isPunchStatusAbnormal(punchRecord.getCheckInStatus())){throwexception(CARD_REPLACEMENT_PUNCH_STATUS_NORMAL,上班卡);}「在途」含审批中、通过中、待审批等避免同一缺卡开两张单。保存save可草稿不校验全套提交submit必须过五关再起流程并写processInstanceId。三、审批通过回写 PunchRecord而不是只改单据状态实现FlowBillServiceupdateProcessStatus同步流程状态到补卡单onProcessApproved业务副作用——回写打卡记录// 审批通过无当日记录则先建 PunchRecord再按类型写上班/下班if(REPLACEMENT_TYPE_CHECK_INbill.getReplacementType()){punchRecord.setCheckInTime(replacementLocalTime);punchRecord.setCheckInStatus(PUNCH_STATUS_CARD_REPLACEMENT);// 3补卡}else{punchRecord.setCheckOutTime(replacementLocalTime);punchRecord.setCheckOutStatus(PUNCH_STATUS_CARD_REPLACEMENT);}punchRecord.setRemark(...补卡单号bill.getBillCode());字段回写结果上班/下班时间用申请单上的补卡时间上班/下班状态固定为「补卡」与迟到、正常区分remark追加补卡单号审计可追这样打卡统计、扣款规则读的仍是同一张PunchRecord但能区分「真正常」与「补卡正常」。▲ 打卡记录是回写落点补卡通过后应能看到对应日期时间与补卡态相对手改更可审计四、和打卡、请假的边界能力解决什么不解决什么打卡当日正常采集历史异常修正补卡异常时段的合法修正代替请假外出请假/销假应出勤豁免改打卡时间戳缺勤整天通常走请假「来了但漏打卡/迟到需说明」才走补卡。附件区用于上传地铁延误证明等走通用附件模型。五、推荐体验路径在线演示http://ruoyioffice.com/web/账号admin/admin123假勤配置选部门打开「允许补卡」设月次数与截止类型。补卡管理 → 新增选异常日、上班/下班类型、时间与原因可传附件后提交。在流程待办中审批通过。打开打卡记录核对时间、状态与备注中的补卡单号。再试对已正常打卡的日期提交补卡应被校验拦截。源码仓库GitHub | GitCode | Gitee常见问题FAQ为什么正常打卡不允许补补卡是异常修正通道。正常再补等于绕过打卡真实性统计与扣款会失真。没有打卡记录能否补可以。通过时若当日无PunchRecord会先创建再写入补卡时间与状态。驳回会不会改打卡表不应。回写只挂在onProcessApproved驳回/取消只更新单据流程状态。和「管理员编辑打卡记录」冲突吗运维救急可保留编辑但日常应逼进补卡流程。产品上建议权限分离、审计打点。移动端有入口吗有。菜单可配pages-hrm/card-replacement与 PC 同一套后端校验与流程 key。结语考勤补卡闭环的核心不是多一张申请单而是把「改打卡」从特权操作升级为受规则与审批约束的业务事件配置门禁、异常才补、通过才回写、单号写进备注。这样迟到统计仍然可信员工也有申诉通道——劳动争议时拿得出「谁何时因何补了哪一次卡」。你们公司现在补卡是钉钉/企微自带还是 Excel 找领导签字有没有遇过「补卡后统计仍算迟到」欢迎评论区交流。想要体验 RuoYi Office 的强大功能在线演示http://ruoyioffice.com/web/账号 admin / admin123源码仓库GitHub | GitCode | Gitee技术咨询添加微信17156169080备注「RuoYi Office」⭐如果觉得不错请给个 Star 支持一下