1. 项目概述
这个医院设备管理及报修小程序是我去年指导的一个计算机专业毕业设计项目,采用SpringBoot+Vue前后端分离架构实现。系统主要解决医院设备管理混乱、报修流程繁琐两大痛点,包含设备档案管理、扫码报修、维修进度跟踪等核心功能模块。
整套系统从需求分析到部署上线共耗时3个月,期间我们走访了3家二甲医院设备科进行实地调研。医护人员反馈最强烈的问题是:传统纸质报修单经常丢失,维修响应慢,设备使用状态不透明。这个小程序正是针对这些痛点设计的数字化解决方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能设计
2.1 设备全生命周期管理
采用树形结构分类管理医疗设备(CT、MRI、监护仪等),每个设备生成唯一二维码标签。通过Spring Data JPA实现设备信息的CRUD操作,关键字段包括:
- 设备编号(UUID自动生成)
- 所属科室(关联医院组织架构)
- 购置日期(JSR-310日期类型)
- 维护周期(Cron表达式存储)
- 使用状态(枚举值:正常/维修中/报废)
2.2 扫码报修流程
用户扫描设备二维码后自动带出设备信息,报修表单包含:
- 故障现象(多级分类选择)
- 紧急程度(五星评分控件)
- 现场照片(微信JS-SDK拍照上传)
- 联系人信息(自动获取微信绑定手机号)
后端采用Spring事件机制实现报修工单的自动分配:
java复制// 工单分配策略示例
@EventListener
public void handleRepairEvent(RepairEvent event) {
// 根据科室匹配维修人员
List<Maintainer> candidates = maintainerService
.findByDepartment(event.getDevice().getDepartment());
// 使用加权随机算法分配(考虑当前工单量)
Maintainer assignee = loadBalance(candidates);
repairOrderService.assign(event.getOrderId(), assignee);
}
3. 关键技术实现
3.1 SpringBoot自动配置
针对医院特殊需求定制了以下配置:
yaml复制# 自定义医院时区配置
hospital:
timezone: Asia/Shanghai
work-time:
start: 08:00
end: 17:30
# 微信支付证书路径(需加密存储)
wxpay:
cert-path: classpath:certs/hospital-dev.p12
3.2 维修状态机设计
使用Spring StateMachine实现工单状态流转:
code复制[待接单] --维修员接单--> [处理中]
[处理中] --提交方案--> [待确认]
[待确认] --用户确认--> [已完成]
[待确认] --用户拒签--> [处理中]
3.3 微信小程序对接
重点解决三个难点:
- 用户登录:通过
wx.login获取code,后端用AppSecret换取openid - 消息推送:配置微信模板消息,关键节点自动通知
- 扫码兼容性:处理不同厂商二维码扫描结果的归一化
4. 部署实战要点
4.1 多环境配置
使用Profile实现环境隔离:
bash复制# 开发环境
spring.profiles.active=dev
# 生产环境打包命令
mvn package -Pprod -DskipTests
4.2 Docker部署方案
编写多阶段构建Dockerfile:
dockerfile复制# 构建阶段
FROM maven:3.8-jdk-11 AS build
COPY . /app
RUN mvn -f /app/pom.xml clean package
# 运行阶段
FROM openjdk:11-jre
COPY --from=build /app/target/*.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Dspring.profiles.active=prod","-jar","/app.jar"]
4.3 性能优化
针对医院早高峰访问特点:
- 使用Caffeine缓存设备基础信息
- 报修接口采用异步处理(@Async)
- 配置HikariCP连接池参数:
properties复制spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.idle-timeout=30000
5. 典型问题解决方案
5.1 微信二维码扫描超时
问题现象:安卓设备扫码响应超过5秒
解决步骤:
- 使用Charles抓包分析网络延迟
- 发现微信DNS解析耗时异常
- 在服务器hosts强制指定微信API IP
- 添加本地缓存减少重复查询
5.2 并发报修冲突
场景:同一设备多人同时报修
解决方案:
java复制@Transactional
public String createOrder(RepairRequest request) {
// 使用SELECT FOR UPDATE加锁
Device device = deviceRepository
.findByIdForUpdate(request.getDeviceId());
if (device.getStatus() != DeviceStatus.NORMAL) {
throw new BusException("设备正在维修中");
}
device.setStatus(DeviceStatus.REPAIRING);
return orderRepository.save(convertToOrder(request)).getId();
}
5.3 医疗数据脱敏
处理方案:
- 使用Jackson注解实现字段级脱敏
java复制@JsonSerialize(using = MedicalDataSerializer.class)
private String patientInfo;
- 审计日志使用AOP过滤敏感信息
- 数据库加密采用国密SM4算法
6. 项目扩展建议
- 物联网集成:通过NB-IoT模块实时监控设备运行参数
- 智能诊断:接入AI模型分析故障图片自动推荐解决方案
- 耗材管理:关联设备维护记录预测耗材更换周期
- 大屏展示:使用Echarts实现设备状态可视化监控
这套系统在毕业答辩中获得优秀成绩,关键创新点在于:
- 将设备管理颗粒度细化到单个仪器
- 利用微信生态实现零成本推广
- 状态机设计确保业务流程合规性
实际部署时需要注意医院内网隔离政策,建议采用国产化中间件替代部分组件。完整源码包含详细的Swagger API文档和Postman测试集合,特别适合作为SpringBoot全栈学习项目。
