1
0
forked from erp-dev/erp
Files
erpnew/docs/api_v1_printing_jobs_api_2026-06-26.md
2026-06-26 17:03:54 +08:00

15 KiB
Raw Permalink Blame History

API v1 印染任务接口说明printing-jobs

本文档汇总 /api/v1/printing-jobs/ 相关接口,按当前代码实现整理,重点覆盖列表和详情接口。

基础信息

  • 基础路径:/api/v1/printing-jobs/
  • 资源模型:printing.PrintingJob
  • 认证:需要已登录用户
  • 权限:
    • 用户必须属于印染工厂商户
    • 常规 CRUD 受 Django model permission 控制,例如 printing.view_printingjob
    • 默认按 printing_order.customer 做客户可见性过滤
    • 拥有 printing.view_all_printingorders 权限可突破客户可见性限制
  • 分页:limit/offset
    • 默认 limit=800
    • 最大 limit=1000

接口总览

方法 路径 说明
GET /api/v1/printing-jobs/ 获取印染任务列表
GET /api/v1/printing-jobs/{id}/ 获取印染任务详情
POST /api/v1/printing-jobs/ 创建印染任务
PUT /api/v1/printing-jobs/{id}/ 全量更新印染任务
PATCH /api/v1/printing-jobs/{id}/ 部分更新印染任务
DELETE /api/v1/printing-jobs/{id}/ 已禁用,返回 405
POST /api/v1/printing-jobs/mark-production-completed/ 显式标记任务完成生产
POST /api/v1/printing-jobs/{id}/advance-to-next-state/ 推进到下一个流程节点
POST /api/v1/printing-jobs/{id}/step-back-one-state/ 回退一个流程节点
GET /api/v1/printing-jobs/{id}/completed-states/ 查询已完成流程节点
GET /api/v1/printing-jobs/{id}/timeline/ 查询流程时间线

1. 列表

GET /api/v1/printing-jobs/

Schema 注意事项

  • 列表响应固定为分页对象:countnextpreviousresults
  • results[] 中除下表特别说明外,字段会稳定返回;没有值时通常返回 null、空字符串、空数组或 false
  • is_sales_order_bound 是条件字段:默认返回;当查询参数 include_sales_order_bound=false0no 时,该字段不会出现在 results[] 对象中。
  • 列表接口不返回详情专属字段 product_codestatus_id

查询参数

参数 类型 必填 说明
printing_order integer 按印染订单内部 ID 精确过滤
external_order_id string 按所属订单 external_order_id 模糊过滤
product integer 按产品 ID 精确过滤
product_name string 按产品名称模糊过滤
unit string 按单位模糊过滤
quantity_min number 最小数量
quantity_max number 最大数量
pieces_min number 最小件数
pieces_max number 最大件数
is_production_completed boolean 是否已显式标记完成生产
include_sales_order_bound boolean/string 是否返回 is_sales_order_bound;传 false/0/no 时不返回该字段
search string 全文搜索:产品名称、单位、尺寸、备注
ordering string 排序字段,支持 idcreated_atupdated_atquantitypieces;前缀 - 表示倒序
limit integer 每页条数,默认 800最大 1000
offset integer 分页偏移量

默认排序:-created_at

响应字段

列表使用 PrintingJobListSerializer

字段 类型 说明
id integer 印染任务 ID
original_id integer/null 克隆来源任务 ID外部同步场景保存外部 record ID
sub_id integer/null 外部明细子 ID外部同步场景来自 SubID
merchant_id integer/null 所属商户 ID
printing_order integer 印染订单内部 ID
printing_order_id string 印染订单 human_id
external_order_id string/null 所属订单外部编号
product integer 产品 ID
product_name string/null 产品名称
product_image_url string/null 产品主图 URL
has_started boolean 是否已有未撤销流程记录
quantity integer 数量
billed_quantity decimal string 已关联非作废销售单明细数量合计
unit string 单位
size string/null 一段尺寸
pieces integer/null 件数
description string/null 备注
work_state integer 业务进展枚举值
work_state_display string 业务进展展示值
status string 当前流程状态展示名
is_completed boolean 流程是否完成
is_production_completed boolean 是否显式标记完成生产
progress_percentage number 流程进度百分比
last_completed_state string 最后完成的流程节点名称
business_object_id integer/null 关联流程实例 ID
is_sales_order_bound boolean/可能不存在 是否已被非作废销售单明细绑定;可通过 include_sales_order_bound=false 关闭,关闭后字段不返回
batch_advance_records array 与该任务相关的批量流程操作记录
saleitems array 关联的有效销售品明细
fabric string 所属印染订单面料
created_at datetime 创建时间
updated_at datetime 更新时间

