状态:需求整理稿,供确认,尚未进入编码。
目标库:mom-xgdl(后端 local profile 数据源)。关联文档:培训+到期提醒联调方案。
电力行业人力资源系统共三段需求,覆盖「人事档案 → 考勤 → 薪酬 → 绩效」全流程,以及面向班组/值守岗位的排班与工时,再叠加培训证书合规管理。
| 编号 | 需求原文要点 | 模块归属 | 当前进度 |
|---|---|---|---|
| 需求① | 统筹管理全员人事档案、劳动合同、考勤打卡、薪酬核算、绩效考核全流程业务 | HRM | 待实施(本文档梳理方案) |
| 需求② | 针对运维班组、检修班组、值守岗位实现智能排班、工时统计,工时数据同步对接成本核算模块 | MES 排班/工时 + HRM 工时 | 待实施(含与成本模块的对接口径) |
| 需求③ | 管理安全培训、技能培训、特种作业证书、从业资质,到期自动提醒,满足电力行业合规管理 | HRM 培训 + 证书/合同提醒 | 已实施完成(见第六节) |
已确认的总体口径(会话决策)
- 三段需求分阶段推进,先统一梳理、按阶段编码,最后统一回归测试(用户口径「统一改完在测试」)。
- 目标数据库为 mom-xgdl,所有菜单/字典/配置/表均写入该库。
- 成本核算模块**当前不存在**,需求②的工时对接采取「先固化工时汇总表 + 对外提供 Api」,成本模块后续另建(本轮不建成本表)。
| 业务域 | 已有实体/接口 | 说明 |
|---|---|---|
| 人事档案 | hrm_employee(基本信息/部门/岗位/学历/入职/员工状态/基本工资/薪酬结构ID 等);hrm_employee_education、_emergency_contact、_work_history |
有新增/分页/详情/离职交接接口;**入职/审批不联动回写** |
| 劳动合同 | hrm_employee_contract,已有动态到期状态 + REMIND_DAYS=30 + /expiring-count |
有到期提醒计数,无站内信(需求③已补) |
| 请假/离职/调动审批 | hrm_leave_application、hrm_resignation_application、hrm_transfer_application + BPM |
通过 BPM 审批流;**审批通过后不反写员工主档** |
| 交接 | hrm_user_handover + HrmUserHandoverApi.expandUserIds() |
离职数据交接,各模块查询统一扩展 userId(详见交接规则) |
| 考勤 | hrm_attendance_record(打卡/clock-in/clock-out)、_rule、_holiday、_exception、_summary(汇总/generate);HrmAttendanceSummaryDO |
加班时长链断裂:打卡/异常均未产出 overtime 字段 |
| 薪酬 | 档案hrm_employee_salary、社保hrm_employee_social_security/hrm_social_security_config/_scheme、个税hrm_tax_rate_config、请假类型hrm_leave_type_config、核算hrm_salary_calculation、发放hrm_salary_payment(+明细) |
核算只算固定项;加班写死 0、工作日写死 22;缺薪酬结构/员工薪酬档案后台 CRUD |
| 绩效 | hrm_performance_appraise + _item + _result(+_item) |
考核方案对象存在;**"指定班组"维度无落地载体** |
| 培训/证书 | 需求③新增 hrm_training/hrm_training_participant;hrm_certificate(四类资质+到期字段) |
见第六节 |
| 排班(需求②) | MES mes_cal_plan(_shift/_team)、mes_cal_team(_member/_shift)、mes_cal_holiday |
排班套件齐全,**但未落到"人×日"** |
| 工时(需求②) | MES mes_pro_task(duration 人日)、MesProTaskApi.getTeamWorkHourSummary(按班组聚合,1 人日=8 人时) |
HRM 已可跨模块调 MES 工时;**无汇总表,实时统计** |
| 成本 | ERP 仅 erp_finance_receipt/erp_finance_payment |
无成本模块 |
需求:全员人事档案 + 劳动合同全流程(签订/续签/到期)。
现状缺口
1. hrm_employee 缺「用工性质」「所属班组」字段(运维班/检修班/值守岗等组织维度无法表达)。电力场景班组是核心组织单元,需求②排班、绩效指定班组都依赖它。
2. 审批通过后不反写主档:离职审批通过 → 员工 employeeStatus/leaveDate 未自动更新(需手动改);调动审批通过 → deptId/postId 未联动。目前离职交接靠 hrm_user_handover,但员工状态字段仍靠手工。
3. 无「转正」业务:hrm_employee.regularDate 字段存在但无触发点;试用→在职的状态流转无流程。
4. 劳动合同到期:已有到期计数 + 需求③站内信提醒,**续签动作**是否要走审批、新合同号如何衔接待定。
建议
- 员工主档补 employmentType(用工性质:正式/劳务/外包/实习等,字典) 与 teamId/teamName(所属班组) —— 班组引用 MES mes_cal_team 或 HRM 独立班组表,需与需求②统一口径。
- 离职/调动审批结果**回写主档**(新增 BPM 审批完成监听,更新 employeeStatus/leaveDate/deptId/postId)。
- 新增**转正**动作(入职满试用期 → 正式,写 regularDate,改状态)。是否接 BPM 审批待定。
- 劳动合同增/续签保留现到期提醒链路。
需求:考勤打卡全流程(规则/打卡/汇总),为薪酬提供加班/缺勤。
现状缺口
1. hrm_attendance_record 打卡(clock-in/clock-out)存在,但**加班时长从未被计算**:无 overtime 写入点。
2. 有 _exception(异常/补卡)、_rule、_holiday、_summary(generate 汇总),但汇总字段与薪酬核算字段**未打通**。
建议
- 打通"打卡/规则/节假日 → 每日考勤(含应出勤、实出勤、**加班时长 overtimeHours**、迟到早退) → 月度汇总"。
- 明确加班口径(超出规则工时部分 / 法定节假上班等),加班源数据由考勤产出,供薪酬消费。
需求:薪酬核算全流程。
现状缺口(核心断链)
- HrmSalaryCalculationServiceImpl 核算**只取档案固定项**:
- overtimePay = BigDecimal.ZERO、overtimeHours = BigDecimal.ZERO(**从不读考勤加班**);
- workDays = 22 写死(不从考勤/日历得出当月应出勤);
- 请假扣款只读"已审批通过的请假记录"(hrm_leave_application),**不读考勤缺勤**,leaveHours 相关口径待核。
- 绩效结果未参与核算:performanceSalary 从员工档案取固定值,**不读绩效结果表**。
- 无薪酬结构/员工薪酬档案的后台 CRUD:HrmSalaryStructureDO、HrmEmployeeSalaryDO 仅被核算代码引用,controller/admin/salary 下只有社保/核算/发放/配置/税率/请假类型,缺 HrmSalaryStructureController、HrmEmployeeSalaryController → 前端无法维护"薪酬结构=固定+绩效+补贴+加班"与员工个人薪酬档案。
建议
- 核算输入补齐三条链路:①考勤(加班时长/缺勤天数) → 加班费/扣款;②绩效结果 → 绩效工资;③请假/缺勤 → 扣款。三者乘以当人薪酬档案单价。
- 补建薪酬结构 + 员工薪酬档案后台 CRUD + 菜单权限。
- 建立「薪酬结构项 × 系数」,加班费 = 加班时长 × 时薪(由基本工资/应出勤折算),先与用户确认计价口径。
需求:绩效考核全流程。
现状缺口
- 考核实体(appraise/item/result)已具备,但**"2-指定班组"的 scopeType 无落地载体**(班组维度未建),指定人的结果与薪酬/培训联动弱。
- 考核结果如何进入薪酬(绩效工资)链路(见 3.3)需打通。
建议
- 绩效对象落库到"员工(或班组)",班组维度复用需求①补的班组载体。
- 确认绩效结果 → 薪酬核算的取值规则(结果等级/分数 × 绩效工资档)。
| 子项 | 涉及 | 说明 |
|---|---|---|
| A. 员工主档扩展 | hrm_employee + 字典 |
加 用工性质 / 所属班组(与②统一口径) |
| B. 审批结果回写 + 转正 | HRM service + BPM 监听 | 离职/调动反写主档;转正动作 |
| C. 考勤加班打通 | 考勤相关 service/mapper | 加班时长产出口径 |
| D. 薪酬核算接考勤/绩效 | HrmSalaryCalculationServiceImpl |
加班费、应出勤、绩效工资、扣款 |
| E. 薪酬结构与档案 CRUD | 新增 2 Controller + 菜单 | 后台可维护薪酬模型与个人档案 |
| F. 绩效班组落地 + 结果入薪酬 | 绩效对象扩展 | 与 A/D 联动 |
需求:对运维班组、检修班组、值守岗位**智能排班**、**工时统计**,工时数据**同步对接成本核算模块**。
现状缺口
- MES mes_cal_* 排班套件齐全:cal_plan(排班计划) → cal_plan_shift(班次)、cal_plan_team(参与班组)、cal_team_member(班组成员,userId↔系统用户)、cal_team_shift(班组×班次×日期)、cal_holiday(节假日)。
- 可推演到"员工×日"的排班,但未落成明细:值守岗位逐人逐日的班次安排(白/夜/休)没有物化结果。
- 无"智能"能力:需明确智能是指(a)自动按规则生成排班表(合规:连续工时/休息间隔/班次均衡),还是(b)仅固化排班看板供查询。
建议
- 在 mes_cal_team_shift 之上**固化"员工级排班明细"**(mes_cal_schedule_detail:员工×日期×班次),作为工时/值守合规的基准。
- "智能"按规则引擎最小化实现:先按班组班次模板生成 + 人工微调 + 合规校验,后续再谈自动优化。
- 值守(24h)岗位的排班口径(三班倒/白夜休等)需用户确认班次库。
现状缺口
- 报工工时:MES mes_pro_task 时长 duration(人日,1=8h),MesProTaskApi.getTeamWorkHourSummary 已按班组聚合,**HRM 已跨模块调用**(实时统计,无汇总表)。
- 无成本模块(ERP 仅收付款)。需求原文"对接成本核算",若坚持实时算成本,会牵出 ERP 成本域的物料/人工/制造费用三要素,范围过大。
建议(沿用已确认口径:先固化,不建成本)
- 新增**月度工时汇总表**(员工×班组×工时口径:排班工时/实际工时/加班工时,源自 MES 排班明细 + 报工),并对**对外提供 Api** 供后续成本模块消费。
- 人工成本口径:工时 × 员工时薪(薪酬档案) 可作**软成本预览**,但不落 ERP 成本总账(待用户确认是否本轮要做)。
需求③已实施完成并通过编译、种子落库 mom-xgdl:
hrm_training + hrm_training_participant(草稿/待开展/已完成/已取消;编号 PX 自动生成;参训人批量添加/成绩/是否合格;/hrm/training/* 与 /hrm/training-participant/* 全套接口)。infra_job(hrmExpiryRemindJob 08:00) + 证书/合同列表懒触发兜底;Redis 日锁+60 天去重;按员工 userId 发站内信;提醒天数 infra_config(默认 30)可调。is_pass=1 且未发证的参训人生成 hrm_certificate(安全→类型4、技能→类型3,证书有效期=完成日+cert_validity_months),回写 certificate_id 防重。expiryType(1 即将到期/2 已过期)。遗留:运行时端到端验证待用户环境就绪后执行(当前
mom-xgdl无员工测试数据)。
依赖关系:班组口径(需求①A) → 排班明细(需求②) 前置打通后,绩效指定班组/工时汇总才不返工。
| 阶段 | 内容 | 前置 | 产出 |
|---|---|---|---|
| P0 已交付 | 需求③ 培训 + 到期提醒 | 无 | 已落地 + 联调文档 |
| P1 组织口径 | 需求①A 员工主档扩展(用工性质/班组) + 需求②班组口径统一 | P0 | 字典/字段/班组载体 |
| P2 人员闭环 | 需求①B 审批回写/转正 + 劳动合同续签口径 | P1 | BPM 监听 + 转正动作 |
| P3 考勤→薪酬 | 需求①C 考勤加班 + D 薪酬核算接考勤/绩效 + E 薪酬结构/档案 CRUD | P1 | 考勤/薪酬链路闭环 |
| P4 绩效 | 需求①F 绩效班组落地 + 结果入薪酬 | P1/P3 | 绩效→薪酬取值 |
| P5 排班+工时 | 需求② 员工级排班明细 + 月度工时汇总表 + 对外 Api | P1(班组) | 排班看板基准 + 工时 Api |
| P6 成本(另规划) | ERP 成本域(人工/物料/制造) 消费工时 Api | P5 | 需求②"对接成本"落点 |
每阶段遵循本仓库规则:接口变更出
docs/前端联调方案;SQL 种子含菜单/字典/权限并落mom-xgdl;跨模块改动做编译检查。**成本模块是否本轮就建、智能排班到何种程度,见下节待确认。**
mes_cal_team(字段关联 teamId),还是 HRM 独立班组表?→ 影响 P1/P2/P5 三处。本文档为需求梳理稿,待上述决策确认后按阶段实施;未经确认不进入编码。