# 流程明细表多行之间字段值不能重复以及不能和已发起的流程重复

来源快照：`result_data_new_260518.json`

- 来源 ID：`1252649893829722216`
- 模块：低代码平台e-builder
- 目录：动作流 - 场景搭建
- space ID：`1157961794811633670`
- 原文链接：未提供
- 产品基线：未提供

## 正文

# 泛微e-cology10ESB中心应用场景专题介绍 

流程明细表多行之间字段值不能重复以及不能和已发起的流程重复

# 一、编写目的

实现用户提交流程时，添加明细数据时同一个字段的值不能重复添加，以及该字段的值也不能和之前已发起过的流程重复且告知具体哪行有重复数据的需求。

# 二、支持版本

ecology 10.0版本

# 三、流程表单搭建

1、在流程设置的工作流管理中搭建好对应的流程数据，需要有明细表以及校验重复的字段，该搭建的场景是用明细表的单行文本字段作为重复的校验字段

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252679997069164553&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252680087301529611&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

# 四、ESB中心相关配置

1、在ESB中心的动作流菜单中，新建动作流，整个动作流的配置需要用到 流程触发组件+数据汇总+筛选数据+条件+终止+循环+数据源查询组件

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252715361893621765&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

判断当前发起的流程本身是否存在重复行：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252703967379406850&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

判断当前发起的流程和已发起的流程否存在重复行：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252704104909643783&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

 

2、流程触发组件：触发组件选择流程触发，工作流选择搭建好的流程数据，触发时机根据自己需求自行配置

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252701991761559563&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

**判断当前发起的流程本身是否存在重复行的配置如下：**

3、

数据汇总组件：对流程的明细数据根据校验的重复字段单行文本进行汇总，具体配置如图：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252702404052787204&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

注：计数的单行文本--为了后面筛选组件去判断当前发起的流程是否存在重复行；子集的明细行号--是为了知道重复的行是哪行

4、

筛选数据组件：根据汇总的内容去筛选是否存在计数大于1的数据

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252710139197079555&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252710225061879815&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252710332512083970&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

5、条件组件：筛选数据组件筛选结果，若存在计数大于1的数据则说明存在重复的数据；用LEN_ARRY函数进行计算即可

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252710877925965827&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

6、终止组件：当满足条件进入条件内部时则说明存在重复行数据，在条件内部添加终止组件并给出相应的提示信息

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252711552240852998&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

**判断当前发起的流程和已发起的流程否存在重复行：**

7、循环组件：循环方式选择按表单明细表、多选浏览框、动态赋值数据循环遍历，数据来源于流程触发组件的明细表，通过循环组件去遍历流程明细表的所有数据，按行去遍历，具体配置如图：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252712505757614087&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

7、循环内部的数据源查询组件：查询已发起过的流程的明细数据和循环当前行的数据值是否存在一样值的数据，数据源选择工作流程表单下对应的明细表，条件为查非当前流程触发的流程数据，且和当前循环的明细行的单行文本字段值一样的数据，若查询的数量（需要开启返回总数的开关）大于0则说明存在重复数据

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252713450725449733&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252713618271584260&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252713811318153221&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252714052037124099&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

8、循环内部的条件组件：若查询数据源组件返回的数量大于0，则说明和已发起流程存在重复的数据![](https://weapp.eteams.cn/papi/file/preview?fileId=1252714498705858565&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

9、循环内部的条件下的终止组件：进入了条件组件则说明和已发起流程存在重复的数据，添加终止组件进行拦截并给出相应提示

# 五、展示效果：

**判断当前发起的流程本身是否存在重复行的配置如下：**

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252716066293424129&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

**判断当前发起的流程和已发起的流程否存在重复行：**

![](https://weapp.eteams.cn/papi/file/preview?fileId=1252716440042831874&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

#  六、导入包
