如何快速搭建一套 HR 招聘入职系统SpringBootVue3 含源码演示地址http://ruoyioffice.com | 源码1·GitHubruoyi-office | 源码2·GitCoderuoyi-office | 源码3·Giteeruoyi-office | 微信17156169080备注「RuoYi Office」又到毕业季计算机专业的同学被选题难、要全栈、还要能现场演示三件事支配。如果你还在纠结不妨直接做一套HR 招聘入职系统业务场景人人都懂投简历、面试、发 Offer、办入职技术栈主流SpringBoot 3.5 Vue3 Flowable而且有一条天然的数据流主线——招聘需求 → 职位 → 候选人 → 面试 → 录用审批 → 入职建档答辩时一条线讲下来评委一听就懂。本文基于开源项目 RuoYi Office 的真实 HRM 模块源码带你 10 分钟把它跑起来。▲ 技术架构全景前端层Vue3/Vben/UniApp→ 网关层Gateway/认证→ 服务层SpringBoot/Security/MyBatis/Flowable→ 数据层MySQL/Redis/MinIO/Nacos→ 17 大业务模块层。HRM 模块本身就是一个毕设选题超市招聘入职是本文主线。引言毕设到底卡在哪三件事每年六月CSDN、知乎上求推荐毕设选题的帖子准时刷屏。归根结底计算机毕设的焦虑来自三件具体的事痛点一选题难。选太简单纯 CRUD怕答辩被问倒选太难分布式/AI 大模型怕做不完选冷门怕导师不认可。管理系统类选题仍是最稳的选择但又一个图书管理系统已经审美疲劳。痛点二要全栈但时间不够。毕设评委越来越看重前后端分离 工作流 权限这套现代技术栈可从零搭框架往往要花掉两三个月真正写业务的时间所剩无几。痛点三要能现场演示。论文写得再漂亮答辩当天系统跑不起来、数据是空的印象分直接打折。现状后果从零搭框架权限、工作流自己造轮子3 个月过去还在调登录业务没动几行选题太小只有增删改查答辩被追问技术深度时无话可说演示数据靠现场临时录入流程演示卡壳评委体验差技术栈陈旧SSM、jQuery体现不出技术视野错失加分项一句话结论选一套业务清晰、技术主流、能开箱即跑的开源系统做二次开发把精力聚焦在业务流程和技术深度上才是 2026 毕设的聪明解法。HR 招聘入职系统恰好满足全部条件。一、为什么推荐用「HR 招聘入职」做毕设结论先行招聘入职是一条看得见、讲得清、有深度的完整业务链单是这一条线就足以撑起一篇优秀毕业设计。HRMHuman Resource Management人力资源管理模块在 RuoYi Office 中是一个完整的业务域包含招聘、入职、考勤、请假、薪资、绩效六大子域。其中招聘→录用→入职这条主线特别适合做毕设原因有四选它的理由具体说明业务人人都懂投简历、约面试、发 Offer、办入职答辩不用花时间解释领域知识数据流有主线一条招聘需求单串起职位、候选人、面试、录用、入职五张核心单据自然形成端到端流程技术点密集RBAC 权限、Flowable 审批流、状态机、单据编号生成、定时任务邮箱抓简历、附件上传每个点都能在论文里展开一节难度可裁剪时间紧只做候选人管理 录用审批想冲优秀就把邮箱自动抓简历 审批即建档这套自动化做透更关键的是招聘入职之间有一个非常出彩的自动化衔接录用审批单审批通过后系统会自动生成员工入职登记单入职登记单审批通过后又会自动创建员工档案。这种审批驱动、单据自动流转的设计是答辩时区分普通 CRUD和有工程思想的关键。二、技术架构总览2026 主流技术栈全覆盖结论先行这套系统是标准的前后端分离 网关 微服务可选 BPM 工作流架构技术栈与 2026 年企业级开发主流完全一致。如全景图所示系统自上而下分为五层。每一层的技术选型都能直接对应到毕设论文的系统设计章节层级技术选型版本论文对应章节前端层Vue 3 TypeScript Vben Admin 5 Ant Design Vue 4Vite 6 构建前端技术选型网关层Spring Cloud Gateway OAuth2 Nginx 多租户—安全设计 / 部署架构服务层Spring Boot 3.5 Spring Security MyBatis-PlusJava 17后端技术选型 / 数据访问层工作流FlowableBPMN 7.0流程引擎设计亮点章节数据层MySQL 8 Redis MinIO/OSS Nacos Docker—数据库设计 / 缓存设计名词解释BPM即业务流程管理Business Process Management用于把申请→审批→流转这类流程用引擎驱动Flowable是开源的 BPMN 2.0 工作流引擎可视化设计流程、无需改代码即可调整审批节点。为什么这套技术栈适合 2026 毕设看评委关心的几个点评审关注点如何满足技术是否主流Spring Boot 3.5 Vue3 是当前 Java Web 最主流组合前后端是否分离标准 RESTful API前缀/admin-api前端 Vben 后端 SpringBoot是否有工作流Flowable BPMN招聘需求/录用/入职三张单据全部走审批流安全机制是否完整Spring Security RBAC 三级权限 多租户 OAuth2是否可扩展模块化架构yudao-module-hrm独立拆分为-api与-server三、模块与功能清单招聘子域 8 张表 入职建档结论先行HRM 招聘子域由 8 张核心表组成配合员工入职登记单与员工档案构成完整的招到人 → 入职 → 建档闭环。下面是后端yudao-module-hrm中招聘入职相关的真实数据表与功能模块均来自源码dal/dataobject与service目录子模块数据表核心功能是否走审批流招聘需求申请单hrm_recruitment_requirement_bill用人部门提报岗位需求、人数、紧急度、预算✅ Flowable招聘职位hrm_recruitment_position由需求生成职位记录需求人数/已录用人数—候选人hrm_recruitment_candidate候选人简历库姓名/学历/期望薪资/状态—投递关系hrm_recruitment_application候选人投递职位记录所处阶段—面试记录hrm_recruitment_interview_record面试轮次、评价、结果—录用审批单hrm_recruitment_offer_bill发 Offer、薪资说明、计划入职日期✅ Flowable邮箱简历线索hrm_recruitment_email_lead自动抓取的邮件简历解析后转候选人—招聘邮箱配置hrm_recruitment_mailbox_configIMAP/POP3 邮箱配置定时抓取—员工入职登记单hrm_employee_entry_bill 3 子表入职登记审批通过自动建档✅ Flowable员工档案hrm_employee在职员工档案入职单审批后自动创建—整个 HRM 模块在HrmBillTypeEnum中注册了13 种审批单据类型编号 201~213其中招聘相关的两张分别是单据类型编号流程定义 Key招聘需求申请单207hr_recruitment_requirement_bill录用审批单208hr_recruitment_offer_bill员工入职申请单201hr_employee_entry_bill候选人状态机覆盖待跟进 → 已投递 → 面试中 → 待录用 → 已录用 / 未通过共 6 种状态投递关系阶段与候选人状态联动更新——这正是论文里有限状态机小节的好素材。四、核心流程从招聘需求到入职建档结论先行这条主线由两个审批即触发的自动化节点串起来——录用审批通过自动生成入职单入职审批通过自动建员工档案。4.1 招聘需求列表流程起点用人部门在这里提报岗位需求提交后走 Flowable 审批流。审批通过的需求才能发布为职位、对外招聘。▲ 招聘需求申请单列表展示单据编号、岗位名称、需求人数、紧急度、审批状态等。每条需求都带HR207前缀的单据编号点击可查看详情并跟踪审批进度。4.2 候选人简历库人才池候选人可以手工录入、Excel 导入也可以由邮箱简历线索自动转化而来。候选人状态随投递阶段自动流转。▲ 候选人列表支持按姓名、手机号、来源渠道、状态筛选。来源渠道用字典HRM_RECRUITMENT_CHANNEL管理状态标签清晰展示候选人当前所处招聘阶段。4.3 员工档案流程终点当录用审批和入职审批都通过后系统自动把入职登记单的数据迁移成正式员工档案候选人正式成为员工。▲ 员工档案列表展示工号、姓名、部门、岗位、入职日期、员工状态试用/正式等。这些记录大部分是由入职登记单审批通过后自动建档生成的无需 HR 二次录入。五、关键代码片段真实源码下面三段代码全部来自yudao-module-hrm的真实实现分别对应发起审批“审批衔接”审批建档三个关键节点。论文的系统实现章节可以直接基于这些代码展开。5.1 招聘需求提交发起 Flowable 流程需求提交时先生成单据编号并落库再调用 BPM 接口发起流程实例最后把流程实例 ID 回写到单据。这套先存业务、再发流程、回写关联的写法贯穿所有审批单据。OverrideTransactional(rollbackForException.class)publicLongsubmitRecruitmentRequirementBill(RecruitmentRequirementBillSaveReqVOsaveReqVO){// 1. 生成单据编号Redis 自增 HR207 前缀if(StringUtils.isBlank(saveReqVO.getBillCode())){saveReqVO.setBillCode(BillCodeUtils.generateBillCode(SystemEnum.HRM,HrmBillTypeEnum.HRM_RECRUITMENT_REQUIREMENT_BILL));}// 2. 保存业务表状态置为「审批中」RecruitmentRequirementBillDObillBeanUtils.toBean(saveReqVO,RecruitmentRequirementBillDO.class).setProcessStatus(BpmTaskStatusEnum.RUNNING.getStatus());recruitmentRequirementBillMapper.insertOrUpdate(bill);// 3. 发起 Flowable 流程实例MapString,ObjectvariablesBpmProcessVariableUtils.buildBillVariables(saveReqVO);StringprocessInstanceIdprocessInstanceApi.submitProcessInstance(Long.valueOf(saveReqVO.getCreator()),newBpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(HrmBillTypeEnum.HRM_RECRUITMENT_REQUIREMENT_BILL.getProcessDefinitionKey()).setVariables(variables).setBusinessKey(String.valueOf(bill.getId()))).getCheckedData();// 4. 回写流程实例 ID建立业务单据与流程的关联recruitmentRequirementBillMapper.updateById(newRecruitmentRequirementBillDO().setId(bill.getId()).setProcessInstanceId(processInstanceId));returnbill.getId();}5.2 录用审批通过自动生成入职登记单这是招聘与入职衔接的关键。RecruitmentOfferBillServiceImpl实现了FlowBillService接口当审批人在流程中心点通过时Flowable 引擎回调updateProcessStatus此时自动把候选人信息搬运成一张入职登记单并同步更新候选人状态为已录用、职位已录用人数 1。OverrideTransactional(rollbackForException.class)publicvoidupdateProcessStatus(StringbusinessKey,Integerstatus){LongidLong.parseLong(businessKey);RecruitmentOfferBillDObillvalidateRecruitmentOfferBillExists(id);RecruitmentOfferBillDOupdateObjnewRecruitmentOfferBillDO().setId(id).setProcessStatus(status);// 审批通过 → 自动创建入职登记单if(APPROVE.getStatus().equals(status)){LongentryBillIdcreateEmployeeEntryBillFromOffer(bill);updateObj.setEmployeeEntryBillId(entryBillId);}recruitmentOfferBillMapper.updateById(updateObj);}privateLongcreateEmployeeEntryBillFromOffer(RecruitmentOfferBillDOofferBill){if(offerBill.getEmployeeEntryBillId()!null){// 幂等已生成不重复创建returnofferBill.getEmployeeEntryBillId();}RecruitmentApplicationDOapplicationvalidateRecruitmentApplicationExists(offerBill.getApplicationId());RecruitmentCandidateDOcandidatevalidateRecruitmentCandidateExists(offerBill.getCandidateId());// 1. 把候选人 Offer 信息拼装成入职登记单EmployeeEntryBillSaveReqVOentryReqVObuildEmployeeEntryBillSaveReqVO(offerBill,candidate);LongentryBillIdemployeeEntryBillService.saveEmployeeEntryBill(entryReqVO);// 2. 候选人状态置「已录用」、投递阶段置「录用通过」、职位已录用人数 1recruitmentCandidateMapper.updateById(newRecruitmentCandidateDO().setId(candidate.getId()).setStatus(RecruitmentConstants.CANDIDATE_STATUS_HIRED));recruitmentApplicationMapper.updateById(newRecruitmentApplicationDO().setId(application.getId()).setStage(RecruitmentConstants.APPLICATION_STAGE_OFFER_APPROVED));returnentryBillId;}5.3 入职审批通过自动创建员工档案入职登记单同样实现了FlowBillService。审批通过后回调updateProcessStatus触发createEmployeeFromEntryBill把入职单的基本信息、工作信息、工作经历/教育经历/家属信息三张子表一次性迁移成正式员工档案并初始化薪资档案。OverrideTransactional(rollbackForException.class)publicvoidupdateProcessStatus(StringbusinessKey,Integerstatus){LongidLong.parseLong(businessKey);validateEmployeeEntryBillExists(id);EmployeeEntryBillDOupdateObjnewEmployeeEntryBillDO();updateObj.setId(id);updateObj.setProcessStatus(status);// 审批通过 → 自动建员工档案含明细子表if(APPROVE.getStatus().equals(status)){createEmployeeFromEntryBill(id);}employeeEntryBillMapper.updateById(updateObj);}这种把流程引擎与业务逻辑解耦的设计FlowBillService回调机制在论文里值得单独用一节分析——它是观察者模式在工程中的典型落地也是答辩时的高频提问点。5.4 加分项邮箱简历自动抓取并转候选人招聘子域还有一个很出彩的自动化能力通过 XXL-Job 定时任务连接 IMAP/POP3 邮箱自动抓取投递到招聘邮箱的简历邮件用正则解析出手机号、邮箱、期望薪资等字段落成邮箱线索HR 一键即可转为候选人。// 定时任务定时抓取已启用邮箱的简历线索XxlJob(recruitmentMailboxFetchJob)TenantJobpublicStringexecute(){intcountrecruitmentMailboxConfigService.fetchEnabledMailboxLeads();log.info([execute][招聘邮箱自动抓取完成 count{}],count);returnString.format(招聘邮箱自动抓取新增线索 %s 条,count);}// 正则解析从邮件正文提取手机号privatestaticfinalPatternMOBILE_PATTERNPattern.compile((1[3-9]\\d{9}));privateStringextractMobile(StringrawContent){MatchermatcherMOBILE_PATTERN.matcher(rawContent);returnmatcher.find()?matcher.group(1).trim():;}这一段在答辩时尤其加分它把定时任务 邮件协议 文本解析 去重幂等四个技术点串在一起足够撑起论文中一个完整的创新点小节。六、如何 10 分钟在本地跑起来结论先行装好 JDK 17 / MySQL 8 / Redis / Node18 后后端跑YudaoServerApplication、前端跑pnpm dev:antd约 10 分钟即可登录。6.1 环境准备清单工具版本要求用途JDK17后端运行环境Maven3.9后端依赖管理MySQL8.0数据库Redis5.0缓存 / 单据编号自增Node.js18前端运行环境pnpm9前端包管理npm i -g pnpmIDEA / Cursor最新版开发 IDE6.2 后端启动步骤# 1. 克隆后端源码gitclone https://github.com/yuqing2026/ruoyi-office.git# 2. 创建数据库utf8mb4导入 ruoyi-office-db 下的全量 SQL# 3. 修改 yudao-server/src/main/resources/application-local.yaml# 配置好 MySQL / Redis 连接信息# 4. 启动运行 yudao-server 模块的 YudaoServerApplication单体 -P boot# 成功后访问接口文档http://localhost:48080/admin-api/doc.html后端默认端口48080API 前缀/admin-api单体启动用-P boot微服务用-P cloud默认。6.3 前端启动步骤# 1. 克隆前端源码gitclone https://gitcode.com/zhouzhongyan/ruoyi-office-vben.git# 2. 安装依赖cdruoyi-office-vbenpnpminstall# 3. 启动开发服务器自动代理到 localhost:48080/admin-apipnpmdev:antd启动成功后用默认账号admin / admin123登录左侧菜单进入人力资源 → 招聘管理 / 员工关系即可看到招聘需求、候选人、录用、入职等页面。6.4 首次跑通确认清单检查项预期结果排查方向接口文档可访问看到 Knife4j 文档后端是否启动、MySQL/Redis 是否就绪admin/admin123可登录进入首页数据库是否导入完整招聘菜单正常展示看到招聘/候选人/录用页面菜单数据是否导入新建招聘需求并提交生成 HR207 编号、状态变审批中Flowable 流程是否部署七、毕设答辩加分点把下面这几个点写进论文、讲进 PPT能明显拉高答辩印象分加分点一句话讲法论文可展开方向审批即建单录用审批通过自动生成入职单、入职审批通过自动建档全程无需 HR 重复录入流程驱动的业务自动化设计FlowBillService 回调机制流程引擎与业务逻辑解耦每张单据只实现统一回调接口观察者模式 / 策略模式工程实践状态机设计候选人 6 状态、投递阶段联动更新有限状态机理论 实践单据编号生成BillCodeUtils基于 Redis 自增 单据类型前缀分布式唯一分布式 ID 生成方案对比定时任务抓简历XXL-Job IMAP/POP3 正则解析 去重幂等系统集成与自动化创新点RBAC 三级权限菜单权限控页面、操作权限控接口、数据权限控范围安全设计章节权限模型图多租户隔离全表tenant_id隔离SaaS 架构SaaS 架构设计幂等设计已建档/已生成入职单不重复创建数据一致性与幂等保证答辩小技巧演示时按招聘需求 → 候选人 → 录用审批 → 自动生成入职单 → 入职审批 → 自动出现在员工档案这条主线一气呵成走完比零散展示十个功能更有说服力。八、快速体验结论先行在线演示 三份源码仓库全部公开账号admin / admin123直接登录体验。8.1 在线演示Web 演示http://ruoyioffice.com/web/账号admin/ 密码admin123操作路径登录 → 左侧菜单「人力资源」→「招聘管理」/「员工关系」推荐体验流程5 步走完招聘→入职主线进入「招聘需求」新建一条需求并提交审批在「流程中心 - 我的待办」中审批通过该需求进入「候选人」新增候选人并发起「录用审批」审批通过录用单后到「员工关系 - 入职管理」查看自动生成的入职登记单审批通过入职单后到「员工档案」确认新员工已自动建档。8.2 源码仓库平台仓库地址GitHub后端https://github.com/yuqing2026/ruoyi-officeGitCode后端https://gitcode.com/zhouzhongyan/ruoyi-officeGitee后端https://gitee.com/yqzy1688/ruoyi-officeGitCode前端https://gitcode.com/zhouzhongyan/ruoyi-office-vben.git结语2026 毕业季与其纠结从零自己搭框架不如站在成熟开源框架的肩膀上把精力聚焦到业务流程和技术深度。HR 招聘入职系统的最大优势在于它有一条天然清晰的主线——招聘需求、职位、候选人、面试、录用、入职建档环环相扣、可演示、可讲解。更重要的是HRM 模块本身就是一个选题超市时间紧就做候选人管理 录用审批想冲优秀就把邮箱自动抓简历 审批即建档 状态机联动这套自动化做透。同一套源码丰俭由人。送给 2026 届同学一句话毕设的含金量不在于做了多少功能而在于你能把一条业务流程讲到多深。把招聘到入职这条线讲到流程引擎回调、状态机设计、单据编号生成、幂等保证比堆十个半成品模块更打动评委。讨论话题你的毕设打算选 HRM 的哪个子域是招聘、考勤还是薪资欢迎在评论区聊聊你的选题思路遇到的技术难点也可以一起讨论。祝 2026 届毕业生顺利通过答辩常见问题FAQ这套 HR 招聘入职系统适合做毕业设计吗非常适合。它业务场景人人都懂投简历/面试/发 Offer/办入职技术栈主流Spring Boot 3.5 Vue3 Flowable且有一条完整的招聘→录用→入职数据流主线便于答辩演示。难度可裁剪基础同学做候选人管理录用审批即可成题想冲优秀可把邮箱抓简历审批即建档这套自动化做透。是开源免费的吗要钱吗开源免费、可商用。后端基于 Spring Boot 3.5、前端基于 Vue3 Vben Admin源码在 GitCode 和 GitHub 上完全公开无 license 限制可放心用于毕业设计与二次开发。部署难不难本地多久能跑起来不难。准备好 JDK 17、MySQL 8、Redis、Node 18 后导入 SQL、配置数据库连接后端运行YudaoServerApplication单体模式前端执行pnpm dev:antd约 10 分钟即可用admin/admin123登录。答辩演示可部署到阿里云 2 核 2G 服务器。招聘审批流程可以自定义吗可以。招聘需求单、录用审批单、入职登记单都基于 Flowable BPMN 引擎可在流程设计器中自定义审批节点、会签、条件分支无需改代码。流程定义 Key 分别为hr_recruitment_requirement_bill、hr_recruitment_offer_bill、hr_employee_entry_bill。录用审批通过自动生成入职单是怎么实现的通过FlowBillService回调机制实现。录用审批单实现该接口审批人点通过后 Flowable 引擎回调updateProcessStatus方法内判断状态为通过时自动用候选人和 Offer 信息拼装一张入职登记单并落库同时更新候选人状态、职位已录用人数。整个过程做了幂等处理已生成的不会重复创建。想要体验 RuoYi Office 的强大功能在线演示http://ruoyioffice.com/web/账号 admin / admin123源码仓库GitHub | GitCode | Gitee技术咨询添加微信17156169080备注「RuoYi Office」⭐如果觉得不错请给个 Star 支持一下
如何快速搭建一套 HR 招聘+入职系统(SpringBoot+Vue3 含源码)
如何快速搭建一套 HR 招聘入职系统SpringBootVue3 含源码演示地址http://ruoyioffice.com | 源码1·GitHubruoyi-office | 源码2·GitCoderuoyi-office | 源码3·Giteeruoyi-office | 微信17156169080备注「RuoYi Office」又到毕业季计算机专业的同学被选题难、要全栈、还要能现场演示三件事支配。如果你还在纠结不妨直接做一套HR 招聘入职系统业务场景人人都懂投简历、面试、发 Offer、办入职技术栈主流SpringBoot 3.5 Vue3 Flowable而且有一条天然的数据流主线——招聘需求 → 职位 → 候选人 → 面试 → 录用审批 → 入职建档答辩时一条线讲下来评委一听就懂。本文基于开源项目 RuoYi Office 的真实 HRM 模块源码带你 10 分钟把它跑起来。▲ 技术架构全景前端层Vue3/Vben/UniApp→ 网关层Gateway/认证→ 服务层SpringBoot/Security/MyBatis/Flowable→ 数据层MySQL/Redis/MinIO/Nacos→ 17 大业务模块层。HRM 模块本身就是一个毕设选题超市招聘入职是本文主线。引言毕设到底卡在哪三件事每年六月CSDN、知乎上求推荐毕设选题的帖子准时刷屏。归根结底计算机毕设的焦虑来自三件具体的事痛点一选题难。选太简单纯 CRUD怕答辩被问倒选太难分布式/AI 大模型怕做不完选冷门怕导师不认可。管理系统类选题仍是最稳的选择但又一个图书管理系统已经审美疲劳。痛点二要全栈但时间不够。毕设评委越来越看重前后端分离 工作流 权限这套现代技术栈可从零搭框架往往要花掉两三个月真正写业务的时间所剩无几。痛点三要能现场演示。论文写得再漂亮答辩当天系统跑不起来、数据是空的印象分直接打折。现状后果从零搭框架权限、工作流自己造轮子3 个月过去还在调登录业务没动几行选题太小只有增删改查答辩被追问技术深度时无话可说演示数据靠现场临时录入流程演示卡壳评委体验差技术栈陈旧SSM、jQuery体现不出技术视野错失加分项一句话结论选一套业务清晰、技术主流、能开箱即跑的开源系统做二次开发把精力聚焦在业务流程和技术深度上才是 2026 毕设的聪明解法。HR 招聘入职系统恰好满足全部条件。一、为什么推荐用「HR 招聘入职」做毕设结论先行招聘入职是一条看得见、讲得清、有深度的完整业务链单是这一条线就足以撑起一篇优秀毕业设计。HRMHuman Resource Management人力资源管理模块在 RuoYi Office 中是一个完整的业务域包含招聘、入职、考勤、请假、薪资、绩效六大子域。其中招聘→录用→入职这条主线特别适合做毕设原因有四选它的理由具体说明业务人人都懂投简历、约面试、发 Offer、办入职答辩不用花时间解释领域知识数据流有主线一条招聘需求单串起职位、候选人、面试、录用、入职五张核心单据自然形成端到端流程技术点密集RBAC 权限、Flowable 审批流、状态机、单据编号生成、定时任务邮箱抓简历、附件上传每个点都能在论文里展开一节难度可裁剪时间紧只做候选人管理 录用审批想冲优秀就把邮箱自动抓简历 审批即建档这套自动化做透更关键的是招聘入职之间有一个非常出彩的自动化衔接录用审批单审批通过后系统会自动生成员工入职登记单入职登记单审批通过后又会自动创建员工档案。这种审批驱动、单据自动流转的设计是答辩时区分普通 CRUD和有工程思想的关键。二、技术架构总览2026 主流技术栈全覆盖结论先行这套系统是标准的前后端分离 网关 微服务可选 BPM 工作流架构技术栈与 2026 年企业级开发主流完全一致。如全景图所示系统自上而下分为五层。每一层的技术选型都能直接对应到毕设论文的系统设计章节层级技术选型版本论文对应章节前端层Vue 3 TypeScript Vben Admin 5 Ant Design Vue 4Vite 6 构建前端技术选型网关层Spring Cloud Gateway OAuth2 Nginx 多租户—安全设计 / 部署架构服务层Spring Boot 3.5 Spring Security MyBatis-PlusJava 17后端技术选型 / 数据访问层工作流FlowableBPMN 7.0流程引擎设计亮点章节数据层MySQL 8 Redis MinIO/OSS Nacos Docker—数据库设计 / 缓存设计名词解释BPM即业务流程管理Business Process Management用于把申请→审批→流转这类流程用引擎驱动Flowable是开源的 BPMN 2.0 工作流引擎可视化设计流程、无需改代码即可调整审批节点。为什么这套技术栈适合 2026 毕设看评委关心的几个点评审关注点如何满足技术是否主流Spring Boot 3.5 Vue3 是当前 Java Web 最主流组合前后端是否分离标准 RESTful API前缀/admin-api前端 Vben 后端 SpringBoot是否有工作流Flowable BPMN招聘需求/录用/入职三张单据全部走审批流安全机制是否完整Spring Security RBAC 三级权限 多租户 OAuth2是否可扩展模块化架构yudao-module-hrm独立拆分为-api与-server三、模块与功能清单招聘子域 8 张表 入职建档结论先行HRM 招聘子域由 8 张核心表组成配合员工入职登记单与员工档案构成完整的招到人 → 入职 → 建档闭环。下面是后端yudao-module-hrm中招聘入职相关的真实数据表与功能模块均来自源码dal/dataobject与service目录子模块数据表核心功能是否走审批流招聘需求申请单hrm_recruitment_requirement_bill用人部门提报岗位需求、人数、紧急度、预算✅ Flowable招聘职位hrm_recruitment_position由需求生成职位记录需求人数/已录用人数—候选人hrm_recruitment_candidate候选人简历库姓名/学历/期望薪资/状态—投递关系hrm_recruitment_application候选人投递职位记录所处阶段—面试记录hrm_recruitment_interview_record面试轮次、评价、结果—录用审批单hrm_recruitment_offer_bill发 Offer、薪资说明、计划入职日期✅ Flowable邮箱简历线索hrm_recruitment_email_lead自动抓取的邮件简历解析后转候选人—招聘邮箱配置hrm_recruitment_mailbox_configIMAP/POP3 邮箱配置定时抓取—员工入职登记单hrm_employee_entry_bill 3 子表入职登记审批通过自动建档✅ Flowable员工档案hrm_employee在职员工档案入职单审批后自动创建—整个 HRM 模块在HrmBillTypeEnum中注册了13 种审批单据类型编号 201~213其中招聘相关的两张分别是单据类型编号流程定义 Key招聘需求申请单207hr_recruitment_requirement_bill录用审批单208hr_recruitment_offer_bill员工入职申请单201hr_employee_entry_bill候选人状态机覆盖待跟进 → 已投递 → 面试中 → 待录用 → 已录用 / 未通过共 6 种状态投递关系阶段与候选人状态联动更新——这正是论文里有限状态机小节的好素材。四、核心流程从招聘需求到入职建档结论先行这条主线由两个审批即触发的自动化节点串起来——录用审批通过自动生成入职单入职审批通过自动建员工档案。4.1 招聘需求列表流程起点用人部门在这里提报岗位需求提交后走 Flowable 审批流。审批通过的需求才能发布为职位、对外招聘。▲ 招聘需求申请单列表展示单据编号、岗位名称、需求人数、紧急度、审批状态等。每条需求都带HR207前缀的单据编号点击可查看详情并跟踪审批进度。4.2 候选人简历库人才池候选人可以手工录入、Excel 导入也可以由邮箱简历线索自动转化而来。候选人状态随投递阶段自动流转。▲ 候选人列表支持按姓名、手机号、来源渠道、状态筛选。来源渠道用字典HRM_RECRUITMENT_CHANNEL管理状态标签清晰展示候选人当前所处招聘阶段。4.3 员工档案流程终点当录用审批和入职审批都通过后系统自动把入职登记单的数据迁移成正式员工档案候选人正式成为员工。▲ 员工档案列表展示工号、姓名、部门、岗位、入职日期、员工状态试用/正式等。这些记录大部分是由入职登记单审批通过后自动建档生成的无需 HR 二次录入。五、关键代码片段真实源码下面三段代码全部来自yudao-module-hrm的真实实现分别对应发起审批“审批衔接”审批建档三个关键节点。论文的系统实现章节可以直接基于这些代码展开。5.1 招聘需求提交发起 Flowable 流程需求提交时先生成单据编号并落库再调用 BPM 接口发起流程实例最后把流程实例 ID 回写到单据。这套先存业务、再发流程、回写关联的写法贯穿所有审批单据。OverrideTransactional(rollbackForException.class)publicLongsubmitRecruitmentRequirementBill(RecruitmentRequirementBillSaveReqVOsaveReqVO){// 1. 生成单据编号Redis 自增 HR207 前缀if(StringUtils.isBlank(saveReqVO.getBillCode())){saveReqVO.setBillCode(BillCodeUtils.generateBillCode(SystemEnum.HRM,HrmBillTypeEnum.HRM_RECRUITMENT_REQUIREMENT_BILL));}// 2. 保存业务表状态置为「审批中」RecruitmentRequirementBillDObillBeanUtils.toBean(saveReqVO,RecruitmentRequirementBillDO.class).setProcessStatus(BpmTaskStatusEnum.RUNNING.getStatus());recruitmentRequirementBillMapper.insertOrUpdate(bill);// 3. 发起 Flowable 流程实例MapString,ObjectvariablesBpmProcessVariableUtils.buildBillVariables(saveReqVO);StringprocessInstanceIdprocessInstanceApi.submitProcessInstance(Long.valueOf(saveReqVO.getCreator()),newBpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(HrmBillTypeEnum.HRM_RECRUITMENT_REQUIREMENT_BILL.getProcessDefinitionKey()).setVariables(variables).setBusinessKey(String.valueOf(bill.getId()))).getCheckedData();// 4. 回写流程实例 ID建立业务单据与流程的关联recruitmentRequirementBillMapper.updateById(newRecruitmentRequirementBillDO().setId(bill.getId()).setProcessInstanceId(processInstanceId));returnbill.getId();}5.2 录用审批通过自动生成入职登记单这是招聘与入职衔接的关键。RecruitmentOfferBillServiceImpl实现了FlowBillService接口当审批人在流程中心点通过时Flowable 引擎回调updateProcessStatus此时自动把候选人信息搬运成一张入职登记单并同步更新候选人状态为已录用、职位已录用人数 1。OverrideTransactional(rollbackForException.class)publicvoidupdateProcessStatus(StringbusinessKey,Integerstatus){LongidLong.parseLong(businessKey);RecruitmentOfferBillDObillvalidateRecruitmentOfferBillExists(id);RecruitmentOfferBillDOupdateObjnewRecruitmentOfferBillDO().setId(id).setProcessStatus(status);// 审批通过 → 自动创建入职登记单if(APPROVE.getStatus().equals(status)){LongentryBillIdcreateEmployeeEntryBillFromOffer(bill);updateObj.setEmployeeEntryBillId(entryBillId);}recruitmentOfferBillMapper.updateById(updateObj);}privateLongcreateEmployeeEntryBillFromOffer(RecruitmentOfferBillDOofferBill){if(offerBill.getEmployeeEntryBillId()!null){// 幂等已生成不重复创建returnofferBill.getEmployeeEntryBillId();}RecruitmentApplicationDOapplicationvalidateRecruitmentApplicationExists(offerBill.getApplicationId());RecruitmentCandidateDOcandidatevalidateRecruitmentCandidateExists(offerBill.getCandidateId());// 1. 把候选人 Offer 信息拼装成入职登记单EmployeeEntryBillSaveReqVOentryReqVObuildEmployeeEntryBillSaveReqVO(offerBill,candidate);LongentryBillIdemployeeEntryBillService.saveEmployeeEntryBill(entryReqVO);// 2. 候选人状态置「已录用」、投递阶段置「录用通过」、职位已录用人数 1recruitmentCandidateMapper.updateById(newRecruitmentCandidateDO().setId(candidate.getId()).setStatus(RecruitmentConstants.CANDIDATE_STATUS_HIRED));recruitmentApplicationMapper.updateById(newRecruitmentApplicationDO().setId(application.getId()).setStage(RecruitmentConstants.APPLICATION_STAGE_OFFER_APPROVED));returnentryBillId;}5.3 入职审批通过自动创建员工档案入职登记单同样实现了FlowBillService。审批通过后回调updateProcessStatus触发createEmployeeFromEntryBill把入职单的基本信息、工作信息、工作经历/教育经历/家属信息三张子表一次性迁移成正式员工档案并初始化薪资档案。OverrideTransactional(rollbackForException.class)publicvoidupdateProcessStatus(StringbusinessKey,Integerstatus){LongidLong.parseLong(businessKey);validateEmployeeEntryBillExists(id);EmployeeEntryBillDOupdateObjnewEmployeeEntryBillDO();updateObj.setId(id);updateObj.setProcessStatus(status);// 审批通过 → 自动建员工档案含明细子表if(APPROVE.getStatus().equals(status)){createEmployeeFromEntryBill(id);}employeeEntryBillMapper.updateById(updateObj);}这种把流程引擎与业务逻辑解耦的设计FlowBillService回调机制在论文里值得单独用一节分析——它是观察者模式在工程中的典型落地也是答辩时的高频提问点。5.4 加分项邮箱简历自动抓取并转候选人招聘子域还有一个很出彩的自动化能力通过 XXL-Job 定时任务连接 IMAP/POP3 邮箱自动抓取投递到招聘邮箱的简历邮件用正则解析出手机号、邮箱、期望薪资等字段落成邮箱线索HR 一键即可转为候选人。// 定时任务定时抓取已启用邮箱的简历线索XxlJob(recruitmentMailboxFetchJob)TenantJobpublicStringexecute(){intcountrecruitmentMailboxConfigService.fetchEnabledMailboxLeads();log.info([execute][招聘邮箱自动抓取完成 count{}],count);returnString.format(招聘邮箱自动抓取新增线索 %s 条,count);}// 正则解析从邮件正文提取手机号privatestaticfinalPatternMOBILE_PATTERNPattern.compile((1[3-9]\\d{9}));privateStringextractMobile(StringrawContent){MatchermatcherMOBILE_PATTERN.matcher(rawContent);returnmatcher.find()?matcher.group(1).trim():;}这一段在答辩时尤其加分它把定时任务 邮件协议 文本解析 去重幂等四个技术点串在一起足够撑起论文中一个完整的创新点小节。六、如何 10 分钟在本地跑起来结论先行装好 JDK 17 / MySQL 8 / Redis / Node18 后后端跑YudaoServerApplication、前端跑pnpm dev:antd约 10 分钟即可登录。6.1 环境准备清单工具版本要求用途JDK17后端运行环境Maven3.9后端依赖管理MySQL8.0数据库Redis5.0缓存 / 单据编号自增Node.js18前端运行环境pnpm9前端包管理npm i -g pnpmIDEA / Cursor最新版开发 IDE6.2 后端启动步骤# 1. 克隆后端源码gitclone https://github.com/yuqing2026/ruoyi-office.git# 2. 创建数据库utf8mb4导入 ruoyi-office-db 下的全量 SQL# 3. 修改 yudao-server/src/main/resources/application-local.yaml# 配置好 MySQL / Redis 连接信息# 4. 启动运行 yudao-server 模块的 YudaoServerApplication单体 -P boot# 成功后访问接口文档http://localhost:48080/admin-api/doc.html后端默认端口48080API 前缀/admin-api单体启动用-P boot微服务用-P cloud默认。6.3 前端启动步骤# 1. 克隆前端源码gitclone https://gitcode.com/zhouzhongyan/ruoyi-office-vben.git# 2. 安装依赖cdruoyi-office-vbenpnpminstall# 3. 启动开发服务器自动代理到 localhost:48080/admin-apipnpmdev:antd启动成功后用默认账号admin / admin123登录左侧菜单进入人力资源 → 招聘管理 / 员工关系即可看到招聘需求、候选人、录用、入职等页面。6.4 首次跑通确认清单检查项预期结果排查方向接口文档可访问看到 Knife4j 文档后端是否启动、MySQL/Redis 是否就绪admin/admin123可登录进入首页数据库是否导入完整招聘菜单正常展示看到招聘/候选人/录用页面菜单数据是否导入新建招聘需求并提交生成 HR207 编号、状态变审批中Flowable 流程是否部署七、毕设答辩加分点把下面这几个点写进论文、讲进 PPT能明显拉高答辩印象分加分点一句话讲法论文可展开方向审批即建单录用审批通过自动生成入职单、入职审批通过自动建档全程无需 HR 重复录入流程驱动的业务自动化设计FlowBillService 回调机制流程引擎与业务逻辑解耦每张单据只实现统一回调接口观察者模式 / 策略模式工程实践状态机设计候选人 6 状态、投递阶段联动更新有限状态机理论 实践单据编号生成BillCodeUtils基于 Redis 自增 单据类型前缀分布式唯一分布式 ID 生成方案对比定时任务抓简历XXL-Job IMAP/POP3 正则解析 去重幂等系统集成与自动化创新点RBAC 三级权限菜单权限控页面、操作权限控接口、数据权限控范围安全设计章节权限模型图多租户隔离全表tenant_id隔离SaaS 架构SaaS 架构设计幂等设计已建档/已生成入职单不重复创建数据一致性与幂等保证答辩小技巧演示时按招聘需求 → 候选人 → 录用审批 → 自动生成入职单 → 入职审批 → 自动出现在员工档案这条主线一气呵成走完比零散展示十个功能更有说服力。八、快速体验结论先行在线演示 三份源码仓库全部公开账号admin / admin123直接登录体验。8.1 在线演示Web 演示http://ruoyioffice.com/web/账号admin/ 密码admin123操作路径登录 → 左侧菜单「人力资源」→「招聘管理」/「员工关系」推荐体验流程5 步走完招聘→入职主线进入「招聘需求」新建一条需求并提交审批在「流程中心 - 我的待办」中审批通过该需求进入「候选人」新增候选人并发起「录用审批」审批通过录用单后到「员工关系 - 入职管理」查看自动生成的入职登记单审批通过入职单后到「员工档案」确认新员工已自动建档。8.2 源码仓库平台仓库地址GitHub后端https://github.com/yuqing2026/ruoyi-officeGitCode后端https://gitcode.com/zhouzhongyan/ruoyi-officeGitee后端https://gitee.com/yqzy1688/ruoyi-officeGitCode前端https://gitcode.com/zhouzhongyan/ruoyi-office-vben.git结语2026 毕业季与其纠结从零自己搭框架不如站在成熟开源框架的肩膀上把精力聚焦到业务流程和技术深度。HR 招聘入职系统的最大优势在于它有一条天然清晰的主线——招聘需求、职位、候选人、面试、录用、入职建档环环相扣、可演示、可讲解。更重要的是HRM 模块本身就是一个选题超市时间紧就做候选人管理 录用审批想冲优秀就把邮箱自动抓简历 审批即建档 状态机联动这套自动化做透。同一套源码丰俭由人。送给 2026 届同学一句话毕设的含金量不在于做了多少功能而在于你能把一条业务流程讲到多深。把招聘到入职这条线讲到流程引擎回调、状态机设计、单据编号生成、幂等保证比堆十个半成品模块更打动评委。讨论话题你的毕设打算选 HRM 的哪个子域是招聘、考勤还是薪资欢迎在评论区聊聊你的选题思路遇到的技术难点也可以一起讨论。祝 2026 届毕业生顺利通过答辩常见问题FAQ这套 HR 招聘入职系统适合做毕业设计吗非常适合。它业务场景人人都懂投简历/面试/发 Offer/办入职技术栈主流Spring Boot 3.5 Vue3 Flowable且有一条完整的招聘→录用→入职数据流主线便于答辩演示。难度可裁剪基础同学做候选人管理录用审批即可成题想冲优秀可把邮箱抓简历审批即建档这套自动化做透。是开源免费的吗要钱吗开源免费、可商用。后端基于 Spring Boot 3.5、前端基于 Vue3 Vben Admin源码在 GitCode 和 GitHub 上完全公开无 license 限制可放心用于毕业设计与二次开发。部署难不难本地多久能跑起来不难。准备好 JDK 17、MySQL 8、Redis、Node 18 后导入 SQL、配置数据库连接后端运行YudaoServerApplication单体模式前端执行pnpm dev:antd约 10 分钟即可用admin/admin123登录。答辩演示可部署到阿里云 2 核 2G 服务器。招聘审批流程可以自定义吗可以。招聘需求单、录用审批单、入职登记单都基于 Flowable BPMN 引擎可在流程设计器中自定义审批节点、会签、条件分支无需改代码。流程定义 Key 分别为hr_recruitment_requirement_bill、hr_recruitment_offer_bill、hr_employee_entry_bill。录用审批通过自动生成入职单是怎么实现的通过FlowBillService回调机制实现。录用审批单实现该接口审批人点通过后 Flowable 引擎回调updateProcessStatus方法内判断状态为通过时自动用候选人和 Offer 信息拼装一张入职登记单并落库同时更新候选人状态、职位已录用人数。整个过程做了幂等处理已生成的不会重复创建。想要体验 RuoYi Office 的强大功能在线演示http://ruoyioffice.com/web/账号 admin / admin123源码仓库GitHub | GitCode | Gitee技术咨询添加微信17156169080备注「RuoYi Office」⭐如果觉得不错请给个 Star 支持一下