温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
1. 项目背景与意义
随着宠物经济的快速发展,宠物医院的数量和业务规模持续增长,传统的纸质登记、人工排班和手工记账方式已经难以满足日常运营需求。挂号排队混乱、病历查找困难、药品库存不清、收费对账繁琐等问题,不仅降低了医院的工作效率,也影响了宠物主人的就医体验。
基于 Java Spring Boot 构建宠物医院管理系统,旨在通过信息化手段整合预约挂号、就诊记录、药品管理、收费结算等核心业务流程,实现数据统一存储与实时共享。系统的落地能够显著减少人工重复劳动,降低出错率,帮助医院管理者更清晰地掌握经营状况,从而提升整体服务质量和运营效率。
2. 系统技术栈
本系统采用前后端分离架构,后端基于 Spring Boot 构建 RESTful API,前端使用 Vue.js 配合 Element UI 实现管理界面,数据库选用 MySQL 存储业务数据。
| 层次 | 技术选型 | 说明 |
|---|---|---|
| 后端框架 | Spring Boot 2.7 | 快速搭建独立运行的 Web 服务 |
| 持久层 | MyBatis-Plus | 简化数据库操作,内置分页与条件构造器 |
| 数据库 | MySQL 8.0 | 存储用户、宠物、病历、药品等业务数据 |
| 权限认证 | Spring Security + JWT | 实现登录鉴权与接口访问控制 |
| 前端框架 | Vue.js 3 + Element UI | 构建后台管理页面与交互组件 |
| 构建工具 | Maven | 管理项目依赖与打包部署 |
3. 系统核心功能模块
系统围绕宠物医院日常运营设计,主要包含以下功能模块:
- 用户管理:管理员、医生、前台等角色的账号维护与权限分配。
- 宠物档案:登记宠物基本信息、品种、年龄、免疫记录等。
- 预约挂号:支持在线预约、号源管理与就诊状态跟踪。
- 病历管理:记录诊断结果、医嘱与检查报告,支持历史查询。
- 药品管理:维护药品库存、进销存记录与过期预警。
- 收费结算:根据诊疗项目和药品自动生成费用清单,支持多种支付方式。
4. 数据库设计
数据库共设计六张核心业务表,表结构如下:
| 表名 | 主要字段 | 说明 |
|---|---|---|
| user | id, username, password, role | 系统用户表 |
| pet | id, name, species, breed, owner_name, owner_phone | 宠物档案表 |
| appointment | id, pet_id, doctor_id, appoint_date, status | 预约挂号表 |
| medical_record | id, pet_id, diagnosis, prescription, create_time | 病历记录表 |
| medicine | id, name, stock, price, expire_date | 药品信息表 |
| charge | id, record_id, amount, pay_type, pay_time | 收费结算表 |
5. 核心代码实现
5.1 实体类定义
以宠物档案实体为例,使用 MyBatis-Plus 注解简化映射配置:
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("pet") public class Pet { @TableId(type = IdType.AUTO) private Long id; private String name; private String species; private String breed; private String ownerName; private String ownerPhone; }5.2 Service 业务层
预约挂号业务中,需要校验号源是否充足,并更新预约状态:
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class AppointmentServiceImpl extends ServiceImpl<AppointmentMapper, Appointment> implements AppointmentService { @Override @Transactional(rollbackFor = Exception.class) public boolean createAppointment(Appointment appointment) { // 校验该时段号源是否已满 long count = lambdaQuery() .eq(Appointment::getDoctorId, appointment.getDoctorId()) .eq(Appointment::getAppointDate, appointment.getAppointDate()) .eq(Appointment::getStatus, 1) .count(); if (count >= 20) { throw new RuntimeException("该时段号源已满,请选择其他时间"); } appointment.setStatus(1); return save(appointment); } }5.3 Controller 控制层
对外提供 RESTful 接口,统一返回结果封装对象:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api/appointment") public class AppointmentController { @Autowired private AppointmentService appointmentService; @PostMapping public Result<Boolean> create(@RequestBody Appointment appointment) { return Result.success(appointmentService.createAppointment(appointment)); } @GetMapping("/list") public Result<Page<Appointment>> list(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int size) { Page<Appointment> pageResult = appointmentService.page( new Page<>(page, size)); return Result.success(pageResult); } }5.4 统一返回结果封装
import lombok.Data; @Data public class Result<T> { private Integer code; private String message; private T data; public static <T> Result<T> success(T data) { Result<T> result = new Result<>(); result.setCode(200); result.setMessage("操作成功"); result.setData(data); return result; } public static <T> Result<T> error(String message) { Result<T> result = new Result<>(); result.setCode(500); result.setMessage(message); return result; } }6. 总结
基于 Java Spring Boot 的宠物医院管理系统,通过模块化设计和前后端分离架构,覆盖了宠物医院日常运营的核心环节。系统在技术选型上兼顾了开发效率与可维护性,Spring Boot 简化了配置与部署流程,MyBatis-Plus 提升了数据层开发速度,JWT 认证保障了接口安全。后续可在此基础上扩展在线支付、电子病历、智能排班等功能,进一步满足宠物医院数字化升级的需求。