# 仓海(CangHai)工业仓储
**Repository Path**: withthesea/warehouse
## Basic Information
- **Project Name**: 仓海(CangHai)工业仓储
- **Description**: 仓海(CangHai)工业仓储:PC+PDA一体;入库/检验/出库/盘点闭环;供应商按供应商号隔离库存与单据。Apache-2.0,单机可跑。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/withthesea/warehouse
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-10-14
- **Last Updated**: 2026-10-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 仓储, 工业, 智能, pda, 沧海
## README

仓海 CangHai · 工业仓储管理系统
Industrial Warehouse Management System
仓储如海 · 吞吐有序 · PC + PDA 一体
https://gitee.com/withthesea/warehouse
---
仓海(CangHai)是面向原材料仓 / 产线旁仓的工业仓储系统:一套后端同时服务 **PC 管理端** 与 **Android PDA**,覆盖入库、检验、上架、出库、移库、盘点与标签打印;支持给供应商开账号,并按供应商号隔离库存与单据。
> **一句话**:PC + PDA 一体的仓储作业系统——单据带供应商信息,供应商账号只看自家货。
### 工程基线
| 项 | 事实 |
|:---|:---|
| 后端 | `warehouse-server/` Spring Boot 3.3 · Security · JPA · JWT |
| PDA | `WarehouseApp/` Android 8.0+ · 扫码 · 蓝牙标签打印 |
| 文档 | `docs/` 简介 · 系统说明 · 供应商约定 |
| 演示 | 截图 · 动图 · 演示视频(见下方) |
| 部署 | 单 jar + Nginx;SQL 脚本开箱可导入 |
| 常见缺口 | 本系统 |
|:---|:---|
| PC / PDA 两套账 | 统一 API + JWT |
| 供应商能看到别家货 | `supplier_code` + `data_scope=5` |
| 主数据靠表格 | 供应商 / 物料 / 库位 + Excel 导入 |
**30 秒体验**:导入 SQL → 启动 jar → 打开 `/api/pc/` · `admin` / `Admin@123456`。
---
## 界面预览
| 登录 | 运营工作台 |
|:---:|:---:|
|  |  |
| **物料入库** | **库存查询** |
|  |  |
| **供应商** | **PDA** |
|  |  |
更多截图:库位 · 用户 · 出库等见 [`docs/images/`](docs/images/)。
---
## 演示视频
登录 → 工作台 → 入库 / 库存 / 供应商 / 库位 / 用户 · PDA 预览(约 15 秒幻灯片汇总):
▶ 观看仓海演示视频
Gitee 在线打开 · 本地 docs/video/CangHai-demo.mp4
---
## 技术栈
| 层 | 技术 |
|:---|:---|
| 后端 | Spring Boot **3.3.5** · Spring Security · JPA · JWT · Apache POI |
| 前端 PC | Vue3 · Element Plus(构建产物可嵌入 `static/pc`) |
| PDA | Android SDK 34 · minSdk 26 · 扫码 / 蓝牙打印 |
| 数据 | MySQL 8 / MariaDB · utf8mb4 |
| 部署 | Maven · systemd · Nginx HTTPS |
---
## 能力图谱
```text
┌────────────┐ ┌─────────────────┐ ┌──────────────────┐
│ 主数据 │ → │ 入出移库 · 检验 │ → │ 库存查询 · 导出 │
│ 供应商物料 │ │ 单据带供应商号 │ │ 供应商范围过滤 │
│ 库位标签 │ │ PDA 扫码作业 │ │ 库龄 · 缺料 │
└────────────┘ └─────────────────┘ └──────────────────┘
```
| 能力 | 说明 |
|:---|:---|
| 入库 / 出库 | 单据写入 `supplier_code`;出库可按物料+批号回填 |
| 供应商账号 | 绑定供应商号后只看本家库存与入出库 |
| PDA | 入库 · 出库 · 移库 · 库存 · 标签打印 · APK 热更新 |
| 权限 | RBAC 到按钮;`data_scope` 含「本供应商」 |
---
## 系统架构
```mermaid
flowchart LR
subgraph Clients
PDA[PDA Android]
PC[PC Vue3]
SUP[供应商账号]
end
NGX[Nginx HTTPS]
API[warehouse-server]
DB[(MySQL)]
PDA --> NGX
PC --> NGX
SUP --> NGX
NGX --> API --> DB
```
---
## 供应商数据(精简约定)
1. **入库 / 出库单据带供应商号**,仓内能知道货是哪家的。
2. **给供应商开账号并绑定供应商号**后,只能看到本家相关库存与单据。
详见 [`docs/supplier-data-scope.md`](docs/supplier-data-scope.md)。
```bash
mysql -uroot -p warehouse_db_v2 < warehouse-server/src/main/resources/schema-supplier.sql
```
```text
supplier1 / Admin@123456 # 绑定 SUP001
```
---
## 快速开始
### 环境
JDK 17+ · Maven 3.8+ · MySQL 8 / MariaDB · Android Studio(PDA)
### 1. 初始化数据库
```bash
mysql -uroot -p -e "CREATE DATABASE IF NOT EXISTS warehouse_db_v2 DEFAULT CHARACTER SET utf8mb4;"
cd warehouse-server
mysql -uroot -p warehouse_db_v2 < src/main/resources/schema.sql
mysql -uroot -p warehouse_db_v2 < src/main/resources/schema-ruoyi.sql
mysql -uroot -p warehouse_db_v2 < src/main/resources/data-ruoyi.sql
mysql -uroot -p warehouse_db_v2 < src/main/resources/schema-supplier.sql
mysql -uroot -p warehouse_db_v2 < src/main/resources/schema-capability.sql
```
### 2. 本地配置
```bash
cp src/main/resources/application-local.yml.example \
src/main/resources/application-local.yml
```
填写数据库密码与 JWT Secret(勿提交该文件)。
### 3. 启动
```bash
mvn -DskipTests spring-boot:run
```
| 入口 | 地址 |
|:---|:---|
| API | `http://localhost:8080/api` |
| PC | `http://localhost:8080/api/pc/` |
```text
admin / Admin@123456
supplier1 / Admin@123456
```
### 4. PDA
Android Studio 打开 `WarehouseApp/`,修改 `BASE_URL` 后 `assembleDebug`。
---
## 多实例部署(水平扩展)
JWT 无状态 Session,可多实例负载均衡。前提:
1. **共享 MySQL**(各节点同一库)
2. **共享上传卷**:`warehouse.upload-dir` 指向 NFS/EFS 等(默认 `uploads`)
3. LB 探活:`GET /api/health`(DB 不通返回 503)
样例 Nginx:[`docs/deploy/nginx-lb.conf.example`](docs/deploy/nginx-lb.conf.example)。
```yaml
# application-local.yml
warehouse:
upload-dir: /mnt/warehouse-uploads
```
---
## 工程结构
```text
warehouse/
├── README.md
├── docs/
│ ├── images/ # 截图 · demo.gif · logo
│ ├── video/CangHai-demo.mp4 # 演示视频
│ ├── 项目简介.md · 系统说明文档.md
│ └── supplier-data-scope.md
├── warehouse-server/ # Spring Boot 后端
└── WarehouseApp/ # Android PDA
```
---
## 文档导航
| 文档 | 说明 |
|:---|:---|
| [项目简介](docs/项目简介.md) | 背景与能力摘要 |
| [系统说明文档](docs/系统说明文档.md) | 模块与部署 |
| [供应商数据约定](docs/supplier-data-scope.md) | 隔离规则 |
| [演示视频说明](docs/video/README.md) | 视频索引 |
---
## 仓库
| 项 | 内容 |
|:---|:---|
| Gitee | [withthesea/warehouse](https://gitee.com/withthesea/warehouse) |
| 产品名 | **仓海 CangHai** |
| 版本 | Server `2.0.0` · PDA `2.0.1` |
---
如果仓海对你有帮助,欢迎点亮 ⭐ Star
CangHai · Industrial WMS · Supplier Scope · PDA Native