170 lines
3.5 KiB
Markdown
170 lines
3.5 KiB
Markdown
|
|
# 后端API服务器使用说明
|
|||
|
|
|
|||
|
|
## 功能特性
|
|||
|
|
|
|||
|
|
1. **SQLite数据库存储** - 使用SQLite数据库存储工单数据
|
|||
|
|
2. **工单管理** - 创建、查询、认领、提交工单
|
|||
|
|
3. **自动数据导入** - 首次启动时自动从JSON文件导入数据
|
|||
|
|
|
|||
|
|
## API接口
|
|||
|
|
|
|||
|
|
### 1. 创建工单
|
|||
|
|
**POST** `/api/work-orders/create`
|
|||
|
|
|
|||
|
|
请求体:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"trace_id": "TR20260119001",
|
|||
|
|
"process_id": "P001",
|
|||
|
|
"process_name": "前轮装配",
|
|||
|
|
"product_name": "汽车底盘组件",
|
|||
|
|
"station": "装配工位A1",
|
|||
|
|
"operator": "张三",
|
|||
|
|
"status": "pending",
|
|||
|
|
"bolts": [
|
|||
|
|
{
|
|||
|
|
"bolt_id": 1,
|
|||
|
|
"name": "前轮螺栓1",
|
|||
|
|
"target_torque": 280,
|
|||
|
|
"mode": 1,
|
|||
|
|
"torque_tolerance": 0.10,
|
|||
|
|
"angle_min": 1,
|
|||
|
|
"angle_max": 360,
|
|||
|
|
"status": "pending"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 查询工单列表
|
|||
|
|
**GET** `/api/work-orders?trace_id=TR20260119001&process_id=P001`
|
|||
|
|
|
|||
|
|
返回:符合条件的未认领工单列表
|
|||
|
|
|
|||
|
|
### 3. 认领工单
|
|||
|
|
**POST** `/api/work-orders/claim`
|
|||
|
|
|
|||
|
|
请求体:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"trace_id": "TR20260119001",
|
|||
|
|
"process_id": "P001",
|
|||
|
|
"operator": "操作员名称"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 提交工单数据
|
|||
|
|
**POST** `/api/work-orders/submit`
|
|||
|
|
|
|||
|
|
请求体:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"trace_id": "TR20260119001",
|
|||
|
|
"process_id": "P001",
|
|||
|
|
"bolts": [
|
|||
|
|
{
|
|||
|
|
"bolt_id": 1,
|
|||
|
|
"name": "前轮螺栓1",
|
|||
|
|
"target_torque": 280,
|
|||
|
|
"actual_torque": 285,
|
|||
|
|
"actual_angle": 0,
|
|||
|
|
"status": "success",
|
|||
|
|
"timestamp": "2026-01-19 10:30:00",
|
|||
|
|
"result": {...}
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 释放工单
|
|||
|
|
**POST** `/api/work-orders/release`
|
|||
|
|
|
|||
|
|
请求体:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"trace_id": "TR20260119001",
|
|||
|
|
"process_id": "P001"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. 健康检查
|
|||
|
|
**GET** `/api/health`
|
|||
|
|
|
|||
|
|
## 数据库结构
|
|||
|
|
|
|||
|
|
### work_orders 表
|
|||
|
|
- `id` - 主键
|
|||
|
|
- `trace_id` - 追溯号
|
|||
|
|
- `process_id` - 工序号
|
|||
|
|
- `process_name` - 工序名称
|
|||
|
|
- `product_name` - 产品名称
|
|||
|
|
- `station` - 工位
|
|||
|
|
- `operator` - 操作员
|
|||
|
|
- `status` - 状态
|
|||
|
|
- `bolts_data` - 螺栓数据(JSON格式)
|
|||
|
|
- `created_at` - 创建时间
|
|||
|
|
- `updated_at` - 更新时间
|
|||
|
|
|
|||
|
|
### claimed_orders 表
|
|||
|
|
- `id` - 主键
|
|||
|
|
- `trace_id` - 追溯号
|
|||
|
|
- `process_id` - 工序号
|
|||
|
|
- `process_name` - 工序名称
|
|||
|
|
- `operator` - 操作员
|
|||
|
|
- `claimed_at` - 认领时间
|
|||
|
|
- `completed_at` - 完成时间
|
|||
|
|
- `status` - 状态(claimed/completed)
|
|||
|
|
- `bolts_result` - 螺栓结果数据(JSON格式)
|
|||
|
|
|
|||
|
|
## 使用步骤
|
|||
|
|
|
|||
|
|
### 1. 安装依赖
|
|||
|
|
```bash
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 启动服务器
|
|||
|
|
```bash
|
|||
|
|
python app.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
服务器将在 `http://localhost:5000` 启动
|
|||
|
|
|
|||
|
|
### 3. 首次启动
|
|||
|
|
- 如果数据库为空,会自动从 `work_orders.json` 导入数据
|
|||
|
|
- 数据库文件 `wrench.db` 会自动创建
|
|||
|
|
|
|||
|
|
### 4. 创建工单
|
|||
|
|
可以使用 `create_order_example.py` 作为示例:
|
|||
|
|
```bash
|
|||
|
|
python create_order_example.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
或使用curl:
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:5000/api/work-orders/create \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d @work_order_data.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **追溯号和工序号必须同时匹配**才能查询到工单
|
|||
|
|
2. **工单只能被认领一次**,认领后其他客户端无法再认领
|
|||
|
|
3. **数据库文件** `wrench.db` 会保存在 `backend/` 目录下
|
|||
|
|
4. 如果修改了 `work_orders.json`,可以删除 `wrench.db` 重新启动服务器来重新导入
|
|||
|
|
|
|||
|
|
## 故障排除
|
|||
|
|
|
|||
|
|
### 查询不到数据
|
|||
|
|
1. 检查数据库是否已初始化(查看是否存在 `wrench.db` 文件)
|
|||
|
|
2. 如果数据库为空,确保 `work_orders.json` 文件存在
|
|||
|
|
3. 检查追溯号和工序号是否完全匹配(区分大小写)
|
|||
|
|
|
|||
|
|
### 数据库初始化
|
|||
|
|
如果需要手动初始化数据库:
|
|||
|
|
```bash
|
|||
|
|
python init_database.py
|
|||
|
|
```
|
|||
|
|
|