---
title: "4.2.7.1 数据源sql片"
docId: "353323793491427328"
source: "https://weapp.eteams.cn/build/techdoc/wdoc/index.html#/public/repository/9c2e5f92-03b4-4207-9b22-a0c1dd79ac56/doc/353323793491427328"
---
> 所属包：weaver-common-form-stat
> 
> 所属类：com.weaver.common.form.stat.service.serarch.FormDataSearchService

### 1 数据源sql片支持分段式sql返回（完整sql、查询列、查询表、过滤条件）

注意：分段sql 需要开启DataSourceSearchParam.openMainTableOrOneSubForm 为true

**方法名：**

```java
    /**
     * 子表控件对接数据源使用sql 支持分段式sql
     * 分段sql 需要开启openMainTableOrOneSubForm 为true
     * 支持返回完整sql 查询字段 查询表 查询条件
     * @param param 数据源搜索参数
     * @param employee 员工信息
     * @return 数据源表单数据sql片
     */
    Map<String,String> dataSourceFormDataSql(DataSourceSearchParam param, SimpleEmployee employee);
```

**参数：**

| 参数名 | 必传 | 类型 | 类型所属包路径 | 描述 |
| --- | --- | --- | --- | --- |
| param | 是 | DataSourceSearchParam | com.weaver.common.form.[stat.domain.search](http://stat.domain.search).DataSourceSearchParam | 表单数据源查询条件 |
| employee | 是 | SimpleEmployee | com.weaver.teams.domain.user.SimpleEmployee | 用户信息（必须包含id和tenantKey） |
| **返回值：** |  |  |  |  |

**返回值：**[**java.util.Map<String,String>**](http://java.util.Map)

segmentedSql为”true”时，返回分段式sql，  ”false”时取completeSql 走原dataSourceFormData接口逻辑

| key | 描述 |
| --- | --- |
| segmentedSql | 判断是否返回分段式sql,字符串（“true”,“false”）,”false”取完整sql拼接 |
| completeSql | 完整sql,查询条件没有查询的自定义字段时，返回值为空 |
| columnSql | 表单自定义字段查询列 |
| tableSql | 查询的表名 |
| whereConditionSql | 过滤条件 |
| appendFormDataTable | 业务表与分段式sql left join关联的表名 |
| appendFormDataTableAs | 业务表与分段式sql left join关联的表  别名(表单字段查询、过滤条件会用到这个) |
| appendFormDataTableOnFormDataId | 业务表与分段式sql left join关联  on条件 使用业务表的数据ID和表单数据ID关联的列名 |
| columnSqlAs | 表单自定义字段查询列的列名，逗号拼接。这里不包含[com.weaver.common.form.stat.domain.search](http://com.weaver.common.form.stat.domain.search).DataSourceSearchParam.customSqlInformation.customSqlFieldList模块自定义查询列列名。 |

```sql
分段式sql拼接示例：
select 
formreportId,
{columnSql}
from formreport fr
left join {appendFormDataTable} {appendFormDataTableAs} on fr.form_data_id = {appendFormDataTableAs}.{appendFormDataTableOnFormDataId}
{tableSql}
where 
 {whereConditionSql}

```
