1
0
forked from erp-dev/erp

feat: change api/v2/plate-orders/by-process-node/ logic ***** danger

This commit is contained in:
2026-02-06 19:30:57 +08:00
parent e3536e0b1a
commit a9f1e8f18a
3 changed files with 119 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
# API 文档:按流程节点查询开版订单(v2)
日期:2026-02-06
## 接口信息
- Method:GET
- Path:/api/v2/plate-orders/by-process-node/
- 权限:已登录 + 印染工厂用户(IsPrintingFactory)
## 查询参数
必填:
- process_node_id:int,流程节点 ID(ProcessNode.id)
可选:
- search:string
- 纯数字:同时匹配 id 精确 + design_code 模糊
- 非纯数字:design_code 模糊
- ordering:string,默认 -created_at
- 可选字段:id / created_at / updated_at / design_code
- limit:int,分页大小(默认 20)
- offset:int,分页起始偏移
- param_key:string,与 param_value 搭配使用
- param_value:string,与 param_key 搭配使用
### param_key / param_value 过滤说明
- 必须成对提供,否则返回 400。
- 过滤语义:存在任意一次“未撤销”的目标节点状态日志(StateFlowRecord.is_cancelled=false),其参数记录包含 {param_key: param_value} 即命中。
## 返回结构
```
{
"process_node": {
"id": 1,
"process_id": 10,
"state_id": 5,
"state_name": "调色",
"order": 1
},
"parameters": [
{"key": "temperature", "value": null}
],
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": 100,
"original_id": null,
"design_code": "PO-001",
"plate_image": [{"file_id": 1, "name": "封面", "path": "/media/xxx", "url": "..."}],
"customer": 200,
"customer_name": "客户A",
"style_name": "款式A",
"urgency_level": "正常",
"is_invalid": false,
"business_object_id": 300,
"created_by": 400,
"process_parameters": [
{"key": "temperature", "value": "30"}
],
"created_at": "2026-02-06T10:00:00+08:00",
"updated_at": "2026-02-06T10:00:00+08:00"
}
]
}
```
## 字段说明(results[*])
- plate_image:仅返回第一个图片条目(最多 1 个),来源为 PlateOrder.plate_image。
- process_parameters:订单维度参数,按当前节点的参数模板输出 key/value。
- 若该订单未提交过该节点参数,则 value 为 null。
## 校验与错误
- 缺少 process_node_id:400
- process_node_id 非数字:400
- process_node_id 不存在:404
- ordering 不在允许范围:400
- param_key/param_value 只提供一个:400
## 备注(查询流程)
- 起点为 PlateOrder 查询,再通过 business_object 的状态日志进行筛选。
- “当前处于该节点”的判定采用 NEXT 模式:
- 目标节点前置节点全部完成(未撤销)
- 目标节点尚未完成(未撤销)