分贝通差旅申请单查询接口字段手册:从订阅触发到金蝶云星空落库
分贝通金蝶云星空差旅申请单字段映射轻易云订阅触发
这个接口解决什么问题
分贝通差旅申请单查询接口用于按 third_apply_id 或 apply_id 拉取单条差旅单详情,承接订阅消息触发场景,把差旅申请同步至金蝶云星空费用申请单(ER_ExpenseRequest_Travel)。它在「差旅申请 → 费用承担组织落库」链路里起到枢纽作用,避免批量轮询带来的延迟与冗余。
接口能力总览
- 接口地址:
/openapi/apply/custom_trip/v1/detail - 请求方式:POST(私有化部署通常走内网网关)
- 认证方式:AppKey + 签名 + 时间戳,Header 中传入 access_token
- 请求参数:
third_apply_id(三方系统自定义申请单 ID)、apply_id(分贝通自定义申请单 ID)、update_mode(1-生成新单,2-原单变更) - 响应结构:外层为标准信封
code/msg/data,业务数据位于data.apply,包含主单、行程、费用承担、同行人员等多层嵌套对象 - 分页/增量模式:单条查询接口,不分页;增量由订阅消息按 ID 推送触发
典型字段映射
| 字段名 | 类型 | 含义 | 实战注意事项 |
|---|---|---|---|
| id | string | 差旅申请单唯一主键 | metadata 中 id 指向该字段,作为跨系统关联锚点 |
| code | string | 单据业务编号 | metadata 中 number 指向该字段,映射金蝶 FBillNo |
| form_id / root_id | string | 表单模板与流程根节点 | 用于路由不同业务分支 |
| state / past_status | string | 当前/历史状态 | 变更单场景必须保留 past_status 用于审计 |
| create_time / update_time / complete_time | string | 时间戳序列 | create_time 映射金蝶申请日期,注意时区漂移 |
| name / reason / remark | string | 名称、事由、备注 | remark 需与 all_cityname 拼接后写入金蝶事由 |
| city1_name / citylast_name | string | 出发地/目的地 | 由脚本从 multi_trips 提取,响应中并不存在 |
| 部门_name / 部门_id / 部门_code | string | 费用承担部门 | 从 cost_attributions.details 提取,映射金蝶 FDeptID/FCostDeptID |
| 费用承担公司_name / 费用承担公司_id | string | 费用承担组织 | 映射金蝶 FOrgID,需校验组织是否启用 |
| proposer | object | 申请人对象 | 含 code、department_id、phone 等,映射 FStaffID/FTOCONTACTUNIT/FPhoneNumber |
| users_names / users_codes | string | 同行人员姓名/编码 | 由脚本从 users[] 拼接,映射金蝶 FAccompany / F_dps_TXRNO |
| base_controls | object | 表单基础控件值 | 含自定义字段扩展 |
在轻易云上如何配置
在轻易云数据集成平台里,这类「订阅触发 + 单条查询 + 脚本加工 + 目标落库」的链路通常用一条 QUERY_ONLY 策略即可承载。配置步骤大致如下:
- Source 适配器:选择分贝通差旅申请单适配器,填入 AppKey/Secret,配置订阅消息回调入口作为触发器。
- 字段映射器:把
code、proposer.code、create_time等标准字段拖到金蝶侧 FBillNo、FStaffID、FApplyDate。脚本加工字段(city1_name、all_cityname、users_names等)通过「自定义字段」面板引入,参与目标映射。 - AfterSourceInvoke 脚本钩子:在源响应回调里挂载脚本,把
multi_trips.citys[].city_name拼成all_cityname,把cost_attributions.details展开为部门_*、费用承担公司_*,把users[]拼成users_names/users_codes。轻易云的字段映射器会自动识别脚本注入的字段并出现在可映射列表里。 - Target 写入:金蝶云星空侧用
_findCollection按FBillNo={{code}}判断新增或变更,决定IsAutoSubmitAndAudit取 true(新单)还是 false(变更单)。
跨方案实战要点
- 脚本字段必须显式声明:响应里没有
city1_name、部门_name这类「派生字段」,必须在AfterSourceInvoke里加工后再映射,否则目标端会取不到值。 code是金蝶侧唯一锚点:金蝶 FBillNo 直接吃code,任何重号都会导致变更/新增逻辑错乱。multi_trips是行程数据源:出发地、目的地、全程城市都从这里来,不要误读data.apply的顶层字段。cost_attributions是费用承担的关键:里面是数组结构details[],必须遍历提取,不能直接当对象取。users[]拼接待规范:同行人员逗号分隔,姓名和编码必须分别成串,金蝶侧 FAccompany 与 F_dps_TXRNO 一一对应。- 订阅触发优于轮询:单条查询接口没必要跑定时任务,订阅消息按 ID 触发既实时又省配额。
踩坑复盘
- 直接读响应找不到
city1_name:脚本未挂载或挂载位置错,响应里压根没有这个字段。稳妥做法是进AfterSourceInvoke显式加工,并打印日志确认。 remark单独写入被覆盖:金蝶事由需要remark + all_cityname拼接,直接映射remark会丢掉行程信息。update_mode误用 1:变更单场景传 1 会重复创建新单,触发金蝶侧单号冲突。稳妥做法是订阅消息里区分新增/变更事件,再传对应模式。- 费用承担组织未启用:金蝶侧组织档案禁用时写入会失败,建议在脚本里加一层校验,未启用则跳过或转人工。
- 同行人员编码与姓名错位:拼接顺序不一致会导致 FAccompany 与 F_dps_TXRNO 串行。稳妥做法是用同一份
users[]数组分别 join,顺序天然一致。
何时选用
当你需要把分贝通差旅申请单按单实时同步到金蝶云星空费用申请单、且对延迟敏感时,本接口是首选。如果业务是批量对账或离线分析,应改走分贝通批量拉取接口;若目标端不是金蝶云星空,本手册的字段加工逻辑仍可借鉴,但具体映射需重做。
本文为原创内容,转载请注明出处:https://www.qeasy.cloud/insights/engineering/hb-p2-056-cae1