致远A8+数据集成到金蝶云星空的技术实践:正式OA-ERP外购件采购申请单
在企业信息系统中,跨平台的数据集成是一个复杂而关键的任务。本文将重点讨论如何实现致远A8+与金蝶云星空之间的数据对接,以"正式OA-ERP外购件采购申请单"为例,通过API接口的运用,实现高效、可靠的数据传输。
系统概览及主要挑战
- 
高效数据写入
- 在本案例中,我们需要将大量来自致远A8+系统的数据快速、高吞吐量地写入到金蝶云星空。这不仅要求接口具有较高的并发处理能力,还需保障数据不丢失、不重复。
 
 - 
实时监控和告警
- 数据流动过程中的透明度和可视化管理是确保集成成功的重要环节。通过集中监控和告警机制,可以实时跟踪各个数据集成任务的状态,并及时发现并解决问题。
 
 - 
自定义转换逻辑
- 由于两者之间存在不同的数据结构和业务需求,需要支持自定义转换逻辑,以便在传输过程中动态调整数据格式和内容。
 
 - 
异常处理与重试机制
- 为应对API调用失败以及网络抖动等突发情况,必须设计完善的异常处理流程和重试机制,确保每一条记录最终都能正确进入目标系统。
 
 
实施步骤及技术要点
- 
数据获取(致远A8+ API)
/seeyon/rest/flow/FromFinish/{templateCode}/{startTime}/{endTime}通过该接口定时抓取外购件采购申请单,将其批量导出进行后续处理。需注意分页问题及限流控制,以提高请求效率并避免对源系统造成过大负载。
 - 
批量写入(金蝶云星空 API)
batchSave使用
batchSave接口完成多条记录的一次性导入,从而显著减少API调用次数,提高整体性能。此外还需配置必要的映射关系,使得输入输出字段对应合理,保证数据准确落地。 - 
指标监控与质量检测 集成过程中的每一步都由实时日志记录,并通过仪表盘展示,可随时查看运行状态。同时,对于出现异常或错误的信息,会触发预设命令进行自动纠正或再尝试操作,从而最大程度降低人工干预成本。
 
以上即为本案例研究开篇部分。在后续文章中,我们会更详细讲解每个阶段所遇到的问题

调用致远A8+接口获取并加工数据的技术实现
在数据集成过程中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用致远A8+接口/seeyon/rest/flow/FromFinish/{templateCode}/{startTime}/{endTime}来获取并加工数据。
接口配置与调用
首先,我们需要了解该接口的基本信息和参数配置。根据元数据配置,接口的路径为/seeyon/rest/flow/FromFinish/{templateCode}/{startTime}/{endTime},采用GET方法进行请求。以下是具体的参数说明:
templateCode: 模板代码,类型为字符串,在本案例中固定为WGJCGSQD。startTime: 起始时间,类型为字符串,使用上次同步时间({{LAST_SYNC_TIME|date}})。endTime: 结束时间,类型为字符串,通过函数计算得到当前时间的下一天(_function DATE_FORMAT(DATE_ADD('{{CURRENT_TIME|date}}', INTERVAL 1 DAY), '%Y-%m-%d'))。
请求参数配置
在请求参数中,我们需要设置以下字段:
{
  "field": "templateCode",
  "label": "templateCode",
  "type": "string",
  "value": "WGJCGSQD"
},
{
  "field": "startTime",
  "label": "startTime",
  "type": "string",
  "value": "{{LAST_SYNC_TIME|date}}"
},
{
  "field": "endTime",
  "label": "endTime",
  "type": "string",
  "value": "_function DATE_FORMAT(DATE_ADD('{{CURRENT_TIME|date}}', INTERVAL 1 DAY), '%Y-%m-%d')"
},
{
  "field": "qcloudflowList",
  "label": "qcloudflowList",
  "type": "string",
  "value": "qcloudflowList"
}
这些参数确保了我们能够准确地获取所需的数据。
数据处理与自动填充响应
在获取到数据后,我们需要对其进行处理。根据元数据配置中的autoFillResponse: true,平台会自动将响应结果填充到相应的数据结构中。这一步极大简化了开发者的工作,使得数据处理更加高效。
数据清洗与转换
在数据清洗阶段,我们需要确保获取的数据符合目标系统的要求。这包括但不限于:
- 数据格式转换:将日期格式统一转换为目标系统所需的格式。
 - 数据过滤:剔除无效或重复的数据。
 - 数据校验:确保所有必填字段均有值且符合预期格式。
 
例如,对于日期字段,可以使用如下代码进行格式转换:
import datetime
def convert_date_format(date_str):
    date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
    return date_obj.strftime('%Y/%m/%d')
# 示例调用
converted_date = convert_date_format('2023-10-01')
print(converted_date) # 输出: '2023/10/01'
数据写入目标系统
完成数据清洗与转换后,我们需要将处理后的数据写入目标系统。在轻易云平台上,这一步通常通过配置相应的写入操作来实现。例如,可以配置一个POST请求,将处理后的数据发送到目标系统的API接口。
{
  "api": "/target/system/api/path",
  "method": "POST",
  ...
}
通过以上步骤,我们实现了从致远A8+系统获取、清洗、转换并写入目标系统的完整流程。这一过程不仅提高了数据集成效率,也确保了数据的一致性和准确性。