示例

curl "http://localhost:8100/api/v1/printing-jobs/?external_order_id=KD20410611&limit=50" \
  -H "Authorization: Bearer <token>"

响应示例:

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 101,
      "original_id": 1190494,
      "sub_id": 1,
      "merchant_id": 1,
      "printing_order": 55,
      "printing_order_id": "20260626000055",
      "external_order_id": "KD20410611",
      "product": 88,
      "product_name": "Tj1712#12号色-24码",
      "product_image_url": null,
      "has_started": false,
      "quantity": 10,
      "billed_quantity": "0.00",
      "unit": "段",
      "size": "2.68",
      "pieces": 10,
      "description": null,
      "work_state": 0,
      "work_state_display": "生产中",
      "status": "待印染",
      "is_completed": false,
      "is_production_completed": false,
      "progress_percentage": 0.0,
      "last_completed_state": "",
      "business_object_id": 2001,
      "is_sales_order_bound": false,
      "batch_advance_records": [],
      "saleitems": [],
      "fabric": "120克本白四面弹单定",
      "created_at": "2026-06-26T15:35:00+08:00",
      "updated_at": "2026-06-26T15:35:00+08:00"
    }
  ]
}

2. 详情

GET /api/v1/printing-jobs/{id}/

详情使用 PrintingJobDetailSerializer,比列表多返回 product_codestatus_id

Schema 注意事项

  • 详情响应是单个对象,不包在 results 中。
  • 除下表特别说明外,字段会稳定返回;没有值时通常返回 null、空字符串、空数组或 false
  • is_sales_order_bound 是条件字段:默认返回;当查询参数 include_sales_order_bound=false0no 时,该字段不会出现在响应对象中。
  • 详情接口不返回列表专属字段 product_image_url

路径参数

参数 类型 必填 说明
id integer 印染任务 ID

查询参数

参数 类型 必填 说明
include_sales_order_bound boolean/string 是否返回 is_sales_order_bound;传 false/0/no 时不返回该字段

响应字段

字段 类型 说明
id integer 印染任务 ID
original_id integer/null 克隆来源任务 ID外部同步场景保存外部 record ID
sub_id integer/null 外部明细子 ID外部同步场景来自 SubID
merchant_id integer/null 所属商户 ID
printing_order integer 印染订单内部 ID
printing_order_id string 印染订单 human_id
external_order_id string/null 所属订单外部编号
product integer 产品 ID
product_name string/null 产品名称
product_code string/null 产品 human_id
quantity integer 数量
billed_quantity decimal string 已关联非作废销售单明细数量合计
unit string 单位
size string/null 一段尺寸
pieces integer/null 件数
description string/null 备注
work_state integer 业务进展枚举值
work_state_display string 业务进展展示值
status string 当前流程状态展示名
status_id integer/null 当前待执行流程节点 ID已完成时为空
is_completed boolean 流程是否完成
is_production_completed boolean 是否显式标记完成生产
has_started boolean 是否已有未撤销流程记录
progress_percentage number 流程进度百分比
last_completed_state string 最后完成的流程节点名称
business_object_id integer/null 关联流程实例 ID
is_sales_order_bound boolean/可能不存在 是否已被非作废销售单明细绑定;可通过 include_sales_order_bound=false 关闭,关闭后字段不返回
batch_advance_records array 与该任务相关的批量流程操作记录
saleitems array 关联的有效销售品明细
fabric string 所属印染订单面料
created_at datetime 创建时间
updated_at datetime 更新时间

示例

curl "http://localhost:8100/api/v1/printing-jobs/101/" \
  -H "Authorization: Bearer <token>"

响应示例:

{
  "id": 101,
  "original_id": 1190494,
  "sub_id": 1,
  "merchant_id": 1,
  "printing_order": 55,
  "printing_order_id": "20260626000055",
  "external_order_id": "KD20410611",
  "product": 88,
  "product_name": "Tj1712#12号色-24码",
  "product_code": "TP00088",
  "quantity": 10,
  "billed_quantity": "0.00",
  "unit": "段",
  "size": "2.68",
  "pieces": 10,
  "description": null,
  "work_state": 0,
  "work_state_display": "生产中",
  "status": "待印染",
  "status_id": 1,
  "is_completed": false,
  "is_production_completed": false,
  "has_started": false,
  "progress_percentage": 0.0,
  "last_completed_state": "",
  "business_object_id": 2001,
  "is_sales_order_bound": false,
  "batch_advance_records": [],
  "saleitems": [],
  "fabric": "120克本白四面弹单定",
  "created_at": "2026-06-26T15:35:00+08:00",
  "updated_at": "2026-06-26T15:35:00+08:00"
}

3. 创建

