SpringBoot3+Vue3 培训证书:计划、班次签到、发证怎么落到员工档案
SpringBoot3Vue3 培训证书计划、班次签到、发证怎么落到员工档案文档地址https://ruoyioffice.com源码1·GitHubhttps://github.com/yuqing2026/ruoyi-office源码2·GitCodehttps://gitcode.com/zhouzhongyan/ruoyi-office源码3·Giteehttps://gitee.com/yqzy1688/ruoyi-office微信17156169080备注「RuoYi Office」本文由 RuoYi Office 团队整理结合实际项目分享企业软件的设计思路与开发经验。培训通知在群里签到在纸上证书在行政电脑。验收、晋升、外审时谁也拼不出「谁参加过、有没有证」。RuoYi Office 把计划、班次、签到、证书模板和发证串成一条证不是另存的图片是员工档案上的一条记录。▲ 左计划定范围。中班次扫码签到。右模板发证写入员工证书撤销同步作废引言培训难在「证落不到人」缺的不是课程表是参加记录和证书各写各的。现场配错之后只建计划不建班次没人可签到发证没名册签到用共享表格替签、过期码仍能扫证书用 Word 另存档案证书页是空的撤证只删文件员工档案还挂着有效证本文讲产品怎么配、业务怎么走、实现怎么一次串完。外出培训申请单hr_training_outbound_bill是另一条出差审批不在本页展开。菜单人力资源 → 培训管理。计划流程 keyhr_training_plan。一、产品拆四块不要合成一个「培训单」页面路由配什么培训计划/hrm/training/plan-info主题、内容、范围人/部门/岗位提交审批后才能开班培训班次/hrm/training/session某次课的时间窗、名册、签到二维码 TTL签到/hrm/training/signin扫码 / 补签写入签到日志证书模板/hrm/training/cert-template-design底图、字段占位、印章发证规则 / 发证/hrm/training/cert-rule、/hrm/training/cert-issue证号规则、批量颁发、撤销计划未发布班次创建会报「计划未发布」。这是故意的先审「这期培训该不该办」再谈哪一天上课。▲/hrm/training/plan-info。范围决定谁能进班次名册不是开课后临时拉群▲/hrm/training/cert-template-design。姓名、证号、班次名套在图上。发证时服务端渲染不靠行政手动 P 图▲/hrm/training/cert-issue点预览。证号JN-2026-000001、班次和印章都是发证时渲染的不是行政另存的 Word二、业务怎么走从计划到档案HR 建计划圈定部门或人员提交hr_training_plan。通过后计划可发布。在已发布计划下建班次上课时间、签到窗口、二维码有效秒数默认 90 秒一轮。学员扫班次码。服务端用班次qrSeed做按时间片的 HMAC过期码无效不在名册不能签。补签要填原因。课后在发证页勾选学员选模板和证号规则。系统渲染证书图、生成证号、写入hrm员工证书并回写该学员的培训记录certNo。撤证发证单改作废档案证书改撤销培训记录清证号。「我的培训」/hrm/training/my给学员看自己的班次和证不替代发证台账。外训证书也可以importExternal先建一条待颁发再走同一套issueOne避免「外训只上传附件、档案没有证」。三、实现怎么串表、时序、代码放一起看计划、班次、名册、签到、发证、员工证书是六张不同的表。不要把证号塞进计划主表。表 / 对象作用培训计划审批壳 范围培训班次一次课、签到窗口、qrSeed / qrTtlSec参训名册班次 × 员工签到日志扫码或补签痕迹发证单待颁发 / 已颁发 / 已撤销员工证书档案页展示source培训指向发证单签到码不是写死在二维码里的学号。getQr用当前时间片和种子算 token扫码再算一遍比对。窗口外直接失败。publicTrainingSigninQrRespVOgetQr(LongsessionId){TrainingSessionDOsessionvalidatePublished(sessionId);assertWindow(session);intttlsession.getQrTtlSec()null||session.getQrTtlSec()0?90:session.getQrTtlSec();longperiodSystem.currentTimeMillis()/1000/ttl;Stringtokenhmac(session.getQrSeed(),period,sessionId);vo.setContent({\sessionId\:sessionId,\token\:\token\});returnvo;}发证issueOne才是落到档案的那一下校验待颁发 → 补模板/规则 →nextCertNo→renderCert出图 →employeeCertificateService.createFromTraining→ 回写培训记录和名册。privatevoidissueOne(Longid,LongtemplateId,LongruleId){// 待颁发才能发缺模板/规则用启用中的默认项StringcertNoStrUtil.blankToDefault(issue.getCertNo(),nextCertNo(useRuleId));StringfileUrlStrUtil.blankToDefault(issue.getFileUrl(),renderCert(issue,employeeName,certNo,useTemplateId));employeeCertificateService.createFromTraining(issue.getEmployeeId(),issue.getId(),issue.getCertName(),certNo,certType,fileUrl);// 同步该班次下此员工的培训记录 certNo / issueId}撤销必须双边发证单ISSUE_REVOKED档案证书STATUS_REVOKED。只删文件 URL档案页仍会当有效证。模板设计器存的是占位和底图渲染在服务端。这样手机和 PC 看到的证同一份不会各 P 一张。计划审批和发证没有绑在同一张 Flowable 单上。计划过了只表示「这期能办」证发给谁看签到和名册。不要指望审批通过自动人手一本证——缺勤的人不应拿到证。四、实施时怎么选你想要的结果怎么配全员合规培训计划范围选部门班次名册从范围带出小班选修计划范围只勾人班次不要再手工加编外防替签二维码 TTL 90 秒窗口外不允许扫外训也要进档案走导入发证不要只把 PDF 丢附件证作废发证页撤销不要去文件存储删图证书类型跟模板走档案筛选「技能证 / 上岗证」才有意义。不要所有证都叫 other。五、快速体验在线演示https://ruoyioffice.com/web/账号 admin / admin123人力资源 → 培训管理 → 培训计划打开一份已发布计划看范围。培训班次进详情看签到窗口和二维码。证书模板打开设计器拖一个姓名占位。证书颁发勾一名学员颁发再打开该员工档案证书页核对。对刚发的证点撤销档案状态应变成撤销。源码仓库GitHubhttps://github.com/yuqing2026/ruoyi-office GitCodehttps://gitcode.com/zhouzhongyan/ruoyi-office Giteehttps://gitee.com/yqzy1688/ruoyi-office常见问题FAQ计划通过了为什么不能发证发证认的是班次名册和待颁发单不认计划审批状态。先建班次、签到或导入再颁发。扫码提示不在名册名册是班次上的人不是计划范围的超集。范围只限制「谁能被加进班次」。把人加进该班次名册。证书图是空的模板没底图或渲染失败。先在设计器预览确认文件服务可用。导入外训可以自带fileUrl跳过渲染。和劳动合同、技能鉴定是不是一张表员工证书是档案子表来源字段区分培训 / 其它。劳动合同走合同模块。不要把培训证当合同附件。外出培训申请通过会不会自动发证不会。外训单一审费用和行程。证仍然要颁发或导入才能进档案。结语培训要选的是「计划审什么、班次记谁、证写到哪」。签到用会过期的码发证写档案撤销双边作废。读者能带走的三句未发布计划不能开班证从发证单来不从群文件来撤证要动档案。你们现在证书还在行政文件夹里吗评论区说一下档案页能不能搜到。如果这篇对你有用欢迎点赞支持。我们会持续分享企业软件开发实践与 RuoYi Office 产品进展。想要体验 RuoYi Office 的强大功能在线演示https://ruoyioffice.com/web/账号 admin / admin123源码仓库GitHubhttps://github.com/yuqing2026/ruoyi-office GitCodehttps://gitcode.com/zhouzhongyan/ruoyi-office Giteehttps://gitee.com/yqzy1688/ruoyi-office技术咨询添加微信17156169080备注「RuoYi Office」⭐如果觉得不错请给个 Star 支持一下

