ERP 企业资源管理系统设计文档
1. 系统概述
1.1 项目简介
ERP 是一套完整的企业资源管理系统,旨在为企业提供全面的业务管理解决方案,包含采购管理、销售管理、库存管理、财务管理等核心功能模块。系统采用微服务架构,前后端分离设计,具有高度的可扩展性和可维护性。

1.2 系统目标
- 实现企业业务流程的数字化管理
- 提高企业运营效率和管理水平
- 提供实时的业务数据和决策支持
- 确保数据安全和系统稳定

1.3 适用范围
本系统适用于中小型企业的日常业务管理,包括但不限于制造业、贸易业、服务业等行业。
2. 技术架构
2.1 技术栈
| 分类 | 技术 | 版本 | 说明 |
|---|---|---|---|
| 后端语言 | Java | 17 | 核心开发语言 |
| 后端框架 | Spring Boot | 3.2 | 应用开发框架 |
| 微服务框架 | Spring Cloud | 2023 | 服务治理框架 |
| ORM框架 | MyBatis-Plus | 3.5 | 数据库访问框架 |
| 数据库 | MySQL | 8.0 | 关系型数据库 |
| 缓存 | Redis | 7.0 | 分布式缓存 |
| 认证 | JWT | - | 无状态认证 |
| 前端框架 | Vue | 3.4 | 前端开发框架 |
| 前端语言 | TypeScript | 5.3 | 类型安全的JavaScript超集 |
| 构建工具 | Vite | 5.0 | 前端构建工具 |
| UI组件库 | Element Plus | 2.4 | 前端UI组件库 |
| 状态管理 | Pinia | 2.1 | 前端状态管理库 |
| 路由 | Vue Router | 4.2 | 前端路由库 |
| 图表库 | ECharts | 5.4 | 数据可视化图表库 |
2.2 系统架构
2.2.1 整体架构
系统采用微服务架构,分为以下几个核心模块:
- erp-common:公共模块,包含通用工具类、异常处理、安全组件等
- erp-service:业务服务模块,包含多个微服务
- erp-web:前端项目,基于Vue 3 + TypeScript开发
2.2.2 微服务模块
| 服务名称 | 服务端口 | 功能描述 |
|---|---|---|
| service-system | 8081 | 系统管理服务,负责用户、角色、权限管理 |
| service-basic | 8082 | 基础信息服务,负责产品、客户、供应商等基础数据管理 |
| service-purchase | 8083 | 采购管理服务,负责采购订单、采购入库等 |
| service-sales | 8084 | 销售管理服务,负责销售订单、销售出库等 |
| service-inventory | 8085 | 库存管理服务,负责库存查询、盘点、调拨等 |
| service-finance | 8086 | 财务管理服务,负责应收账款、应付账款等 |
| service-production | 8087 | 生产管理服务,负责生产计划、MRP运算等 |
| service-orion | - | 流程中心服务,基于BPMN 2.0的工作流引擎 |
2.2.3 前端架构
前端采用Vue 3 + TypeScript + Element Plus的技术栈,使用Vite作为构建工具。前端项目结构如下:
- api:API接口封装
- assets:静态资源
- components:公共组件
- layout:布局组件
- router:路由配置
- stores:状态管理
- styles:样式文件
- utils:工具函数
- views:页面视图
3. 系统模块设计
3.1 系统管理模块
3.1.1 功能设计
- 用户管理:用户的增删改查、密码重置、状态管理
- 角色管理:角色的增删改查、权限分配
- 权限管理:菜单权限、按钮权限的管理
- 部门管理:部门的增删改查、部门结构维护
3.1.2 核心类设计
- SysUser:用户实体类
- SysRole:角色实体类
- SysMenu:菜单实体类
- SysUserRole:用户角色关联类
- SysRoleMenu:角色菜单关联类
3.1.3 关键接口
POST /api/user/login:用户登录GET /api/user/info:获取用户信息GET /api/role/list:获取角色列表GET /api/menu/tree:获取菜单树
3.2 基础信息模块
3.2.1 功能设计
- 产品资料:产品的增删改查、产品分类管理
- 客户资料:客户的增删改查、客户分类管理
- 供应商资料:供应商的增删改查、供应商分类管理
- 仓库设置:仓库的增删改查、仓库状态管理
- BOM设置:产品BOM的维护、BOM版本管理
3.2.2 核心类设计
- Product:产品实体类
- ProductCategory:产品分类实体类
- Customer:客户实体类
- CustomerCategory:客户分类实体类
- Supplier:供应商实体类
- Warehouse:仓库实体类
- BOM:BOM实体类
3.2.3 关键接口
GET /api/product/list:获取产品列表GET /api/customer/list:获取客户列表GET /api/supplier/list:获取供应商列表GET /api/warehouse/list:获取仓库列表
3.3 采购管理模块
3.3.1 功能设计
- 采购订单:采购订单的创建、编辑、审核、查询
- 采购入库:采购入库单的创建、编辑、审核、查询
- 采购退货:采购退货单的创建、编辑、审核、查询
3.3.2 核心类设计
- PurchaseOrder:采购订单实体类
- PurchaseOrderItem:采购订单明细实体类
- PurchaseInbound:采购入库单实体类
- PurchaseInboundItem:采购入库明细实体类
- PurchaseReturn:采购退货单实体类
3.3.3 关键接口
POST /api/purchase/order/create:创建采购订单GET /api/purchase/order/list:获取采购订单列表POST /api/purchase/inbound/create:创建采购入库单
3.4 销售管理模块
3.4.1 功能设计
- 销售订单:销售订单的创建、编辑、审核、查询
- 销售出库:销售出库单的创建、编辑、审核、查询
- 销售退货:销售退货单的创建、编辑、审核、查询
3.4.2 核心类设计
- SalesOrder:销售订单实体类
- SalesOrderItem:销售订单明细实体类
- SalesOutbound:销售出库单实体类
- SalesOutboundItem:销售出库明细实体类
- SalesReturn:销售退货单实体类
3.4.3 关键接口
POST /api/sales/order/create:创建销售订单GET /api/sales/order/list:获取销售订单列表POST /api/sales/outbound/create:创建销售出库单
3.5 库存管理模块
3.5.1 功能设计
- 产品库存:库存查询、库存预警
- 库存盘点:盘点单的创建、编辑、审核、查询
- 库存调拨:调拨单的创建、编辑、审核、查询
- 库存报损/报溢:报损单、报溢单的创建、审核、查询
- 产品组装:组装单的创建、编辑、审核、查询
3.5.2 核心类设计
- Inventory:库存实体类
- StockCheck:库存盘点单实体类
- StockTransfer:库存调拨单实体类
- InventoryLoss:库存报损单实体类
- InventoryOverage:库存报溢单实体类
- ProductAssembly:产品组装单实体类
3.5.3 关键接口
GET /api/inventory/stock/list:获取库存列表POST /api/inventory/check/create:创建库存盘点单POST /api/inventory/transfer/create:创建库存调拨单
3.6 财务管理模块
3.6.1 功能设计
- 应收账款:应收账款的查询、核销
- 应付账款:应付账款的查询、核销
- 银行流水:银行流水的录入、查询
- 收款单/付款单:收款单、付款单的创建、审核、查询
3.6.2 核心类设计
- Receivable:应收账款实体类
- Payable:应付账款实体类
- BankFlow:银行流水实体类
- Receipt:收款单实体类
- Payment:付款单实体类
3.6.3 关键接口
GET /api/finance/receivable/list:获取应收账款列表GET /api/finance/payable/list:获取应付账款列表POST /api/finance/receipt/create:创建收款单
3.7 流程中心模块
3.7.1 功能设计
- 流程定义:流程的设计、部署、管理
- 流程实例:流程实例的启动、查询、管理
- 任务管理:待办任务、已办任务的查询、处理
3.7.2 核心类设计
- ProcessDefinition:流程定义实体类
- ProcessInstance:流程实例实体类
- Task:任务实体类
3.7.3 关键接口
GET /api/process/definition/list:获取流程定义列表POST /api/process/instance/start:启动流程实例GET /api/process/task/list:获取任务列表
4. 数据库设计
4.1 数据库表结构
4.1.1 系统管理表
| 表名 | 描述 | 关键字段 |
|---|---|---|
| sys_user | 用户表 | id, username, password, real_name, email, phone, status |
| sys_role | 角色表 | id, role_name, role_code, description, status |
| sys_menu | 菜单表 | id, menu_name, menu_code, path, component, icon, parent_id, permission |
| sys_user_role | 用户角色关联表 | id, user_id, role_id |
| sys_role_menu | 角色菜单关联表 | id, role_id, menu_id |
| sys_dept | 部门表 | id, dept_name, parent_id, status |
4.1.2 基础信息表
| 表名 | 描述 | 关键字段 |
|---|---|---|
| product | 产品表 | id, product_code, product_name, category_id, unit, price, status |
| product_category | 产品分类表 | id, category_name, parent_id, status |
| customer | 客户表 | id, customer_code, customer_name, contact_person, phone, address, status |
| customer_category | 客户分类表 | id, category_name, parent_id, status |
| supplier | 供应商表 | id, supplier_code, supplier_name, contact_person, phone, address, status |
| supplier_category | 供应商分类表 | id, category_name, parent_id, status |
| warehouse | 仓库表 | id, warehouse_code, warehouse_name, address, status |
| bom | BOM表 | id, product_id, version, status |
| bom_item | BOM明细表 | id, bom_id, material_id, quantity, unit |
4.1.3 采购管理表
| 表名 | 描述 | 关键字段 |
|---|---|---|
| purchase_order | 采购订单表 | id, order_code, supplier_id, order_date, total_amount, status |
| purchase_order_item | 采购订单明细表 | id, order_id, product_id, quantity, unit_price, amount |
| purchase_inbound | 采购入库表 | id, inbound_code, order_id, warehouse_id, inbound_date, total_amount, status |
| purchase_inbound_item | 采购入库明细表 | id, inbound_id, product_id, quantity, unit_price, amount |
| purchase_return | 采购退货表 | id, return_code, order_id, supplier_id, return_date, total_amount, status |
4.1.4 销售管理表
| 表名 | 描述 | 关键字段 |
|---|---|---|
| sales_order | 销售订单表 | id, order_code, customer_id, order_date, total_amount, status |
| sales_order_item | 销售订单明细表 | id, order_id, product_id, quantity, unit_price, amount |
| sales_outbound | 销售出库表 | id, outbound_code, order_id, warehouse_id, outbound_date, total_amount, status |
| sales_outbound_item | 销售出库明细表 | id, outbound_id, product_id, quantity, unit_price, amount |
| sales_return | 销售退货表 | id, return_code, order_id, customer_id, return_date, total_amount, status |
4.1.5 库存管理表
| 表名 | 描述 | 关键字段 |
|---|---|---|
| inventory | 库存表 | id, product_id, warehouse_id, quantity, cost_price |
| stock_check | 库存盘点表 | id, check_code, warehouse_id, check_date, status |
| stock_check_item | 库存盘点明细表 | id, check_id, product_id, actual_quantity, system_quantity, difference |
| stock_transfer | 库存调拨表 | id, transfer_code, from_warehouse_id, to_warehouse_id, transfer_date, status |
| stock_transfer_item | 库存调拨明细表 | id, transfer_id, product_id, quantity |
| inventory_loss | 库存报损表 | id, loss_code, warehouse_id, loss_date, total_amount, status |
| inventory_loss_item | 库存报损明细表 | id, loss_id, product_id, quantity, cost_price, amount |
| inventory_overage | 库存报溢表 | id, overage_code, warehouse_id, overage_date, total_amount, status |
| inventory_overage_item | 库存报溢明细表 | id, overage_id, product_id, quantity, cost_price, amount |
| product_assembly | 产品组装表 | id, assembly_code, warehouse_id, assembly_date, status |
| product_assembly_item | 产品组装明细表 | id, assembly_id, product_id, quantity, type |
4.1.6 财务管理表
| 表名 | 描述 | 关键字段 |
|---|---|---|
| receivable | 应收账款表 | id, receivable_code, customer_id, amount, due_date, status |
| payable | 应付账款表 | id, payable_code, supplier_id, amount, due_date, status |
| bank_flow | 银行流水表 | id, flow_date, amount, type, description, status |
| receipt | 收款单表 | id, receipt_code, customer_id, amount, receipt_date, status |
| payment | 付款单表 | id, payment_code, supplier_id, amount, payment_date, status |
4.2 数据关系图
has
has
has
has
parent-child
parent-child
belongs to
belongs to
parent-child
belongs to
parent-child
belongs to
parent-child
has
belongs to
has
related to
belongs to
has
belongs to
has
related to
belongs to
belongs to
belongs to
has
belongs to
has
from
to
belongs to
belongs to
belongs to
belongs to
SYS_USER
SYS_USER_ROLE
SYS_ROLE
SYS_ROLE_MENU
SYS_MENU
SYS_DEPT
PRODUCT
PRODUCT_CATEGORY
CUSTOMER
CUSTOMER_CATEGORY
SUPPLIER
SUPPLIER_CATEGORY
PURCHASE_ORDER
PURCHASE_ORDER_ITEM
PURCHASE_INBOUND
PURCHASE_INBOUND_ITEM
WAREHOUSE
SALES_ORDER
SALES_ORDER_ITEM
SALES_OUTBOUND
SALES_OUTBOUND_ITEM
INVENTORY
STOCK_CHECK
STOCK_CHECK_ITEM
STOCK_TRANSFER
STOCK_TRANSFER_ITEM
RECEIVABLE
PAYABLE
RECEIPT
PAYMENT
5. 核心业务流程
5.1 采购业务流程
创建采购订单
审核采购订单
创建采购入库单
审核采购入库单
更新库存
生成应付账款
创建付款单
审核付款单
核销应付账款
5.2 销售业务流程
创建销售订单
审核销售订单
创建销售出库单
审核销售出库单
更新库存
生成应收账款
创建收款单
审核收款单
核销应收账款
5.3 库存业务流程
盘点
调拨
报损
报溢
组装
库存查询
库存操作类型
创建盘点单
创建调拨单
创建报损单
创建报溢单
创建组装单
审核盘点单
审核调拨单
审核报损单
审核报溢单
审核组装单
更新库存
5.4 财务业务流程
应收账款管理
创建收款单
审核收款单
核销应收账款
应付账款管理
创建付款单
审核付款单
核销应付账款
银行流水管理
录入银行流水
审核银行流水
5.5 系统管理流程
用户管理
创建用户
分配角色
角色管理
创建角色
分配权限
菜单管理
创建菜单
设置权限
部门管理
创建部门
设置部门结构
6. 安全设计
6.1 认证与授权
- 认证:采用JWT无状态认证机制,用户登录后获取token,后续请求携带token进行身份验证
- 授权:基于角色的访问控制(RBAC),通过角色分配权限,用户通过角色获得相应的权限
- 权限控制:细粒度的权限控制,包括菜单权限、按钮权限等
6.2 数据安全
- 数据加密:敏感数据(如密码)采用BCrypt加密存储
- 传输加密:使用HTTPS协议进行数据传输
- 数据脱敏:敏感信息(如手机号、邮箱)在展示时进行脱敏处理
- 数据备份:定期进行数据备份,确保数据安全
6.3 接口安全
- 接口鉴权:所有接口都需要进行身份验证和权限检查
- 防SQL注入:使用MyBatis-Plus的参数化查询,防止SQL注入攻击
- 防XSS攻击:对输入数据进行过滤和转义,防止XSS攻击
- 防CSRF攻击:使用token进行CSRF防护
- 接口限流:对接口进行限流,防止恶意请求
6.4 系统安全
- 日志记录:详细记录系统操作日志,便于审计和排查问题
- 异常处理:统一的异常处理机制,避免敏感信息泄露
- 安全审计:定期进行安全审计,发现和修复安全漏洞
- 依赖管理:定期更新依赖包,修复已知安全漏洞
7. 部署与集成方案
7.1 部署架构
系统采用微服务架构,部署方案如下:
- 开发环境:本地开发,各服务独立运行
- 测试环境:集成测试,各服务部署在测试服务器
- 生产环境:正式部署,各服务部署在生产服务器,使用负载均衡
7.2 部署步骤
7.2.1 后端部署
-
环境准备
- JDK 17+
- MySQL 8.0+
- Redis 7.0+
- Maven 3.8+
-
数据库初始化
- 创建数据库:`CREATE DATABASE erp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 导入初始化脚本:
SOURCE sql/init_database.sql;
-
编译打包
bashcd dev mvn clean install -DskipTests -
启动服务
bash# 启动系统管理服务 java -jar erp-service/service-system/target/service-system-1.0.0.jar # 启动基础信息服务 java -jar erp-service/service-basic/target/service-basic-1.0.0.jar # 启动采购管理服务 java -jar erp-service/service-purchase/target/service-purchase-1.0.0.jar # 启动销售管理服务 java -jar erp-service/service-sales/target/service-sales-1.0.0.jar # 启动库存管理服务 java -jar erp-service/service-inventory/target/service-inventory-1.0.0.jar # 启动财务管理服务 java -jar erp-service/service-finance/target/service-finance-1.0.0.jar # 启动生产管理服务 java -jar erp-service/service-production/target/service-production-1.0.0.jar # 启动流程中心服务 java -jar erp-service/service-orion/target/service-orion-1.0.0.jar
7.2.2 前端部署
-
环境准备
- Node.js 18+
- npm 9+
-
安装依赖
bashcd dev/erp-web npm install -
构建项目
bashnpm run build -
部署静态文件
- 将
dist目录下的文件部署到Nginx或其他静态文件服务器
- 将
7.3 集成方案
7.3.1 与第三方系统集成
- ERP与CRM集成:通过API接口实现客户数据的同步
- ERP与MES集成:通过API接口实现生产数据的同步
- ERP与财务系统集成:通过API接口实现财务数据的同步
- ERP与OA系统集成:通过API接口实现流程的集成
7.3.2 数据接口
- RESTful API:提供标准的RESTful API接口,支持第三方系统集成
- Webhook:支持通过Webhook推送数据变更通知
- 数据导出:支持Excel、CSV等格式的数据导出
- 数据导入:支持Excel、CSV等格式的数据导入
8. 未来扩展计划
8.1 功能扩展
- 移动应用:开发移动端应用,支持随时随地办公
- 多语言支持:添加多语言支持,满足国际化需求
- 多币种支持:添加多币种支持,满足跨境业务需求
- BI报表:增强报表功能,提供更丰富的数据可视化
- AI智能分析:引入AI技术,提供智能分析和预测功能
8.2 技术升级
- 微服务优化:优化微服务架构,提高系统性能和可靠性
- 容器化部署:采用Docker容器化部署,简化部署和管理
- 云原生:采用云原生技术,提高系统的弹性和可扩展性
- DevOps:引入DevOps实践,提高开发和部署效率
8.3 业务扩展
- 行业解决方案:针对不同行业提供定制化的解决方案
- 供应链管理:扩展供应链管理功能,实现供应链的协同
- 电子商务:集成电子商务功能,实现线上线下一体化
- 物联网集成:集成物联网技术,实现智能仓储和生产管理
9. 总结
KHFN-ERP 是一套完整的企业资源管理系统,采用微服务架构和前后端分离设计,具有以下特点:
- 功能全面:包含采购、销售、库存、财务等核心业务模块
- 技术先进:采用Java 17、Spring Boot 3.2、Vue 3等最新技术
- 架构灵活:微服务架构,便于扩展和维护
- 安全可靠:完善的安全设计,确保数据安全
- 易于集成:提供标准的API接口,便于与第三方系统集成
系统的设计充分考虑了企业的实际需求,通过数字化管理提高企业的运营效率和管理水平,为企业的发展提供有力的支持。
10. 附录
10.1 术语定义
| 术语 | 解释 |
|---|---|
| ERP | Enterprise Resource Planning,企业资源计划 |
| BOM | Bill of Materials,物料清单 |
| MRP | Material Requirements Planning,物料需求计划 |
| JWT | JSON Web Token,无状态认证令牌 |
| RBAC | Role-Based Access Control,基于角色的访问控制 |
| RESTful | 一种软件架构风格,用于设计网络应用程序接口 |
| BPMN | Business Process Model and Notation,业务流程模型和标记法 |
10.2 系统默认账号
| 用户名 | 密码 | 角色 |
|---|---|---|
| admin | 123456 | 系统管理员 |
| user | 123456 | 普通用户 |
10.3 API文档
启动后端服务后,访问以下地址查看API文档: