feat(数据集): 行权限

This commit is contained in:
taojinlong 2021-11-22 15:39:59 +08:00
parent 566a317005
commit e50158bc57
29 changed files with 1828 additions and 202 deletions

View File

@ -0,0 +1,23 @@
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;
}

View File

@ -0,0 +1,670 @@
package io.dataease.base.domain;
import java.util.ArrayList;
import java.util.List;
public class DatasetRowPermissionsExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
public DatasetRowPermissionsExample() {
oredCriteria = new ArrayList<Criteria>();
}
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
public String getOrderByClause() {
return orderByClause;
}
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
public boolean isDistinct() {
return distinct;
}
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andIdIsNull() {
addCriterion("id is null");
return (Criteria) this;
}
public Criteria andIdIsNotNull() {
addCriterion("id is not null");
return (Criteria) this;
}
public Criteria andIdEqualTo(String value) {
addCriterion("id =", value, "id");
return (Criteria) this;
}
public Criteria andIdNotEqualTo(String value) {
addCriterion("id <>", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThan(String value) {
addCriterion("id >", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThanOrEqualTo(String value) {
addCriterion("id >=", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThan(String value) {
addCriterion("id <", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThanOrEqualTo(String value) {
addCriterion("id <=", value, "id");
return (Criteria) this;
}
public Criteria andIdLike(String value) {
addCriterion("id like", value, "id");
return (Criteria) this;
}
public Criteria andIdNotLike(String value) {
addCriterion("id not like", value, "id");
return (Criteria) this;
}
public Criteria andIdIn(List<String> values) {
addCriterion("id in", values, "id");
return (Criteria) this;
}
public Criteria andIdNotIn(List<String> values) {
addCriterion("id not in", values, "id");
return (Criteria) this;
}
public Criteria andIdBetween(String value1, String value2) {
addCriterion("id between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andIdNotBetween(String value1, String value2) {
addCriterion("id not between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andAuthTargetTypeIsNull() {
addCriterion("auth_target_type is null");
return (Criteria) this;
}
public Criteria andAuthTargetTypeIsNotNull() {
addCriterion("auth_target_type is not null");
return (Criteria) this;
}
public Criteria andAuthTargetTypeEqualTo(String value) {
addCriterion("auth_target_type =", value, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeNotEqualTo(String value) {
addCriterion("auth_target_type <>", value, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeGreaterThan(String value) {
addCriterion("auth_target_type >", value, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeGreaterThanOrEqualTo(String value) {
addCriterion("auth_target_type >=", value, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeLessThan(String value) {
addCriterion("auth_target_type <", value, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeLessThanOrEqualTo(String value) {
addCriterion("auth_target_type <=", value, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeLike(String value) {
addCriterion("auth_target_type like", value, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeNotLike(String value) {
addCriterion("auth_target_type not like", value, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeIn(List<String> values) {
addCriterion("auth_target_type in", values, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeNotIn(List<String> values) {
addCriterion("auth_target_type not in", values, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeBetween(String value1, String value2) {
addCriterion("auth_target_type between", value1, value2, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetTypeNotBetween(String value1, String value2) {
addCriterion("auth_target_type not between", value1, value2, "authTargetType");
return (Criteria) this;
}
public Criteria andAuthTargetIdIsNull() {
addCriterion("auth_target_id is null");
return (Criteria) this;
}
public Criteria andAuthTargetIdIsNotNull() {
addCriterion("auth_target_id is not null");
return (Criteria) this;
}
public Criteria andAuthTargetIdEqualTo(Long value) {
addCriterion("auth_target_id =", value, "authTargetId");
return (Criteria) this;
}
public Criteria andAuthTargetIdNotEqualTo(Long value) {
addCriterion("auth_target_id <>", value, "authTargetId");
return (Criteria) this;
}
public Criteria andAuthTargetIdGreaterThan(Long value) {
addCriterion("auth_target_id >", value, "authTargetId");
return (Criteria) this;
}
public Criteria andAuthTargetIdGreaterThanOrEqualTo(Long value) {
addCriterion("auth_target_id >=", value, "authTargetId");
return (Criteria) this;
}
public Criteria andAuthTargetIdLessThan(Long value) {
addCriterion("auth_target_id <", value, "authTargetId");
return (Criteria) this;
}
public Criteria andAuthTargetIdLessThanOrEqualTo(Long value) {
addCriterion("auth_target_id <=", value, "authTargetId");
return (Criteria) this;
}
public Criteria andAuthTargetIdIn(List<Long> values) {
addCriterion("auth_target_id in", values, "authTargetId");
return (Criteria) this;
}
public Criteria andAuthTargetIdNotIn(List<Long> values) {
addCriterion("auth_target_id not in", values, "authTargetId");
return (Criteria) this;
}
public Criteria andAuthTargetIdBetween(Long value1, Long value2) {
addCriterion("auth_target_id between", value1, value2, "authTargetId");
return (Criteria) this;
}
public Criteria andAuthTargetIdNotBetween(Long value1, Long value2) {
addCriterion("auth_target_id not between", value1, value2, "authTargetId");
return (Criteria) this;
}
public Criteria andDatasetIdIsNull() {
addCriterion("dataset_id is null");
return (Criteria) this;
}
public Criteria andDatasetIdIsNotNull() {
addCriterion("dataset_id is not null");
return (Criteria) this;
}
public Criteria andDatasetIdEqualTo(String value) {
addCriterion("dataset_id =", value, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdNotEqualTo(String value) {
addCriterion("dataset_id <>", value, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdGreaterThan(String value) {
addCriterion("dataset_id >", value, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdGreaterThanOrEqualTo(String value) {
addCriterion("dataset_id >=", value, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdLessThan(String value) {
addCriterion("dataset_id <", value, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdLessThanOrEqualTo(String value) {
addCriterion("dataset_id <=", value, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdLike(String value) {
addCriterion("dataset_id like", value, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdNotLike(String value) {
addCriterion("dataset_id not like", value, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdIn(List<String> values) {
addCriterion("dataset_id in", values, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdNotIn(List<String> values) {
addCriterion("dataset_id not in", values, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdBetween(String value1, String value2) {
addCriterion("dataset_id between", value1, value2, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetIdNotBetween(String value1, String value2) {
addCriterion("dataset_id not between", value1, value2, "datasetId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdIsNull() {
addCriterion("dataset_field_id is null");
return (Criteria) this;
}
public Criteria andDatasetFieldIdIsNotNull() {
addCriterion("dataset_field_id is not null");
return (Criteria) this;
}
public Criteria andDatasetFieldIdEqualTo(String value) {
addCriterion("dataset_field_id =", value, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdNotEqualTo(String value) {
addCriterion("dataset_field_id <>", value, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdGreaterThan(String value) {
addCriterion("dataset_field_id >", value, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdGreaterThanOrEqualTo(String value) {
addCriterion("dataset_field_id >=", value, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdLessThan(String value) {
addCriterion("dataset_field_id <", value, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdLessThanOrEqualTo(String value) {
addCriterion("dataset_field_id <=", value, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdLike(String value) {
addCriterion("dataset_field_id like", value, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdNotLike(String value) {
addCriterion("dataset_field_id not like", value, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdIn(List<String> values) {
addCriterion("dataset_field_id in", values, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdNotIn(List<String> values) {
addCriterion("dataset_field_id not in", values, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdBetween(String value1, String value2) {
addCriterion("dataset_field_id between", value1, value2, "datasetFieldId");
return (Criteria) this;
}
public Criteria andDatasetFieldIdNotBetween(String value1, String value2) {
addCriterion("dataset_field_id not between", value1, value2, "datasetFieldId");
return (Criteria) this;
}
public Criteria andFilterIsNull() {
addCriterion("`filter` is null");
return (Criteria) this;
}
public Criteria andFilterIsNotNull() {
addCriterion("`filter` is not null");
return (Criteria) this;
}
public Criteria andFilterEqualTo(String value) {
addCriterion("`filter` =", value, "filter");
return (Criteria) this;
}
public Criteria andFilterNotEqualTo(String value) {
addCriterion("`filter` <>", value, "filter");
return (Criteria) this;
}
public Criteria andFilterGreaterThan(String value) {
addCriterion("`filter` >", value, "filter");
return (Criteria) this;
}
public Criteria andFilterGreaterThanOrEqualTo(String value) {
addCriterion("`filter` >=", value, "filter");
return (Criteria) this;
}
public Criteria andFilterLessThan(String value) {
addCriterion("`filter` <", value, "filter");
return (Criteria) this;
}
public Criteria andFilterLessThanOrEqualTo(String value) {
addCriterion("`filter` <=", value, "filter");
return (Criteria) this;
}
public Criteria andFilterLike(String value) {
addCriterion("`filter` like", value, "filter");
return (Criteria) this;
}
public Criteria andFilterNotLike(String value) {
addCriterion("`filter` not like", value, "filter");
return (Criteria) this;
}
public Criteria andFilterIn(List<String> values) {
addCriterion("`filter` in", values, "filter");
return (Criteria) this;
}
public Criteria andFilterNotIn(List<String> values) {
addCriterion("`filter` not in", values, "filter");
return (Criteria) this;
}
public Criteria andFilterBetween(String value1, String value2) {
addCriterion("`filter` between", value1, value2, "filter");
return (Criteria) this;
}
public Criteria andFilterNotBetween(String value1, String value2) {
addCriterion("`filter` not between", value1, value2, "filter");
return (Criteria) this;
}
public Criteria andUpdateTimeIsNull() {
addCriterion("update_time is null");
return (Criteria) this;
}
public Criteria andUpdateTimeIsNotNull() {
addCriterion("update_time is not null");
return (Criteria) this;
}
public Criteria andUpdateTimeEqualTo(Long value) {
addCriterion("update_time =", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeNotEqualTo(Long value) {
addCriterion("update_time <>", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeGreaterThan(Long value) {
addCriterion("update_time >", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeGreaterThanOrEqualTo(Long value) {
addCriterion("update_time >=", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeLessThan(Long value) {
addCriterion("update_time <", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeLessThanOrEqualTo(Long value) {
addCriterion("update_time <=", value, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeIn(List<Long> values) {
addCriterion("update_time in", values, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeNotIn(List<Long> values) {
addCriterion("update_time not in", values, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeBetween(Long value1, Long value2) {
addCriterion("update_time between", value1, value2, "updateTime");
return (Criteria) this;
}
public Criteria andUpdateTimeNotBetween(Long value1, Long value2) {
addCriterion("update_time not between", value1, value2, "updateTime");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

View File

@ -0,0 +1,30 @@
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);
}

View File

@ -0,0 +1,243 @@
<?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>

View File

@ -1,6 +1,10 @@
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.sys.response.RoleUserItem;
import io.dataease.dto.dataset.DataSetRowPermissionsDTO;
import io.dataease.dto.dataset.DataSetTableDTO;
import java.util.List;
@ -9,4 +13,12 @@ public interface ExtDataSetTableMapper {
List<DataSetTableDTO> search(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);
}

View File

@ -7,6 +7,15 @@
<result column="privileges" property="privileges"/>
</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, `name`, scene_id, data_source_id, `type`, `mode`,`info`, create_by, create_time,
@ -96,4 +105,59 @@
order by ${sort}
</if>
</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>

View File

@ -0,0 +1,60 @@
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);
}
}

View File

@ -0,0 +1,21 @@
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;
}

View File

@ -23,17 +23,17 @@ public abstract class QueryProvider {
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);

View File

@ -107,7 +107,7 @@ public class CKQueryProvider extends QueryProvider {
}
@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()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -170,32 +170,36 @@ public class CKQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
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();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
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, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
}
@Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
}
@Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override

View File

@ -78,7 +78,7 @@ public class DorisQueryProvider extends QueryProvider {
}
@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()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -140,6 +140,11 @@ public class DorisQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
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)) {
xOrders.add(SQLObj.builder()
.orderDirection("asc")
@ -152,28 +157,28 @@ public class DorisQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sql + ")", fields, isGroup, null);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sql + ")", fields, isGroup, null, customFilter);
}
@Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
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, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
}
@Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
}
@Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override

View File

@ -110,7 +110,7 @@ public class EsQueryProvider extends QueryProvider {
}
@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()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -169,32 +169,38 @@ public class EsQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
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();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null);
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, customFilter);
}
@Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null);
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null, customFilter);
}
@Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup);
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter);
}
@Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, 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, customFilter);
}
@Override

View File

@ -69,7 +69,7 @@ public class HiveQueryProvider extends QueryProvider {
}
@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()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(HiveConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -128,32 +128,36 @@ public class HiveQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
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();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
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, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
}
@Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
}
@Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override

View File

@ -81,7 +81,7 @@ public class MongoQueryProvider extends QueryProvider {
}
@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()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -114,32 +114,36 @@ public class MongoQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
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();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
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, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
}
@Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
}
@Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override

View File

@ -78,7 +78,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
@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()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -137,32 +137,38 @@ public class MysqlQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
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();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
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, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT 0," + limit;
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT 0," + limit;
}
@Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT 0," + limit;
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT 0," + limit;
}
@Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + (page - 1) * pageSize + "," + realSize;
}
@Override

View File

@ -93,7 +93,7 @@ public class OracleQueryProvider extends QueryProvider {
}
@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()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0)))
@ -107,6 +107,10 @@ public class OracleQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
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();
}
@ -182,33 +186,33 @@ public class OracleQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@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);
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
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);
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
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();
return String.format("SELECT * from %s WHERE rownum <= %s ", schema + "." + String.format(OracleConstants.KEYWORD_TABLE, table), limit.toString());
}
@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());
}

View File

@ -98,7 +98,7 @@ public class PgQueryProvider extends QueryProvider {
}
@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()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -159,32 +159,36 @@ public class PgQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
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();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
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, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
}
@Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
}
@Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + limit + " offset 0";
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, ds, customFilter) + " LIMIT " + limit + " offset 0";
}
@Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + limit + " offset 0";
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + limit + " offset 0";
}
@Override

View File

@ -107,7 +107,7 @@ public class RedshiftQueryProvider extends QueryProvider {
}
@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()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -168,32 +168,36 @@ public class RedshiftQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
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();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@Override
public String createQueryTableWithPage(String table, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, ds) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
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, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
}
@Override
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
public String createQuerySQLWithPage(String sql, List<DatasetTableField> fields, Integer page, Integer pageSize, Integer realSize, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + realSize + " offset " + (page - 1) * pageSize;
}
@Override
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds) {
return createQuerySQL(table, fields, isGroup, null) + " LIMIT " + limit + " offset 0";
public String createQueryTableWithLimit(String table, List<DatasetTableField> fields, Integer limit, boolean isGroup, Datasource ds, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL(table, fields, isGroup, null, customFilter) + " LIMIT " + limit + " offset 0";
}
@Override
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup) {
return createQuerySQLAsTmp(sql, fields, isGroup) + " LIMIT " + limit + " offset 0";
public String createQuerySqlWithLimit(String sql, List<DatasetTableField> fields, Integer limit, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQLAsTmp(sql, fields, isGroup, customFilter) + " LIMIT " + limit + " offset 0";
}
@Override

View File

@ -86,7 +86,7 @@ public class SqlserverQueryProvider extends QueryProvider {
}
@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()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table))
@ -140,35 +140,39 @@ public class SqlserverQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
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();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartCustomFilterDTO> customFilter) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, customFilter);
}
@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;
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
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();
return String.format("SELECT top %s * from %s ", limit.toString(), schema + "." + table);
}
@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;
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
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));
}

View File

@ -0,0 +1,110 @@
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);
}
}

View File

@ -1,7 +1,9 @@
package io.dataease.service.dataset;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import io.dataease.auth.api.dto.CurrentRoleDto;
import io.dataease.base.domain.*;
import io.dataease.base.mapper.*;
import io.dataease.base.mapper.ext.ExtDataSetGroupMapper;
@ -17,6 +19,7 @@ import io.dataease.controller.request.dataset.DataSetTableRequest;
import io.dataease.controller.request.dataset.DataSetTaskRequest;
import io.dataease.controller.response.DataSetDetail;
import io.dataease.commons.constants.DatasourceTypes;
import io.dataease.dto.chart.ChartCustomFilterDTO;
import io.dataease.dto.datasource.TableFiled;
import io.dataease.provider.datasource.DatasourceProvider;
import io.dataease.provider.datasource.JdbcProvider;
@ -80,8 +83,6 @@ public class DataSetTableService {
@Resource
private DataSetTableUnionService dataSetTableUnionService;
@Resource
private DataSetTableTaskLogService dataSetTableTaskLogService;
@Resource
private QrtzSchedulerStateMapper qrtzSchedulerStateMapper;
@Resource
private DatasetTableTaskLogMapper datasetTableTaskLogMapper;
@ -89,8 +90,10 @@ public class DataSetTableService {
private ExtDataSetGroupMapper extDataSetGroupMapper;
@Resource
private DatasetTableFieldMapper datasetTableFieldMapper;
private static String lastUpdateTime = "${__last_update_time__}";
private static String currentUpdateTime = "${__current_update_time__}";
@Resource
private DataSetTableRowPermissionsService dataSetTableRowPermissionsService;
private static final String lastUpdateTime = "${__last_update_time__}";
private static final String currentUpdateTime = "${__current_update_time__}";
@Value("${upload.file.path}")
private String path;
@ -144,9 +147,7 @@ public class DataSetTableService {
int insert = datasetTableMapper.insert(sheetTable);
if (insert == 1) {
saveExcelTableField(sheetTable.getId(), excelSheetDataList.get(0).getFields(), true);
commonThreadPool.addTask(() -> {
extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null);
});
commonThreadPool.addTask(() -> extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null));
}
}
} else {
@ -172,9 +173,7 @@ public class DataSetTableService {
int insert = datasetTableMapper.insert(sheetTable);
if (insert == 1) {
saveExcelTableField(sheetTable.getId(), sheet.getFields(), true);
commonThreadPool.addTask(() -> {
extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null);
});
commonThreadPool.addTask(() -> extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null));
}
}
}
@ -209,13 +208,9 @@ public class DataSetTableService {
if (update == 1) {
if (datasetTable.getEditType() == 0) {
commonThreadPool.addTask(() -> {
extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换", saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields(), false));
});
commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换", saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields(), false)));
} else if (datasetTable.getEditType() == 1) {
commonThreadPool.addTask(() -> {
extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加", null);
});
commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加", null));
}
}
}
@ -434,11 +429,44 @@ public class DataSetTableService {
return map;
}
private List<DatasetRowPermissions> rowPermissions(String datasetId){
List<DatasetRowPermissions> datasetRowPermissions = new ArrayList<>();
datasetRowPermissions.addAll(dataSetTableRowPermissionsService.listDatasetRowPermissions(datasetId, Collections.singletonList(AuthUtils.getUser().getUserId()), "user"));
datasetRowPermissions.addAll(dataSetTableRowPermissionsService.listDatasetRowPermissions(datasetId, AuthUtils.getUser().getRoles().stream().map(CurrentRoleDto::getId).collect(Collectors.toList()) , "role"));
datasetRowPermissions.addAll(dataSetTableRowPermissionsService.listDatasetRowPermissions(datasetId, Collections.singletonList(AuthUtils.getUser().getDeptId()), "dept"));
return datasetRowPermissions;
}
private DatasetTableField getFieldById(List<DatasetTableField> fields, String fieldId){
DatasetTableField field = null;
for (DatasetTableField datasetTableField : fields) {
if(fieldId.equalsIgnoreCase(datasetTableField.getId())){
field = datasetTableField;
}
}
return field;
}
public List<ChartCustomFilterDTO> getCustomFilters(List<DatasetTableField> fields, DatasetTable datasetTable) {
List<ChartCustomFilterDTO> customFilter = new ArrayList<>();
rowPermissions(datasetTable.getId()).forEach(datasetRowPermissions -> {
List<ChartCustomFilterDTO> lists = JSONObject.parseArray(datasetRowPermissions.getFilter(), ChartCustomFilterDTO.class);
lists.forEach(chartCustomFilterDTO -> {
DatasetTableField field = getFieldById(fields, chartCustomFilterDTO.getFieldId());
if(field != null){
chartCustomFilterDTO.setFieldId(datasetRowPermissions.getDatasetFieldId());
chartCustomFilterDTO.setField(field);
}
});
customFilter.addAll(lists);
});
return customFilter;
}
public Map<String, Object> getPreviewData(DataSetTableRequest dataSetTableRequest, Integer page, Integer pageSize) throws Exception {
Map<String, Object> map = new HashMap<>();
DatasetTableField datasetTableField = DatasetTableField.builder().build();
datasetTableField.setTableId(dataSetTableRequest.getId());
datasetTableField.setChecked(Boolean.TRUE);
DatasetTableField datasetTableField = DatasetTableField.builder().tableId(dataSetTableRequest.getId()).checked(Boolean.TRUE).build();
List<DatasetTableField> fields = dataSetTableFieldsService.list(datasetTableField);
if (CollectionUtils.isEmpty(fields)) {
map.put("fields", fields);
@ -446,10 +474,12 @@ public class DataSetTableService {
map.put("page", new DataSetPreviewPage());
return map;
}
DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(dataSetTableRequest.getId());
List<ChartCustomFilterDTO> customFilter = getCustomFilters(fields, datasetTable);
String[] fieldArray = fields.stream().map(DatasetTableField::getDataeaseName).toArray(String[]::new);
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(dataSetTableRequest.getId());
List<String[]> data = new ArrayList<>();
DataSetPreviewPage dataSetPreviewPage = new DataSetPreviewPage();
@ -471,7 +501,10 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = dataTableInfoDTO.getTable();
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds));
datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, customFilter));
map.put("sql", datasourceRequest.getQuery());
datasourceRequest.setPage(page);
datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow()));
@ -487,7 +520,7 @@ public class DataSetTableService {
}
try {
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds));
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, customFilter));
datasourceRequest.setPageable(false);
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
} catch (Exception e) {
@ -505,7 +538,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds));
datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, customFilter));
map.put("sql", datasourceRequest.getQuery());
try {
data.addAll(jdbcProvider.getData(datasourceRequest));
@ -514,7 +547,7 @@ public class DataSetTableService {
DEException.throwException(e.getMessage());
}
try {
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds));
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, customFilter));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) {
e.printStackTrace();
@ -534,7 +567,7 @@ public class DataSetTableService {
String sql = dataTableInfoDTO.getSql();
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false));
datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, customFilter));
map.put("sql", datasourceRequest.getQuery());
datasourceRequest.setPage(page);
datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow()));
@ -550,7 +583,7 @@ public class DataSetTableService {
}
try {
datasourceRequest.setPageable(false);
datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, customFilter));
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
} catch (Exception e) {
e.printStackTrace();
@ -567,7 +600,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds));
datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, customFilter));
map.put("sql", datasourceRequest.getQuery());
try {
data.addAll(jdbcProvider.getData(datasourceRequest));
@ -576,7 +609,7 @@ public class DataSetTableService {
DEException.throwException(e.getMessage());
}
try {
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds));
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, customFilter));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) {
e.printStackTrace();
@ -594,7 +627,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds));
datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, customFilter));
map.put("sql", datasourceRequest.getQuery());
try {
data.addAll(jdbcProvider.getData(datasourceRequest));
@ -603,7 +636,7 @@ public class DataSetTableService {
DEException.throwException(e.getMessage());
}
try {
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds));
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, customFilter));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) {
e.printStackTrace();
@ -624,7 +657,7 @@ public class DataSetTableService {
String sql = getCustomSQLDatasource(dt, list, ds);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false));
datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, customFilter));
map.put("sql", datasourceRequest.getQuery());
datasourceRequest.setPage(page);
datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow()));
@ -640,7 +673,7 @@ public class DataSetTableService {
}
try {
datasourceRequest.setPageable(false);
datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false));
datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, customFilter));
dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size());
} catch (Exception e) {
e.printStackTrace();
@ -653,7 +686,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds);
String table = DorisTableUtils.dorisName(dataSetTableRequest.getId());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds));
datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, customFilter));
map.put("sql", datasourceRequest.getQuery());
try {
data.addAll(jdbcProvider.getData(datasourceRequest));
@ -663,7 +696,7 @@ public class DataSetTableService {
}
try {
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds));
datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, customFilter));
dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size());
} catch (Exception e) {
e.printStackTrace();

View File

@ -5,6 +5,7 @@ import io.dataease.base.domain.DatasetTable;
import io.dataease.base.domain.DatasetTableField;
import io.dataease.base.domain.Datasource;
import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.dto.chart.ChartCustomFilterDTO;
import io.dataease.provider.datasource.DatasourceProvider;
import io.dataease.provider.ProviderFactory;
import io.dataease.controller.request.datasource.DatasourceRequest;
@ -41,8 +42,6 @@ public class DirectFieldService implements DataSetFieldService {
@Override
public List<Object> fieldValues(String fieldId) {
List<DatasetTableField> list = dataSetTableFieldsService.getListByIds(new ArrayList<String>() {{
add(fieldId);
}});
@ -51,9 +50,14 @@ public class DirectFieldService implements DataSetFieldService {
DatasetTableField field = list.get(0);
String tableId = field.getTableId();
if (StringUtils.isEmpty(tableId)) return null;
DatasetTable datasetTable = dataSetTableService.get(tableId);
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();
DatasourceProvider datasourceProvider = null;
@ -67,14 +71,14 @@ public class DirectFieldService implements DataSetFieldService {
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) {
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")) {
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")) {
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
List<DataSetTableUnionDTO> listUnion = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
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) {// 抽取
// 连接doris构建doris数据源查询
@ -85,7 +89,7 @@ public class DirectFieldService implements DataSetFieldService {
tableName = "ds_" + datasetTable.getId().replaceAll("-", "_");
datasourceRequest.setTable(tableName);
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 {

View File

@ -16,3 +16,15 @@ CREATE TABLE `panel_link_mapping` (
`resource_id` varchar(255) DEFAULT NULL COMMENT '仪表板ID',
PRIMARY KEY (`id`)
) 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`)
);

View File

@ -5,7 +5,6 @@
<!--配置数据库连接的位置-->
<properties url="file:///opt/dataease/conf/dataease.properties"/>
<!-- 设置mysql驱动路径 -->
<!--<classPathEntry location="/Users/liuruibin/.m2/repository/mysql/mysql-connector-java/5.1.34/mysql-connector-java-5.1.34.jar"/>-->
<!-- 此处指定生成针对MyBatis3的DAO -->
<context id="mysql" targetRuntime="MyBatis3">
<!-- 字段带`,解决列表跟关键字冲突问题 -->
@ -37,8 +36,6 @@
</commentGenerator>
<!-- 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"
connectionURL="${spring.datasource.url}&amp;nullCatalogMeansCurrent=true"
userId="${spring.datasource.username}" password="${spring.datasource.password}"/>
@ -63,24 +60,9 @@
</javaClientGenerator>
<!--要生成的数据库表 -->
<!-- <table tableName="panel_link_jump"/>-->
<!-- <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>-->
<table tableName="dataset_row_permissions">
<columnOverride column="filter" javaType="java.lang.String" jdbcType="VARCHAR" />
</table>
</context>

View File

@ -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 }

View File

@ -1155,7 +1155,15 @@ export default {
confirm_sync_field: '确认同步',
confirm_sync_field_tips: '同步字段可能会导致已编辑字段发生变更,请确认',
sync_success: '同步成功',
sync_success_1: '同步成功,请对当前数据集重新执行数据同步操作'
sync_success_1: '同步成功,请对当前数据集重新执行数据同步操作',
row_permission: {
type: '类型',
name: '名称',
condition: '条件',
value: '值',
add: '添加行权限',
edit: '编辑行权限'
}
},
datasource: {
datasource: '数据源',

View File

@ -54,16 +54,6 @@ export default {
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: '',
options: [{

View File

@ -1,35 +1,345 @@
<template>
<de-main-container style="height: calc(100vh - 56px)">
<auth-config />
</de-main-container>
<el-col>
<el-row v-loading="$store.getters.loadingMap[$store.getters.currentPath]" style="margin-top: 10px;">
<complex-table :data="data" :columns="columns" local-key="rowPermission" :search-config="searchConfig" :pagination-config="paginationConfig" @select="select" @search="search">
<template #toolbar>
<el-button icon="el-icon-circle-plus-outline" @click="create(undefined)">{{ $t('commons.add') }}</el-button>
</template>
<el-table-column prop="authTargetType" :label="$t('dataset.row_permission.type')">
<template slot-scope="scope">
<span v-if="scope.row.authTargetType === 'dept'">{{ $t('auth.dept') }}</span>
<span v-if="scope.row.authTargetType === 'role'">{{ $t('auth.role') }}</span>
<span v-if="scope.row.authTargetType === 'user'">{{ $t('auth.user') }}</span>
</template>
</el-table-column>
<el-table-column prop="authTargetName" :label="$t('dataset.row_permission.name')" />
<el-table-column prop="fieldName" :label="$t('dataset.field_name')" />
<el-table-column prop="filter" :label="$t('dataset.row_permission.value')">
<template slot-scope="scope">
<el-table :data="scope.row.filter" :show-header='false' style="width: 100%">
<el-table-column prop="term" width="180">
<template slot-scope="scope">
<span v-if="scope.row.term === 'eq'">{{ $t('chart.filter_eq') }}</span>
<span v-if="scope.row.term === 'not_eq'">{{ $t('chart.filter_not_eq') }}</span>
<span v-if="scope.row.term === 'lt'">{{ $t('chart.filter_lt') }}</span>
<span v-if="scope.row.term === 'gt'">{{ $t('chart.filter_gt') }}</span>
<span v-if="scope.row.term === 'le'">{{ $t('chart.filter_le') }}</span>
<span v-if="scope.row.term === 'ge'">{{ $t('chart.filter_le') }}</span>
</template>
</el-table-column>
<el-table-column prop="value" width="180"></el-table-column>
</el-table>
</template>
</el-table-column>
<fu-table-operations :buttons="buttons" :label="$t('commons.operating')" fix />
</complex-table>
</el-row>
<el-dialog v-dialogDrag :title="update_row_permission_dialog_title" :visible="update_row_permission" :show-close="false" width="50%" class="dialog-css" append-to-body>
<el-col>
<el-form ref="rowPermissionForm" :form="rowPermissionForm" :model="rowPermissionForm" label-width="100px" >
<el-form-item :label="$t('dataset.row_permission.type')" prop="type">
<el-select v-model="rowPermissionForm.authTargetType" @change="onTypeChange">
<el-option :label="$t('auth.dept')" value="dept" />
<el-option :label="$t('auth.role')" value="role" />
<el-option :label="$t('auth.user')" value="user" />
</el-select>
</el-form-item>
<el-form-item :label="$t('commons.name')" prop="authTargetId">
<el-select v-model="rowPermissionForm.authTargetId">
<el-option
v-for="item in targetObjs"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item :label="$t('dataset.field_name')" prop="authTargetId">
<el-select v-model="rowPermissionForm.datasetFieldId">
<el-option
v-for="item in filedList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-col>
<el-button icon="el-icon-plus" circle size="mini" style="margin-bottom: 10px;" @click="addFilter" />
<div style="max-height: 50vh;overflow-y: auto;">
<el-row v-for="(f,index) in rowPermissionForm.filter" :key="index" class="filter-item">
<el-col :span="4">
<el-select v-model="f.term" size="mini">
<el-option-group
v-for="(group,idx) in options"
:key="idx"
:label="group.label"
>
<el-option
v-for="opt in group.options"
:key="opt.value"
:label="opt.label"
:value="opt.value"
/>
</el-option-group>
</el-select>
</el-col>
<el-col :span="6">
<el-input v-show="!f.term.includes('null')" v-model="f.value" class="value-item" :placeholder="$t('chart.condition')" size="mini" clearable />
</el-col>
<el-col :span="2">
<el-button type="text" icon="el-icon-delete" circle style="float: right" @click="removeFilter(index)" />
</el-col>
</el-row>
</div>
</el-col>
</el-form-item>
</el-form>
</el-col>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="closeDialog">{{ $t('dataset.cancel') }}</el-button>
<el-button type="primary" size="mini" @click="save()">{{ $t('dataset.confirm') }}</el-button>
</div>
</el-dialog>
</el-col>
</template>
<script>
import DeMainContainer from '@/components/dataease/DeMainContainer'
import AuthConfig from './authConfig'
import ComplexTable from '@/components/business/complex-table'
import { formatCondition, formatQuickCondition, formatOrders } from '@/utils/index'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { datasetRowPermissionsList, post, fieldList} from '@/api/dataset/dataset'
import TableSelector from '@/views/chart/view/TableSelector'
export default {
name: 'RowPermissions',
components: { DeMainContainer, AuthConfig },
data () {
return {
authorityType: 'authConfig'
components: { ComplexTable, TableSelector },
props: {
param: {
type: Object,
default: null
},
table: {
type: Object,
default: null
}
},
watch: {
data() {
return {
columns: [],
buttons: [
{
label: this.$t('commons.edit'), icon: 'el-icon-edit', type: 'primary', click: this.create, disabled: this.disableEdit
},
{
label: this.$t('commons.delete'), icon: 'el-icon-delete', type: 'danger', click: this.deleteRowPermission, disabled: this.disableDelete
}
],
searchConfig: {
useQuickSearch: true,
useComplexSearch: true,
quickPlaceholder: this.$t('dataset.task.search_by_name'),
components: [
{ field: 'dataset_table_task.name', label: this.$t('dataset.task_name'), component: 'DeComplexInput' },
{ field: 'dataset_table_task.id', label: this.$t('dataset.task_id'), component: 'FuComplexInput' },
{ field: 'dataset_table.name', label: this.$t('dataset.name'), component: 'DeComplexInput' },
{ field: 'dataset_table_task.status', label: this.$t('dataset.task.task_status'), component: 'FuComplexSelect',
options: [{ label: this.$t('dataset.task.stopped'), value: 'Stopped' }, { label: this.$t('dataset.task.underway'), value: 'Underway' }, { label: this.$t('dataset.task.pending'), value: 'Pending' }, { label: this.$t('dataset.underway'), value: 'Exec' }], multiple: false },
{ field: 'dataset_table_task.last_exec_status', label: this.$t('dataset.task.last_exec_status'), component: 'FuComplexSelect', options: [{ label: this.$t('dataset.completed'), value: 'Completed' }, { label: this.$t('dataset.underway'), value: 'Underway' }, { label: this.$t('dataset.error'), value: 'Error' }], multiple: false }
]
},
last_condition: null,
orderConditions: [],
paginationConfig: {
currentPage: 1,
pageSize: 10,
total: 0
},
data: [],
update_row_permission: false,
update_row_permission_dialog_title: '',
defaultForm: {
authTargetId: null,
authTargetType: null,
datasetFieldId: null,
datasetId: '',
filter: [{term: 'eq', value: ''}]
},
rowPermissionForm: {},
targetObjs: [],
filedList: [],
depts: null,
options: [
{
label: '',
options: [{
value: 'eq',
label: this.$t('chart.filter_eq')
}, {
value: 'not_eq',
label: this.$t('chart.filter_not_eq')
}]
},
{
label: '',
options: [{
value: 'lt',
label: this.$t('chart.filter_lt')
}, {
value: 'gt',
label: this.$t('chart.filter_gt')
}]
},
{
label: '',
options: [{
value: 'le',
label: this.$t('chart.filter_le')
}, {
value: 'ge',
label: this.$t('chart.filter_ge')
}]
}]
}
},
mounted () {
computed: {
},
created() {
this.rowPermissionForm.datasetId = this.table.id
this.initFieldLists()
this.search(this.last_condition)
},
beforeDestroy() {
},
methods: {
executeAxios (param) {
this.$emit('execute-axios', param)
initFieldLists(){
fieldList(this.table.id).then(response => {
this.filedList = response.data
})
},
handleClick () {
console.log('===>handleClick')
select(selection) {
},
search(condition, showLoading = true) {
this.last_condition = condition
condition = formatQuickCondition(condition, 'dataset_table_field.name')
const temp = formatCondition(condition)
const param = temp || {}
param['orders'] = formatOrders(this.orderConditions)
const { currentPage, pageSize } = this.paginationConfig
datasetRowPermissionsList(this.table.id, currentPage, pageSize, param, showLoading).then(response => {
this.data = response.data.listObject
this.data.forEach(item => {
item.filter = JSON.parse(item.filter)
this.dataSetRowPermissionInfo(item)
})
this.paginationConfig.total = response.data.itemCount
})
},
dataSetRowPermissionInfo(item) {
let params = JSON.parse(JSON.stringify(item));
params.filter = JSON.stringify(params.filter)
post('/dataset/rowPermissions/dataSetRowPermissionInfo', params, false).then(response => {
item.authTargetName = response.data.authTargetName
})
},
create(rowPermissionObj) {
if (!rowPermissionObj) { // add
this.rowPermissionForm = Object.assign({}, this.defaultForm)
this.update_row_permission_dialog_title = this.$t('dataset.row_permission.add')
} else { // update
this.rowPermissionForm = Object.assign({}, rowPermissionObj)
this.update_row_permission_dialog_title = this.$t('dataset.row_permission.edit')
this.fetchTypeList()
}
this.update_row_permission = true
},
onTypeChange(){
this.rowPermissionForm.authTargetId = ''
this.fetchTypeList()
},
fetchTypeList(){
let params = JSON.parse(JSON.stringify(this.rowPermissionForm));
params.filter = JSON.stringify(params.filter)
post('/dataset/rowPermissions/authObjs', params).then(response => {
this.targetObjs = response.data
}).catch(() => {
this.targetObjs = []
})
},
addFilter() {
this.rowPermissionForm.filter.push({
term: 'eq',
value: ''
})
},
removeFilter(index) {
this.rowPermissionForm.filter.splice(index, 1)
},
closeDialog() {
this.update_row_permission = false
this.resetTaskForm()
},
resetTaskForm(){
this.rowPermissionForm={
datasetId: this.rowPermissionForm.datasetId,
authTargetId: null,
filter: [{term: 'eq', value: ''}]
}
},
deleteRowPermission(item) {
this.$confirm(this.$t('dataset.confirm_delete'), this.$t('dataset.tips'), {
confirmButtonText: this.$t('dataset.confirm'),
cancelButtonText: this.$t('dataset.cancel'),
type: 'warning'
}).then(() => {
post('/dataset/rowPermissions/delete/' + item.id, null).then(() => {
this.$message({
message: this.$t('dataset.delete_success'),
type: 'success',
showClose: true
})
this.search(this.last_condition, true)
})
}).catch(() => {
})
},
save() {
this.$refs.rowPermissionForm.validate(valid => {
if (valid) {
let params = JSON.parse(JSON.stringify(this.rowPermissionForm));
params.filter = JSON.stringify(params.filter)
post('/dataset/rowPermissions/save', params).then(() => {
this.$message({
message: this.$t('dataset.save_success'),
type: 'success',
showClose: true
})
this.update_row_permission = false
this.resetTaskForm()
this.search(this.last_condition, true)
})
} else {
return false
}
})
}
}
}
</script>
<style scoped>
span{
font-size: 12px;
}
</style>

View File

@ -57,7 +57,7 @@
<union-view :param="param" :table="table" />
</el-tab-pane>
<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 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" />