相关新闻

sudo-rs sudoers 配置实践指南:从写规则到安全护栏

sudo-rs sudoers 配置实践指南:从写规则到安全护栏

sudo-rs sudoers 配置实践指南:从写规则到安全护栏 【免费下载链接】sudo-rs A memory safe implementation of sudo and su. 项目地址: https://gitcode.com/GitHub_Trending/su/sudo-rs 你给运维同事开 sudo 权限时,是只开一条命令,…

2026/10/17 6:36:58 阅读更多 →
Cassandra表结构变更检查:CQL解析、差异报告与风险提示

Cassandra表结构变更检查:CQL解析、差异报告与风险提示

项目编号:20260728-012。本文代码、测试、文档与示例数据均为独立编写,不包含榜单项目源码或受限素材。为什么需要这个工具 对比两份CREATE TABLE CQL,识别新增、删除、类型变化和主键变化,给出迁移风险等级及检查清单。实际开发中…

2026/10/17 6:36:58 阅读更多 →
自建Portal认证服务器:OpenPortalServer部署与排坑指南

自建Portal认证服务器:OpenPortalServer部署与排坑指南

简介:这份资源是基于Java开发的开源PORTAL协议服务端程序,适合网络管理员、运维工程师以及需要部署认证上网环境的开发者使用。程序兼容华为、H3C、锐捷、爱快等主流网络设备,支持标准Portal协议、V1/V2及CMCC协议,并涵盖PAP、CHA…

