200 lines
3.8 KiB
Markdown
200 lines
3.8 KiB
Markdown
# 后端API使用说明
|
||
|
||
## 数据库
|
||
|
||
系统使用SQLite数据库存储工单数据,数据库文件为 `wrench.db`。
|
||
|
||
### 数据库表结构
|
||
|
||
1. **work_orders** - 工单表
|
||
- id: 主键
|
||
- trace_id: 追溯号
|
||
- process_id: 工序号
|
||
- process_name: 工序名称
|
||
- product_name: 产品名称
|
||
- operator: 操作员
|
||
- status: 状态(系统自动管理,创建时默认为pending)
|
||
- bolts: 螺栓数据(JSON格式)
|
||
- created_at: 创建时间
|
||
- updated_at: 更新时间
|
||
|
||
2. **claimed_orders** - 认领表
|
||
- id: 主键
|
||
- trace_id: 追溯号
|
||
- process_id: 工序号
|
||
- process_name: 工序名称
|
||
- operator: 操作员
|
||
- status: 状态(claimed/completed)
|
||
- claimed_at: 认领时间
|
||
- completed_at: 完成时间
|
||
|
||
3. **work_results** - 结果表
|
||
- id: 主键
|
||
- trace_id: 追溯号
|
||
- process_id: 工序号
|
||
- process_name: 工序名称
|
||
- bolts: 螺栓结果数据(JSON格式)
|
||
- device_sn: 设备SN号
|
||
- device_name: 设备名称
|
||
- submitted_at: 提交时间
|
||
|
||
## API接口
|
||
|
||
### 1. 创建工单
|
||
|
||
**POST** `/api/work-orders/create`
|
||
|
||
**请求体:**
|
||
```json
|
||
{
|
||
"trace_id": "TR20260119001",
|
||
"process_id": "P001",
|
||
"process_name": "前轮装配",
|
||
"product_name": "汽车底盘组件",
|
||
"operator": "张三",
|
||
"bolts": [
|
||
{
|
||
"bolt_id": 1,
|
||
"name": "前轮螺栓1",
|
||
"target_torque": 280,
|
||
"mode": 1,
|
||
"torque_tolerance": 0.10,
|
||
"angle_min": 1,
|
||
"angle_max": 360
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**响应:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"message": "工单创建成功",
|
||
"data": {
|
||
"trace_id": "TR20260119001",
|
||
"process_id": "P001"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 2. 查询工单列表
|
||
|
||
**GET** `/api/work-orders?trace_id=TR20260119001&process_id=P001`
|
||
|
||
**响应:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"message": "查询成功",
|
||
"data": [
|
||
{
|
||
"trace_id": "TR20260119001",
|
||
"process_id": "P001",
|
||
"process_name": "前轮装配",
|
||
"product_name": "汽车底盘组件",
|
||
"operator": "张三",
|
||
"bolt_count": 2,
|
||
"status": "pending"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 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"
|
||
}
|
||
```
|
||
|
||
## 使用示例
|
||
|
||
### Python示例
|
||
|
||
```python
|
||
import requests
|
||
|
||
# 创建工单
|
||
order_data = {
|
||
"trace_id": "TR20260119001",
|
||
"process_id": "P001",
|
||
"process_name": "前轮装配",
|
||
"bolts": [...]
|
||
}
|
||
|
||
response = requests.post(
|
||
"http://localhost:5000/api/work-orders/create",
|
||
json=order_data
|
||
)
|
||
print(response.json())
|
||
```
|
||
|
||
### cURL示例
|
||
|
||
```bash
|
||
# 创建工单
|
||
curl -X POST http://localhost:5000/api/work-orders/create \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"trace_id": "TR20260119001",
|
||
"process_id": "P001",
|
||
"process_name": "前轮装配",
|
||
"bolts": [...]
|
||
}'
|
||
|
||
# 查询工单
|
||
curl "http://localhost:5000/api/work-orders?trace_id=TR20260119001&process_id=P001"
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. **追溯号和工序号必须同时匹配**才能查询到工单
|
||
2. **同一追溯号和工序号的组合是唯一的**(UNIQUE约束)
|
||
3. **工单只能被认领一次**,认领后其他客户端无法再认领
|
||
4. **数据库启动时自动从work_orders.json导入数据**(如果数据库为空)
|
||
5. 所有时间字段使用格式:`YYYY-MM-DD HH:MM:SS`
|
||
|