Qeasy Cloud
Get Started

如何实现金蝶云与钉钉供应商月结付款流程的数据集成

Qeasy Integration Consultant 蔡威2897 views

集成金蝶云星空数据到钉钉的技术解析:付款申请单对接方案

在企业级应用系统中,如何高效、准确地实现跨平台数据集成始终是一个关键挑战。本文将深入探讨如何通过轻易云数据集成平台,将金蝶云星空中的付款申请单(executeBillQuery接口获取)成功对接至钉钉供应商月结付款流程(topapi/processinstance/create接口写入)。为确保项目执行的精确性,我们采用了名称为“金蝶付款申请单->钉钉供应商月结付款①”的方案。

首先,为了保证从金蝶云星空获取的数据不漏单和及时处理,我们使用了定时可靠的抓取策略。这一策略依赖于调度机制,定期调用executeBillQuery接口,并结合分页及限流技术,有效应对大规模数据请求。此外,通过实时监控与日志记录模块,可以确保每一步操作均有迹可循,同时迅速定位并排除潜在问题。

其次,在进行批量集成时,需要考虑到两者之间的数据格式差异。我们设计了一套定制化的数据映射流程,从而实现不同字段间的一致性转换。例如,针对日期格式、金额精度等可能存在差异的信息,会作出相应标准化处理,以满足目标平台的要求。

对于大量数据快速写入至钉钉,则利用批量处理及多线程优化操作,加速了topapi/processinstance/create接口的调用速度。同时,引入异常处理与错误重试机制,不仅提高稳定性,还显著降低因网络波动或临时故障导致的数据传输失败率。

最后,在整个过程中,多维度监控手段包括性能分析、状态跟踪以及报表生成均发挥着重要作用,使得所有环节透明化、高效运转。这不仅提升了业务联动效率,也为日后的维护管理提供了宝贵依据。 轻易云数据集成平台金蝶集成接口配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,获取付款申请单的数据并进行初步加工。

接口调用配置

首先,我们需要配置调用金蝶云星空的executeBillQuery接口。以下是元数据配置中的关键参数:

  • API: executeBillQuery
  • Method: POST
  • Number: FBillNo
  • ID: FBillNo
  • Pagination: 每页500条记录
  • ID Check: true

请求字段包括但不限于以下内容:

  • 实体主键:FID
  • 单据编号:FBillNo
  • 单据状态:FDOCUMENTSTATUS
  • 创建人:FCREATORID
  • 审核人:FAPPROVERID
  • 创建日期:FCREATEDATE
  • 结算组织:FSETTLEORGID.fname

其他请求参数如分页、过滤条件等也需要一并配置。

请求参数构建

根据元数据配置,我们需要构建请求参数。以下是一个示例请求体:

{
  "FormId": "CN_PAYAPPLY",
  "FieldKeys": "FID,FBillNo,FDOCUMENTSTATUS,FCREATORID,FAPPROVERID,FCREATEDATE,FSETTLEORGID.fname",
  "FilterString": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'",
  "Limit": 500,
  "StartRow": 0,
  "TopRowCount": true
}

在这个请求体中,FormId指定了业务对象表单Id为付款申请单(CN_PAYAPPLY),FieldKeys定义了需要查询的字段集合,FilterString用于设置过滤条件,分页参数包括每页记录数(Limit)和起始行索引(StartRow)。

数据获取与初步加工

通过上述配置和请求体,我们可以向金蝶云星空发送POST请求,获取付款申请单的数据。响应数据通常是一个JSON数组,每个元素对应一条记录。

获取到数据后,需要对其进行初步加工。例如,可以根据业务需求筛选出特定状态的单据,或者对日期字段进行格式化处理。

以下是一个简单的数据加工示例:

import json
from datetime import datetime

# 假设response_data是从接口获取到的JSON响应数据
response_data = '''
[
    {"FID": "1", "FBillNo": "1001", "FDOCUMENTSTATUS": "A", "FCREATEDATE": "2023-01-01"},
    {"FID": "2", "FBillNo": "1002", "FDOCUMENTSTATUS": "B", "FCREATEDATE": "2023-02-01"}
]
'''

# 将JSON字符串解析为Python对象
data = json.loads(response_data)

# 筛选出状态为"A"的单据,并格式化创建日期
filtered_data = []
for record in data:
    if record["FDOCUMENTSTATUS"] == "A":
        record["FCREATEDATE"] = datetime.strptime(record["FCREATEDATE"], "%Y-%m-%d").strftime("%d/%m/%Y")
        filtered_data.append(record)

print(filtered_data)

在这个示例中,我们筛选出状态为"A"的单据,并将创建日期格式化为“日/月/年”的形式。

数据清洗与转换

在初步加工之后,还需要进一步清洗和转换数据,以便后续写入目标系统。在这一阶段,可以进行更复杂的数据处理操作,如字段映射、单位转换、异常值处理等。

例如,如果需要将金额字段从一种货币转换为另一种货币,可以使用汇率信息进行转换:

def convert_currency(amount, rate):
    return amount * rate

# 假设我们有一个汇率信息
exchange_rate = 6.5

