一个基于SpringBoot3+Vue3的工单管理系统:审批进池、处理组分派与 SLA 双计时
一个基于SpringBoot3Vue3的工单管理系统审批进池、处理组分派与 SLA 双计时文档地址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 用oa_ticket_bill走 Flowable审批通过再进工单池SLA 写两个 deadline。▲ 四步都发生在同一张工单上审批看不见办理、办理不改审批结果SLA 从提交时刻起算引言报障单卡在「谁来接」打印机卡纸、VPN 登不上、官网 502——这些不是请假那种「审完就结束」的单据。审批只回答「该不该办」真正难的是现场原话工单要给出的能力「过了审批没人理」进工单池组员认领或自动派「紧急单和咨询单一个时限」优先级分类匹配 SLA「两个人同时点接单」状态门禁待分配才能抢「超时了群里才知道」定时任务打标 站内信本文只写已经跑通的 PC 工单列表在/ticket/ticket-pool办理在工单池详情申请单在/ticket/ticket-bill-info。一、业务设计两套状态一张表1.1 流程状态 ≠ 工单状态processStatus跟 Flowable 走运行中、通过、驳回。ticketStatus跟服务台走ticketStatus含义谁能动手0 未启动还没提交申请人1 待分配审批通过在池里处理组成员认领 / 管理员派2 待处理已指定处理人未接单被派的人3 处理中已接单当前处理人回复/转派/完成4 已完成处理人结案可关闭或重新打开5 已关闭终态可激活回处理中审批回调只改办理侧不会把「已通过」写成「处理中」。列表上能同时看到流程标签和工单标签。1.2 四张表表作用oa_ticket_bill主单分类、优先级、处理组、两个 deadline、超时标志处理组成员组名、成员 ID 串、分配策略、轮询游标SLA 规则优先级 可选分类 → 响应小时 / 解决小时回复流水人工回复 系统事件接单、转派、SLA 超时工单池不是另建一张「池表」。待分配且当前用户在处理组里SQL 就能筛出来。1.3 三种分派处理组assignStrategy值策略适用0手动投诉专班组长点名1轮询IT 值班按lastAssignIndex往下转2负载最少客服组数待处理处理中最少的人策略为 0 或组里没人审批通过后停在待分配进工单池。二、PC 端申请单和工单池分开申请入口是工单列表/发起页。详情里能填标题、分类、优先级、处理组提交后走oa_ticket_bill。▲/ticket/ticket-bill-info审批前是业务表单通过后办理改走工单池避免申请人页面上堆接单按钮工单池是办理工作台。编号链到详情列表能看到 SLA 剩余小时或「已超时」。▲/ticket/ticket-pool全文只这一张列表。待分配橙色、处理中蓝色超时标红点进详情能接单、回复、转派、完成、关闭。时间线混排系统记录和人工回复。▲ 工单池详情优先级、截止时间、处理组、回复框在同一页这才是办理效果SLA 规则是配置页名称、匹配优先级、可选分类、响应/解决小时。▲ SLA 规则投诉类 1 小时响应 / 8 小时解决咨询类可以放到 24 / 120 小时三、后端审批通过才开始服务台时钟3.1 onProcessApproved匹配 SLA再尝试自动派publicvoidonProcessApproved(StringbusinessKey){LongidLong.parseLong(businessKey);TicketBillDObillticketBillMapper.selectById(id);TicketBillDOupdateObjnewTicketBillDO();updateObj.setId(id);updateObj.setTicketStatus(TicketStatusEnum.PENDING_ASSIGN.getStatus());TicketSlaRuleDOslaRuleticketSlaRuleService.matchSlaRule(bill.getPriority(),bill.getCategory());if(slaRule!null){LocalDateTimebasebill.getSubmittedTime()!null?bill.getSubmittedTime():LocalDateTime.now();if(slaRule.getResponseHours()!nullslaRule.getResponseHours()0){updateObj.setResponseDeadline(base.plusHours(slaRule.getResponseHours()));}if(slaRule.getResolveHours()!nullslaRule.getResolveHours()0){updateObj.setResolveDeadline(base.plusHours(slaRule.getResolveHours()));}}// 有处理组则 tryAutoAssign成功则改为待处理并通知ticketBillMapper.updateById(updateObj);}要点deadline 从提交时间起算不是从接单时间起算。紧急单不会因为在池里躺了两小时而「重新给 8 小时」。规则匹配按启用规则排序优先级必须相等分类为空表示通配。3.2 自动分派轮询游标 / 数活跃单publicLongtryAutoAssign(TicketBillDOticket,TicketHandlerGroupDOgroup){if(group.getAssignStrategy()null||group.getAssignStrategy()0){returnnull;}ListLongmemberIdsArrays.stream(group.getMemberUserIds().split(,)).map(String::trim).filter(StringUtils::isNotBlank).map(Long::parseLong).toList();returnswitch(group.getAssignStrategy()){case1-assignByRoundRobin(group,memberIds);case2-assignByLeastLoad(memberIds);default-null;};}轮询把lastAssignIndex写成下一个下标。负载最少只统计「待处理 处理中」不管已完成历史避免老人永远被派、新人永远空闲。3.3 SLA 扫描两个时钟标志位去重XxlJob(ticketSlaCheckJob)publicvoidexecute(){ListTicketBillDOticketsticketBillMapper.selectListForSlaCheck(CHECK_STATUSES);LocalDateTimenowLocalDateTime.now();for(TicketBillDOticket:tickets){if(ticket.getResponseDeadline()!null!Boolean.TRUE.equals(ticket.getResponseTimeout())ticket.getAcceptedTime()null){if(now.isAfter(ticket.getResponseDeadline())){markResponseTimeout(ticket);}elseif(now.plusMinutes(30).isAfter(ticket.getResponseDeadline())){sendSlaWarning(ticket,响应);}}// 解决时钟同理过点打 resolveTimeout前 30 分钟预警}}只扫待分配 / 待处理 / 处理中。响应超时以「还没接单」为准已经接了就不再刷响应超时。打标后写系统回复「【SLA超时】」并通知处理人和组长。responseTimeout为真后不再重复通知。接单会校验在池里必须是组员待处理必须是被派的那个人。否则两个人同时点接单后点的会失败。四、几个值得留下的取舍审批和办理拆开。敏感投诉可以先走主管处理组在通过之前根本进不了这张单。SLA 配在规则表不写死在代码。紧急和咨询共用一套扫描 Job差别只在小时数。池是查询条件不是新实体。少一张同步表成员变更立刻反映到「我能看见的待接单」。超时用标志位不用「每次扫描都发信」。Job 允许空跑通知必须幂等。五、快速体验在线演示https://ruoyioffice.com/web/账号 admin / admin123源码仓库GitHubhttps://github.com/yuqing2026/ruoyi-office GitCodehttps://gitcode.com/zhouzhongyan/ruoyi-office Giteehttps://gitee.com/yqzy1688/ruoyi-office建议路径打开工单列表新建一张带处理组的单并提交审批通过后看工单状态是待分配还是待处理打开工单池点编号进详情接单一句回复打开SLA 规则对照该单的优先级看响应/解决小时可选把解决时限改短等 Job 跑完看是否出现超时标签。本地PC5800/ticket/API48080。没有处理组成员时通过后会一直停在待分配——这是设计不是丢单。常见问题FAQ工单审批通过为什么还要工单池审批只证明「可以办」。池解决「谁办、何时办完」。没有池通过后只能靠群里人。单聊式 IM 能替代工单吗聊天没有 SLA、没有接单门禁、没有分类统计。催办可以跳 IM报障闭环还是要工单。轮询会不会并发派给同一个人游标写在处理组行上。极端并发仍可能撞车生产量大时应对更新游标加条件或锁。负载最少同样是读完再派适合中小并发。响应超时和解决超时有什么差别响应看有没有接单解决看有没有在 deadline 前完成。接了单只停响应时钟解决时钟继续走。手机能不能办工单UniApp 审批详情可以嵌工单业务页。日常认领、回复仍以 PC 工单池为准。结语OA 工单的完成态是审批通过有人接、超时能看见、回复留在同一张单。RuoYi Office 用两套状态把「该不该办」和「办得及时不及时」分开用处理组三种策略决定谁来接用两个 deadline 标志位让超时可追。先把「过审进池、超时打标」跑通工单才配写进 OA 菜单。大而全的客服坐席等这条主路径稳定后再谈。你们现在 IT 报障是微信群人还是已经能在工单池里看 SLA评论区说说卡在分派还是超时。想要体验 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 支持一下

相关新闻

《我的世界》涟漪之篇整合包:PCL启动器安装与联机教程

《我的世界》涟漪之篇整合包:PCL启动器安装与联机教程

这次我们来看一个专为《我的世界》玩家准备的懒人整合包——“涟漪之篇”。对于想快速体验高质量模组、光影和优化,但又不想折腾安装和配置的玩家来说,一个精心制作的整合包就是最佳选择。这个“涟漪之篇”整合包主打超级爽的体验,并且提供了…

2026/8/23 13:39:26 阅读更多 →
AI写作工具的大模型上下文窗口与中文生成质量对比评测

AI写作工具的大模型上下文窗口与中文生成质量对比评测

基于实际测试,对比七款AI写作工具在长文本生成、中文语义理解与多格式输出上的表现一、背景与问题我最近在撰写一批万字以上的技术报告和市场分析文档,过程中需要频繁使用AI辅助生成初稿、整理研究资料并制作配套的PPT演示文稿。市面上的AI写作工具各有侧…

2026/8/22 6:48:47 阅读更多 →
SpringBoot高校实习管理系统开发与优化实践

SpringBoot高校实习管理系统开发与优化实践

1. 项目概述:高校实习管理系统的核心价值高校实习管理系统是连接学校、学生与企业的重要桥梁。在传统模式下,实习管理往往依赖Excel表格和纸质文档,存在信息孤岛、流程繁琐、反馈滞后等问题。我们团队基于SpringBoot框架开发的这套系统&#…

2026/8/22 23:50:05 阅读更多 →

最新新闻

从浮栅晶体管到3D NAND:深入解析SSD闪存颗粒的工作原理与选型指南

从浮栅晶体管到3D NAND:深入解析SSD闪存颗粒的工作原理与选型指南

1. 从“黑盒”到“白盒”:为什么我们需要了解SSD与闪存颗粒如果你最近给电脑升级或者新装了一台机器,大概率会听到一个建议:“一定要上固态硬盘(SSD)”。确实,从开机速度到游戏加载,再到日常的文…

2026/8/24 5:15:47 阅读更多 →
KMP算法本质:手算next数组与最长公共前后缀

KMP算法本质:手算next数组与最长公共前后缀

1. 为什么KMP不是“背公式”,而是必须亲手推演的思维训练你翻过王道数据结构,抄过next数组的递推代码,期末考前默写过“j next[j]”那行——但当面试官突然问:“如果模式串是ababababca,第7位失配时,为什么…

2026/8/24 5:15:47 阅读更多 →
使用CANdb++从零构建DBC文件:汽车CAN总线通信数据字典实战指南

使用CANdb++从零构建DBC文件:汽车CAN总线通信数据字典实战指南

1. 项目概述:从零到一构建DBC文件在汽车电子开发领域,尤其是涉及CAN总线通信的项目中,DBC文件就像一份所有ECU(电子控制单元)都必须遵守的“通信宪法”。它定义了总线上流动的每一条报文(Message&#xff0…

2026/8/24 5:15:47 阅读更多 →
从单目视频到可驱动数字人:4D Gaussian Splatting实战指南

从单目视频到可驱动数字人:4D Gaussian Splatting实战指南

最近在尝试从单目视频生成动态数字人时,发现很多方案要么对设备要求高(如多摄像头阵列),要么生成效果僵硬、缺乏细节。直到接触到 4D Gaussian Splatting (4DGS) 技术,它通过一种创新的显式表示方法,仅需…

2026/8/24 5:15:47 阅读更多 →
重心坐标:从三角形插值到3D渲染的核心数学工具

重心坐标:从三角形插值到3D渲染的核心数学工具

1. 从三角形插值说起:为什么需要重心坐标?如果你接触过3D图形渲染、物理模拟或者游戏开发,大概率听过“插值”这个词。纹理坐标、顶点颜色、法线向量,这些附着在模型顶点上的数据,在三角形内部每个像素点上究竟应该是多…

2026/8/24 5:15:47 阅读更多 →
AI测试工程师面试核心考察点与实战解析

AI测试工程师面试核心考察点与实战解析

1. AI测试工程师面试核心考察维度在AI测试领域,面试官通常会从技术基础、测试思维和项目经验三个维度进行考察。不同于传统软件测试,AI测试需要额外关注算法理解、数据质量评估和模型性能监控等专业领域。1.1 技术基础能力考察点机器学习基础概念是必考内…

2026/8/24 5:14:47 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →