Files
zcglxt/backend_new/TRANSFER_RECOVERY_API.md

12 KiB
Raw Permalink Blame History

资产调拨和回收API文档

目录


资产调拨管理

1. 获取调拨单列表

GET /api/v1/transfers

查询参数:

  • skip (int): 跳过条数默认0
  • limit (int): 返回条数默认20最大100
  • transfer_type (string): 调拨类型internal=内部调拨/external=跨机构调拨)
  • approval_status (string): 审批状态pending/approved/rejected/cancelled
  • execute_status (string): 执行状态pending/executing/completed/cancelled
  • source_org_id (int): 调出网点ID
  • target_org_id (int): 调入网点ID
  • keyword (string): 搜索关键词(单号/标题)

响应示例:

[
  {
    "id": 1,
    "order_code": "TO-20250124-00001",
    "source_org_id": 1,
    "target_org_id": 2,
    "transfer_type": "external",
    "title": "从总部向分公司调拨资产",
    "asset_count": 5,
    "apply_user_id": 1,
    "apply_time": "2025-01-24T10:00:00",
    "approval_status": "pending",
    "execute_status": "pending",
    "created_at": "2025-01-24T10:00:00"
  }
]

2. 获取调拨单统计

GET /api/v1/transfers/statistics

查询参数:

  • source_org_id (int): 调出网点ID可选
  • target_org_id (int): 调入网点ID可选

响应示例:

{
  "total": 100,
  "pending": 10,
  "approved": 50,
  "rejected": 5,
  "executing": 15,
  "completed": 20
}

3. 获取调拨单详情

GET /api/v1/transfers/{order_id}

路径参数:

  • order_id (int): 调拨单ID

响应示例:

{
  "id": 1,
  "order_code": "TO-20250124-00001",
  "source_org_id": 1,
  "target_org_id": 2,
  "transfer_type": "external",
  "title": "从总部向分公司调拨资产",
  "asset_count": 5,
  "apply_user_id": 1,
  "apply_time": "2025-01-24T10:00:00",
  "approval_status": "approved",
  "approval_user_id": 2,
  "approval_time": "2025-01-24T11:00:00",
  "execute_status": "completed",
  "execute_user_id": 3,
  "execute_time": "2025-01-24T12:00:00",
  "remark": "调拨备注",
  "created_at": "2025-01-24T10:00:00",
  "updated_at": "2025-01-24T12:00:00",
  "source_organization": {
    "id": 1,
    "org_name": "总部",
    "org_type": "headquarters"
  },
  "target_organization": {
    "id": 2,
    "org_name": "北京分公司",
    "org_type": "branch"
  },
  "apply_user": {
    "id": 1,
    "real_name": "张三",
    "username": "zhangsan"
  },
  "items": [
    {
      "id": 1,
      "asset_id": 10,
      "asset_code": "ASSET001",
      "source_organization_id": 1,
      "target_organization_id": 2,
      "transfer_status": "completed"
    }
  ]
}

4. 获取调拨单明细

GET /api/v1/transfers/{order_id}/items

路径参数:

  • order_id (int): 调拨单ID

响应示例:

[
  {
    "id": 1,
    "order_id": 1,
    "asset_id": 10,
    "asset_code": "ASSET001",
    "source_organization_id": 1,
    "target_organization_id": 2,
    "transfer_status": "completed",
    "created_at": "2025-01-24T10:00:00"
  }
]

5. 创建调拨单

POST /api/v1/transfers

请求体:

{
  "source_org_id": 1,
  "target_org_id": 2,
  "transfer_type": "external",
  "title": "从总部向分公司调拨资产",
  "asset_ids": [10, 11, 12, 13, 14],
  "remark": "调拨备注"
}

字段说明:

  • source_org_id (int, 必填): 调出网点ID
  • target_org_id (int, 必填): 调入网点ID
  • transfer_type (string, 必填): 调拨类型
    • internal: 内部调拨
    • external: 跨机构调拨
  • title (string, 必填): 标题
  • asset_ids (array, 必填): 资产ID列表
  • remark (string, 可选): 备注

响应: 返回创建的调拨单详情


