基于Python + Flask + MySQL的仓库管理系统后端实现
本项目是一个完整的仓库管理系统后端,实现了物资管理、库存管理、出入库管理等核心功能。
- Python 3.8+
- Flask 2.3.0
- SQLAlchemy 3.0.5
- MySQL 8.0+
- PyMySQL 1.1.0
- 用户登录/登出
- 基于角色的权限控制(管理员/普通用户)
- 密码加密存储(SHA256)
- 用户信息维护
- 仓库信息管理(CRUD)
- 供应商信息管理(CRUD)
- 商品分类管理(支持层级结构)
- 商品信息管理(CRUD)
- 实时库存查询
- 库存汇总统计
- 低库存预警
- 库存流水追溯
- 入库单创建(草稿状态)
- 入库明细维护
- 入库过账(自动更新库存)
- 入库单查询与统计
- 出库单创建(草稿状态)
- 出库明细维护
- 出库过账(库存不足检查)
- 出库单查询与统计
- 低库存预警报表
- 库存汇总报表
- 入库汇总报表
- 出库汇总报表
- 库存流水报表
WMS/
├── config.py # 配置文件
├── app.py # 应用入口
├── requirements.txt # 依赖包
├── .env # 环境变量(需自行创建)
├── .env.example # 环境变量示例
├── models/ # 数据模型层
│ ├── __init__.py
│ ├── user.py
│ ├── warehouse.py
│ ├── supplier.py
│ ├── product_category.py
│ ├── product.py
│ ├── stock.py
│ ├── inbound_order.py
│ ├── outbound_order.py
│ └── stock_ledger.py
├── dao/ # 数据访问层
│ ├── __init__.py
│ ├── base_dao.py
│ ├── user_dao.py
│ ├── warehouse_dao.py
│ ├── supplier_dao.py
│ ├── product_dao.py
│ ├── stock_dao.py
│ └── order_dao.py
├── services/ # 业务逻辑层
│ ├── __init__.py
│ ├── user_service.py
│ ├── warehouse_service.py
│ ├── supplier_service.py
│ ├── product_service.py
│ ├── stock_service.py
│ ├── inbound_service.py
│ └── outbound_service.py
├── controllers/ # 控制器层(API接口)
│ ├── __init__.py
│ ├── user_controller.py
│ ├── warehouse_controller.py
│ ├── supplier_controller.py
│ ├── product_controller.py
│ ├── stock_controller.py
│ ├── inbound_controller.py
│ ├── outbound_controller.py
│ └── report_controller.py
├── utils/ # 工具类
│ ├── __init__.py
│ ├── response.py # 响应封装
│ └── auth.py # 认证工具
└── sql/ # SQL脚本
├── 01_create_tables.sql # 建表脚本
├── 02_create_views.sql # 视图脚本
├── 03_create_procedures.sql # 存储过程脚本
└── 04_init_data.sql # 测试数据脚本
确保已安装:
- Python 3.8+
- MySQL 8.0+
cd WMSpip install -r requirements.txt复制 .env.example 为 .env 并修改配置:
cp .env.example .env编辑 .env 文件,配置数据库连接信息:
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=warehouse_management
执行SQL脚本:
mysql -u root -p < init_database.sqlpython app.py应用将在 http://localhost:5000 启动。
前端通过浏览器直接使用index.html作为入口文件。
除登录接口外,所有接口都需要在请求头中携带用户信息:
X-User-Id: 用户ID
X-User-Role: 用户角色(ADMIN/USER)
POST /api/users/login- 用户登录POST /api/users- 创建用户(需管理员权限)PUT /api/users/{id}- 更新用户(需管理员权限)DELETE /api/users/{id}- 删除用户(需管理员权限)GET /api/users/{id}- 获取用户信息GET /api/users- 获取用户列表(需管理员权限)POST /api/users/change-password- 修改密码
POST /api/warehouses- 创建仓库(需管理员权限)PUT /api/warehouses/{id}- 更新仓库(需管理员权限)DELETE /api/warehouses/{id}- 删除仓库(需管理员权限)GET /api/warehouses/{id}- 获取仓库信息GET /api/warehouses- 获取仓库列表GET /api/warehouses/active- 获取激活的仓库
POST /api/suppliers- 创建供应商(需管理员权限)PUT /api/suppliers/{id}- 更新供应商(需管理员权限)DELETE /api/suppliers/{id}- 删除供应商(需管理员权限)GET /api/suppliers/{id}- 获取供应商信息GET /api/suppliers- 获取供应商列表GET /api/suppliers/active- 获取激活的供应商
POST /api/products/categories- 创建分类(需管理员权限)PUT /api/products/categories/{id}- 更新分类(需管理员权限)DELETE /api/products/categories/{id}- 删除分类(需管理员权限)GET /api/products/categories/{id}- 获取分类信息GET /api/products/categories- 获取分类列表POST /api/products- 创建商品(需管理员权限)PUT /api/products/{id}- 更新商品(需管理员权限)DELETE /api/products/{id}- 删除商品(需管理员权限)GET /api/products/{id}- 获取商品信息GET /api/products- 获取商品列表GET /api/products/active- 获取激活的商品
GET /api/stocks- 获取库存(支持按仓库/商品查询)GET /api/stocks/summary- 获取库存汇总GET /api/stocks/low-stock- 获取低库存商品GET /api/stocks/ledger- 获取库存流水
POST /api/inbound/orders- 创建入库单PUT /api/inbound/orders/{id}- 更新入库单DELETE /api/inbound/orders/{id}- 删除入库单GET /api/inbound/orders/{id}- 获取入库单详情GET /api/inbound/orders- 获取入库单列表GET /api/inbound/orders/summary- 获取入库单汇总POST /api/inbound/orders/{id}/items- 添加入库明细PUT /api/inbound/orders/{id}/items- 更新入库明细GET /api/inbound/orders/{id}/items- 获取入库明细POST /api/inbound/orders/{id}/post- 过账入库单
POST /api/outbound/orders- 创建出库单PUT /api/outbound/orders/{id}- 更新出库单DELETE /api/outbound/orders/{id}- 删除出库单GET /api/outbound/orders/{id}- 获取出库单详情GET /api/outbound/orders- 获取出库单列表GET /api/outbound/orders/summary- 获取出库单汇总POST /api/outbound/orders/{id}/items- 添加出库明细PUT /api/outbound/orders/{id}/items- 更新出库明细GET /api/outbound/orders/{id}/items- 获取出库明细POST /api/outbound/orders/{id}/post- 过账出库单
GET /api/reports/low-stock- 低库存预警报表GET /api/reports/stock-summary- 库存汇总报表GET /api/reports/inbound-summary- 入库汇总报表GET /api/reports/outbound-summary- 出库汇总报表GET /api/reports/stock-ledger- 库存流水报表
初始化数据后可使用以下账号登录:
- 管理员账号:
admin/123456 - 普通用户1:
user1/123456 - 普通用户2:
user2/123456
- 创建入库单(草稿状态)
- 添加入库明细
- 过账入库单
- 系统自动增加库存
- 生成库存流水记录
- 更新单据状态为已过账
- 创建出库单(草稿状态)
- 添加出库明细
- 过账出库单
- 系统检查库存是否充足
- 自动扣减库存
- 生成库存流水记录
- 更新单据状态为已过账
- 所有出入库操作必须通过过账流程完成,不能直接修改库存
- 已过账的单据不能修改或删除
- 出库时会自动检查库存是否充足
- 所有库存变动都会记录流水,可追溯
- 密码使用SHA256加密存储
- Controller层:处理HTTP请求,参数校验
- Service层:业务逻辑实现,事务控制
- DAO层:数据库访问,SQL操作
- Model层:数据模型定义
- 遵循PEP8编码规范
- 使用有意义的变量和函数名
- 关键业务逻辑添加注释
MIT License