案例分享:金蝶其他应收单对接纷享销客账户支出流水--账户信息未填
在本篇技术文章中,我们将深入探讨一个实际运行的系统对接集成案例。通过本次项目,成功实现了金蝶云星空的数据无缝传输到纷享销客,尤其是针对"金蝶其他应收单"与"纷享销客账户支出流水"的特定场景。
首先,在数据获取方面,我们利用金蝶云星空提供的executeBillQuery API,实现了对“其他应收单”数据的精准抓取。此接口支持分页及限流处理,有效避免了由于大规模数据调用导致的网络拥塞和接口超时问题。同时,我们设定了定时任务机制,确保每隔一定时间段就能可靠地从金蝶云星空获取最新的数据快照。
然后,为解决两端系统间的数据格式差异,我们设计了一套数据转换逻辑。这包括字段映射、类型转换以及必要的数据清洗等步骤。例如,将获取到的数据重新格式化,以符合纷享销客API/cgri/crm/v2/data/create所需的JSON结构,从而顺利完成批量写入操作。
另外,在整个集成过程中,对于可能出现的数据异常情况,例如某条记录字段缺失或值不合法,我们实现了一套完善的错误重试机制和实时监控日志记录系统。一旦检测到接口调用失败,即可根据日志信息及时定位并解决问题,如自动重试或手动干预处理,极大提升了系统稳定性和数据完整度。
通过这些精密设计与实施方法,本次项目不仅充分展示了如何高效且可靠地进行跨平台数据集成,也为未来类似需求提供了一份成熟且值得借鉴的方法论。后续部分将详细介绍具体实施细节与代码示例。

