编辑 | blame | 历史 | 原始文档

电力行业人力资源系统需求梳理与实施路线图

状态:需求整理稿,供确认,尚未进入编码。
目标库: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_applicationhrm_resignation_applicationhrm_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_participanthrm_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 无成本模块

三、需求①「全流程业务」差距分析与建议

3.1 人员档案与劳动合同闭环

需求:全员人事档案 + 劳动合同全流程(签订/续签/到期)。

现状缺口
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 审批待定。
- 劳动合同增/续签保留现到期提醒链路。

3.2 考勤打卡

需求:考勤打卡全流程(规则/打卡/汇总),为薪酬提供加班/缺勤。

现状缺口
1. hrm_attendance_record 打卡(clock-in/clock-out)存在,但**加班时长从未被计算**:无 overtime 写入点。
2. 有 _exception(异常/补卡)、_rule_holiday_summary(generate 汇总),但汇总字段与薪酬核算字段**未打通**。

建议
- 打通"打卡/规则/节假日 → 每日考勤(含应出勤、实出勤、**加班时长 overtimeHours**、迟到早退) → 月度汇总"。
- 明确加班口径(超出规则工时部分 / 法定节假上班等),加班源数据由考勤产出,供薪酬消费。

3.3 薪酬核算

需求:薪酬核算全流程。

现状缺口(核心断链)
- HrmSalaryCalculationServiceImpl 核算**只取档案固定项**:
- overtimePay = BigDecimal.ZEROovertimeHours = BigDecimal.ZERO(**从不读考勤加班**);
- workDays = 22 写死(不从考勤/日历得出当月应出勤);
- 请假扣款只读"已审批通过的请假记录"(hrm_leave_application),**不读考勤缺勤**,leaveHours 相关口径待核。
- 绩效结果未参与核算:performanceSalary 从员工档案取固定值,**不读绩效结果表**。
- 无薪酬结构/员工薪酬档案的后台 CRUDHrmSalaryStructureDOHrmEmployeeSalaryDO 仅被核算代码引用,controller/admin/salary 下只有社保/核算/发放/配置/税率/请假类型,缺 HrmSalaryStructureControllerHrmEmployeeSalaryController → 前端无法维护"薪酬结构=固定+绩效+补贴+加班"与员工个人薪酬档案。

建议
- 核算输入补齐三条链路:①考勤(加班时长/缺勤天数) → 加班费/扣款;②绩效结果 → 绩效工资;③请假/缺勤 → 扣款。三者乘以当人薪酬档案单价。
- 补建薪酬结构 + 员工薪酬档案后台 CRUD + 菜单权限。
- 建立「薪酬结构项 × 系数」,加班费 = 加班时长 × 时薪(由基本工资/应出勤折算),先与用户确认计价口径。

3.4 绩效考核

需求:绩效考核全流程。

现状缺口
- 考核实体(appraise/item/result)已具备,但**"2-指定班组"的 scopeType 无落地载体**(班组维度未建),指定人的结果与薪酬/培训联动弱。
- 考核结果如何进入薪酬(绩效工资)链路(见 3.3)需打通。

建议
- 绩效对象落库到"员工(或班组)",班组维度复用需求①补的班组载体。
- 确认绩效结果 → 薪酬核算的取值规则(结果等级/分数 × 绩效工资档)。

3.5 需求①建议实施子项小结

子项 涉及 说明
A. 员工主档扩展 hrm_employee + 字典 加 用工性质 / 所属班组(与②统一口径)
B. 审批结果回写 + 转正 HRM service + BPM 监听 离职/调动反写主档;转正动作
C. 考勤加班打通 考勤相关 service/mapper 加班时长产出口径
D. 薪酬核算接考勤/绩效 HrmSalaryCalculationServiceImpl 加班费、应出勤、绩效工资、扣款
E. 薪酬结构与档案 CRUD 新增 2 Controller + 菜单 后台可维护薪酬模型与个人档案
F. 绩效班组落地 + 结果入薪酬 绩效对象扩展 与 A/D 联动

四、需求②「排班 + 工时 + 成本对接」差距分析与建议

需求:对运维班组、检修班组、值守岗位**智能排班**、**工时统计**,工时数据**同步对接成本核算模块**。

4.1 排班

现状缺口
- 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)岗位的排班口径(三班倒/白夜休等)需用户确认班次库。

4.2 工时统计与成本对接

现状缺口
- 报工工时: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 已过期)。
  • 联调方案文档已出(hrm_training_and_expire_remind_integration.md)。

遗留:运行时端到端验证待用户环境就绪后执行(当前 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;跨模块改动做编译检查。**成本模块是否本轮就建、智能排班到何种程度,见下节待确认。**


七、待确认的开放决策

  1. 班组载体归属:员工所属班组引用 MES mes_cal_team(字段关联 teamId),还是 HRM 独立班组表?→ 影响 P1/P2/P5 三处。
  2. 用工性质字典:取值集合(正式/劳务/外包/实习/退休返聘/其他?)。
  3. 转正流程:转正是手动动作还是走 BPM 审批(试用期到自动提醒 + 审批后转正)?
  4. 薪酬加班/扣款计价口径:加班费 = 加班时长 × 时薪?时薪 = 基本工资 ÷ 当月应出勤天数?缺勤扣款口径同源?绩效工资 = 绩效结果分数/等级 × 固定绩效档?
  5. 绩效考核范围:本轮考核"指定班组"是否需要完整班组成员逐一评,还是考核到班组再分摊?
  6. 需求②"智能"程度:自动排班仅做规则模板 + 人工微调 + 合规校验,还是需要自动排班算法?
  7. 成本模块范围:确认本轮不建 ERP 成本域,只固化月度工时汇总表 + 对外 Api(软成本预览),成本核算另行规划 —— 是否认可?

本文档为需求梳理稿,待上述决策确认后按阶段实施;未经确认不进入编码。