for record in filtered_data:
    if 'FPAYAMOUNTFOR_H' in record:
        record['FPAYAMOUNTFOR_H'] = convert_currency(float(record['FPAYAMOUNTFOR_H']), exchange_rate)

通过以上步骤,我们可以完成从金蝶云星空获取付款申请单数据并进行初步加工,为后续的数据写入和集成奠定基础。 如何开发用友BIP接口

金蝶付款申请单到钉钉供应商月结付款的ETL转换与写入

在数据集成过程中,将金蝶付款申请单的数据转换为钉钉API接口所能接收的格式,并最终写入钉钉平台,是一个复杂且技术性极强的任务。本文将深入探讨如何使用轻易云数据集成平台完成这一过程,重点关注ETL(Extract, Transform, Load)转换步骤。

数据请求与清洗

首先,从金蝶系统中提取原始数据。这一步骤包括对源数据进行清洗和预处理,以确保数据的完整性和一致性。由于本文重点在于ETL转换,因此不详细展开此部分。

数据转换与写入

接下来,进入数据转换与写入阶段。我们需要将清洗后的数据按照钉钉API接口要求的格式进行转换,并通过API接口将数据写入钉钉平台。

钉钉API接口元数据配置

根据提供的元数据配置,目标平台为钉钉,其API接口为topapi/processinstance/create,请求方法为POST。以下是具体的字段配置:

{
  "api": "topapi/processinstance/create",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "process_code",
      "label": "审批流的唯一码",
      "type": "string",
      "describe": "process_code在审批流程编辑页面的URL网址中获取。",
      "value": "PROC-A48FE992-9F20-4D1D-BDDB-92208230F790"
    },
    {
      "field": "originator_user_id",
      "label": "发起人",
      "type": "string",
      "describe": "审批实例发起人的userid。",
      "value": "_findCollection find user_id from 02445559-061a-39c3-a15b-ba326de7e9a8 where name={F_VAOJ_FQR}"
    },
    {
      "field": "dept_id",
      "label": "发起人所在部门",
      "type": "string",
      "describe": "发起人所在的部门,如果发起人属于根部门,传-1。",
      "value": "_findCollection find leader_in_dept.0.dept_id from 02445559-061a-39c3-a15b-ba326de7e9a8 where name={F_VAOJ_FQR}"
    },
    {
      "field": "form_component_values",
      "label": "审批流表单参数",
      "type": "object",
      ...
    }
  ]
}
字段映射与转换
  1. process_code: 固定值PROC-A48FE992-9F20-4D1D-BDDB-92208230F790
  2. originator_user_id: 动态值,通过查找金蝶系统中的用户ID获取。
  3. dept_id: 动态值,通过查找金蝶系统中用户所属部门ID获取。
  4. form_component_values: 表单参数,包括多个子字段,需要逐一映射和转换。

以下是关键字段的映射和转换逻辑:

{
  ...
  {
    "field": "form_component_values",
    ...
    {
      // 单据编号
      {"field":"单据编号","type":"string","value":"{FBillNo}"},

      // 货款所属项目
      {"field":"货款所属项目","type":"string","value":"{FSETTLEORGID}","mapping":"6295fa8ab3945438dd215d24","mappingDirection":"reverse"},

      // 供应商名称
      {"field":"供应商名称","type":"string","value":"{FCONTACTUNIT}"},

      // 付款时间
      {"field":"付款时间","type":"string","value":"{{FCREATEDATE|date}}"},

      // 货款属性
      {"field":"货款属性","type":"string","value":"_function case '{F_VAOJ_HKSX}' when 'CP' then '成品' else '辅料' end"},

      // 备注
      {"field":"备注","type":"string","value":"备注为:{F_VAOJ_Remarks}"},

      // 付款金额(元)
      {"field":"付款金额(元)","type":"string","value":"{FAPPLYAMOUNTFOR_H}"},

      // 收款人(公司名称)
      {"field":"收款人(公司名称)","type":"string","value":"{FEACHCCOUNTNAME}"},

      // 收款人帐号
      {"field":"收款人帐号","type":"string","value":"{FEACHBANKACCOUNT}"}
    }
  }
}
数据写入

完成上述字段映射和转换后,通过HTTP POST请求将数据发送至钉钉API接口,实现数据写入操作。

import requests

url = 'https://oapi.dingtalk.com/topapi/processinstance/create'
headers = {'Content-Type': 'application/json'}
data = {
    'process_code': 'PROC-A48FE992-9F20-4D1D-BDDB-92208230F790',
    'originator_user_id': originator_user_id,
    'dept_id': dept_id,
    'form_component_values': form_component_values
}

response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
    print("Data successfully written to DingTalk")
else:
    print("Failed to write data to DingTalk")

通过以上步骤,我们成功地将金蝶付款申请单的数据转换并写入到钉钉平台,实现了跨系统的数据集成。 用友BIP接口开发配置

Copyright Notice

The article "如何实现金蝶云与钉钉供应商月结付款流程的数据集成" is original content owned by 广东轻亿云软件科技有限公司. Reposting is welcome, provided the source (including the original link) is credited in a prominent position.