本项目为惠科集团人力资源薪酬管理子系统(jpaas-salary),面向多法人、多组织场景,支撑薪酬核算、发放与管控全流程数字化。立项背景是原有薪酬数据分散在 EHR、财务及线下 Excel 中,核算周期长、权限边界不清、调薪与档案变更难以追溯。建设目标是统一薪酬主数据与业务规则,实现“档案—活动—核算—确认—发放”闭环,并满足按薪资组分级授权的数据隔离要求。
核心功能模块包括:薪资组与权限管理(树形薪资组、负责人授权、科目/方案使用范围控制)、薪资档案管理(入职定薪、异动调薪、批量导入导出)、调薪管理(调薪申请、结构分解、审批联动)、薪资活动与核算(计薪人员圈选、公式计算、结果汇总)、奖金/津贴/扣款专项管理、薪资确认单与工资条、社保公积金及报表分析等。系统通过 XXL-JOB 定时同步 EHR 基础数据,并与 OA、财务等外围系统对接。
典型业务流程:管理员配置薪资科目、计薪方案与薪资组并指定负责人 → HR 维护员工薪资档案 → 发起调薪或参与计薪活动 → 系统按规则自动计算并生成确认单 → 审核通过后输出发放数据与报表。各业务页面均按当前登录人薪资组权限过滤数据,确保“谁负责谁可见、谁操作谁留痕”。
系统基于 Spring Boot 2.3 + Spring Cloud 微服务架构,依托 JPaas 云平台统一认证与网关接入。后端采用 Controller-Service-Mapper 分层,持久层使用 MyBatis-Plus + XML 复杂查询,Redis 缓存热点权限数据,EasyExcel 处理大批量导入导出,XXL-JOB 承担定时同步与批处理任务,Groovy 脚本引擎支撑灵活计薪公式。模块间通过 Feign 调用组织、人员等基础服务,事务由 Spring @Transactional 保证一致性。
本人主要负责薪资组权限体系与薪资档案、调薪相关模块的开发与优化。在薪资组模块中,实现了树形结构的增删改、负责人设置及基于 Redis 的权限缓存机制(键前缀 salary:group:auth:),通过递归 SQL 查询负责人及其下级薪资组;在新增/编辑/删除薪资组、设置负责人等写操作后统一调用 refreshAllAuthGroupCache() 清除全部权限缓存,避免局部刷新遗漏导致的数据越权或列表不一致。薪资档案模块完成分页查询、批量导入导出及按权限过滤;调薪管理模块支持 Excel 模板导入与结构分解逻辑。
难点一是薪资组为树形结构,权限需包含“负责人直接管理的组 + 所有下级子组”,采用 MySQL WITH RECURSIVE 递归查询解决,并在缓存层按工号维度存储查询结果。难点二是多节点部署下权限缓存一致性:最初仅按变更负责人刷新部分用户缓存,存在遗漏风险,后改为写操作后批量清除全部 salary:group:auth:* 缓存,以空间换一致性,下次访问自动回源加载。难点三是大批量 Excel 导入时的内存与性能问题,通过 EasyExcel 流式读取、分批校验入库等方式优化,单次导入支持数千条档案记录处理。