Skip to content

考勤管理 ​

这篇解决什么 ​

部门怎么配打卡规则、子部门如何继承、假期和假种落哪张表、补卡销假走哪条流程。读完能改 hrm_attendance_config、AttendanceRuleService、hrm_holiday_plan、hrm_punch_record,以及 hr_card_replacement_bill / hr_leave_cancel_bill。

默认端口 48080,前缀 /admin-api。档案要先有 userId,见 员工管理。模块边界见 人力功能设计。

业务闭环 ​

人事配部门规则和假日方案。员工按规则打卡。迟到 / 缺卡由规则引擎算,不在前端自己比时间。漏打卡走补卡单,请过的假要冲回走销假单。月统计读打卡流水,不另存一套考勤结果表当真相。

示意图:配置可继承。当日是否工作日、精确还是弹性,由规则引擎算。补卡通过后再写记录。

从哪改 ​

名称说明仓库路径
考勤配置/hrm/attendance-config,按部门,支持继承父级ruoyi-office/yudao-module-hrm/.../AttendanceConfigController.java
配置表点位、班次、大小周、补卡额度hrm_attendance_config / AttendanceConfigDO
规则引擎工作日、夏冬令、精确/弹性AttendanceRuleServiceImpl
假日方案/hrm/holiday-planHolidayPlanController
打卡/hrm/attendance-punchAttendancePunchController
打卡记录/hrm/punch-recordPunchRecordController / hrm_punch_record
月统计/hrm/punch-statisticsPunchStatisticsController
假种 / 额度/hrm/leave-rule、/hrm/leave-balanceLeaveRuleController、LeaveBalanceController
销假205,hr_leave_cancel_billLeaveCancelBillController
补卡206,hr_card_replacement_billCardReplacementBillController
PCviews/hrm/attendance/ruoyi-office-vben/apps/web-antd/src/views/hrm/attendance/

页面:配置 attendance/config,打卡记录 punch-record,统计 punch-statistics,假种 leave-type,补卡 card-replacement/list|info,销假 leave-cancel/list|info。

请假申请不在这张枚举里

人事管假种、余额和销假。发起请假若走流程表单,key 以模型为准,不要写成 hrm_leave。

部门规则继承 ​

打开 人力 → 考勤 → 考勤配置,左侧选部门。接口按部门 ID 取配置。

getAttendanceConfigByDeptId:本级 hrm_attendance_config 有行则 inherited=false;没有则沿 system_dept.parentId 往上找,找到后 inherited=true。打卡接口同样「按部门递归继承」。

名称说明仓库路径
deptId配置挂哪个部门AttendanceConfigDO
inherited响应上的继承标记,不落库AttendanceConfigRespVO
保存本级没有行则 insert;有则 updateAttendanceConfigServiceImpl
删除本级删后下次读取重新继承父级deleteAttendanceConfigByDeptId

改父级会立刻影响未自建配置的子部门

子部门只要没自己保存过,打卡半径、班次、假日方案都跟父级。要独立规则,在该部门保存一份,不要只改公司节点指望个别组例外。

操作:选中部门 → 改经纬度 / 半径或 WiFi 白名单 → 选假日方案 → 配 timeRules 或回退的上下班时间 → 保存。保存只写当前部门一行,不会批量改子孙。

打卡规则 ​

AttendanceRuleServiceImpl.resolveDayRule 算出当天规则,前端只展示,不算迟到。

名称说明仓库路径
punchMode1 位置打卡 / 2 内网打卡AttendanceConfigDO
longitude / latitude / punchRadius定位围栏(米)同上
wifiList内网模式 BSSID 白名单;空则只要求能访问系统JSON
allowFieldPunch是否允许外勤同上
weekMode0 固定工作日 / 1 大小周同上
workDays / bigWeekDays / smallWeekDays周一=1 … 周日=7同上
holidayPlanId假日方案优先于工作日休假=非工作日,补班=工作日
timeRules全年 / 夏令 / 冬令;clockType 1 精确 / 2 弹性JSON
workStartTime / workEndTimetimeRules 空时回退,再退到 09:00–18:00规则引擎

弹性:晚于「最晚上班」算迟到;下班看最短工时。精确:晚于上班、早于下班分别算迟到 / 早退。

needCheck=0 时该部门不考核。月允许迟到 / 早退 / 缺卡次数和罚款金额在同一张配置上,给统计和薪资扣款用。

打卡写 hrm_punch_record。当前用户必须对上档案 userId。PC 打卡页 attendance/punch,移动见 移动端 HRM。

假日方案与假种 ​

假日方案表 hrm_holiday_plan,明细 hrm_holiday_plan_detail(某日休假或补班)。配置页用 holiday-plan-modal 维护后,把 holidayPlanId 挂到部门配置。

假种 / 额度:hrm_leave_type、hrm_leave_account、hrm_leave_ledger。部门假种方案可继承上级;本级新增必须重新生成主键,见 LeaveRuleService。页面 人力 → 考勤 → 假种。

销假 205 冲已占用额度,不要手改流水。补卡 206 受配置里 allowCardReplacement、每月次数、截止类型(当天 / 本周 / 本月 / 自定义天数)限制。模型路径对 card-replacement/info、leave-cancel/info。

名称说明仓库路径
补卡通过后补一行或改状态hr_card_replacement_bill
销假冲已通过请假占用hr_leave_cancel_bill
月汇总出勤、迟到等PunchStatisticsServiceImpl

统计读部门树走 DeptApi,和档案部门同一套。

日历绿了不等于规则引擎认工作日

假日方案的补班 / 休假优先。只改 workDays 不改方案,法定假仍按方案走。

java
@RequestMapping("/hrm/attendance-config")
public class AttendanceConfigController { }

@TableName(value = "hrm_attendance_config", autoResultMap = true)
public class AttendanceConfigDO extends BaseDO { }

考勤配置

本系统截图:选中部门后的考勤配置。本级无行则继承父级,地图和班次在同一页。

假日方案

本系统截图:配置页「应用节假日方案」旁的方案弹窗。休假 / 补班写在 hrm_holiday_plan_detail。

假种表单

本系统截图:人力 → 考勤 → 假期类型。额度账本挂在假种上,不要只改配置页的班次。

打卡记录

本系统截图:打卡记录。统计和补卡都从这条流水派生。

补卡单详情

本系统截图:补卡单 info。审批通过后才补记录,不要手改流水。

相关篇 ​

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版