轻易云
注册体验

分贝通差旅申请单查询接口字段手册:从订阅触发到金蝶云星空落库

· 何海波· 工程最佳实践· 68 次浏览· 约 4 分钟读完
分贝通金蝶云星空差旅申请单字段映射轻易云订阅触发

这个接口解决什么问题

分贝通差旅申请单查询接口用于按 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 推送触发

典型字段映射

字段名类型含义实战注意事项
idstring差旅申请单唯一主键metadata 中 id 指向该字段,作为跨系统关联锚点
codestring单据业务编号metadata 中 number 指向该字段,映射金蝶 FBillNo
form_id / root_idstring表单模板与流程根节点用于路由不同业务分支
state / past_statusstring当前/历史状态变更单场景必须保留 past_status 用于审计
create_time / update_time / complete_timestring时间戳序列create_time 映射金蝶申请日期,注意时区漂移
name / reason / remarkstring名称、事由、备注remark 需与 all_cityname 拼接后写入金蝶事由
city1_name / citylast_namestring出发地/目的地由脚本从 multi_trips 提取,响应中并不存在
部门_name / 部门_id / 部门_codestring费用承担部门从 cost_attributions.details 提取,映射金蝶 FDeptID/FCostDeptID
费用承担公司_name / 费用承担公司_idstring费用承担组织映射金蝶 FOrgID,需校验组织是否启用
proposerobject申请人对象含 code、department_id、phone 等,映射 FStaffID/FTOCONTACTUNIT/FPhoneNumber
users_names / users_codesstring同行人员姓名/编码由脚本从 users[] 拼接,映射金蝶 FAccompany / F_dps_TXRNO
base_controlsobject表单基础控件值含自定义字段扩展

在轻易云上如何配置

在轻易云数据集成平台里,这类「订阅触发 + 单条查询 + 脚本加工 + 目标落库」的链路通常用一条 QUERY_ONLY 策略即可承载。配置步骤大致如下:

  1. Source 适配器:选择分贝通差旅申请单适配器,填入 AppKey/Secret,配置订阅消息回调入口作为触发器。
  2. 字段映射器:把 code、proposer.code、create_time 等标准字段拖到金蝶侧 FBillNo、FStaffID、FApplyDate。脚本加工字段(city1_name、all_cityname、users_names 等)通过「自定义字段」面板引入,参与目标映射。
  3. AfterSourceInvoke 脚本钩子:在源响应回调里挂载脚本,把 multi_trips.citys[].city_name 拼成 all_cityname,把 cost_attributions.details 展开为 部门_*、费用承担公司_*,把 users[] 拼成 users_names/users_codes。轻易云的字段映射器会自动识别脚本注入的字段并出现在可映射列表里。
  4. Target 写入:金蝶云星空侧用 _findCollection 按 FBillNo={{code}} 判断新增或变更,决定 IsAutoSubmitAndAudit 取 true(新单)还是 false(变更单)。

跨方案实战要点

  1. 脚本字段必须显式声明:响应里没有 city1_name、部门_name 这类「派生字段」,必须在 AfterSourceInvoke 里加工后再映射,否则目标端会取不到值。
  2. code 是金蝶侧唯一锚点:金蝶 FBillNo 直接吃 code,任何重号都会导致变更/新增逻辑错乱。
  3. multi_trips 是行程数据源:出发地、目的地、全程城市都从这里来,不要误读 data.apply 的顶层字段。
  4. cost_attributions 是费用承担的关键:里面是数组结构 details[],必须遍历提取,不能直接当对象取。
  5. users[] 拼接待规范:同行人员逗号分隔,姓名和编码必须分别成串,金蝶侧 FAccompany 与 F_dps_TXRNO 一一对应。
  6. 订阅触发优于轮询:单条查询接口没必要跑定时任务,订阅消息按 ID 触发既实时又省配额。

踩坑复盘

  1. 直接读响应找不到 city1_name:脚本未挂载或挂载位置错,响应里压根没有这个字段。稳妥做法是进 AfterSourceInvoke 显式加工,并打印日志确认。
  2. remark 单独写入被覆盖:金蝶事由需要 remark + all_cityname 拼接,直接映射 remark 会丢掉行程信息。
  3. update_mode 误用 1:变更单场景传 1 会重复创建新单,触发金蝶侧单号冲突。稳妥做法是订阅消息里区分新增/变更事件,再传对应模式。
  4. 费用承担组织未启用:金蝶侧组织档案禁用时写入会失败,建议在脚本里加一层校验,未启用则跳过或转人工。
  5. 同行人员编码与姓名错位:拼接顺序不一致会导致 FAccompany 与 F_dps_TXRNO 串行。稳妥做法是用同一份 users[] 数组分别 join,顺序天然一致。

何时选用

当你需要把分贝通差旅申请单按单实时同步到金蝶云星空费用申请单、且对延迟敏感时,本接口是首选。如果业务是批量对账或离线分析,应改走分贝通批量拉取接口;若目标端不是金蝶云星空,本手册的字段加工逻辑仍可借鉴,但具体映射需重做。

本文为原创内容,转载请注明出处:https://www.qeasy.cloud/insights/engineering/hb-p2-056-cae1

评论