6. 更新调拨单

PUT /api/v1/transfers/{order_id}

路径参数:

  • order_id (int): 调拨单ID

请求体:

{
  "title": "更新后的标题",
  "remark": "更新后的备注"
}

字段说明:

  • title (string, 可选): 标题
  • remark (string, 可选): 备注

响应: 返回更新后的调拨单详情

限制: 只有待审批状态的调拨单可以更新


7. 审批调拨单

POST /api/v1/transfers/{order_id}/approve

路径参数:

  • order_id (int): 调拨单ID

查询参数:

  • approval_status (string, 必填): 审批状态approved/rejected
  • approval_remark (string, 可选): 审批备注

响应: 返回审批后的调拨单详情

限制:

  • 只有待审批状态的调拨单可以审批
  • 审批通过后可以开始执行调拨

8. 开始调拨

POST /api/v1/transfers/{order_id}/start

路径参数:

  • order_id (int): 调拨单ID

响应: 返回开始执行后的调拨单详情

限制:

  • 必须已审批通过
  • 不能重复开始

9. 完成调拨

POST /api/v1/transfers/{order_id}/complete

路径参数:

  • order_id (int): 调拨单ID

响应: 返回完成后的调拨单详情

功能:

  • 自动更新资产所属机构
  • 自动更新资产状态
  • 更新明细状态为完成

限制: 只有pending或executing状态的调拨单可以完成


10. 取消调拨单

POST /api/v1/transfers/{order_id}/cancel

路径参数:

  • order_id (int): 调拨单ID

响应: 204 No Content

限制: 已完成的调拨单无法取消


11. 删除调拨单

DELETE /api/v1/transfers/{order_id}

路径参数:

  • order_id (int): 调拨单ID

响应: 204 No Content

限制: 只能删除已拒绝或已取消的调拨单


资产回收管理

1. 获取回收单列表

GET /api/v1/recoveries

查询参数:

  • skip (int): 跳过条数默认0
  • limit (int): 返回条数默认20最大100
  • recovery_type (string): 回收类型user=使用人回收/org=机构回收/scrap=报废回收)
  • approval_status (string): 审批状态pending/approved/rejected/cancelled
  • execute_status (string): 执行状态pending/executing/completed/cancelled
  • keyword (string): 搜索关键词(单号/标题)

响应示例:

[
  {
    "id": 1,
    "order_code": "RO-20250124-00001",
    "recovery_type": "user",
    "title": "回收离职员工资产",
    "asset_count": 3,
    "apply_user_id": 1,
    "apply_time": "2025-01-24T10:00:00",
    "approval_status": "pending",
    "execute_status": "pending",
    "created_at": "2025-01-24T10:00:00"
  }
]

2. 获取回收单统计

GET /api/v1/recoveries/statistics

响应示例:

{
  "total": 80,
  "pending": 8,
  "approved": 40,
  "rejected": 4,
  "executing": 12,
  "completed": 16
}

3. 获取回收单详情

GET /api/v1/recoveries/{order_id}

路径参数:

  • order_id (int): 回收单ID

响应示例:

{
  "id": 1,
  "order_code": "RO-20250124-00001",
  "recovery_type": "user",
  "title": "回收离职员工资产",
  "asset_count": 3,
  "apply_user_id": 1,
  "apply_time": "2025-01-24T10:00:00",
  "approval_status": "approved",
  "approval_user_id": 2,
  "approval_time": "2025-01-24T11:00:00",
  "execute_status": "completed",
  "execute_user_id": 3,
  "execute_time": "2025-01-24T12:00:00",
  "remark": "回收备注",
  "created_at": "2025-01-24T10:00:00",
  "updated_at": "2025-01-24T12:00:00",
  "apply_user": {
    "id": 1,
    "real_name": "张三",
    "username": "zhangsan"
  },
  "items": [
    {
      "id": 1,
      "asset_id": 10,
      "asset_code": "ASSET001",
      "recovery_status": "completed"
    }
  ]
}

4. 获取回收单明细

GET /api/v1/recoveries/{order_id}/items

路径参数:

  • order_id (int): 回收单ID

