返回作品

芋道 ERP 系统

创建于 2025 年 6 月 5 日

标签
  • Java
  • Spring Boot
  • MyBatis-Plus
  • MySQL
  • Redis
  • Vue 3
  • Element Plus
  • TypeScript
  • ECharts

项目介绍

芋道 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-erpSpring Boot、MyBatis-Plus、RedisERP 业务后端:产品、采购、销售、库存、财务、统计
yudao-module-system / infraSpring Boot系统管理(用户、角色、菜单、租户)与基础设施(文件、定时任务、代码生成)
yudao-serverSpring Boot启动模块,dev 环境端口 48080
vue-webVue 3.5、Element Plus 2.9、Vite 5、TypeScript、Pinia、ECharts 5管理后台前端,src/views/erp 为 ERP 业务页面
ruoyi-vue-pro.sqlMySQL全量建表脚本与示例数据,所有业务表含 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)过滤数据,采购统计逻辑对称。

功能截图

暂无运行截图。

快速上手

  1. 创建数据库并导入脚本:
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
  1. 修改 yudao-server/src/main/resources/application-dev.yaml 中的数据库地址、账号密码与 Redis 连接,然后启动后端:
mvn install -DskipTests
cd yudao-server && mvn spring-boot:run   # http://localhost:48080
  1. 启动管理后台前端:
cd vue-web && pnpm install && pnpm dev   # http://localhost:80(见 vite.config.ts 代理配置)
  1. 使用脚本预置账号 admin / admin123 登录,进入”ERP 管理”菜单即可体验产品、采购、销售、库存、财务与统计功能,示例数据已包含客户、供应商、产品、仓库与多笔业务单据。

总结

芋道 ERP 系统是一个业务闭环完整、可直接运行的企业管理后台项目:后端以 Spring Boot 多模块 + MyBatis-Plus 提供稳定的单据事务与库存一致性保障,Redis 支撑高并发的单号生成,前端以 Vue 3 + Element Plus + TypeScript 实现完整的单据录入、联动出库/收款与统计图表界面。项目在设计上体现了大量 ERP 实战细节——单据与库存流水的双向联动、审核状态机、应收应付与收付款关联、SaaS 多租户隔离、按业务类型的单据编号体系,以及销售订单审批的实时通知,适合作为学习企业级管理系统设计、Spring Boot 工程化与 Vue 3 管理后台开发的完整参考案例。