对公预付责任人批量变更接口
说明
外部责任人变更申请审批完成后,集成可按报销单号批量修改对公预付未到票费用的责任人。操作人工号、新责任人工号均在当前企业内解析;整批单据及目标费用校验通过后,统一修改为指定的新责任人,记录操作人和变更记录,并刷新适用的尚未发送提醒及未清台账责任人归属。
注意事项
- 企业身份由开放平台鉴权确定。操作人须存在并具有对公未清台账权限,新责任人须为当前企业的在职有效员工。
formCodeList使用对外报销单号,至少 1 个,默认上限为 10 个,实际上限以服务端配置为准;不允许空值或重复单号。超限错误会给出实际上限和本次传入数量。- 报销单须已完成。目标费用须为已完结的对公预付未到票费用(
NO_RECEIPT),且存在尚未核销完成的预付未清记录;本接口涵盖普通预付、押金和保证金类型。 - 费用已完结且其预付未清记录全部核销完成时,该费用不参与修改;同一费用仍有未清记录时保留。非预付费用不参与修改,单据内没有剩余目标费用时返回业务错误。
- 任一目标费用正在责任人变更确认流程中时,整批拒绝,错误信息包含单据号和费用编号。本接口不发起新的责任人确认流程。
- 先校验整批单据,再校验整批目标费用;任一阶段发现错误,返回该阶段首条业务错误,整批不更新,也不生成本批成功变更记录或刷新提醒。
- 同一企业、同一单据的请求正在处理时,重叠请求最多等待 3 秒获取锁;等待期间取得锁后继续校验和修改,超时仍未取得锁则整批拒绝,提示“系统正在处理中,请勿重复尝试”。无论操作人、新责任人是否相同,都不能同时修改;两个批次只要包含重叠单据,就按上述规则处理。无重叠的单据可并行处理。
- 前次请求完成后再次提交,会重新执行业务校验和修改;目标责任人已相同的费用仍执行更新。本接口的并发限制不代表永久去重。
- 修改预计到票日期请使用对公预付预计到票日期批量变更接口。
接口地址
/api/openapi/form/reimburse/prepayment/responsible/change
请求类型
POST
鉴权与请求头
通过接口认证取得 tokenId 和 entCode,按调用规范传入请求头:
| 请求头 | 说明 |
|---|---|
| Content-Type | application/json |
| tokenId | 接口认证返回的有效令牌 |
| entCode | 接口认证返回的企业编码 |
operatorId 是本次业务操作人的员工工号,不是认证令牌或用户内部编码。
请求参数
参数说明
| 字段名称 | 字段类型 | 是否必填 | 字段说明 |
|---|---|---|---|
| operatorId | String | 是 | 当前企业的操作人工号,须具有对公未清台账权限 |
| formCodeList | List<String> | 是 | 报销单号列表;至少 1 个,默认上限 10 个,以服务端配置为准,不允许空值或重复 |
| targetResponsibleEmployeeId | String | 是 | 新责任人的员工工号;须属于当前企业且在职有效,一次请求指定一个新责任人 |
请求样例
{
"operatorId": "EMP001",
"formCodeList": ["MK26100001", "MK26100002"],
"targetResponsibleEmployeeId": "EMP002"
}
响应参数
参数说明
| 字段名称 | 字段类型 | 字段说明 |
|---|---|---|
| code | String | ACK 或 NACK;操作人不存在的兼容响应见下文 |
| message | String | 顶层错误信息,正常成功时为 null |
| data | Object | 变更结果;NACK 时为 null |
| data.successFormCodeList | List<String> | 本次实际修改成功的报销单号;整批成功时包含全部传入单号 |
| data.failures | List<Failure> | 正常成功时为空;操作人不存在或无效时保留逐单失败信息 |
| requestId | String | 请求追踪标识,可能为 null,排查失败请求时可提供该值 |
| errorCode | String | 错误码,可能为 null |
| success | Boolean | code 为 ACK 时为 true,为 NACK 时为 false;仍须检查 data.failures |
Failure
| 字段名称 | 字段类型 | 字段说明 |
|---|---|---|
| formCode | String | 失败的报销单号 |
| message | String | 该单据对应的错误说明 |
成功响应样例
{
"code": "ACK",
"message": null,
"data": {
"successFormCodeList": ["MK26100001", "MK26100002"],
"failures": []
},
"requestId": null,
"errorCode": null,
"success": true
}
并发冲突响应样例
{
"code": "NACK",
"message": "系统正在处理中,请勿重复尝试",
"data": null,
"requestId": null,
"errorCode": null,
"success": false
}
requestId 以实际响应为准。权限不足、新责任人无效、单据或费用业务校验失败也按上述 NACK 结构返回,message 为对应错误。
操作人不存在或无效的兼容响应
当前接口在操作人工号不存在或无法解析为用户时,返回 ACK、success=true,但 data.successFormCodeList 为空,data.failures 包含所有传入单据及“单据号 {formCode} 的操作人工号不存在或无效”。此时全部单据均未更新。调用方须同时检查 data.failures,不能仅凭顶层 success 判断业务修改成功。操作人存在但无权限时直接返回 NACK。
错误场景
以下为中文提示,实际消息按开放平台多语言机制返回;{formCode}、{expenseCode} 等会替换为实际值。
| 场景 | 错误提示 |
|---|---|
| 必填参数缺失、空单号列表或列表含空单号 | 传入参数错误 |
| 单次数量超过上限 | 单次请求最多允许传入 {limit} 个单据号,本次传入 {count} 个,请分批提交。 |
| 报销单号重复 | 请求失败,单据号 {formCode} 重复,请检查后重新传入 |
| 新责任人工号不存在、用户无效或不在职 | 传入的新责任人工号未找到对应的在职员工,请检查工号及员工状态 |
| 操作人无权限 | 操作人无对公未清台账权限,无法修改责任人。 |
| 单据不存在或不属于当前企业 | 未找到单据编号{formCode}对应的单据,请检查 |
| 单据未完成 | 单据号 {formCode} 单据状态不是已完成 |
| 无剩余目标费用或目标费用无未清记录 | 单据号 {formCode} 不存在预付未清业务 |
| 目标预付费用未完结 | 单据号 {formCode} 存在未完结的预付费用,不允许修改责任人 |
| 目标费用处于责任人变更确认流程中 | 单据号 {formCode},费用 {expenseCode} 的责任人正在变更中,不允许变更 |
| 同一单据已有请求正在处理 | 系统正在处理中,请勿重复尝试 |
修改记录
2026-10-23 新增对公预付责任人批量变更接口文档,说明整批校验、费用筛选、并发限制及错误响应
2026-10-29 并发请求最多等待 3 秒获取锁,取得锁后继续处理,超时返回正在处理中