调用源系统金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,获取并加工数据,以实现与纷享销客账户支出流水的对接。
接口配置与请求参数
首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery接口。以下是元数据配置的详细内容:
{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FBillNo",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "request": [
    {"field": "FBillNo", "label": "单据编号", "type": "string", "value": "FBillNo"},
    {"field": "FDATE", "label": "业务日期", "type": "string", "value": "FDATE"},
    {"field": "FAMOUNTFOR", "label": "总金额", "type": "string", "value": "FAMOUNTFOR"},
    {"field": "FCONTACTUNIT_FNumber", "label": "往来单位", "type": "string", "value":"FCONTACTUNIT.FNumber"},
    {"field": "FSALEERID_FName", "label": "销售员",    "type":"string","value":"FSALEERID.FName"},
    {"field":"F_PRSH_Assistant_imu","label":"用途","type":"string","value":"F_PRSH_Assistant_imu.fnumber"}
  ],
  ...
}请求参数解析
- API及方法:使用POST方法调用executeBillQueryAPI。
- 分页设置:每次请求获取100条记录,通过分页参数控制数据量。
- 字段映射:定义了多个字段,如单据编号(FBillNo)、业务日期(FDATE)、总金额(FAMOUNTFOR)等,确保从源系统获取到所需的数据。
- 过滤条件:通过FilterString字段设置过滤条件,例如FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and F_PRSH_Assistant_imu.fnumber in ('01'),确保只获取符合条件的数据。
数据请求与清洗
在实际操作中,首先需要构建请求体,并根据元数据配置发送HTTP POST请求至金蝶云星空接口。以下是一个示例请求体:
{
  ...
  {
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          {
                            ...
                            {
                              ...
                              {
                                ...
                                {
                                  ...

### 数据集成平台生命周期的第二步:ETL转换与写入纷享销客API接口
在数据集成过程中,将源平台的数据转换为目标平台能够接收的格式是关键的一步。本文将深入探讨如何使用轻易云数据集成平台,将金蝶其他应收单的数据通过ETL(Extract, Transform, Load)转换后,写入到纷享销客的账户支出流水中。
#### API接口配置解析
在进行数据写入之前,我们需要了解目标平台的API接口配置。以下是针对纷享销客API接口的元数据配置:
```json
{
  "api": "/cgi/crm/v2/data/create",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "data",
      "label": "数据map",
      "type": "object",
      "children": [
        {
          "field": "object_data",
          "label": "表头",
          "type": "object",
          "children": [
            {"field":"dataObjectApiName","label":"对象的api_name","type":"string","value":"AccountTransactionFlowObj"},
            {"field":"name","label":"单号","type":"string","value":"{FBillNo}"},
            {"field":"transaction_date","label":"交易日期","type":"string","value":"_function ROUND((TIMESTAMPDIFF(MICROSECOND, '1970-01-01 00:00:00', STR_TO_DATE('{FDATE}', '%Y-%m-%dT%H:%i:%s')) / 1000),0)"},
            {"field":"customer_id","label":"客户","type":"string","value":"_findCollection find _id from b4342822-5038-3e8f-9bdf-3684ac8a551d where account_no={FCONTACTUNIT_FNumber}"},
            {"field":"owner","label":"负责人","type":"string","value":"_findCollection find user_id from ad096beb-313f-340a-b153-cdf7fdf9b6d7 where name={FSALEERID_FName}","parser":{"name":"StringToArray","params":","},"default":"FSUID_F56CEEA6EDDBFE10681577526DF83326"},
            {"field":"expense_type","label":"支出类型","type":"string","value":"2"},
            {"field":"expense_amount","label":"支出金额","type":"string","value":"{FAMOUNTFOR}"},
            {"field":"fund_account_id","label":"账户--表头没有账户信息,后续需要修改关联语句","type":"string","value":"_function case '{F_PRSH_Assistant_imu}' when '01' then '66b5c4b5537d670001a55d86' end"},
            {"field":"remark","label":"备注","type":"string"},
            {"field":"field_kingdee_document_number__c","label":"金蝶单号","type":"string","value":"{FBillNo}"}
          ]
        }
      ]
    }
  ],
  "otherRequest": [
    {
      "field": "currentOpenUserId",
      "label": "当前操作人userid",
      "type": "string",
      "value": "FSUID_F56CEEA6EDDBFE10681577526DF83326"
    }
  ]
}数据字段解析与转换
- 
对象的api_name: - dataObjectApiName字段指定了目标对象为- AccountTransactionFlowObj。
 
- 
单号: - name字段直接映射金蝶中的- FBillNo。
 
- 
交易日期: - transaction_date字段通过SQL函数将时间戳转换为所需格式。使用- ROUND((TIMESTAMPDIFF(MICROSECOND, '1970-01-01 00:00:00', STR_TO_DATE('{FDATE}', '%Y-%m-%dT%H:%i:%s')) / 1000),0)实现。
 
- 
客户ID: - customer_id字段通过查找集合中的客户编号来获取对应的客户ID,使用了- _findCollection find _id from b4342822-5038-3e8f-9bdf-3684ac8a551d where account_no={FCONTACTUNIT_FNumber}。
 
- 
负责人: - owner字段通过查找集合中的负责人名称来获取对应的用户ID,并使用了字符串转数组解析器- StringToArray。
 
- 
支出类型: - expense_type字段固定值为"2"。
 
- 
支出金额: - expense_amount字段直接映射金蝶中的金额字段- {FAMOUNTFOR}。
 
- 
账户信息: - fund_account_id字段使用条件判断语句- _function case '{F_PRSH_Assistant_imu}' when '01' then '66b5c4b5537d670001a55d86' end来确定具体账户ID。
 
- 
备注与金蝶单号: - remark和- field_kingdee_document_number__c分别映射备注和金蝶单号。
 
数据请求与写入
在完成上述字段映射和转换后,通过POST方法将数据发送到纷享销客API接口 /cgi/crm/v2/data/create。注意,当前操作人的用户ID也需要包含在请求中,以确保操作权限和记录准确性:
{
  "currentOpenUserId": "{FSUID_F56CEEA6EDDBFE10681577526DF83326}",
  ...
}实际案例应用
假设我们从金蝶系统获取了一条其他应收单,其关键数据如下:
{
  "FBillNo": "20231001001",
  "FDATE": "2023-10-01T12:00:00",
  ...
}经过ETL处理后,生成的请求体如下:
{
  "data":{
    ...
    {
      object_data:{
        dataObjectApiName:"AccountTransactionFlowObj",
        name:"20231001001",
        transaction_date:"1696156800000", // 转换后的时间戳
        customer_id:"1234567890", // 查找到的客户ID
        owner:"0987654321", // 查找到的用户ID
        expense_type:"2",
        expense_amount:"1000.00", // 示例金额
        fund_account_id:"66b5c4b5537d670001a55d86", // 条件判断后的账户ID
        remark:"",
        field_kingdee_document_number__c:"20231001001"
      }
    }
    ...
  },
  currentOpenUserId:"FSUID_F56CEEA6EDDBFE10681577526DF83326"
}通过上述配置和处理,我们成功地将源平台的数据经过ETL转换,写入到了目标平台纷享销客中。这一过程不仅确保了数据的一致性和准确性,也大大提高了业务处理效率。
