温馨提示本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片1. 引言随着医药行业的快速发展传统的人工管理方式在药品库存、销售记录、处方管理和供应商对接等方面逐渐暴露出效率低、易出错、数据不透明等问题。本文基于 Java Spring Boot 框架设计并实现一套医药管理系统旨在通过信息化手段提升医药企业的日常运营效率实现药品全流程的可视化与规范化管理。2. 系统需求分析在系统设计之前需要从功能、用户和性能三个维度梳理需求确保系统能够覆盖医药管理的主要业务场景。2.1 功能需求药品信息管理支持药品的增删改查、分类管理、批次管理和有效期预警。库存管理实现药品入库、出库、盘点、库存查询和低库存提醒。销售管理记录销售订单、退货信息并自动扣减库存。供应商管理维护供应商档案、供货记录和采购订单。处方管理支持处方录入、审核和查询保障处方药合规销售。系统管理包含用户管理、角色权限分配和操作日志记录。2.2 用户角色角色主要职责系统管理员用户管理、权限配置、系统维护仓库管理员药品入库、出库、盘点和库存预警处理销售员销售开单、退货处理和客户信息维护药师处方审核、用药咨询和处方归档2.3 性能需求系统需支持并发访问常规操作响应时间控制在 2 秒以内药品库存数据需保证实时一致性避免超卖或库存负数。3. 系统总体设计3.1 技术架构系统采用前后端分离架构后端基于 Spring Boot 构建 RESTful API前端使用 Vue.js 配合 Element UI 实现管理界面数据库选用 MySQL缓存层使用 Redis 提升热点数据访问速度。flowchart TD A[浏览器前端 Vue.js] --|HTTP/JSON| B[Spring Boot 后端] B -- C[业务逻辑层 Service] C -- D[数据访问层 MyBatis-Plus] D -- E[(MySQL 数据库)] B -- F[Redis 缓存] B -- G[文件存储 OSS]3.2 功能模块划分系统按业务边界划分为六大核心模块药品管理、库存管理、销售管理、供应商管理、处方管理和系统管理。各模块之间通过统一的服务接口交互降低耦合度便于后续扩展。3.3 数据库设计数据库共设计 12 张核心表包括用户表、角色表、药品表、药品分类表、库存表、入库单表、出库单表、销售订单表、订单明细表、供应商表、处方表和操作日志表。以下为药品表和库存表的核心结构示例。CREATE TABLE drug ( id BIGINT PRIMARY KEY AUTO_INCREMENT, drug_code VARCHAR(32) NOT NULL COMMENT 药品编码, drug_name VARCHAR(64) NOT NULL COMMENT 药品名称, category_id BIGINT COMMENT 分类ID, specification VARCHAR(64) COMMENT 规格, unit VARCHAR(16) COMMENT 单位, manufacturer VARCHAR(128) COMMENT 生产厂家, approval_number VARCHAR(64) COMMENT 批准文号, expire_date DATE COMMENT 有效期至, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE drug_stock ( id BIGINT PRIMARY KEY AUTO_INCREMENT, drug_id BIGINT NOT NULL COMMENT 药品ID, batch_no VARCHAR(64) COMMENT 批次号, quantity INT DEFAULT 0 COMMENT 当前库存数量, warning_line INT DEFAULT 10 COMMENT 库存预警线, warehouse_id BIGINT COMMENT 仓库ID, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );4. 系统核心功能实现4.1 药品管理模块药品管理模块负责药品基础信息的维护。后端通过 Spring Boot Controller 暴露接口Service 层处理业务逻辑MyBatis-Plus 完成数据持久化。以下为药品新增接口的核心代码。RestController RequestMapping(/api/drug) public class DrugController { Autowired private DrugService drugService; PostMapping public Resultlt;Booleangt; addDrug(RequestBody Drug drug) { boolean success drugService.saveDrug(drug); return success ? Result.success(true) : Result.error(新增药品失败); } GetMapping(/page) public Resultlt;Pagelt;Druggt;gt; pageDrug(RequestParam(defaultValue 1) int page, RequestParam(defaultValue 10) int size, RequestParam(required false) String keyword) { Pagelt;Druggt; result drugService.pageDrug(page, size, keyword); return Result.success(result); } }4.2 库存管理模块库存管理是系统的核心环节。入库操作会增加库存并生成入库单出库操作会校验库存充足性后扣减数量。为避免并发超卖扣减库存使用数据库乐观锁机制。Service public class StockServiceImpl implements StockService { Autowired private DrugStockMapper stockMapper; Transactional(rollbackFor Exception.class) public boolean outbound(Long drugId, int quantity, Long warehouseId) { DrugStock stock stockMapper.selectByDrugAndWarehouse(drugId, warehouseId); if (stock null || stock.getQuantity() lt; quantity) { throw new BusinessException(库存不足); } int rows stockMapper.deductStock(stock.getId(), quantity, stock.getVersion()); if (rows 0) { throw new BusinessException(库存更新冲突请重试); } return true; } }4.3 销售管理模块销售开单时系统会校验药品库存、计算订单金额并生成销售订单和明细同时联动扣减库存。销售退货则执行反向操作恢复库存并记录退货原因。4.4 处方管理模块处方药销售必须关联有效处方。药师在系统中录入或审核处方审核通过后方可发药。系统会记录处方编号、患者信息、药品明细和审核状态便于追溯。4.5 权限控制实现系统基于 Spring Security 和 JWT 实现认证与授权。用户登录后获取 Token后续请求携带 Token 访问受保护接口通过角色注解控制接口访问权限。Configuration EnableWebSecurity public class SecurityConfig { Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeHttpRequests(auth -gt; auth .requestMatchers(/api/auth/login).permitAll() .requestMatchers(/api/drug/**).hasAnyRole(ADMIN, WAREHOUSE) .requestMatchers(/api/sale/**).hasAnyRole(ADMIN, SALES) .anyRequest().authenticated() ) .addFilterBefore(jwtFilter(), UsernamePasswordAuthenticationFilter.class); return http.build(); } }5. 系统测试系统测试分为单元测试、接口测试和集成测试三个阶段。单元测试覆盖 Service 层核心业务逻辑接口测试使用 Postman 验证 RESTful API 的正确性集成测试则模拟真实业务流程验证模块间的数据联动。测试模块测试用例数通过率药品管理32100%库存管理2896.4%销售管理25100%处方管理18100%权限控制15100%测试过程中发现库存并发扣减存在偶发冲突通过引入乐观锁版本号机制后问题得到解决最终整体通过率达到 99% 以上。6. 总结与展望本文基于 Spring Boot 设计并实现了一套医药管理系统覆盖药品、库存、销售、供应商、处方和系统管理等核心业务具备良好的扩展性和可维护性。系统通过角色权限控制和操作日志保障了数据安全通过库存预警和有效期管理降低了运营风险。后续可从以下方向继续优化引入消息队列提升高并发场景下的订单处理能力增加药品追溯码对接实现来源可查、去向可追结合数据分析模块为采购和销售决策提供数据支撑。