响应示例:

[
  {
    "id": 1,
    "order_id": 1,
    "asset_id": 10,
    "asset_code": "ASSET001",
    "recovery_status": "completed",
    "created_at": "2025-01-24T10:00:00"
  }
]

5. 创建回收单

POST /api/v1/recoveries

请求体:

{
  "recovery_type": "user",
  "title": "回收离职员工资产",
  "asset_ids": [10, 11, 12],
  "remark": "回收备注"
}

字段说明:

  • recovery_type (string, 必填): 回收类型
    • user: 使用人回收(从使用人处回收)
    • org: 机构回收(从机构回收)
    • scrap: 报废回收(报废资产回收)
  • title (string, 必填): 标题
  • asset_ids (array, 必填): 资产ID列表
  • remark (string, 可选): 备注

响应: 返回创建的回收单详情


6. 更新回收单

PUT /api/v1/recoveries/{order_id}

路径参数:

  • order_id (int): 回收单ID

请求体:

{
  "title": "更新后的标题",
  "remark": "更新后的备注"
}

字段说明:

  • title (string, 可选): 标题
  • remark (string, 可选): 备注

响应: 返回更新后的回收单详情

限制: 只有待审批状态的回收单可以更新


7. 审批回收单

POST /api/v1/recoveries/{order_id}/approve

路径参数:

  • order_id (int): 回收单ID

查询参数:

  • approval_status (string, 必填): 审批状态approved/rejected
  • approval_remark (string, 可选): 审批备注

响应: 返回审批后的回收单详情

限制:

  • 只有待审批状态的回收单可以审批
  • 审批通过后可以开始执行回收

8. 开始回收

POST /api/v1/recoveries/{order_id}/start

路径参数:

  • order_id (int): 回收单ID

响应: 返回开始执行后的回收单详情

限制:

  • 必须已审批通过
  • 不能重复开始

9. 完成回收

POST /api/v1/recoveries/{order_id}/complete

路径参数:

  • order_id (int): 回收单ID

响应: 返回完成后的回收单详情

功能:

  • 自动更新资产状态为in_stock普通回收或scrapped报废回收
  • 自动记录资产状态历史
  • 更新明细状态为完成

限制: 只有pending或executing状态的回收单可以完成


10. 取消回收单

POST /api/v1/recoveries/{order_id}/cancel

路径参数:

  • order_id (int): 回收单ID

响应: 204 No Content

限制: 已完成的回收单无法取消


11. 删除回收单

DELETE /api/v1/recoveries/{order_id}

路径参数:

  • order_id (int): 回收单ID

响应: 204 No Content

限制: 只能删除已拒绝或已取消的回收单


业务流程说明

调拨流程

  1. 创建调拨单:选择调出/调入机构和资产
  2. 审批调拨单:管理员审批(通过/拒绝)
  3. 开始调拨:开始执行调拨操作
  4. 完成调拨
    • 自动更新资产所属机构
    • 自动更新资产状态
    • 记录状态历史

回收流程

  1. 创建回收单:选择回收类型和资产
  2. 审批回收单:管理员审批(通过/拒绝)
  3. 开始回收:开始执行回收操作
  4. 完成回收
    • 普通回收资产状态变为in_stock
    • 报废回收资产状态变为scrapped
    • 记录状态历史

状态说明

调拨类型

  • internal: 内部调拨(同一组织内调拨)
  • external: 跨机构调拨(不同组织间调拨)

回收类型

  • user: 使用人回收(从使用人处回收资产)
  • org: 机构回收(从机构回收资产)
  • scrap: 报废回收(报废并回收资产)

审批状态

  • pending: 待审批
  • approved: 已审批通过
  • rejected: 已拒绝
  • cancelled: 已取消

执行状态

  • pending: 待执行
  • executing: 执行中
  • completed: 已完成
  • cancelled: 已取消

调拨明细状态

  • pending: 待调拨
  • transferring: 调拨中
  • completed: 已完成
  • failed: 失败

回收明细状态

  • pending: 待回收
  • recovering: 回收中
  • completed: 已完成
  • failed: 失败