芋道 ERP 系统
创建于 2025 年 6 月 5 日
项目介绍
芋道 ERP 系统是芋道开源快速开发平台(ruoyi-vue-pro)中 ERP 模块的完整实现,目标是为一套进销存一体的企业管理系统提供后端服务、管理后台与数据库脚本。仓库目录下包含 Spring Boot 多模块后端、Vue 3 管理后台前端以及一份约 2.7MB 的完整 SQL 脚本,脚本中预置了系统用户、菜单权限、字典、多租户与 ERP 示例业务数据,导入后即可直接运行演示。
系统围绕”产品档案 → 采购/销售单据 → 库存变动 → 财务收付”的业务闭环设计:采购入库自动增加库存并形成应付,销售出库自动扣减库存并形成应收,退货单据反向回补或扣减库存;每一笔库存变动都会写入库存流水,每一张单据都有独立编号、审核状态与金额明细,整体通过 @Transactional 保证库存与单据的一致性。
项目架构
项目主体为 Spring Boot 2.7 多模块单体架构(JDK 8),前端是 Vue 3 + Element Plus + TypeScript 的管理后台,主要组成部分如下:
| 模块 | 技术栈 | 说明 |
|---|---|---|
| yudao-module-erp | Spring Boot、MyBatis-Plus、Redis | ERP 业务后端:产品、采购、销售、库存、财务、统计 |
| yudao-module-system / infra | Spring Boot | 系统管理(用户、角色、菜单、租户)与基础设施(文件、定时任务、代码生成) |
| yudao-server | Spring Boot | 启动模块,dev 环境端口 48080 |
| vue-web | Vue 3.5、Element Plus 2.9、Vite 5、TypeScript、Pinia、ECharts 5 | 管理后台前端,src/views/erp 为 ERP 业务页面 |
| ruoyi-vue-pro.sql | MySQL | 全量建表脚本与示例数据,所有业务表含 tenant_id 支持 SaaS 多租户 |
后端代码按 controller → service → mapper → dataobject 分层,ERP 模块共包含 30 余张业务表:erp_product(产品)、erp_product_category(分类)、erp_product_unit(计量单位)、erp_product_standard(产品规格)、erp_supplier(供应商)、erp_customer(客户)、erp_purchase_order / _in / _return(采购单据)、erp_sale_order / _out / _return(销售单据)、erp_stock(产品库存)、erp_stock_record(库存流水)、erp_warehouse(仓库)、erp_stock_in / _out / _move / _check(其他出入库、调拨、盘点)、erp_account(结算账户)、erp_finance_receipt / _payment(收款单、付款单),每种单据均配有独立的 _items 明细表。销售订单示例数据如 XSDD20250527000001(金额 64990 元、含客户与销售员),仓库预置原材料、成品、半成品三个示例,产品预置华为 Mate 60 Pro、蒙牛纯牛奶等带条码与规格的真实档案。
核心功能
单据编号与审批。 每种单据使用独立前缀编号,由 ErpNoRedisDAO 基于 Redis 自增生成,格式为”前缀 + yyyyMMdd + 6 位序号”,如销售订单 XSDD、采购入库 CGRK、库存调拨 QCDB、付款单 FKD 等共 12 类;单据审核状态由 ErpAuditStatus 管理(10 未审核 / 20 已审核),销售订单创建后会自动通过 WebSocket 实时推送审批通知,并向具备审批权限的角色发送站内信(NotifySendService)。
采购管理。 采购订单可指定供应商、采购员、下单时间,明细行支持产品、数量、单价、税率与税额,单据汇总合计数量、产品金额、税额、优惠金额与总价;采购入库可关联采购订单一键带出明细,审核入库后自动按”产品 + 仓库”增量更新 erp_stock 并写入库存流水、生成应付;采购退货则反向扣减库存,采购侧共覆盖供应商、订单、入库、退货四类功能页面。
销售管理。 销售订单支持客户、销售员、结算账户、定金金额与折扣,单据字段记录合计数量、产品金额、税额、优惠金额与总价,并累计已出库数量(out_count)与已退货数量(return_count);销售出库可基于订单生成(前端提供”可出库列表”联动组件),审核后扣减库存并生成应收;销售退货回补库存。前端为每个单据提供了可关联操作列表:销售订单可出库/可退货、销售出库可收款、采购入库可付款,形成单据间的强联动。
库存管理。 产品库存以 product_id + warehouse_id 为维度存储,任意出入库都会通过 updateStockCountIncrement 增量更新库存并生成一条带业务类型(ErpBizTypeEnum)与业务单号的 erp_stock_record 流水;除采购/销售联动外,还提供其他入库、其他出库、仓库间调拨与库存盘点单据,仓库档案支持默认仓库、仓库价与运费字段。
财务与统计。 结算账户管理银行名称、卡号与余额;收款单关联客户与销售出库,付款单关联供应商与采购入库,单据可实时查看应收应付金额。ERP 首页提供今日/昨日/本月/年度销售与采购汇总卡片,以及基于 ECharts 的月度趋势图;销售额统计由 ErpSaleStatisticsMapper 通过”销售出库总额 - 销售退货总额”的 SQL 实时计算,并自动按当前租户(TenantContextHolder)过滤数据,采购统计逻辑对称。
功能截图
暂无运行截图。
快速上手
- 创建数据库并导入脚本:
mysql -u root -p -e "CREATE DATABASE ruoyi_vue_pro DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p ruoyi_vue_pro < ruoyi-vue-pro.sql
- 修改
yudao-server/src/main/resources/application-dev.yaml中的数据库地址、账号密码与 Redis 连接,然后启动后端:
mvn install -DskipTests
cd yudao-server && mvn spring-boot:run # http://localhost:48080
- 启动管理后台前端:
cd vue-web && pnpm install && pnpm dev # http://localhost:80(见 vite.config.ts 代理配置)
- 使用脚本预置账号 admin / admin123 登录,进入”ERP 管理”菜单即可体验产品、采购、销售、库存、财务与统计功能,示例数据已包含客户、供应商、产品、仓库与多笔业务单据。
总结
芋道 ERP 系统是一个业务闭环完整、可直接运行的企业管理后台项目:后端以 Spring Boot 多模块 + MyBatis-Plus 提供稳定的单据事务与库存一致性保障,Redis 支撑高并发的单号生成,前端以 Vue 3 + Element Plus + TypeScript 实现完整的单据录入、联动出库/收款与统计图表界面。项目在设计上体现了大量 ERP 实战细节——单据与库存流水的双向联动、审核状态机、应收应付与收付款关联、SaaS 多租户隔离、按业务类型的单据编号体系,以及销售订单审批的实时通知,适合作为学习企业级管理系统设计、Spring Boot 工程化与 Vue 3 管理后台开发的完整参考案例。