轻易云数据集成平台的ETL转换与金蝶云星空API接口集成案例
在轻易云数据集成平台中,ETL(Extract, Transform, Load)过程是数据生命周期管理的关键步骤之一。本文将深入探讨如何将已经集成的源平台数据进行ETL转换,并通过金蝶云星空API接口写入目标平台。
元数据配置解析
以下是元数据配置,用于将外购件采购申请单的数据写入金蝶云星空:
{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"111","parser":{"name":"ConvertObjectParser","params":"FNUMBER"},"value":"CGSQD01_SYS"},
    {"field":"FApplicationDate","label":"申请日期","type":"string","describe":"111","value":"{{mainData.日期1|datetime}}"},
    {"field":"FRequestType","label":"申请类型","type":"string","describe":"111","value":"Material"},
    {"field":"FApplicationOrgId","label":"申请组织","type":"string","describe":"111","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
    {"field":"FCurrencyId","label":"币别","type":"string","describe":"111","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"111","value":"{{mainData.流水号}}"},
    {"field":"FExchangeTypeId","label":"汇率类型","type":"string","describe":"111","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"HLTX01_SYS"},
    {"field": "F_Boey_JQ", "label": "交期", "type": "string", "value": "{{mainData.交期|datetime}}"},
    {
      "field": "FEntity",
      "label": "明细信息",
      "type": "array",
      "describe": "111",
      "value": "detail_list",
      "children":[
        {"field": "FMaterialId", "label": "物料编码", "type": "string", "describe": "物料编码", 
            "parser":{"name": "ConvertObjectParser", 
            "params": 
            "FNumber"}, 
            "value":
            "{{detail_list.物料编码}}"
        },
        {"field": 
        "FReqQty", 
        "label":
        "申请数量", 
        "type":
        "string", 
        "describe":
        "申请数量", 
        "value":
        "{{detail_list.数量}}"
       },
       {
            "field":
            "F_Boey_YT", 
            "label":
            "用途", 
            "type":
            "string", 
            "describe":
            "备注", 
            "value":
            "{{detail_list.用途}}"
         }
     ]
   }
 ],
  ...
}
数据转换与写入过程
数据提取与清洗
首先,从源系统提取原始数据并进行必要的清洗操作。清洗操作包括去除无效数据、标准化日期格式等。清洗后的数据将被映射到目标平台所需的字段格式。
数据转换
在元数据配置中,我们定义了多个字段及其对应的解析器和值。例如,FBillTypeID 字段使用 ConvertObjectParser 将值 CGSQD01_SYS 转换为金蝶云星空能够识别的对象格式。类似地,其他字段如 FCurrencyId, FExchangeTypeId 等也使用相应的解析器进行转换。
{
  ...
  {
    field: 'FBillTypeID',
    label: '单据类型',
    type: 'string',
    describe: '111',
    parser: { name: 'ConvertObjectParser', params: 'FNUMBER' },
    value: 'CGSQD01_SYS'
  },
  ...
}
构建请求体
根据元数据配置,构建符合金蝶云星空API接口要求的请求体。以下是一个示例请求体:
{
  FormId: 'PUR_Requisition',
  Operation: 'BatchSave',
  IsAutoSubmitAndAudit: true,
  IsVerifyBaseDataField: false,
  Model:
   {
     FBillTypeID: { FNumber: 'CGSQD01_SYS' },
     FApplicationDate: '2023-10-10T00:00:00Z',
     FRequestType: 'Material',
     FApplicationOrgId: { FNumber: '100' },
     FCurrencyId: { FNumber: 'PRE001' },
     FBillNo: '202310100001',
     FExchangeTypeId: { FNumber: 'HLTX01_SYS' },
     F_Boey_JQ: '2023-11-10T00:00:00Z',
     FEntity:
      [
        {
          FMaterialId:{ FNumber:'MAT001'},
          FReqQty:'100',
          F_Boey_YT:'生产用'
        }
      ]
   }
}
数据写入
使用HTTP POST方法,将构建好的请求体发送到金蝶云星空API接口进行批量保存操作。确保在发送请求前,对所有必填字段进行验证,以避免因缺失或格式错误导致的数据写入失败。
const axios = require('axios');
axios.post('https://api.kingdee.com/k3cloud/batchSave', requestBody)
 .then(response => {
   console.log('Data saved successfully:', response.data);
 })
 .catch(error => {
   console.error('Error saving data:', error);
 });
技术要点总结
- 解析器应用:通过 
ConvertObjectParser等解析器,将源系统的数据格式转换为目标系统所需格式。 - 动态值替换:利用模板语法如 
{{mainData.日期1|datetime}}动态替换值,实现灵活的数据映射。 - 请求体构建:根据元数据配置,精确构建符合目标系统API接口要求的请求体。
 - 错误处理:在实际操作中,应对可能出现的错误进行捕获和处理,以确保数据写入过程的可靠性。
 
通过上述步骤,我们成功实现了从源平台到金蝶云星空的数据ETL转换与写入,为企业实现高效的数据集成提供了有力支持。
