# of-queue-project **Repository Path**: oufu/of-queue-project ## Basic Information - **Project Name**: of-queue-project - **Description**: 智能排队,叫号系统。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-16 - **Last Updated**: 2026-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🏥 医院排队叫号系统 > 完整的医院排队叫号解决方案:自助取号 → 排队管理 → 医生叫号 → 多屏联动 ## 📋 系统组成 | 模块 | 技术 | 说明 | |------|------|------| | **后端服务** | Spring Boot 3 + JPA + WebSocket | REST API + 实时推送 | | **自助取号机** | JavaFX 21 桌面应用 | 读卡器 + 身份证阅读器 + 热敏打印 | | **医生工作站** | Vue 3 + Element Plus(Web) | 叫号/复叫/完成/过号/过号重插 | | **大厅综合大屏** | Vue 3 Web 页面 | 全科室排队信息 TV 展示 | | **科室门口屏** | Vue 3 Web 页面 | 单科室医生介绍 + 排队信息 | | **诊室门口屏** | Vue 3 Web 页面 | 单个医生信息 + 候诊队列展示 | | **药房窗口屏** | Vue 3 Web 页面 | 取药排队 + Tab/三列/全部窗口模式 | | **管理后台** | Vue 3 + Element Plus(Web) | 分类设置 Tab:系统/大屏/叫号/取号 | ## 🚀 快速启动 ### 后端(queue-server) 1. 确保 MySQL 已启动 2. 进入 `queue-server/`,配置 `application.yml` 中的数据库连接(默认 root/root123) 3. 编译运行: ```bash cd queue-server mvn spring-boot:run ``` 4. 自动建表并填充 8 个科室 + 14 个诊室 + 2 个默认用户 5. 访问 http://localhost:8081 ### 前端开发模式(queue-web) ```bash cd queue-web npm install npm run dev # 访问 http://localhost:3000 (Vite 代理后端 8081) ``` ### 自助机桌面端(kiosk-client) ```bash cd kiosk-client mvn javafx:run -Djavafx.args="--server=http://localhost:8081" ``` ## 📱 访问地址 | 页面 | 地址 | 说明 | |------|------|------| | 🏠 **首页导航** | http://localhost:3000/ | 所有模块入口 + 主题切换 | | 🔐 **登录** | http://localhost:3000/login | 管理员/医生登录 | | 📺 **大厅大屏** | http://localhost:3000/display | 全科室排队信息 TV | | 🚪 **科室门口屏** | http://localhost:3000/display/dept/1 | 科室医生 + 排队信息 | | 🚪 **诊室门口屏** | http://localhost:3000/display/room/1 | 单个医生 + 候诊队列 | | 💊 **药房窗口屏** | http://localhost:3000/display/pharmacy | 取药排队(多模式) | | 🖥️ **自助取号** | http://localhost:3000/kiosk | Web 自助取号终端 | | 👨‍⚕️ **医生工作站** | http://localhost:3000/doctor | 叫号/复叫/完成/过号 | | ⚙️ **管理后台** | http://localhost:3000/admin | 仪表盘/用户/科室/诊室/叫号历史/系统设置 | ## 🔌 硬件接入指南 ### 读卡器 `CardReaderService.java` 中的 TODO 替换为实际 SDK 调用: - 明华/明泰:`MWRF_OpenCommPort` / `MWRF_RequestCard` - 德卡:`DecodeSDK.dll` - 其他品牌:按厂家 SDK 文档接入 ### 身份证阅读器 `IdCardReaderService.java` 中的 TODO 替换为: - 华视:`CVR_ReadCard` - 新中新:`synthapi.dll` - 精伦:`idcardapi.dll` ### 热敏打印机 `PrinterService.java` 使用标准 ESC/POS 指令,兼容: - EPSON TM 系列 - 芯烨(XPrinter) - 佳博(Gprinter) ## 🔄 核心业务流程 ``` 患者刷卡/身份证 → 选择科室 → 取号 → 打印小票 ↓ 医生工作站 ← 实时推送(WebSocket) ← 叫号 → 大屏更新 + 语音播报 ↓ 就诊完成 / 过号处理 / 过号重插 ``` ## ⚙️ 配置参数 编辑 `application.yml`: ```yaml queue: reset-daily: true # 每天号码重置 skip-insert-position: 3 # 过号后顺延位置(-1=作废) voice-repeat-times: 2 # 语音播报次数 display-refresh-seconds: 1 # 大屏刷新间隔 ``` 管理后台 → 系统设置 提供 Tab 分类配置: - ⚙️ 系统:过号插入位置 / 号码重置 / 语音次数 / 大屏刷新 / 工作时间 - 🖥️ 大屏:医院名称 / 系统标题 / 底部提示语 / 主题 / 显示选项 - 📢 叫号:自动叫下一号 / 语音播报 / 刷新间隔 - 🖨️ 取号:主题 / 自动打印 / 超时返回 ## 📄 数据库 自动建表(JPA ddl-auto: update),核心表: - `departments` - 科室 - `rooms` - 诊室/窗口 - `tickets` - 排队号 - `call_logs` - 叫号记录 - `users` - 系统用户 - `system_settings` - 系统配置(持久化) ## 🎨 主题系统 支持 4 套配色方案,首页底部/管理后台/医生站均可切换: - 🏥 经典深蓝(默认) - 🌿 医疗绿 - ☀️ 温暖橙 - 🌹 典雅红 ## 🔧 已实现功能 ### 前台 - [x] 首页导航 + 主题切换 - [x] 大厅大屏:多科室实时排队展示 - [x] 科室门口屏:医生介绍 + 排队信息 - [x] 诊室门口屏:单医生信息 + 候诊队列 - [x] 药房窗口屏:Tab/三列/全部窗口 三种模式 - [x] 自助取号(Web + JavaFX 桌面) - [x] 医生工作站:叫号/复叫/完成/过号/过号重插 ### 后台 - [x] 仪表盘:就诊趋势 + 流量统计 - [x] 用户/科室/诊室 CRUD - [x] 叫号历史:搜索 + 筛选 + 详情弹窗 + CSV 导出 - [x] 系统设置:Tab 分类配置 + 数据库持久化 ### 基础能力 - [x] JWT 认证 + 角色权限 - [x] WebSocket 实时推送 + 自动重连 - [x] 3 秒轮询兜底(WS 断连时) - [x] 语音播报(多语种 + 音量控制) - [x] 每日号码自动重置 - [x] 过号插入位置可配 ## 🗓️ 优化计划 参见 `项目状态与优化计划.md`