历史版本6 :将包含两个子表单的简道云表单数据落库 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

简道云表单中包含两个子表单,其中一个子表单中包含成员单选、部门单选控件。如下图所示:

1696934652944651.png

已有数据如下图所示,现希望将该表单的数据落库。

1696934678149706.png

1.2 实现思路

使用「简道云输入」算子读取表单数据,将主表单数据、零部件明细子表单、负责人子表单分别存储到三张表中。

注:简道云表单数据若存储到一张数据表中,会造成数据膨胀。

1.3 注意事项

本文示例场景中,后续若想更新子表单数据(本文示例选择的方案一):

1)方案一:

子表单数据落库前写入方式选择「清空目标表,再写入数据」。

2)方案二:

子表单数据解析后,保留子表单 id 字段作为落库后的主键(例如 2.4.2、2.5.2 节中 json 解析时勾选 _id 字段),落库前自动建表时,将 _id 作为主键,写入方式选择「追加写入数据」,设置主键冲突策略为「主键冲突,覆盖目标表的数据」。

1697437254652456.png

2. 操作步骤编辑

2.1 简道云表单字段处理

在简道云表单接入前,建议提前设置字段别名,否则接入到 FineDataLink 中时会使用字段原始名,不便于在 FineDataLink 中进行业务处理。

进入简道云应用,进入表单的编辑界面,点击「扩展功能>数据推送>设置字段别名」。如下图所示:

点击展开更多
71.png

2.2 新建简道云数据连接

需要 新建简道云数据连接,以便「简道云输入」算子读取简道云数据。

72.png

2.3 主表单数据落库

将主表单数据落库,主表单数据如下图所示:

1697099064280457.png

2.3.1 读取简道云表单数据

1)新建定时任务,拖入「数据转换」节点,进入「数据转换」节点。

2)拖入「简道云输入」算子,选择要读取的简道云表单。

其中,数据连接处显示有权限的,且已配置的简道云数据连接,此处选择前面配置好的数据连接「简道云」;设置要读取的简道云表单及它所在的应用。如下图所示:

73.png

点击「数据预览」,可看到子表单数据为 JSON 格式,若想将子表单数据落库,落库前需要解析。如下图所示:

74.png

2.3.2 剔除不必要字段

由于我们要将主表单数据落库,一些不需要的字段需要在落库前剔除。

1)拖入「字段设置」算子,只保留number、date、equipment_name、total_price字段,其余字段都删除。

2)点击「数据预览」,如下图所示:

1696936029682878.png

2.3.3 主表单数据输出

1)拖入DB表输出算子,将主表单数据输出。如下图所示:

77.png

2)「写入方式」Tab 下,写入方式选择清空目标表,再写入数据」,将主表单数据全量写入目标表中。

注:为便于后续更新落库后的主表单数据、落库后的两个子表单数据,写入方式选择「清空目标表,再写入数据」。

3)点击右上角保存按钮。

2.3.4 效果查看

1)右键点击节点,选择运行节点」。如下图所示:

78.png

2)运行成功后,可看到主表单数据已落库。如下图所示:

1696936344918951.png

2.4 子表单-零部件明细数据落库

最终输出的数据应包括子表单数据(component_name、component_types、component_model、unit_price_of_components、number_of_components、prices)、number 字段(主表单主键字段便于之后子表单与主表单数据关联)。如下图所示:

1697099183736241.png

2.4.1 读取简道云表单数据

再拖入一个「数据转换」节点,进入数据转换节点,拖入「简道云输入」算子,选择要读取的简道云表单。

步骤与本文 2.3.1 节相同。

2.4.2 解析子表单数据

由于子表单字段(part_detail_information)为 JSON 格式数据,所以落库前需要进行解析。

拖入JSON解析算子,解析 part_detail_information 字段;由于要保留 number 字段(主表单主键字段便于之后子表单与主表单数据关联),需要勾解析后保留所有上游输出字段」按钮。如下图所示:

80.png

2.4.3 剔除不必要字段

拖入「字段设置」算子,保留主表单主键字段(本文示例中为 number),便于之后可与主表单数据合并;保留解析后的子表单字段。

即保留:number、component_name、component_types、component_model、unit_price_of_components、number_of_components、prices 字段,删除其余字段。

2.4.4 子表单数据输出

参考本文 2.3.3 节内容,将子表单数据输出。

2.4.5 效果查看

参考本文 2.3.4 节步骤,运行该数据转换节点,可看到子表单数据已落库。如下图所示:

1696937406736565.png

2.5 子表单-负责人数据落库

最终输出的数据应包括子表单数据(level 字段,部门名称、成员名称字段)、number 字段(主表单主键字段便于之后子表单与主表单数据关联)。

1697099352649403.png

2.5.1 读取简道云表单数据

再拖入一个「数据转换」节点,进入「数据转换」节点,拖入「简道云输入」算子,选择要读取的简道云表单。

步骤与本文 2.3.1 节相同。

2.5.2 解析子表单数据

简道云表单中若包含部门单选字段、成员单选字段,使用「简道云输入」算子读取后,解析说明请参见:解析字段

由于子表单字段(head)为 JSON 格式数据,所以落库前需要进行解析,需要解析出 level 字段,部门名称、成员名称字段。

JSON 节点解析时,若直接解析出level、department 下的 name 字段、member 下的 name 字段,将报错JSON解析结果行数不匹配,目前 FDL 不支持 JSON 解析时同时提取不同层级的字段并扩展的。

所以我们需要进行三次解析,先解析出 level 字段、再一次解析出 department 下的 name 字段、member 下的 name 字段。

1697100009672694.png

1)拖入「JSON解析」算子,解析 head 字段;由于我们要保留主表单的 number 字段,所以勾解析后保留所有上游输出字段」按钮;解析 level、department、member 字段。如下图所示:

1697097928645666.png

点击「数据预览」,department、member字段仍为 JSON 格式,需要进一步解析。

1697098043601855.png

2)拖入「JSON解析」算子,解析 department 字段,勾选 name 字段(部门名称);解析后的 name 字段重命名为部门名称。如下图所示:

简道云表单中若包含部门单选字段、成员单选字段,使用「简道云输入」算子读取后,解析说明请参见:解析字段

1697098214603963.png

3)拖入「JSON解析」算子,解析 member 字段,勾选 name 字段(成员名称);解析后的 name 字段重命名为「成员名称」。如下图所示:

1697098434567439.png

2.5.3 剔除不必要字段

拖入「字段设置」算子,保留主表单主键字段(本文示例中为 number),便于之后可与主表单数据合并;保留解析后的子表单字段。

即保留:number、部门名称、成员名称字段,删除其余字段。

2.4.4 子表单数据输出

参考本文 2.3.3 节内容,将子表单数据输出。

2.4.5 效果查看

参考本文 2.3.4 节步骤,运行该数据转换节点,可看到子表单数据已落库。如下图所示:

1697098636862613.png