返回作品

药品进销存管理系统

创建于 2025 年 12 月 22 日

标签
  • Java 8
  • Spring Boot 2.5.15
  • Spring Security
  • MyBatis
  • MySQL
  • Druid
  • PageHelper
  • Apache POI
  • Vue 2.6
  • Element UI
  • axios

项目介绍

本项目是一个以若依 RuoYi-Vue 3.9.1 前后端分离版为底座、面向药店/药房场景开发的药品进销存管理后台。业务上围绕”药品档案”和”生产厂家”两条主线展开:药品侧维护名称、编码、类型、处方类型、单位、价格、库存量、预警值、换算量等核心信息,厂家侧维护厂家名称、编码、联系人、电话与搜索关键字,药品通过外键关联厂家,形成”厂家 → 药品”的主数据关系,为后续采购入库、销售出库、库存盘点等进销存流程打底。

项目在标准 RuoYi-Vue 工程上新增了独立的 ruoyi-pill 业务模块与 views/pill 前端页面,核心数据表为 pill_drug(药品信息)与 pill_factory(生产厂家)。仓库根目录的 251222-yaopin.sql 为 Navicat 全库导出脚本,除框架的 sys_*qrtz_*gen_table* 表外,还包含两张业务表、两个业务字典(药品类型、处方类型)、完整的”药品管理”菜单树(目录 → 菜单 → 按钮权限)以及云南白药、哈药、太极、上海医药等厂家与十全大补丸、阿莫西林等药品的演示数据,导入即可运行体验。

项目架构

项目采用 RuoYi-Vue 3.9.1 经典的单体多模块 Maven 结构(ruoyi-admin / ruoyi-framework / ruoyi-common / ruoyi-system / ruoyi-quartz / ruoyi-generator),业务代码按若依规范分布在以下位置:

