1. 项目概述
这个基于SpringBoot+Vue的医院药品管理系统是一个典型的Java Web毕业设计项目,它整合了前后端分离架构、数据库管理和RESTful API设计等现代Web开发核心技术。系统旨在为医院药房提供完整的药品信息化管理解决方案,包括药品入库、出库、库存管理、处方审核等核心业务流程。
2. 技术架构解析
2.1 后端技术栈
SpringBoot作为后端框架提供了以下核心功能:
- 自动配置简化了传统Spring应用的初始化过程
- 内嵌Tomcat服务器实现开箱即用
- Starter依赖管理让项目依赖更清晰
- Actuator端点提供应用监控能力
数据库层采用MyBatis Plus实现:
java复制// 典型的数据访问层示例
@Repository
public interface DrugMapper extends BaseMapper<Drug> {
@Select("SELECT * FROM drug WHERE stock < #{threshold}")
List<Drug> selectLowStockDrugs(@Param("threshold") int threshold);
}
2.2 前端技术栈
Vue.js作为前端框架的主要优势:
- 组件化开发模式提高代码复用率
- 响应式数据绑定简化DOM操作
- Vue Router实现前端路由管理
- Axios处理HTTP请求
典型组件示例:
vue复制<template>
<div class="drug-list">
<el-table :data="drugData" border>
<el-table-column prop="name" label="药品名称"></el-table-column>
<el-table-column prop="spec" label="规格"></el-table-column>
<el-table-column prop="stock" label="库存"></el-table-column>
</el-table>
</div>
</template>
3. 核心功能实现
3.1 药品库存管理模块
数据库表设计关键字段:
sql复制CREATE TABLE `drug` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(20) NOT NULL COMMENT '药品编码',
`name` varchar(50) NOT NULL COMMENT '通用名称',
`spec` varchar(50) NOT NULL COMMENT '规格',
`unit` varchar(10) NOT NULL COMMENT '单位',
`stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存量',
`price` decimal(10,2) NOT NULL COMMENT '单价',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
库存预警实现逻辑:
java复制@Service
public class DrugServiceImpl implements DrugService {
@Autowired
private DrugMapper drugMapper;
@Override
@Transactional
public void checkStockWarning() {
List<Drug> lowStockDrugs = drugMapper.selectLowStockDrugs(10);
if (!lowStockDrugs.isEmpty()) {
// 触发预警通知逻辑
notificationService.sendStockWarning(lowStockDrugs);
}
}
}
3.2 处方审核流程
处方审核状态机设计:
mermaid复制stateDiagram
[*] --> 待审核
待审核 --> 已通过: 药师审核通过
待审核 --> 已驳回: 审核不通过
已通过 --> 已发药: 完成配药
已驳回 --> [*]: 处方作废
4. 系统部署方案
4.1 开发环境配置
推荐开发工具组合:
- 后端:IntelliJ IDEA + Lombok插件
- 前端:VS Code + Vetur插件
- 数据库:MySQL 8.0+
- API测试:Postman或Insomnia
4.2 生产环境部署
典型部署架构:
code复制前端服务器(Nginx)
↓
负载均衡器
↓
应用服务器集群(SpringBoot)
↓
数据库集群(MySQL主从)
↓
文件存储服务器
5. 项目文档规范
5.1 接口文档示例
采用Swagger UI实现的API文档:
java复制@RestController
@RequestMapping("/api/drug")
@Api(tags = "药品管理接口")
public class DrugController {
@GetMapping("/{id}")
@ApiOperation("根据ID获取药品详情")
public Result<Drug> getById(@PathVariable Integer id) {
return Result.success(drugService.getById(id));
}
}
5.2 数据库文档规范
建议包含:
- 数据字典表
- ER关系图
- 索引设计说明
- 事务处理方案
6. 开发经验分享
6.1 前后端联调技巧
- 使用Mock.js模拟接口数据
- 统一响应格式规范:
json复制{
"code": 200,
"message": "success",
"data": {}
}
- 跨域解决方案:
java复制@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.maxAge(3600);
}
}
6.2 性能优化实践
- 缓存策略:
java复制@Cacheable(value = "drug", key = "#id")
public Drug getById(Integer id) {
return drugMapper.selectById(id);
}
- 批量操作优化:
sql复制<!-- 使用foreach实现批量插入 -->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO drug(name, spec) VALUES
<foreach collection="list" item="item" separator=",">
(#{item.name}, #{item.spec})
</foreach>
</insert>
7. 毕业设计扩展建议
- 增加药品效期管理功能
- 实现与HIS系统对接
- 开发移动端管理应用
- 加入数据分析模块
- 实现电子签名功能
这个项目完整展示了现代Web应用开发的典型技术栈组合,从技术选型到具体实现都符合当前企业级开发规范。在实际开发过程中,特别需要注意药品管理这类医疗系统的数据准确性和操作可追溯性要求。
