> **支持版本：10.0.2404.02、10.0.2406.01及后续版本**

允许通过此功能，在执行表格查询和关联e-Builder查询功能前，对即将查询的数据补充sql条件、调整数据内容等操作。（基于底层sql改造，建议使用自定义参数标识，避免污染核心功能）

## 使用方法：

### 1、实现接口

在二开服务依赖com.weaver:weaver-ebuilder-form-client，实现接口com.weaver.ebuilder.form.client.service.list.advice.ListDataAdvice，并注册为Spring Bean。

例：  
[图片附件未整合: ../../../../../_assets/223641009530077184/001-28ed77f85f.png]

### 2、处理数据

在实现类中可以获取到当前查询的相关信息，包含操作用户、表单信息、表格id、表单名称、前端请求参数、自定义参数等信息。

- 前置增强方法支持返回sql where判断，将拼接到查询sql中，以实现自定义条件过滤。（如a=’1’，不含where关键字）
- 后置增强方法支持修改即将返回的表头、数据，以实现自定义数据格式、内容的转换。

### 3、注册dubbo接口

在\*-dubbo.xml配置文件中添加以下标签："\<dubbo:service ref="ListDataAdviceDubboService" interface="com.weaver.ebuilder.form.client.service.list.advice.ListDataAdviceDubboService" timeout="240000" group="group"/\>"，其中ref、interface属性不允许修改，group属性可设定为自定义值，只需确保表单导入配置中填写的group属性值与您指定的RPC group一致即可。

### 4、配置

1、表格查询：通过nacos修改服务weaver-ebuilder-form.properties文件配置，添加需要的增强类配置信息，支持多项配置。

配置项及含义：

| 配置项 | 是否必填 | 含义 |
| --- | --- | --- |
| listId | 是 | 需要生效的表格id（多个以英文逗号分隔，支持配置”all\_list”，即对所有表格生效，需谨慎使用） |
| beanName | 是 | 二开服务中定义的springboot bean名称 |
| group | 是 | 注册dubbo接口步骤中定义的group |

示例：

```properties
weaver.ebuilder.form.list.listDataAdviceBeans[0].listId=6917877349202431758,6236919325546599131
weaver.ebuilder.form.list.listDataAdviceBeans[0].beanName=TestDataAdvice
weaver.ebuilder.form.list.listDataAdviceBeans[0].group=secondev
weaver.ebuilder.form.list.listDataAdviceBeans[1].listId=2000260301984270392
weaver.ebuilder.form.list.listDataAdviceBeans[1].beanName=TestDataAdvice
weaver.ebuilder.form.list.listDataAdviceBeans[1].group=secondev
```

listId可在表格预览页面通过url获取

# [图片附件未整合: ../../../../../_assets/223641009530077184/002-a1297689a4.png]

关联e-Builder查询数据功能增强

- 通过nacos修改服务weaver-ebuilder-form.properties文件配置，添加需要的增强类配置信息，支持多项配置。

配置项及含义：

| 配置项 | 是否必填 | 含义 |
| --- | --- | --- |
| fieldId | 是 | 需要生效的关联e-Builder字段id（多个以英文逗号分隔） |
| beanName | 是 | 二开服务中定义的springboot bean名称 |
| group | 是 | 注册dubbo接口步骤中定义的group |

示例：

```properties

weaver.ebuilder.form.list.ebuilderBrowserAdviceBeans[0].fieldId=990306483777527808,6236919325546599131
weaver.ebuilder.form.list.ebuilderBrowserAdviceBeans[0].beanName=TestListDataAdvice
weaver.ebuilder.form.list.ebuilderBrowserAdviceBeans[0].group=abaaba
weaver.ebuilder.form.list.ebuilderBrowserAdviceBeans[1].fieldId=6236919325546599131
weaver.ebuilder.form.list.ebuilderBrowserAdviceBeans[1].beanName=TestListDataAdvice
weaver.ebuilder.form.list.ebuilderBrowserAdviceBeans[1].group=abaaba
```

- 通过数据库持久化配置，调用rpc接口新增配置
  
  引入依赖
  
  ```xml
  <dependency>
      <groupId>com.weaver</groupId>
      <artifactId>weaver-ebuilder-form-client</artifactId>
  </dependency>
  ```
  
  插入配置接口（dubbo接口group是ebuilderform）

```java
package com.weaver.ebuilder.form.client.service.adviceconfig;

import com.weaver.ebuilder.form.common.entity.adviceconfig.AdviceConfigDto;
import com.weaver.ebuilder.form.common.entity.adviceconfig.enums.AdviceConfigTypeEnum;
import com.weaver.teams.domain.user.SimpleEmployee;

import java.util.List;

/**
 * @Description: 查询增强配置dubbo接口
 */
public interface AdviceConfigDubboService {

    /**
     * 新增增强配置
     * @param adviceConfigDtos 增强配置
     * @param adviceConfigTypeEnum 增强配置类型
     * @param user 人员
     */
    List<AdviceConfigDto> insertAdviceConfig(List<AdviceConfigDto> adviceConfigDtos, AdviceConfigTypeEnum adviceConfigTypeEnum, SimpleEmployee user);

    /**
     * 更新增强配置
     * @param adviceConfigDto 增强配置
     * @param user 人员
     */
    void updateAdviceConfig(AdviceConfigDto adviceConfigDto, SimpleEmployee user);

    /**
     * 删除增强配置
     * @param adviceConfigId 增强配置id
     * @param adviceConfigTypeEnum 增强配置类型
     * @param user 人员
     */
    void deleteAdviceConfig(Long adviceConfigId, AdviceConfigTypeEnum adviceConfigTypeEnum, SimpleEmployee user);
}
```

入参实体描述，目前支持了浏览框（adviceType传AdviceConfigTypeEnum.EBUILDERBROWSER）

**注：objId必须要传递**

```
package com.weaver.ebuilder.form.common.entity.adviceconfig;

import com.weaver.ebuilder.form.common.entity.adviceconfig.enums.AdviceConfigTypeEnum;
import lombok.Data;

/**
 * @Description: 查询数据增强配置
 */
@Data
public class AdviceConfigDto {

    private Long id;

    /**
     * 生效功能业务id
     * (根据具体业务传输id，id可以多个，使用英文逗号拼接)
     */
    private String businessId;

    /**
     * 实现bean名称
     */
    private String beanName;

    /**
     * dubbo分组
     */
    private String dubboGroup;

    /**
     * 增强功能类型
     */
    private AdviceConfigTypeEnum adviceType;

    /**
     * 表单id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long objId;
}
```

# 数据源eb表单查询数据功能增强

配置方法同表格查询,配置文件需要额外新增,如下所示：

```properties
weaver.ebuilder.form.list.dataSourceDataAdviceBeans[0].objId=6917877349202431758(支持all_list)
weaver.ebuilder.form.list.dataSourceDataAdviceBeans[0].beanName=TestDataAdvice
weaver.ebuilder.form.list.dataSourceDataAdviceBeans[0].group=secondev
```
