使用轻易云平台实现金蝶云星空数据转换与写入

  • 轻易云集成顾问-吕修远

寄售调拨出库对接销售订单的集成方案

在当前高度依赖数据的商业环境中,如何高效、准确地进行系统对接是每个企业面临的重要课题。针对吉客云与金蝶云星空之间的数据对接,我们通过具体案例“寄售调拨出库对接销售订单-已测试”,深入探讨了从获取数据到最终写入的完整解决方案。

吉客云作为源系统,通过其API接口erp.storage.goodsdocout.v2实时提取寄售调拨出库数据。我们利用轻易云平台强大的数据处理能力,对这些数据进行清洗和转换,以适应目标系统金蝶云星空的需求。在此过程中,涉及到分页和限流的问题,这是确保大规模并发请求下接口稳定性的关键。

为了实现高效的数据传输,我们使用了批量写入的方法,将处理好的数据通过金蝶云星空提供的batchSave API接口快速导入。从性能角度来看,这种方式显著提升了吞吐量,极大缩短了整体集成时间。

此外,为保证各环节不出现漏单情况,我们部署了一套实时监控与日志记录体系,随时跟踪和分析任务状态及执行结果。一旦发现异常,可以及时告警,并根据设置自动触发重试机制,从而提高整个流程的可靠性。

本文将详细介绍从API调用、数据格式转换,到异常处理等技术要点,为类似场景下的数据集成提供脉络清晰的方法论指导。 用友与SCM系统接口开发配置

调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据

在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过配置元数据,调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据。

元数据配置解析

元数据配置是整个数据集成过程的基础,它定义了如何请求和处理数据。以下是对提供的元数据配置的详细解析:

{
  "api": "erp.storage.goodsdocout.v2",
  "effect": "QUERY",
  "method": "POST",
  "number": "goodsdocNo",
  "id": "goodsdocNo",
  "idCheck": true,
  "request": [
    {"field": "pageIndex", "label": "分页页码", "type": "string"},
    {"field": "pageSize", "label": "分页页数", "type": "string", "value": "50"},
    {"field": "goodsDocNo", "label": "出库单号", "type": "string"},
    {"field": "startDate", 
     "label": "创建时间的起始时间", 
     "type": "string", 
     "value":"{{LAST_SYNC_TIME|datetime}}"
    },
    {"field": "endDate", 
     "label":"创建时间的结束时间", 
     "type":"string", 
     "value":"{{CURRENT_TIME|datetime}}"
    },
    {"field":"inouttype","label":"类型","type":"string","describe":"201-销售出库 202调拨出库 203 = 盘亏出库 204-其他出库 205采购退货 206生产领料 207组装拆卸出库 208翻新出库 209报废出库 210残次品出库 211倒冲出库 212 包材出库 215维修还厂 231成本调整出库","value":"202"},
    {"field":"sourceBillNo","label":"来源单号","type":"string"},
    {"field":"warehouseCode","label":"仓库编号","type":"string"},
    {"field":"vendCode","label":"供应商编号(往来单位)","type":"string"},
    {"field":"billNo","label":"上游单据号(关联单号)","type":"string"},
    {"field":"userName","label":"创建人名称","type":"string"},
    {"field":"outBillNo","label":"外部单号(全模糊匹配)","type":"string"},
    {"field":"gmtModifiedStart","label":"主表更新时间起始","type":"string"},
    {"field":"gmtModifiedEnd","label":"主表更新时间截至","type":"string"},
    {"field":"selelctFields",
     "label":"返回参数",
     "type":"string",
     "value":
       ["goodsdocNo,inOutDate,gmtCreate,sourceBillNo,inouttype,vendCustomerCode,warehouseCode,warehouseName,inOutReason,redStatus,financeBillStatus,goodsDocDetailList.goodsNo,goodsDocDetailList.goodsName,goodsDocDetailList.quantity,goodsDocDetailList"]
    }
   ],
   ...
}

请求参数详解

  1. 分页参数

    • pageIndex:分页页码,用于控制请求结果的页数。
    • pageSize:分页页数,默认值为50,表示每次请求返回50条记录。
  2. 时间参数

    • startDateendDate:用于限定查询范围内的数据创建时间。startDate使用上次同步时间,endDate使用当前时间。
  3. 业务参数

    • inouttype:固定值为202,表示调拨出库。
    • goodsDocNo, sourceBillNo, warehouseCode, vendCode, billNo, userName, outBillNo, gmtModifiedStart, gmtModifiedEnd等字段用于进一步筛选和过滤数据。
  4. 返回参数

    • selelctFields:指定需要返回的字段列表,包括主表和明细表字段。

数据请求与清洗

在调用接口后,平台会根据配置自动填充响应,并进行必要的数据清洗。以下是关键步骤:

  1. 自动填充响应: 配置中的autoFillResponse: true确保了平台会自动将API响应的数据填充到目标表中,无需手动处理。

  2. 数据平铺: 配置中的beatFlat: ["goodsDocDetailList"]指示平台将嵌套的明细表字段平铺展开,以便后续处理。

  3. 条件过滤: 配置中的条件过滤确保仅保留符合业务需求的数据。例如,条件 [{"field": “goodsDocDetailList.quantity”, “logic”: “gt”, “value”: “0”}] 确保只保留数量大于0的记录。

异常处理与补救措施

为了应对可能出现的数据遗漏或异常情况,配置中还包含了异常处理和补救措施:

  • 定时任务: 使用crontab表达式 "9 2 * * *" 定义每天凌晨2点9分执行一次补救任务。

  • 接管请求: 在异常情况下,通过接管请求重新拉取过去三天的数据,以确保数据完整性。

"omissionRemedy":{
   ...
   {
      ...
      {
         ...
         {
            ...
            {
               ...
               {
                  ...
                  {
                     ...
                     {
                        ...
                        {
                           ...
                           {
                              ...
                              {
                                 ...
                                 {
                                    ...
                                    {
                                       ...
                                       {
                                          ...
                                          {
                                             ...
                                             {
                                                ...
                                                {
                                                   ...
![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将深入探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。

#### 1. API接口配置

在本案例中,我们使用金蝶云星空的`batchSave` API接口。该接口通过POST方法提交请求,主要参数包括单据编号(FBillNo)、销售组织(FSaleOrgId)、日期(FDate)、客户(FCustId)等。以下是元数据配置中的关键部分:

```json
{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "FBillNo",
  "id": "FBillNo",
  "name": "FBillNo",
  "idCheck": true,
  ...
}

2. 数据字段映射与转换

在数据转换过程中,需要将源平台的数据字段映射到目标平台的相应字段,并进行必要的格式转换。例如,销售组织、客户、调出仓库等字段需要通过ConvertObjectParser进行编号转换:

{
  "field": "FSaleOrgId",
  "label": "销售组织",
  "type": "string",
  "describe": "销售组织",
  "parser": {
    "name": "ConvertObjectParser",
    "params": "FNumber"
  },
  ...
}

同样地,日期字段需要直接从源数据中提取并传递给目标平台:

{
  "field": "FDate",
  "label": "日期",
  "type": "datetime",
  ...
}

3. 子表单明细处理

对于订单明细(FSaleOrderEntry),我们需要处理多个子字段,如物料编码、销售数量、库存组织和仓库。这些子字段同样需要进行相应的转换和映射:


{
  "field": "FSaleOrderEntry",
  ...
  "children": [
    {
      ...
      {
        "field": "FMaterialId",
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          {
                            ...
                            {
                              ...
![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/T14.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案