基于springboot+Java web的药店管理系统
·
技术栈
- 后端框架:Spring Boot 2.7.x(简化配置,快速开发)
- 前端技术:Thymeleaf + Bootstrap 5(响应式布局),或 Vue.js/React(可选)
- 数据库:MySQL 8.0(关系型)或 MongoDB(可选用于药品分类)
- 安全框架:Spring Security(权限控制)
- 工具库:Lombok(简化代码),Hibernate Validator(数据校验)
- 构建工具:Maven/Gradle
核心功能模块设计
药品管理
- 药品信息CRUD:支持药品名称、编码、分类、价格、库存预警值等字段
- 批次管理:记录药品生产批次号、有效期(自动预警临期药品)
- 多条件查询:支持按分类、价格区间、库存状态筛选
库存管理
- 入库/出库记录:关联采购单和销售单,自动更新库存
- 库存预警:库存低于阈值时触发通知(邮件或站内消息)
- 盘点功能:生成差异报告,支持手动调整库存
销售管理
- 收银台功能:药品扫码录入,支持会员折扣计算
- 销售统计:按日/月/季度生成销售额、毛利报表
- 退换货处理:记录原因并关联原始订单
会员管理
- 会员等级体系:不同等级享受差异化折扣
- 积分系统:消费积分兑换规则配置
- 健康档案:记录客户购买药品历史(需隐私保护)
采购管理
- 供应商管理:评估供应商交货及时率
- 采购订单:支持生成采购计划单(基于库存预警)
- 药品比价:同一药品不同供应商的历史报价对比
系统管理
- RBAC权限控制:基于角色的菜单和按钮级权限
- 操作日志:记录关键操作的IP、时间、操作人
- 数据备份:定时任务自动备份数据库
数据库设计(关键表)
药品表(medicine)
CREATE TABLE `medicine` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`code` VARCHAR(32) UNIQUE COMMENT '药品编码',
`name` VARCHAR(100) NOT NULL,
`spec` VARCHAR(50) COMMENT '规格',
`category_id` INT COMMENT '分类ID',
`price` DECIMAL(10,2) UNSIGNED,
`stock` INT DEFAULT 0,
`warning_stock` INT COMMENT '库存预警值',
`product_date` DATE COMMENT '生产日期',
`expire_date` DATE COMMENT '有效期'
);
库存操作记录表(inventory_log)
CREATE TABLE `inventory_log` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`medicine_id` BIGINT NOT NULL,
`quantity` INT COMMENT '正数入库/负数出库',
`type` TINYINT COMMENT '1采购入库 2销售出库 3盘点调整',
`reference_id` BIGINT COMMENT '关联单据ID',
`operator_id` BIGINT,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
);
订单表(order)
CREATE TABLE `order` (
`id` VARCHAR(32) PRIMARY KEY COMMENT '订单号',
`member_id` BIGINT COMMENT '会员ID',
`total_amount` DECIMAL(12,2),
`discount_amount` DECIMAL(10,2) DEFAULT 0,
`payment_type` TINYINT COMMENT '1现金 2支付宝 3微信',
`status` TINYINT DEFAULT 1 COMMENT '1待支付 2已完成 3已退款',
`cashier_id` BIGINT COMMENT '收银员ID',
`create_time` DATETIME
);
系统测试设计
单元测试(示例)
@Test
public void testStockWarning() {
Medicine medicine = new Medicine()
.setStock(5)
.setWarningStock(10);
assertTrue(medicineService.checkStockWarning(medicine));
}
API测试用例(Postman)
- 采购入库:POST /api/inventory/purchase
- 测试场景:批量导入20种药品库存
- 验证点:库存总量变化,操作日志记录完整性
压力测试(JMeter)
- 模拟200并发用户连续执行:
- 药品查询API
- 收银结算流程
- 监控指标:TPS > 50,错误率 < 0.1%
源码结构建议
src/
├── main/
│ ├── java/
│ │ └── com/pharmacy/
│ │ ├── config/ # 安全配置/Swagger配置
│ │ ├── controller/ # 按模块分包
│ │ ├── service/ # 业务逻辑层
│ │ ├── repository/ # JPA接口
│ │ └── entity/ # 数据库实体
│ └── resources/
│ ├── static/ # JS/CSS
│ ├── templates/ # Thymeleaf页面
│ └── application.yml # 多环境配置
└── test/ # 单元测试/集成测试
扩展性设计
- OpenAPI支持:集成Swagger UI自动生成文档
- 数据导出:EasyExcel实现销售报表导出
- 短信通知:阿里云短信服务集成库存预警
- 分布式部署:Redis缓存热点药品数据






更多推荐



所有评论(0)