POST /api/v1/printing-jobs/

Schema 注意事项

创建成功响应使用 PrintingJobCreateUpdateSerializer,不是列表/详情 serializer。因此响应只包含创建/更新字段集:idoriginal_idsub_idprinting_orderexternal_order_idproductquantityunitsizepiecesdescriptionwork_statebatch_advance_records

创建成功响应不会返回这些列表/详情字段:merchant_idprinting_order_idproduct_nameproduct_codeproduct_image_urlstatusstatus_idhas_startedis_completedis_production_completedprogress_percentagelast_completed_statebusiness_object_idis_sales_order_boundsaleitemsfabriccreated_atupdated_at

请求体

字段 类型 必填 说明
printing_order integer 印染订单 ID
product integer 产品 ID
quantity integer 数量,必须大于 0
unit string 单位
original_id integer/null 克隆来源任务 ID外部同步通常由系统写入
sub_id integer/null 外部明细子 ID
size string/null 一段尺寸
pieces integer/null 件数
description string/null 备注
work_state integer 业务进展,默认 0

创建接口会通过 service 自动绑定当前用户和商户,并在所属订单配置了流程时创建 BusinessObject

4. 更新

PUT /api/v1/printing-jobs/{id}/

PATCH /api/v1/printing-jobs/{id}/

可更新字段同创建接口。更新时不允许修改 printing_order 绑定关系;若传入不同订单,会返回 400 Bad Request

Schema 注意事项

更新成功响应同样使用 PrintingJobCreateUpdateSerializer。字段出现规则与创建接口一致,不等同于列表/详情响应。

5. 删除

DELETE /api/v1/printing-jobs/{id}/

删除被禁用。

响应:

{
  "detail": "印染款式明细不支持删除操作"
}

状态码:405 Method Not Allowed

6. 标记完成生产

POST /api/v1/printing-jobs/mark-production-completed/

请求体:

{
  "printing_job_id": 101
}

成功响应:

{
  "message": "OK"
}

说明:

  • 该接口只设置 is_production_completed=true
  • 不等同于流程完成状态
  • 不能跨商户操作

7. 推进流程

POST /api/v1/printing-jobs/{id}/advance-to-next-state/

请求体:

{
  "parameters": {
    "temperature": "25.5",
    "operator": "张三"
  }
}

parameters 可为空;若下一流程节点定义了必填参数,则必须提供。

成功响应:

{
  "detail": "推进成功",
  "data": {
    "id": 101
  }
}

data 使用 PrintingJobDetailSerializer

Schema 注意事项

data 是详情对象,但该接口内部直接序列化,没有传入请求上下文;因此 is_sales_order_bound 当前会返回,不受 include_sales_order_bound=false 控制。

8. 回退流程

POST /api/v1/printing-jobs/{id}/step-back-one-state/

成功响应:

{
  "detail": "回退成功",
  "data": {
    "id": 101
  }
}

data 使用 PrintingJobDetailSerializer

Schema 注意事项

data 是详情对象,但该接口内部直接序列化,没有传入请求上下文;因此 is_sales_order_bound 当前会返回,不受 include_sales_order_bound=false 控制。

9. 已完成流程节点

GET /api/v1/printing-jobs/{id}/completed-states/

查询参数:

参数 类型 必填 说明
include_cancelled boolean/string 是否包含已撤销流程记录,默认 false

响应示例:

{
  "count": 1,
  "results": [
    {
      "id": 3001,
      "state_id": 1,
      "state_name": "待印染",
      "completed_at": "2026-06-26T15:35:00+08:00",
      "completed_by": "testuser",
      "completed_by_name": "测试员工",
      "is_cancelled": false,
      "cancelled_at": null
    }
  ]
}

10. 流程时间线

GET /api/v1/printing-jobs/{id}/timeline/

返回该任务的完整流程时间线,不包含已撤销记录。

响应示例:

{
  "count": 2,
  "results": [
    {
      "state_id": 1,
      "state_name": "待印染",
      "state_description": "",
      "order": 1,
      "status": "completed",
      "completed_at": "2026-06-26T15:35:00+08:00",
      "completed_by": "testuser",
      "completed_by_name": "测试员工"
    },
    {
      "state_id": 2,
      "state_name": "印染中",
      "state_description": "",
      "order": 2,
      "status": "in_progress",
      "completed_at": null,
      "completed_by": null,
      "completed_by_name": null
    }
  ]
}

字段补充

work_state

当前枚举来自 PrintingJobWorkStateEnum

展示
0 生产中
1 待送货
2 待开单
3 已完结

sub_id

sub_id 是可空整数。外部印染 records 同步时从外部字段 SubID 写入,用于保留外部明细行的子编号。