Skip to content
/ WMS Public

数据库课程设计 | 基于 Python+Flask+SQL 开发的轻量级仓库管理系统,包含完整的前后端交互和数据持久化,项目结构清晰,可直接部署或用于二次开发学习

Notifications You must be signed in to change notification settings

Devilsean/WMS

Repository files navigation

仓库管理系统

基于Python + Flask + MySQL的仓库管理系统后端实现

项目简介

本项目是一个完整的仓库管理系统后端,实现了物资管理、库存管理、出入库管理等核心功能。

技术栈

  • Python 3.8+
  • Flask 2.3.0
  • SQLAlchemy 3.0.5
  • MySQL 8.0+
  • PyMySQL 1.1.0

功能特性

1. 用户管理

  • 用户登录/登出
  • 基于角色的权限控制(管理员/普通用户)
  • 密码加密存储(SHA256)
  • 用户信息维护

2. 基础数据管理

  • 仓库信息管理(CRUD)
  • 供应商信息管理(CRUD)
  • 商品分类管理(支持层级结构)
  • 商品信息管理(CRUD)

3. 库存管理

  • 实时库存查询
  • 库存汇总统计
  • 低库存预警
  • 库存流水追溯

4. 入库管理

  • 入库单创建(草稿状态)
  • 入库明细维护
  • 入库过账(自动更新库存)
  • 入库单查询与统计

5. 出库管理

  • 出库单创建(草稿状态)
  • 出库明细维护
  • 出库过账(库存不足检查)
  • 出库单查询与统计

6. 统计报表

  • 低库存预警报表
  • 库存汇总报表
  • 入库汇总报表
  • 出库汇总报表
  • 库存流水报表

项目结构

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          # 测试数据脚本

安装部署

1. 环境准备

确保已安装:

  • Python 3.8+
  • MySQL 8.0+

2. 克隆项目

cd WMS

3. 安装依赖

pip install -r requirements.txt

4. 配置环境变量

复制 .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

5. 初始化数据库

执行SQL脚本:

mysql -u root -p < init_database.sql

6. 启动应用

python app.py

应用将在 http://localhost:5000 启动。

前端通过浏览器直接使用index.html作为入口文件。

API接口说明

认证说明

除登录接口外,所有接口都需要在请求头中携带用户信息:

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

核心业务流程

入库流程

  1. 创建入库单(草稿状态)
  2. 添加入库明细
  3. 过账入库单
    • 系统自动增加库存
    • 生成库存流水记录
    • 更新单据状态为已过账

出库流程

  1. 创建出库单(草稿状态)
  2. 添加出库明细
  3. 过账出库单
    • 系统检查库存是否充足
    • 自动扣减库存
    • 生成库存流水记录
    • 更新单据状态为已过账

注意事项

  1. 所有出入库操作必须通过过账流程完成,不能直接修改库存
  2. 已过账的单据不能修改或删除
  3. 出库时会自动检查库存是否充足
  4. 所有库存变动都会记录流水,可追溯
  5. 密码使用SHA256加密存储

开发说明

分层架构

  • Controller层:处理HTTP请求,参数校验
  • Service层:业务逻辑实现,事务控制
  • DAO层:数据库访问,SQL操作
  • Model层:数据模型定义

代码规范

  • 遵循PEP8编码规范
  • 使用有意义的变量和函数名
  • 关键业务逻辑添加注释

许可证

MIT License

About

数据库课程设计 | 基于 Python+Flask+SQL 开发的轻量级仓库管理系统,包含完整的前后端交互和数据持久化,项目结构清晰,可直接部署或用于二次开发学习

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published