2026/10/17 6:36:58 阅读更多 →

最新新闻

鸿蒙应用运行机制详解:从点击图标到第一帧画面

鸿蒙应用运行机制详解:从点击图标到第一帧画面

上篇说完环境搭建、建完工程、能跑出“你好,鸿蒙”的页面之后,很多初学的朋友都会冒出一个问题:我就按了一下图标,屏幕上就从无到有出现了一个应用界面,这中间到底发生了什么事?这篇就专门把“应用是怎样运…

2026/10/17 7:17:05 阅读更多 →
知识图谱遇上古诗词:NLP与大模型驱动的智能问答与情感分析系统解析

知识图谱遇上古诗词:NLP与大模型驱动的智能问答与情感分析系统解析

这两年咨询计算机毕设选题的同学,十个里有六七个都在问同一个方向:能不能把古诗词和AI结合起来做。说实话,这个标题“计算机毕业设计Python知识图谱中华古诗词可视化 古诗词情感分析 古诗词智能问答系统 AI大模型自动写诗”基本把近两年NLP、…

2026/10/17 7:17:05 阅读更多 →
AI Agent六大模块实战拆解:从感知到反思的架构指南

AI Agent六大模块实战拆解:从感知到反思的架构指南

把AI Agent拆成“六个模块”来聊,是我在做了多个Agent项目之后觉得最合适的一种切入方式。很多人一上来就盯着提示词写得多花哨,或者纠结该调哪家大模型,结果做出来的东西一跑就崩、一换场景就废。真正的Agent系统,核心不在于模型…

2026/10/17 7:17:05 阅读更多 →
开发者认知提纯:代码评审、ADHD友好终端、Agent控制与去AI味实践

开发者认知提纯:代码评审、ADHD友好终端、Agent控制与去AI味实践

1. 项目概述:一份真正为开发者服务的周刊,不是信息堆砌而是认知提纯这期Github周刊2026W38,标题里四个关键词——“阿里代码评审工具开源”、“ADHD友好输出”、“智能体运行底座ECC”、“文本去AI味”,表面看是四条独立新闻&…

2026/10/17 7:17:05 阅读更多 →
长三角shp底图使用指南:ArcGIS矢量数据加载、裁剪与避坑

长三角shp底图使用指南:ArcGIS矢量数据加载、裁剪与避坑

简介:这份长三角shp底图资源面向从事GIS制图、空间分析与区域规划的研究人员、规划从业者及高校师生,提供覆盖三省一市的最新矢量边界数据,可直接用于ArcGIS中的地图制作、专题图绘制与空间统计。压缩包共10个文件,约1.44MB&#…

2026/10/17 7:17:05 阅读更多 →
混合检索实战:融合关键词与向量检索,破解RAG精度难题

混合检索实战:融合关键词与向量检索,破解RAG精度难题

做RAG应用的人,大概率都踩过同一个坑:向量检索跑得飞快,召回结果看着也都是“相关话题”,可用户问具体型号、单据编号、法条原文的时候,它完全不在状态;换成纯关键词搜,精确词是能中了&#xff…

2026/10/17 7:16:05 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →