提交 e50158bc authored 作者: taojinlong's avatar taojinlong

feat(数据集): 行权限

上级 566a3170
package io.dataease.base.domain;
import java.io.Serializable;
import lombok.Data;
@Data
public class DatasetRowPermissions implements Serializable {
private String id;
private String authTargetType;
private Long authTargetId;
private String datasetId;
private String datasetFieldId;
private String filter;
private Long updateTime;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package io.dataease.base.mapper;
import io.dataease.base.domain.DatasetRowPermissions;
import io.dataease.base.domain.DatasetRowPermissionsExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface DatasetRowPermissionsMapper {
long countByExample(DatasetRowPermissionsExample example);
int deleteByExample(DatasetRowPermissionsExample example);
int deleteByPrimaryKey(String id);
int insert(DatasetRowPermissions record);
int insertSelective(DatasetRowPermissions record);
List<DatasetRowPermissions> selectByExample(DatasetRowPermissionsExample example);
DatasetRowPermissions selectByPrimaryKey(String id);
int updateByExampleSelective(@Param("record") DatasetRowPermissions record, @Param("example") DatasetRowPermissionsExample example);
int updateByExample(@Param("record") DatasetRowPermissions record, @Param("example") DatasetRowPermissionsExample example);
int updateByPrimaryKeySelective(DatasetRowPermissions record);
int updateByPrimaryKey(DatasetRowPermissions record);
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.dataease.base.mapper.DatasetRowPermissionsMapper">
<resultMap id="BaseResultMap" type="io.dataease.base.domain.DatasetRowPermissions">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="auth_target_type" jdbcType="VARCHAR" property="authTargetType" />
<result column="auth_target_id" jdbcType="BIGINT" property="authTargetId" />
<result column="dataset_id" jdbcType="VARCHAR" property="datasetId" />
<result column="dataset_field_id" jdbcType="VARCHAR" property="datasetFieldId" />
<result column="filter" jdbcType="VARCHAR" property="filter" />
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
id, auth_target_type, auth_target_id, dataset_id, dataset_field_id, `filter`, update_time
</sql>
<select id="selectByExample" parameterType="io.dataease.base.domain.DatasetRowPermissionsExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from dataset_row_permissions
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from dataset_row_permissions
where id = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from dataset_row_permissions
where id = #{id,jdbcType=VARCHAR}
</delete>
<delete id="deleteByExample" parameterType="io.dataease.base.domain.DatasetRowPermissionsExample">
delete from dataset_row_permissions
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="io.dataease.base.domain.DatasetRowPermissions">
insert into dataset_row_permissions (id, auth_target_type, auth_target_id,
dataset_id, dataset_field_id, `filter`,
update_time)
values (#{id,jdbcType=VARCHAR}, #{authTargetType,jdbcType=VARCHAR}, #{authTargetId,jdbcType=BIGINT},
#{datasetId,jdbcType=VARCHAR}, #{datasetFieldId,jdbcType=VARCHAR}, #{filter,jdbcType=VARCHAR},
#{updateTime,jdbcType=BIGINT})
</insert>
<insert id="insertSelective" parameterType="io.dataease.base.domain.DatasetRowPermissions">
insert into dataset_row_permissions
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="authTargetType != null">
auth_target_type,
</if>
<if test="authTargetId != null">
auth_target_id,
</if>
<if test="datasetId != null">
dataset_id,
</if>
<if test="datasetFieldId != null">
dataset_field_id,
</if>
<if test="filter != null">
`filter`,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="authTargetType != null">
#{authTargetType,jdbcType=VARCHAR},
</if>
<if test="authTargetId != null">
#{authTargetId,jdbcType=BIGINT},
</if>
<if test="datasetId != null">
#{datasetId,jdbcType=VARCHAR},
</if>
<if test="datasetFieldId != null">
#{datasetFieldId,jdbcType=VARCHAR},
</if>
<if test="filter != null">
#{filter,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=BIGINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="io.dataease.base.domain.DatasetRowPermissionsExample" resultType="java.lang.Long">
select count(*) from dataset_row_permissions
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update dataset_row_permissions
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=VARCHAR},
</if>
<if test="record.authTargetType != null">
auth_target_type = #{record.authTargetType,jdbcType=VARCHAR},
</if>
<if test="record.authTargetId != null">
auth_target_id = #{record.authTargetId,jdbcType=BIGINT},
</if>
<if test="record.datasetId != null">
dataset_id = #{record.datasetId,jdbcType=VARCHAR},
</if>
<if test="record.datasetFieldId != null">
dataset_field_id = #{record.datasetFieldId,jdbcType=VARCHAR},
</if>
<if test="record.filter != null">
`filter` = #{record.filter,jdbcType=VARCHAR},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime,jdbcType=BIGINT},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update dataset_row_permissions
set id = #{record.id,jdbcType=VARCHAR},
auth_target_type = #{record.authTargetType,jdbcType=VARCHAR},
auth_target_id = #{record.authTargetId,jdbcType=BIGINT},
dataset_id = #{record.datasetId,jdbcType=VARCHAR},
dataset_field_id = #{record.datasetFieldId,jdbcType=VARCHAR},
`filter` = #{record.filter,jdbcType=VARCHAR},
update_time = #{record.updateTime,jdbcType=BIGINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="io.dataease.base.domain.DatasetRowPermissions">
update dataset_row_permissions
<set>
<if test="authTargetType != null">
auth_target_type = #{authTargetType,jdbcType=VARCHAR},
</if>
<if test="authTargetId != null">
auth_target_id = #{authTargetId,jdbcType=BIGINT},
</if>
<if test="datasetId != null">
dataset_id = #{datasetId,jdbcType=VARCHAR},
</if>
<if test="datasetFieldId != null">
dataset_field_id = #{datasetFieldId,jdbcType=VARCHAR},
</if>
<if test="filter != null">
`filter` = #{filter,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=BIGINT},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="io.dataease.base.domain.DatasetRowPermissions">
update dataset_row_permissions
set auth_target_type = #{authTargetType,jdbcType=VARCHAR},
auth_target_id = #{authTargetId,jdbcType=BIGINT},
dataset_id = #{datasetId,jdbcType=VARCHAR},
dataset_field_id = #{datasetFieldId,jdbcType=VARCHAR},
`filter` = #{filter,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=BIGINT}
where id = #{id,jdbcType=VARCHAR}
</update>
</mapper>
\ No newline at end of file
package io.dataease.base.mapper.ext; package io.dataease.base.mapper.ext;
import io.dataease.base.domain.DatasetRowPermissions;
import io.dataease.base.mapper.ext.query.GridExample;
import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.controller.request.dataset.DataSetTableRequest;
import io.dataease.controller.sys.response.RoleUserItem;
import io.dataease.dto.dataset.DataSetRowPermissionsDTO;
import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.dto.dataset.DataSetTableDTO;
import java.util.List; import java.util.List;
...@@ -9,4 +13,12 @@ public interface ExtDataSetTableMapper { ...@@ -9,4 +13,12 @@ public interface ExtDataSetTableMapper {
List<DataSetTableDTO> search(DataSetTableRequest request); List<DataSetTableDTO> search(DataSetTableRequest request);
DataSetTableDTO searchOne(DataSetTableRequest request); DataSetTableDTO searchOne(DataSetTableRequest request);
List<DataSetRowPermissionsDTO> searchRowPermissons(GridExample example);
List<RoleUserItem> searchAuthUsers(DatasetRowPermissions example);
List<RoleUserItem> searchAuthRoles(DatasetRowPermissions example);
List<RoleUserItem> searchAuthDepts(DatasetRowPermissions example);
} }
...@@ -7,6 +7,15 @@ ...@@ -7,6 +7,15 @@
<result column="privileges" property="privileges"/> <result column="privileges" property="privileges"/>
</resultMap> </resultMap>
<resultMap id="RowPermissonsDTO" type="io.dataease.dto.dataset.DataSetRowPermissionsDTO"
extends="io.dataease.base.mapper.DatasetRowPermissionsMapper.BaseResultMap">
</resultMap>
<resultMap id="roleItemMap" type="io.dataease.controller.sys.response.RoleUserItem">
<id property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>
<select id="searchOne" resultMap="BaseResultMapDTO"> <select id="searchOne" resultMap="BaseResultMapDTO">
select select
id, `name`, scene_id, data_source_id, `type`, `mode`,`info`, create_by, create_time, id, `name`, scene_id, data_source_id, `type`, `mode`,`info`, create_by, create_time,
...@@ -96,4 +105,59 @@ ...@@ -96,4 +105,59 @@
order by ${sort} order by ${sort}
</if> </if>
</select> </select>
<select id="searchRowPermissons" resultMap="RowPermissonsDTO" parameterType="io.dataease.base.mapper.ext.query.GridExample">
SELECT dataset_table.name as datasetName, dataset_table_field.name as fieldName, dataset_row_permissions.*
FROM dataset_row_permissions
left join dataset_table on dataset_table.id=dataset_row_permissions.dataset_id
left join dataset_table_field on dataset_table_field.id=dataset_row_permissions.dataset_field_id
<if test="_parameter != null">
<include refid="io.dataease.base.mapper.ext.query.GridSql.gridCondition" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by dataset_row_permissions.update_time desc
</if>
</select>
<select id="searchAuthUsers" resultMap="roleItemMap">
SELECT sys_user.user_id as id, sys_user.username as name
FROM sys_auth
left join sys_auth_detail on sys_auth.id=sys_auth_detail.auth_id
left join sys_user on sys_user.user_id=sys_auth.auth_target
where sys_auth.auth_target_type='user'
and sys_auth.auth_source_type='dataset'
and sys_auth.auth_source=#{datasetId,jdbcType=VARCHAR}
and sys_auth_detail.privilege_type=1
and sys_auth_detail.privilege_value=1;
</select>
<select id="searchAuthRoles" resultMap="roleItemMap">
SELECT sys_role.role_id as id, sys_role.name as name
FROM sys_auth
left join sys_auth_detail on sys_auth.id=sys_auth_detail.auth_id
left join sys_role on sys_role.role_id=sys_auth.auth_target
where sys_auth.auth_target_type='role'
and sys_auth.auth_source_type='dataset'
and sys_auth.auth_source=#{datasetId,jdbcType=VARCHAR}
and sys_auth_detail.privilege_type=1
and sys_auth_detail.privilege_value=1;
</select>
<select id="searchAuthDepts" resultMap="roleItemMap">
SELECT sys_dept.dept_id as id, sys_dept.name as name
FROM sys_auth
left join sys_auth_detail on sys_auth.id=sys_auth_detail.auth_id
left join sys_dept on sys_dept.dept_id=sys_auth.auth_target
where sys_auth.auth_target_type='dept'
and sys_auth.auth_source_type='dataset'
and sys_auth.auth_source=#{datasetId,jdbcType=VARCHAR}
and sys_auth_detail.privilege_type=1
and sys_auth_detail.privilege_value=1;
</select>
</mapper> </mapper>
package io.dataease.controller.dataset;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.base.domain.DatasetRowPermissions;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.dataset.DataSetRowPermissionsDTO;
import io.dataease.service.dataset.DataSetTableRowPermissionsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@Api(tags = "数据集:数据集行权限")
@ApiSupport(order = 90)
@RestController
@RequestMapping("dataset/rowPermissions")
public class DataSetTableRowPermissionsController {
@Resource
private DataSetTableRowPermissionsService dataSetTableRowPermissionsService;
@ApiOperation("保存")
@PostMapping("save")
public void save(@RequestBody DatasetRowPermissions datasetRowPermissions) throws Exception {
dataSetTableRowPermissionsService.save(datasetRowPermissions);
}
@ApiOperation("分页查询")
@PostMapping("/pageList/{datasetId}/{goPage}/{pageSize}")
public Pager<List<DataSetRowPermissionsDTO>> rowPermissions(@PathVariable String datasetId, @PathVariable int goPage, @PathVariable int pageSize, @RequestBody BaseGridRequest request) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
return PageUtils.setPageInfo(page, dataSetTableRowPermissionsService.searchRowPermissions(request, datasetId));
}
@ApiOperation("有权限的对象")
@PostMapping("/authObjs")
public List<Object> authObjs(@RequestBody DataSetRowPermissionsDTO request) {
return (List<Object>) dataSetTableRowPermissionsService.authObjs(request);
}
@ApiOperation("详情")
@PostMapping("/dataSetRowPermissionInfo")
public DataSetRowPermissionsDTO dataSetRowPermissionInfo(@RequestBody DataSetRowPermissionsDTO request) {
return dataSetTableRowPermissionsService.dataSetRowPermissionInfo(request);
}
@ApiOperation("删除")
@PostMapping("/delete/{id}")
public void dataSetRowPermissionInfo(@PathVariable String id) {
dataSetTableRowPermissionsService.delete(id);
}
}
package io.dataease.dto.dataset;
import io.dataease.base.domain.DatasetRowPermissions;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @Author gin
* @Date 2021/3/9 3:19 下午
*/
@Getter
@Setter
public class DataSetRowPermissionsDTO extends DatasetRowPermissions {
@ApiModelProperty("数据集名称")
private String datasetName;
@ApiModelProperty("字段名称")
private String fieldName;
@ApiModelProperty("授权对象名称")
private String authTargetName;
}
...@@ -23,17 +23,17 @@ public abstract class QueryProvider { ...@@ -23,17 +23,17 @@ public abstract class QueryProvider {
public abstract String createSQLPreview(String sql, String orderBy); public abstract String createSQLPreview(String sql, String orderBy);
public abstract String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds); public abstract String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter);
public abstract String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup); public abstract String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter);
public abstract String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds); public abstract String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter);
public abstract String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup); public abstract String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter);
public abstract String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds); public abstract String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter);
public abstract String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup); public abstract String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter);
public abstract String getSQL(String table, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList, Datasource ds, ChartViewWithBLOBs view); public abstract String getSQL(String table, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> yAxis, List<ChartCustomFilterDTO> customFilter, List<ChartExtFilterRequest> extFilterRequestList, Datasource ds, ChartViewWithBLOBs view);
......
...@@ -107,7 +107,7 @@ public class CKQueryProvider extends QueryProvider { ...@@ -107,7 +107,7 @@ public class CKQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
...@@ -170,32 +170,36 @@ public class CKQueryProvider extends QueryProvider { ...@@ -170,32 +170,36 @@ public class CKQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
List<SQLObj> customWheres = transCustomFilterList(tableObj, customFilter);
List<SQLObj> wheres = new ArrayList<>();
if (customWheres != null) wheres.addAll(customWheres);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render(); return st_sql.render();
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
......
...@@ -78,7 +78,7 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -78,7 +78,7 @@ public class DorisQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
...@@ -140,6 +140,11 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -140,6 +140,11 @@ public class DorisQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
List<SQLObj> customWheres = transCustomFilterList(tableObj, customFilter);
List<SQLObj> wheres = new ArrayList<>();
if (customWheres != null) wheres.addAll(customWheres);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
if ((fields.size() > 0)) { if ((fields.size() > 0)) {
xOrders.add(SQLObj.builder() xOrders.add(SQLObj.builder()
.orderDirection("asc") .orderDirection("asc")
...@@ -152,28 +157,28 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -152,28 +157,28 @@ public class DorisQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sql + ")", fields, isGroup, null); return createQuerySQL("(" + sql + ")", fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
......
...@@ -110,7 +110,7 @@ public class EsQueryProvider extends QueryProvider { ...@@ -110,7 +110,7 @@ public class EsQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
...@@ -169,32 +169,38 @@ public class EsQueryProvider extends QueryProvider { ...@@ -169,32 +169,38 @@ public class EsQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
List<SQLObj> customWheres = transCustomFilterList(tableObj, customFilter);
List<SQLObj> wheres = new ArrayList<>();
if (customWheres != null) wheres.addAll(customWheres);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render(); return st_sql.render();
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null); return createQuerySQL(table, fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null); return createQuerySQL(table, fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup); return createQuerySQLAsTmp(sql, fields, isGroup, customFilter);
} }
@Override @Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup); return createQuerySQLAsTmp(sql, fields, isGroup, customFilter);
} }
@Override @Override
......
...@@ -69,7 +69,7 @@ public class HiveQueryProvider extends QueryProvider { ...@@ -69,7 +69,7 @@ public class HiveQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(HiveConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(HiveConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
...@@ -128,32 +128,36 @@ public class HiveQueryProvider extends QueryProvider { ...@@ -128,32 +128,36 @@ public class HiveQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
List<SQLObj> customWheres = transCustomFilterList(tableObj, customFilter);
List<SQLObj> wheres = new ArrayList<>();
if (customWheres != null) wheres.addAll(customWheres);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render(); return st_sql.render();
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
......
...@@ -81,7 +81,7 @@ public class MongoQueryProvider extends QueryProvider { ...@@ -81,7 +81,7 @@ public class MongoQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
...@@ -114,32 +114,36 @@ public class MongoQueryProvider extends QueryProvider { ...@@ -114,32 +114,36 @@ public class MongoQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
List<SQLObj> customWheres = transCustomFilterList(tableObj, customFilter);
List<SQLObj> wheres = new ArrayList<>();
if (customWheres != null) wheres.addAll(customWheres);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render(); return st_sql.render();
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
......
...@@ -78,7 +78,7 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -78,7 +78,7 @@ public class MysqlQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
...@@ -137,32 +137,38 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -137,32 +137,38 @@ public class MysqlQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
List<SQLObj> customWheres = transCustomFilterList(tableObj, customFilter);
List<SQLObj> wheres = new ArrayList<>();
if (customWheres != null) wheres.addAll(customWheres);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render(); return st_sql.render();
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
} }
@Override @Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
} }
@Override @Override
......
...@@ -93,7 +93,7 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -93,7 +93,7 @@ public class OracleQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0))) .tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0)))
...@@ -107,6 +107,10 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -107,6 +107,10 @@ public class OracleQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
List<SQLObj> customWheres = transCustomFilterList(tableObj, customFilter);
List<SQLObj> wheres = new ArrayList<>();
if (customWheres != null) wheres.addAll(customWheres);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render(); return st_sql.render();
} }
...@@ -182,33 +186,33 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -182,33 +186,33 @@ public class OracleQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
List<SQLObj> xFields = xFields(table, fields); List<SQLObj> xFields = xFields(table, fields);
return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ", return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ",
sqlColumn(xFields), createQuerySQL(table, fields, isGroup, ds), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString()); sqlColumn(xFields), createQuerySQL(table, fields, isGroup, ds, customFilter), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString());
} }
@Override @Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
List<SQLObj> xFields = xFields("(" + sqlFix(sql) + ")", fields); List<SQLObj> xFields = xFields("(" + sqlFix(sql) + ")", fields);
return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ", return MessageFormat.format("SELECT {0} FROM ( SELECT DE_TMP.*, rownum r FROM ( {1} ) DE_TMP WHERE rownum <= {2} ) WHERE r > {3} ",
sqlColumn(xFields), createQuerySQLAsTmp(sql, fields, isGroup), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString()); sqlColumn(xFields), createQuerySQLAsTmp(sql, fields, isGroup, customFilter), Integer.valueOf(page * realSize).toString(), Integer.valueOf((page - 1) * pageSize).toString());
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema(); String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema();
return String.format("SELECT * from %s WHERE rownum <= %s ", schema + "." + String.format(OracleConstants.KEYWORD_TABLE, table), limit.toString()); return String.format("SELECT * from %s WHERE rownum <= %s ", schema + "." + String.format(OracleConstants.KEYWORD_TABLE, table), limit.toString());
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return String.format("SELECT * from %s WHERE rownum <= %s ", "(" + sqlFix(sql) + ")", limit.toString()); return String.format("SELECT * from %s WHERE rownum <= %s ", "(" + sqlFix(sql) + ")", limit.toString());
} }
......
...@@ -98,7 +98,7 @@ public class PgQueryProvider extends QueryProvider { ...@@ -98,7 +98,7 @@ public class PgQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
...@@ -159,32 +159,36 @@ public class PgQueryProvider extends QueryProvider { ...@@ -159,32 +159,36 @@ public class PgQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
List<SQLObj> customWheres = transCustomFilterList(tableObj, customFilter);
List<SQLObj> wheres = new ArrayList<>();
if (customWheres != null) wheres.addAll(customWheres);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render(); return st_sql.render();
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; return createQuerySQL(table, fields, isGroup, ds, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
} }
@Override @Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + limit + " offset 0"; return createQuerySQL(table, fields, isGroup, ds, customFilter) + " LIMIT " + limit + " offset 0";
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + limit + " offset 0"; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + limit + " offset 0";
} }
@Override @Override
......
...@@ -107,7 +107,7 @@ public class RedshiftQueryProvider extends QueryProvider { ...@@ -107,7 +107,7 @@ public class RedshiftQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0)) .tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
...@@ -168,32 +168,36 @@ public class RedshiftQueryProvider extends QueryProvider { ...@@ -168,32 +168,36 @@ public class RedshiftQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
List<SQLObj> customWheres = transCustomFilterList(tableObj, customFilter);
List<SQLObj> wheres = new ArrayList<>();
if (customWheres != null) wheres.addAll(customWheres);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render(); return st_sql.render();
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; return createQuerySQL(table, fields, isGroup, ds, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
} }
@Override @Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + limit + " offset 0"; return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + limit + " offset 0";
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + limit + " offset 0"; return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + limit + " offset 0";
} }
@Override @Override
......
...@@ -86,7 +86,7 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -86,7 +86,7 @@ public class SqlserverQueryProvider extends QueryProvider {
} }
@Override @Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds) { public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
SQLObj tableObj = SQLObj.builder() SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table)) .tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table))
...@@ -140,35 +140,39 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -140,35 +140,39 @@ public class SqlserverQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
List<SQLObj> customWheres = transCustomFilterList(tableObj, customFilter);
List<SQLObj> wheres = new ArrayList<>();
if (customWheres != null) wheres.addAll(customWheres);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
return st_sql.render(); return st_sql.render();
} }
@Override @Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) { public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null); return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
} }
@Override @Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) { public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
Integer size = (page - 1) * pageSize + realSize; Integer size = (page - 1) * pageSize + realSize;
return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQL(table, fields, isGroup, ds)); return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQL(table, fields, isGroup, ds, customFilter));
} }
@Override @Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) { public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema(); String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema();
return String.format("SELECT top %s * from %s ", limit.toString(), schema + "." + table); return String.format("SELECT top %s * from %s ", limit.toString(), schema + "." + table);
} }
@Override @Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) { public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
Integer size = (page - 1) * pageSize + realSize; Integer size = (page - 1) * pageSize + realSize;
return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQLAsTmp(sql, fields, isGroup)); return String.format("SELECT top %s * from ( %s ) AS DE_SQLSERVER_TMP ", size.toString(), createQuerySQLAsTmp(sql, fields, isGroup, customFilter));
} }
@Override @Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) { public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return String.format("SELECT top %s * from ( %s ) as DE_SQLSERVER_TMP ", limit.toString(), sqlFix(sql)); return String.format("SELECT top %s * from ( %s ) as DE_SQLSERVER_TMP ", limit.toString(), sqlFix(sql));
} }
......
package io.dataease.service.dataset;
import io.dataease.base.domain.DatasetRowPermissions;
import io.dataease.base.domain.DatasetRowPermissionsExample;
import io.dataease.base.mapper.DatasetRowPermissionsMapper;
import io.dataease.base.mapper.SysDeptMapper;
import io.dataease.base.mapper.SysRoleMapper;
import io.dataease.base.mapper.SysUserMapper;
import io.dataease.base.mapper.ext.ExtDataSetTableMapper;
import io.dataease.base.mapper.ext.query.GridExample;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.dto.dataset.DataSetRowPermissionsDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
@Service
@Transactional(rollbackFor = Exception.class)
public class DataSetTableRowPermissionsService {
@Resource
private ExtDataSetTableMapper extDataSetTableMapper;
@Resource
private DatasetRowPermissionsMapper datasetRowPermissionsMapper;
@Resource
private SysUserMapper sysUserMapper;
@Resource
private SysRoleMapper sysRoleMapper;
@Resource
private SysDeptMapper sysDeptMapper;
public List<DataSetRowPermissionsDTO> searchRowPermissions(BaseGridRequest request, String datasetId){
List<ConditionEntity> conditionEntities = request.getConditions() == null ? new ArrayList<>() : request.getConditions();
ConditionEntity entity = new ConditionEntity();
entity.setField("dataset_row_permissions.dataset_id");
entity.setOperator("eq");
entity.setValue(datasetId);
conditionEntities.add(entity);
request.setConditions(conditionEntities);
GridExample gridExample = request.convertExample();
gridExample.setExtendCondition(AuthUtils.getUser().getUserId().toString());
return extDataSetTableMapper.searchRowPermissons(gridExample);
}
public List<? extends Object> authObjs(DataSetRowPermissionsDTO request){
switch (request.getAuthTargetType()) {
case "user":
return extDataSetTableMapper.searchAuthUsers(request);
case "role":
return extDataSetTableMapper.searchAuthRoles(request);
case "dept":
return extDataSetTableMapper.searchAuthDepts(request);
default:
return new ArrayList<>();
}
}
public void save(DatasetRowPermissions datasetRowPermissions){
if(StringUtils.isEmpty(datasetRowPermissions.getId())){
datasetRowPermissions.setId(UUID.randomUUID().toString());
datasetRowPermissions.setUpdateTime(System.currentTimeMillis());
datasetRowPermissionsMapper.insert(datasetRowPermissions);
}else {
datasetRowPermissions.setUpdateTime(System.currentTimeMillis());
datasetRowPermissionsMapper.updateByPrimaryKey(datasetRowPermissions);
}
}
public DataSetRowPermissionsDTO dataSetRowPermissionInfo(DataSetRowPermissionsDTO datasetRowPermissions){
switch (datasetRowPermissions.getAuthTargetType()) {
case "user":
datasetRowPermissions.setAuthTargetName(Optional.ofNullable(sysUserMapper.selectByPrimaryKey(datasetRowPermissions.getAuthTargetId())).get().getUsername());
break;
case "role":
datasetRowPermissions.setAuthTargetName(Optional.ofNullable(sysRoleMapper.selectByPrimaryKey(datasetRowPermissions.getAuthTargetId())).get().getName());
break;
case "dept":
datasetRowPermissions.setAuthTargetName(Optional.ofNullable(sysDeptMapper.selectByPrimaryKey(datasetRowPermissions.getAuthTargetId())).get().getName());
break;
default:
break;
}
return datasetRowPermissions;
}
public void delete(String id){
datasetRowPermissionsMapper.deleteByPrimaryKey(id);
}
public List<DatasetRowPermissions> listDatasetRowPermissions(String datasetId, List<Long>authTargetIds, String authTargetType){
if(CollectionUtils.isEmpty(authTargetIds)){
return new ArrayList<>();
}
DatasetRowPermissionsExample example = new DatasetRowPermissionsExample();
example.createCriteria().andDatasetIdEqualTo(datasetId).andAuthTargetTypeEqualTo(authTargetType).andAuthTargetIdIn(authTargetIds);
return datasetRowPermissionsMapper.selectByExample(example);
}
}
...@@ -5,6 +5,7 @@ import io.dataease.base.domain.DatasetTable; ...@@ -5,6 +5,7 @@ import io.dataease.base.domain.DatasetTable;
import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.DatasetTableField;
import io.dataease.base.domain.Datasource; import io.dataease.base.domain.Datasource;
import io.dataease.commons.utils.CommonBeanFactory; import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.dto.chart.ChartCustomFilterDTO;
import io.dataease.provider.datasource.DatasourceProvider; import io.dataease.provider.datasource.DatasourceProvider;
import io.dataease.provider.ProviderFactory; import io.dataease.provider.ProviderFactory;
import io.dataease.controller.request.datasource.DatasourceRequest; import io.dataease.controller.request.datasource.DatasourceRequest;
...@@ -41,8 +42,6 @@ public class DirectFieldService implements DataSetFieldService { ...@@ -41,8 +42,6 @@ public class DirectFieldService implements DataSetFieldService {
@Override @Override
public List<Object> fieldValues(String fieldId) { public List<Object> fieldValues(String fieldId) {
List<DatasetTableField> list = dataSetTableFieldsService.getListByIds(new ArrayList<String>() {{ List<DatasetTableField> list = dataSetTableFieldsService.getListByIds(new ArrayList<String>() {{
add(fieldId); add(fieldId);
}}); }});
...@@ -51,9 +50,14 @@ public class DirectFieldService implements DataSetFieldService { ...@@ -51,9 +50,14 @@ public class DirectFieldService implements DataSetFieldService {
DatasetTableField field = list.get(0); DatasetTableField field = list.get(0);
String tableId = field.getTableId(); String tableId = field.getTableId();
if (StringUtils.isEmpty(tableId)) return null; if (StringUtils.isEmpty(tableId)) return null;
DatasetTable datasetTable = dataSetTableService.get(tableId); DatasetTable datasetTable = dataSetTableService.get(tableId);
if (ObjectUtils.isEmpty(datasetTable) || StringUtils.isEmpty(datasetTable.getName())) return null; if (ObjectUtils.isEmpty(datasetTable) || StringUtils.isEmpty(datasetTable.getName())) return null;
String tableName = datasetTable.getName(); String tableName;
DatasetTableField datasetTableField = DatasetTableField.builder().tableId(tableId).checked(Boolean.TRUE).build();
List<DatasetTableField> fields = dataSetTableFieldsService.list(datasetTableField);
List<ChartCustomFilterDTO> customFilter = dataSetTableService.getCustomFilters(fields, datasetTable);
DatasourceRequest datasourceRequest = new DatasourceRequest(); DatasourceRequest datasourceRequest = new DatasourceRequest();
DatasourceProvider datasourceProvider = null; DatasourceProvider datasourceProvider = null;
...@@ -67,14 +71,14 @@ public class DirectFieldService implements DataSetFieldService { ...@@ -67,14 +71,14 @@ public class DirectFieldService implements DataSetFieldService {
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) { if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) {
datasourceRequest.setTable(dataTableInfoDTO.getTable()); datasourceRequest.setTable(dataTableInfoDTO.getTable());
datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field), true, ds)); datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field), true, ds, customFilter));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field), true)); datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field), true, customFilter));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
List<DataSetTableUnionDTO> listUnion = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId()); List<DataSetTableUnionDTO> listUnion = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
String sql = dataSetTableService.getCustomSQLDatasource(dt, listUnion, ds); String sql = dataSetTableService.getCustomSQLDatasource(dt, listUnion, ds);
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, Collections.singletonList(field), true)); datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, Collections.singletonList(field), true, customFilter));
} }
} else if (datasetTable.getMode() == 1) {// 抽取 } else if (datasetTable.getMode() == 1) {// 抽取
// 连接doris,构建doris数据源查询 // 连接doris,构建doris数据源查询
...@@ -85,7 +89,7 @@ public class DirectFieldService implements DataSetFieldService { ...@@ -85,7 +89,7 @@ public class DirectFieldService implements DataSetFieldService {
tableName = "ds_" + datasetTable.getId().replaceAll("-", "_"); tableName = "ds_" + datasetTable.getId().replaceAll("-", "_");
datasourceRequest.setTable(tableName); datasourceRequest.setTable(tableName);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQL(tableName, Collections.singletonList(field), true, null)); datasourceRequest.setQuery(qp.createQuerySQL(tableName, Collections.singletonList(field), true, null, customFilter));
} }
try { try {
......
...@@ -16,3 +16,15 @@ CREATE TABLE `panel_link_mapping` ( ...@@ -16,3 +16,15 @@ CREATE TABLE `panel_link_mapping` (
`resource_id` varchar(255) DEFAULT NULL COMMENT '仪表板ID', `resource_id` varchar(255) DEFAULT NULL COMMENT '仪表板ID',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE `dataset_row_permissions` (
`id` varchar(64) NOT NULL COMMENT 'File ID',
`auth_target_type` varchar(255) DEFAULT NULL COMMENT '权限类型:组织/角色/用户',
`auth_target_id` bigint(20) DEFAULT NULL COMMENT '权限对象ID',
`dataset_id` varchar(64) DEFAULT NULL COMMENT '数据集ID',
`dataset_field_id` varchar(64) DEFAULT NULL COMMENT '数据集字段ID',
`filter` longtext DEFAULT NULL COMMENT '数值',
`update_time` bigint(13) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);
\ No newline at end of file
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
<!--配置数据库连接的位置--> <!--配置数据库连接的位置-->
<properties url="file:///opt/dataease/conf/dataease.properties"/> <properties url="file:///opt/dataease/conf/dataease.properties"/>
<!-- 设置mysql驱动路径 --> <!-- 设置mysql驱动路径 -->
<!--<classPathEntry location="/Users/liuruibin/.m2/repository/mysql/mysql-connector-java/5.1.34/mysql-connector-java-5.1.34.jar"/>-->
<!-- 此处指定生成针对MyBatis3的DAO --> <!-- 此处指定生成针对MyBatis3的DAO -->
<context id="mysql" targetRuntime="MyBatis3"> <context id="mysql" targetRuntime="MyBatis3">
<!-- 字段带`,解决列表跟关键字冲突问题 --> <!-- 字段带`,解决列表跟关键字冲突问题 -->
...@@ -37,8 +36,6 @@ ...@@ -37,8 +36,6 @@
</commentGenerator> </commentGenerator>
<!-- jdbc连接信息 --> <!-- EduLoanManage EduTestDataBase --> <!-- jdbc连接信息 --> <!-- EduLoanManage EduTestDataBase -->
<!--<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.20.180:3306/fit2cloud"-->
<!--userId="root" password="Fit2cloud2015!" />-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="${spring.datasource.url}&amp;nullCatalogMeansCurrent=true" connectionURL="${spring.datasource.url}&amp;nullCatalogMeansCurrent=true"
userId="${spring.datasource.username}" password="${spring.datasource.password}"/> userId="${spring.datasource.username}" password="${spring.datasource.password}"/>
...@@ -63,24 +60,9 @@ ...@@ -63,24 +60,9 @@
</javaClientGenerator> </javaClientGenerator>
<!--要生成的数据库表 --> <!--要生成的数据库表 -->
<table tableName="dataset_row_permissions">
<columnOverride column="filter" javaType="java.lang.String" jdbcType="VARCHAR" />
<!-- <table tableName="panel_link_jump"/>--> </table>
<!-- <table tableName="panel_link_jump_info"/>-->
<!-- <table tableName="panel_link_jump_target_view_info"/>-->
<table tableName="v_auth_model"/>
<table tableName="panel_link_mapping"/>
<!-- <table tableName="sys_dict_item"/>-->
<!-- <table tableName="dataset_table_field"/>-->
<!-- <table tableName="v_chart">-->
<!-- </table>-->
<!-- <table tableName="v_auth_model">-->
<!-- </table>-->
<!-- <table tableName="v_dataset"/>-->
<!-- <table tableName="sys_auth_detail"/>-->
<!-- <table tableName="dataset_table_task">-->
<!-- <columnOverride column="extra_data" javaType="java.lang.String" jdbcType="VARCHAR" />-->
<!-- </table>-->
</context> </context>
......
...@@ -163,4 +163,13 @@ export function datasetTaskList(page, size, data, loading) { ...@@ -163,4 +163,13 @@ export function datasetTaskList(page, size, data, loading) {
}) })
} }
export function datasetRowPermissionsList(datasetId, page, size, data, loading) {
return request({
url: '/dataset/rowpermissions/pageList/' + datasetId + '/' + page + '/' + size,
method: 'post',
data,
loading: loading
})
}
export default { loadTable, getScene, addGroup, delGroup, addTable, delTable, groupTree } export default { loadTable, getScene, addGroup, delGroup, addTable, delTable, groupTree }
...@@ -1155,7 +1155,15 @@ export default { ...@@ -1155,7 +1155,15 @@ export default {
confirm_sync_field: '确认同步', confirm_sync_field: '确认同步',
confirm_sync_field_tips: '同步字段可能会导致已编辑字段发生变更,请确认', confirm_sync_field_tips: '同步字段可能会导致已编辑字段发生变更,请确认',
sync_success: '同步成功', sync_success: '同步成功',
sync_success_1: '同步成功,请对当前数据集重新执行数据同步操作' sync_success_1: '同步成功,请对当前数据集重新执行数据同步操作',
row_permission: {
type: '类型',
name: '名称',
condition: '条件',
value: '值',
add: '添加行权限',
edit: '编辑行权限'
}
}, },
datasource: { datasource: {
datasource: '数据源', datasource: '数据源',
......
...@@ -54,16 +54,6 @@ export default { ...@@ -54,16 +54,6 @@ export default {
label: this.$t('chart.filter_not_eq') label: this.$t('chart.filter_not_eq')
}] }]
}, },
// {
// label: '',
// options: [{
// value: 'like',
// label: this.$t('chart.filter_like')
// }, {
// value: 'not like',
// label: this.$t('chart.filter_not_like')
// }]
// },
{ {
label: '', label: '',
options: [{ options: [{
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
<union-view :param="param" :table="table" /> <union-view :param="param" :table="table" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('dataset.row_permissions')" name="rowPermissions"> <el-tab-pane :label="$t('dataset.row_permissions')" name="rowPermissions">
<row-permissions :param="param" :table="table" /> <row-permissions v-if="tabActive=='rowPermissions'" :param="param" :table="table" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="table.mode === 1 && (table.type === 'excel' || table.type === 'db' || table.type === 'sql')" :label="$t('dataset.update_info')" name="updateInfo"> <el-tab-pane v-if="table.mode === 1 && (table.type === 'excel' || table.type === 'db' || table.type === 'sql')" :label="$t('dataset.update_info')" name="updateInfo">
<update-info v-if="tabActive=='updateInfo'" :param="param" :table="table" /> <update-info v-if="tabActive=='updateInfo'" :param="param" :table="table" />
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论