位置内容说明
ruoyi-pill 模块domain/PillDrugdomain/PillFactorymapper/*Mapper(接口 + XML)、service/IPillDrugServiceIPillFactoryService 及实现药品与厂家的领域对象、MyBatis 映射与业务服务层,由 ruoyi-admin/pom.xml 引入依赖
ruoyi-admincontroller/pill/PillDrugControllerPillFactoryControllerREST 接口:列表/详情/新增/修改/删除/导出,外加厂家的 optionselect 下拉接口
ruoyi-uisrc/views/pill/drug/index.vuepill/factory/index.vuesrc/api/pill/drug.jsfactory.jsElement UI 列表页与 axios 接口封装
251222-yaopin.sqlpill_drugpill_factory 建表与演示数据、sys_menu 菜单权限、sys_dict_type/data 字典全库导出脚本,含 2025-12-22 的最近操作记录

后端分层严格遵循若依风格:PillDrugController extends BaseController 使用 startPage() + PageHelper 完成分页,@PreAuthorize("@ss.hasPermi('pill:drug:list')") 做接口权限校验,@Log(title = "药品信息", businessType = BusinessType.INSERT/UPDATE/DELETE/EXPORT) 把每次操作写入 sys_oper_log 操作日志。领域对象通过 @Excel(name = "药品名称") 注解声明导出列名,配合 readConverterExp 在导出时把字典值(如 0=中成药,1=西药0=非处方药,1=处方药)自动翻译成中文。前端使用 Vue 2.6 + Element UI 2.15 + axios,列表页统一为”搜索表单 + 工具栏 + 数据表格 + 分页 + 新增/编辑弹窗”的若依标准形态。

核心功能

药品信息管理。 pill_drug 表以 drug_id 为主键,覆盖药品名称、药品编码、生产厂家(factory_id 外键)、药品类型、处方类型、单位、价格、库存量、预警值、换算量、状态等字段。列表查询 SQL(PillDrugMapper.xml)通过 left join pill_factory f on d.factory_id = f.factory_id 一次性带出厂家名称,并针对 drugNamedrugCodelike concat('%', #{...}, '%') 模糊匹配,针对 factoryIddrugTypeprescriptionTypestatus 做精确过滤——任意条件组合均动态拼接,支持”按厂家查药品""按处方类型筛药”等业务场景。药品类型与处方类型直接复用字典渲染:新增/编辑弹窗用 el-select 加载 dict.type.pill_drug_typepill_prescription_type,表格列用 dict-tag 组件显示彩色标签。

生产厂家管理。 pill_factory 维护厂家名称、厂家编码、联系人、电话与关键字(如 ynbyhyjttjjt 等拼音缩写,便于快速检索),同样提供标准 CRUD 与导出。特别地,PillFactoryController 额外暴露了 GET /pill/factory/optionselect 下拉接口,drug/index.vuecreated() 中调用 optionselect() 填充”生产厂家”选择框,使药品新增/编辑时可以直接从厂家档案中选取,保证两表数据的一致性。

库存预警与换算量。 每条药品记录内置 num(库存量)、warnValue(预警值)与 conversion(换算量)三个数值字段:库存量记录当前在库数量,预警值定义补货警戒线,换算量用于大小单位换算(如整件与盒、盒与瓶的换算基数),三者配合形成最基础的库存台账,为后续的入库、出库与低库存提醒功能预留了完整的数据结构。

Excel 一键导出。 基于领域对象上的 @Excel 注解与若依 ExcelUtil<PillDrug> 工具类实现:export() 接口先按当前查询条件查出全量数据,再通过 util.exportExcel(response, list, "药品信息数据") 直接写出 xlsx 文件;前端 handleExport() 使用框架封装好的 download('pill/drug/export', {...queryParams}, 'drug_时间戳.xlsx'),导出内容与列表筛选条件完全一致,厂家列表同理。

权限管控与操作审计。 SQL 脚本在 sys_menu 中预置了”药品管理”目录(pill)及其下”药品信息""生产厂家”两个菜单,每个菜单挂载 5 个按钮级权限点:list / query / add / edit / remove / export(共 12 个权限标识)。后端每个接口用 @PreAuthorize("@ss.hasPermi(...)") 校验,前端按钮用 v-hasPermi 指令按权限点显隐,实现前后端双重控制;所有增删改与导出操作经 @Log 注解记录到 sys_oper_log,从 SQL 导出的演示日志可以看到 2025-12-22 当天对云南白药厂家与十全大补丸药品的修改记录(含请求参数与耗时),审计链路完整可查。

功能截图

暂无运行截图。

快速上手

  1. 准备数据库:在 MySQL 中直接导入根目录的 251222-yaopin.sql(Navicat 全库导出,已包含框架表、pill_drug/pill_factory 业务表、字典与菜单权限数据,以及演示厂家与药品记录)。

  2. 启动后端:修改 ruoyi-admin/src/main/resources/application-druid.yml 中的数据源地址、账号、密码后执行:

mvn clean package -DskipTests
java -jar ruoyi-admin/target/ruoyi-admin.jar
  1. 启动前端:在 ruoyi-ui-药品进销存 目录安装依赖并启动开发服务器:
npm install
npm run dev
  1. 体验流程:使用 admin/admin123 登录,进入”药品管理 → 药品信息”新增一条药品(生产厂家下拉选择已录入的厂家)→ 修改库存量与预警值 → 组合”药品类型 / 处方类型 / 状态”筛选列表 → 点击导出下载 Excel;再到”生产厂家”维护厂家联系人、电话与关键字。

总结

这个项目展示了在若依 RuoYi-Vue 前后端分离脚手架上快速落地一个领域化后台的标准路径:业务侧以”药品 + 厂家”两张主数据表为核心,把药品类型、处方类型等枚举沉淀为数据字典,把”药品 → 厂家”的一对多关系通过左连接查询与下拉接口打通;工程侧复用若依的既有能力——PageHelper 分页、Spring Security 权限注解、@Log 操作日志、@Excel + ExcelUtil 导出、v-hasPermi 按钮权限、字典组件,业务模块只写 domain / mapper / service / controller 四层代码,从建表到可运行系统一气呵成。对于需要在若依脚手架上实现进销存、物资台账、主数据档案类系统的开发者,本项目在表结构设计(库存量 + 预警值 + 换算量)、字典驱动下拉与导出转换、菜单权限点拆分等方面的写法都是可以直接照搬的参考样本。