Merge pull request #535 from dataease/dev

Dev
This commit is contained in:
fit2cloudrd 2021-08-05 10:22:18 +08:00 committed by GitHub
commit 55ef429bbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 2561 additions and 2998 deletions

View File

@ -4,9 +4,9 @@ ARG IMAGE_TAG
RUN mkdir -p /opt/apps RUN mkdir -p /opt/apps
ADD backend/target/backend-1.0.0.jar /opt/apps ADD backend/target/backend-$IMAGE_TAG.jar /opt/apps
ENV JAVA_APP_JAR=/opt/apps/backend-1.0.0.jar ENV JAVA_APP_JAR=/opt/apps/backend-$IMAGE_TAG.jar
ENV AB_OFF=true ENV AB_OFF=true

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>dataease-server</artifactId> <artifactId>dataease-server</artifactId>
<groupId>io.dataease</groupId> <groupId>io.dataease</groupId>
<version>1.0.0</version> <version>1.2.0</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
@ -341,7 +341,7 @@
<dependency> <dependency>
<groupId>io.dataease</groupId> <groupId>io.dataease</groupId>
<artifactId>dataease-plugin-interface</artifactId> <artifactId>dataease-plugin-interface</artifactId>
<version>1.0</version> <version>1.2</version>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -21,6 +21,8 @@ public class ChartViewWithBLOBs extends ChartView implements Serializable {
private String customFilter; private String customFilter;
private String drillFields;
private String snapshot; private String snapshot;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -0,0 +1,25 @@
package io.dataease.base.domain;
import java.io.Serializable;
import lombok.Data;
@Data
public class PanelViewLinkage implements Serializable {
private String id;
private String panelId;
private String sourceViewId;
private String targetViewId;
private Long updateTime;
private String updatePeople;
private String ext1;
private String ext2;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,750 @@
package io.dataease.base.domain;
import java.util.ArrayList;
import java.util.List;
public class PanelViewLinkageExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
public PanelViewLinkageExample() {
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 andPanelIdIsNull() {
addCriterion("panel_id is null");
return (Criteria) this;
}
public Criteria andPanelIdIsNotNull() {
addCriterion("panel_id is not null");
return (Criteria) this;
}
public Criteria andPanelIdEqualTo(String value) {
addCriterion("panel_id =", value, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdNotEqualTo(String value) {
addCriterion("panel_id <>", value, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdGreaterThan(String value) {
addCriterion("panel_id >", value, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdGreaterThanOrEqualTo(String value) {
addCriterion("panel_id >=", value, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdLessThan(String value) {
addCriterion("panel_id <", value, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdLessThanOrEqualTo(String value) {
addCriterion("panel_id <=", value, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdLike(String value) {
addCriterion("panel_id like", value, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdNotLike(String value) {
addCriterion("panel_id not like", value, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdIn(List<String> values) {
addCriterion("panel_id in", values, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdNotIn(List<String> values) {
addCriterion("panel_id not in", values, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdBetween(String value1, String value2) {
addCriterion("panel_id between", value1, value2, "panelId");
return (Criteria) this;
}
public Criteria andPanelIdNotBetween(String value1, String value2) {
addCriterion("panel_id not between", value1, value2, "panelId");
return (Criteria) this;
}
public Criteria andSourceViewIdIsNull() {
addCriterion("source_view_id is null");
return (Criteria) this;
}
public Criteria andSourceViewIdIsNotNull() {
addCriterion("source_view_id is not null");
return (Criteria) this;
}
public Criteria andSourceViewIdEqualTo(String value) {
addCriterion("source_view_id =", value, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdNotEqualTo(String value) {
addCriterion("source_view_id <>", value, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdGreaterThan(String value) {
addCriterion("source_view_id >", value, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdGreaterThanOrEqualTo(String value) {
addCriterion("source_view_id >=", value, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdLessThan(String value) {
addCriterion("source_view_id <", value, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdLessThanOrEqualTo(String value) {
addCriterion("source_view_id <=", value, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdLike(String value) {
addCriterion("source_view_id like", value, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdNotLike(String value) {
addCriterion("source_view_id not like", value, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdIn(List<String> values) {
addCriterion("source_view_id in", values, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdNotIn(List<String> values) {
addCriterion("source_view_id not in", values, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdBetween(String value1, String value2) {
addCriterion("source_view_id between", value1, value2, "sourceViewId");
return (Criteria) this;
}
public Criteria andSourceViewIdNotBetween(String value1, String value2) {
addCriterion("source_view_id not between", value1, value2, "sourceViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdIsNull() {
addCriterion("target_view_id is null");
return (Criteria) this;
}
public Criteria andTargetViewIdIsNotNull() {
addCriterion("target_view_id is not null");
return (Criteria) this;
}
public Criteria andTargetViewIdEqualTo(String value) {
addCriterion("target_view_id =", value, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdNotEqualTo(String value) {
addCriterion("target_view_id <>", value, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdGreaterThan(String value) {
addCriterion("target_view_id >", value, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdGreaterThanOrEqualTo(String value) {
addCriterion("target_view_id >=", value, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdLessThan(String value) {
addCriterion("target_view_id <", value, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdLessThanOrEqualTo(String value) {
addCriterion("target_view_id <=", value, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdLike(String value) {
addCriterion("target_view_id like", value, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdNotLike(String value) {
addCriterion("target_view_id not like", value, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdIn(List<String> values) {
addCriterion("target_view_id in", values, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdNotIn(List<String> values) {
addCriterion("target_view_id not in", values, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdBetween(String value1, String value2) {
addCriterion("target_view_id between", value1, value2, "targetViewId");
return (Criteria) this;
}
public Criteria andTargetViewIdNotBetween(String value1, String value2) {
addCriterion("target_view_id not between", value1, value2, "targetViewId");
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 Criteria andUpdatePeopleIsNull() {
addCriterion("update_people is null");
return (Criteria) this;
}
public Criteria andUpdatePeopleIsNotNull() {
addCriterion("update_people is not null");
return (Criteria) this;
}
public Criteria andUpdatePeopleEqualTo(String value) {
addCriterion("update_people =", value, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleNotEqualTo(String value) {
addCriterion("update_people <>", value, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleGreaterThan(String value) {
addCriterion("update_people >", value, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleGreaterThanOrEqualTo(String value) {
addCriterion("update_people >=", value, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleLessThan(String value) {
addCriterion("update_people <", value, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleLessThanOrEqualTo(String value) {
addCriterion("update_people <=", value, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleLike(String value) {
addCriterion("update_people like", value, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleNotLike(String value) {
addCriterion("update_people not like", value, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleIn(List<String> values) {
addCriterion("update_people in", values, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleNotIn(List<String> values) {
addCriterion("update_people not in", values, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleBetween(String value1, String value2) {
addCriterion("update_people between", value1, value2, "updatePeople");
return (Criteria) this;
}
public Criteria andUpdatePeopleNotBetween(String value1, String value2) {
addCriterion("update_people not between", value1, value2, "updatePeople");
return (Criteria) this;
}
public Criteria andExt1IsNull() {
addCriterion("ext1 is null");
return (Criteria) this;
}
public Criteria andExt1IsNotNull() {
addCriterion("ext1 is not null");
return (Criteria) this;
}
public Criteria andExt1EqualTo(String value) {
addCriterion("ext1 =", value, "ext1");
return (Criteria) this;
}
public Criteria andExt1NotEqualTo(String value) {
addCriterion("ext1 <>", value, "ext1");
return (Criteria) this;
}
public Criteria andExt1GreaterThan(String value) {
addCriterion("ext1 >", value, "ext1");
return (Criteria) this;
}
public Criteria andExt1GreaterThanOrEqualTo(String value) {
addCriterion("ext1 >=", value, "ext1");
return (Criteria) this;
}
public Criteria andExt1LessThan(String value) {
addCriterion("ext1 <", value, "ext1");
return (Criteria) this;
}
public Criteria andExt1LessThanOrEqualTo(String value) {
addCriterion("ext1 <=", value, "ext1");
return (Criteria) this;
}
public Criteria andExt1Like(String value) {
addCriterion("ext1 like", value, "ext1");
return (Criteria) this;
}
public Criteria andExt1NotLike(String value) {
addCriterion("ext1 not like", value, "ext1");
return (Criteria) this;
}
public Criteria andExt1In(List<String> values) {
addCriterion("ext1 in", values, "ext1");
return (Criteria) this;
}
public Criteria andExt1NotIn(List<String> values) {
addCriterion("ext1 not in", values, "ext1");
return (Criteria) this;
}
public Criteria andExt1Between(String value1, String value2) {
addCriterion("ext1 between", value1, value2, "ext1");
return (Criteria) this;
}
public Criteria andExt1NotBetween(String value1, String value2) {
addCriterion("ext1 not between", value1, value2, "ext1");
return (Criteria) this;
}
public Criteria andExt2IsNull() {
addCriterion("ext2 is null");
return (Criteria) this;
}
public Criteria andExt2IsNotNull() {
addCriterion("ext2 is not null");
return (Criteria) this;
}
public Criteria andExt2EqualTo(String value) {
addCriterion("ext2 =", value, "ext2");
return (Criteria) this;
}
public Criteria andExt2NotEqualTo(String value) {
addCriterion("ext2 <>", value, "ext2");
return (Criteria) this;
}
public Criteria andExt2GreaterThan(String value) {
addCriterion("ext2 >", value, "ext2");
return (Criteria) this;
}
public Criteria andExt2GreaterThanOrEqualTo(String value) {
addCriterion("ext2 >=", value, "ext2");
return (Criteria) this;
}
public Criteria andExt2LessThan(String value) {
addCriterion("ext2 <", value, "ext2");
return (Criteria) this;
}
public Criteria andExt2LessThanOrEqualTo(String value) {
addCriterion("ext2 <=", value, "ext2");
return (Criteria) this;
}
public Criteria andExt2Like(String value) {
addCriterion("ext2 like", value, "ext2");
return (Criteria) this;
}
public Criteria andExt2NotLike(String value) {
addCriterion("ext2 not like", value, "ext2");
return (Criteria) this;
}
public Criteria andExt2In(List<String> values) {
addCriterion("ext2 in", values, "ext2");
return (Criteria) this;
}
public Criteria andExt2NotIn(List<String> values) {
addCriterion("ext2 not in", values, "ext2");
return (Criteria) this;
}
public Criteria andExt2Between(String value1, String value2) {
addCriterion("ext2 between", value1, value2, "ext2");
return (Criteria) this;
}
public Criteria andExt2NotBetween(String value1, String value2) {
addCriterion("ext2 not between", value1, value2, "ext2");
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,19 @@
package io.dataease.base.domain;
import java.io.Serializable;
import lombok.Data;
@Data
public class PanelViewLinkageField implements Serializable {
private String id;
private String linkageId;
private String sourceFiled;
private String targetFiled;
private Long updateTime;
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,540 @@
package io.dataease.base.domain;
import java.util.ArrayList;
import java.util.List;
public class PanelViewLinkageFieldExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
public PanelViewLinkageFieldExample() {
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 andLinkageIdIsNull() {
addCriterion("linkage_id is null");
return (Criteria) this;
}
public Criteria andLinkageIdIsNotNull() {
addCriterion("linkage_id is not null");
return (Criteria) this;
}
public Criteria andLinkageIdEqualTo(String value) {
addCriterion("linkage_id =", value, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdNotEqualTo(String value) {
addCriterion("linkage_id <>", value, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdGreaterThan(String value) {
addCriterion("linkage_id >", value, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdGreaterThanOrEqualTo(String value) {
addCriterion("linkage_id >=", value, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdLessThan(String value) {
addCriterion("linkage_id <", value, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdLessThanOrEqualTo(String value) {
addCriterion("linkage_id <=", value, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdLike(String value) {
addCriterion("linkage_id like", value, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdNotLike(String value) {
addCriterion("linkage_id not like", value, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdIn(List<String> values) {
addCriterion("linkage_id in", values, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdNotIn(List<String> values) {
addCriterion("linkage_id not in", values, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdBetween(String value1, String value2) {
addCriterion("linkage_id between", value1, value2, "linkageId");
return (Criteria) this;
}
public Criteria andLinkageIdNotBetween(String value1, String value2) {
addCriterion("linkage_id not between", value1, value2, "linkageId");
return (Criteria) this;
}
public Criteria andSourceFiledIsNull() {
addCriterion("source_filed is null");
return (Criteria) this;
}
public Criteria andSourceFiledIsNotNull() {
addCriterion("source_filed is not null");
return (Criteria) this;
}
public Criteria andSourceFiledEqualTo(String value) {
addCriterion("source_filed =", value, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledNotEqualTo(String value) {
addCriterion("source_filed <>", value, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledGreaterThan(String value) {
addCriterion("source_filed >", value, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledGreaterThanOrEqualTo(String value) {
addCriterion("source_filed >=", value, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledLessThan(String value) {
addCriterion("source_filed <", value, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledLessThanOrEqualTo(String value) {
addCriterion("source_filed <=", value, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledLike(String value) {
addCriterion("source_filed like", value, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledNotLike(String value) {
addCriterion("source_filed not like", value, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledIn(List<String> values) {
addCriterion("source_filed in", values, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledNotIn(List<String> values) {
addCriterion("source_filed not in", values, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledBetween(String value1, String value2) {
addCriterion("source_filed between", value1, value2, "sourceFiled");
return (Criteria) this;
}
public Criteria andSourceFiledNotBetween(String value1, String value2) {
addCriterion("source_filed not between", value1, value2, "sourceFiled");
return (Criteria) this;
}
public Criteria andTargetFiledIsNull() {
addCriterion("target_filed is null");
return (Criteria) this;
}
public Criteria andTargetFiledIsNotNull() {
addCriterion("target_filed is not null");
return (Criteria) this;
}
public Criteria andTargetFiledEqualTo(String value) {
addCriterion("target_filed =", value, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledNotEqualTo(String value) {
addCriterion("target_filed <>", value, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledGreaterThan(String value) {
addCriterion("target_filed >", value, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledGreaterThanOrEqualTo(String value) {
addCriterion("target_filed >=", value, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledLessThan(String value) {
addCriterion("target_filed <", value, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledLessThanOrEqualTo(String value) {
addCriterion("target_filed <=", value, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledLike(String value) {
addCriterion("target_filed like", value, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledNotLike(String value) {
addCriterion("target_filed not like", value, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledIn(List<String> values) {
addCriterion("target_filed in", values, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledNotIn(List<String> values) {
addCriterion("target_filed not in", values, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledBetween(String value1, String value2) {
addCriterion("target_filed between", value1, value2, "targetFiled");
return (Criteria) this;
}
public Criteria andTargetFiledNotBetween(String value1, String value2) {
addCriterion("target_filed not between", value1, value2, "targetFiled");
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

@ -20,6 +20,7 @@
<result column="custom_attr" jdbcType="LONGVARCHAR" property="customAttr" /> <result column="custom_attr" jdbcType="LONGVARCHAR" property="customAttr" />
<result column="custom_style" jdbcType="LONGVARCHAR" property="customStyle" /> <result column="custom_style" jdbcType="LONGVARCHAR" property="customStyle" />
<result column="custom_filter" jdbcType="LONGVARCHAR" property="customFilter" /> <result column="custom_filter" jdbcType="LONGVARCHAR" property="customFilter" />
<result column="drill_fields" jdbcType="LONGVARCHAR" property="drillFields" />
<result column="snapshot" jdbcType="LONGVARCHAR" property="snapshot" /> <result column="snapshot" jdbcType="LONGVARCHAR" property="snapshot" />
</resultMap> </resultMap>
<sql id="Example_Where_Clause"> <sql id="Example_Where_Clause">
@ -85,7 +86,8 @@
style_priority style_priority
</sql> </sql>
<sql id="Blob_Column_List"> <sql id="Blob_Column_List">
x_axis, y_axis, ext_stack, custom_attr, custom_style, custom_filter, snapshot x_axis, y_axis, ext_stack, custom_attr, custom_style, custom_filter, drill_fields,
snapshot
</sql> </sql>
<select id="selectByExampleWithBLOBs" parameterType="io.dataease.base.domain.ChartViewExample" resultMap="ResultMapWithBLOBs"> <select id="selectByExampleWithBLOBs" parameterType="io.dataease.base.domain.ChartViewExample" resultMap="ResultMapWithBLOBs">
select select
@ -141,13 +143,15 @@
create_by, create_time, update_time, create_by, create_time, update_time,
style_priority, x_axis, y_axis, style_priority, x_axis, y_axis,
ext_stack, custom_attr, custom_style, ext_stack, custom_attr, custom_style,
custom_filter, snapshot) custom_filter, drill_fields, snapshot
)
values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{sceneId,jdbcType=VARCHAR}, values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{sceneId,jdbcType=VARCHAR},
#{tableId,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{tableId,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR},
#{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT},
#{stylePriority,jdbcType=VARCHAR}, #{xAxis,jdbcType=LONGVARCHAR}, #{yAxis,jdbcType=LONGVARCHAR}, #{stylePriority,jdbcType=VARCHAR}, #{xAxis,jdbcType=LONGVARCHAR}, #{yAxis,jdbcType=LONGVARCHAR},
#{extStack,jdbcType=LONGVARCHAR}, #{customAttr,jdbcType=LONGVARCHAR}, #{customStyle,jdbcType=LONGVARCHAR}, #{extStack,jdbcType=LONGVARCHAR}, #{customAttr,jdbcType=LONGVARCHAR}, #{customStyle,jdbcType=LONGVARCHAR},
#{customFilter,jdbcType=LONGVARCHAR}, #{snapshot,jdbcType=LONGVARCHAR}) #{customFilter,jdbcType=LONGVARCHAR}, #{drillFields,jdbcType=LONGVARCHAR}, #{snapshot,jdbcType=LONGVARCHAR}
)
</insert> </insert>
<insert id="insertSelective" parameterType="io.dataease.base.domain.ChartViewWithBLOBs"> <insert id="insertSelective" parameterType="io.dataease.base.domain.ChartViewWithBLOBs">
insert into chart_view insert into chart_view
@ -200,6 +204,9 @@
<if test="customFilter != null"> <if test="customFilter != null">
custom_filter, custom_filter,
</if> </if>
<if test="drillFields != null">
drill_fields,
</if>
<if test="snapshot != null"> <if test="snapshot != null">
snapshot, snapshot,
</if> </if>
@ -253,6 +260,9 @@
<if test="customFilter != null"> <if test="customFilter != null">
#{customFilter,jdbcType=LONGVARCHAR}, #{customFilter,jdbcType=LONGVARCHAR},
</if> </if>
<if test="drillFields != null">
#{drillFields,jdbcType=LONGVARCHAR},
</if>
<if test="snapshot != null"> <if test="snapshot != null">
#{snapshot,jdbcType=LONGVARCHAR}, #{snapshot,jdbcType=LONGVARCHAR},
</if> </if>
@ -315,6 +325,9 @@
<if test="record.customFilter != null"> <if test="record.customFilter != null">
custom_filter = #{record.customFilter,jdbcType=LONGVARCHAR}, custom_filter = #{record.customFilter,jdbcType=LONGVARCHAR},
</if> </if>
<if test="record.drillFields != null">
drill_fields = #{record.drillFields,jdbcType=LONGVARCHAR},
</if>
<if test="record.snapshot != null"> <if test="record.snapshot != null">
snapshot = #{record.snapshot,jdbcType=LONGVARCHAR}, snapshot = #{record.snapshot,jdbcType=LONGVARCHAR},
</if> </if>
@ -341,6 +354,7 @@
custom_attr = #{record.customAttr,jdbcType=LONGVARCHAR}, custom_attr = #{record.customAttr,jdbcType=LONGVARCHAR},
custom_style = #{record.customStyle,jdbcType=LONGVARCHAR}, custom_style = #{record.customStyle,jdbcType=LONGVARCHAR},
custom_filter = #{record.customFilter,jdbcType=LONGVARCHAR}, custom_filter = #{record.customFilter,jdbcType=LONGVARCHAR},
drill_fields = #{record.drillFields,jdbcType=LONGVARCHAR},
snapshot = #{record.snapshot,jdbcType=LONGVARCHAR} snapshot = #{record.snapshot,jdbcType=LONGVARCHAR}
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" /> <include refid="Update_By_Example_Where_Clause" />
@ -410,6 +424,9 @@
<if test="customFilter != null"> <if test="customFilter != null">
custom_filter = #{customFilter,jdbcType=LONGVARCHAR}, custom_filter = #{customFilter,jdbcType=LONGVARCHAR},
</if> </if>
<if test="drillFields != null">
drill_fields = #{drillFields,jdbcType=LONGVARCHAR},
</if>
<if test="snapshot != null"> <if test="snapshot != null">
snapshot = #{snapshot,jdbcType=LONGVARCHAR}, snapshot = #{snapshot,jdbcType=LONGVARCHAR},
</if> </if>
@ -433,6 +450,7 @@
custom_attr = #{customAttr,jdbcType=LONGVARCHAR}, custom_attr = #{customAttr,jdbcType=LONGVARCHAR},
custom_style = #{customStyle,jdbcType=LONGVARCHAR}, custom_style = #{customStyle,jdbcType=LONGVARCHAR},
custom_filter = #{customFilter,jdbcType=LONGVARCHAR}, custom_filter = #{customFilter,jdbcType=LONGVARCHAR},
drill_fields = #{drillFields,jdbcType=LONGVARCHAR},
snapshot = #{snapshot,jdbcType=LONGVARCHAR} snapshot = #{snapshot,jdbcType=LONGVARCHAR}
where id = #{id,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}
</update> </update>

View File

@ -0,0 +1,30 @@
package io.dataease.base.mapper;
import io.dataease.base.domain.PanelViewLinkageField;
import io.dataease.base.domain.PanelViewLinkageFieldExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface PanelViewLinkageFieldMapper {
long countByExample(PanelViewLinkageFieldExample example);
int deleteByExample(PanelViewLinkageFieldExample example);
int deleteByPrimaryKey(String id);
int insert(PanelViewLinkageField record);
int insertSelective(PanelViewLinkageField record);
List<PanelViewLinkageField> selectByExample(PanelViewLinkageFieldExample example);
PanelViewLinkageField selectByPrimaryKey(String id);
int updateByExampleSelective(@Param("record") PanelViewLinkageField record, @Param("example") PanelViewLinkageFieldExample example);
int updateByExample(@Param("record") PanelViewLinkageField record, @Param("example") PanelViewLinkageFieldExample example);
int updateByPrimaryKeySelective(PanelViewLinkageField record);
int updateByPrimaryKey(PanelViewLinkageField record);
}

View File

@ -0,0 +1,211 @@
<?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.PanelViewLinkageFieldMapper">
<resultMap id="BaseResultMap" type="io.dataease.base.domain.PanelViewLinkageField">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="linkage_id" jdbcType="VARCHAR" property="linkageId" />
<result column="source_filed" jdbcType="VARCHAR" property="sourceFiled" />
<result column="target_filed" jdbcType="VARCHAR" property="targetFiled" />
<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, linkage_id, source_filed, target_filed, update_time
</sql>
<select id="selectByExample" parameterType="io.dataease.base.domain.PanelViewLinkageFieldExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from panel_view_linkage_field
<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 panel_view_linkage_field
where id = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from panel_view_linkage_field
where id = #{id,jdbcType=VARCHAR}
</delete>
<delete id="deleteByExample" parameterType="io.dataease.base.domain.PanelViewLinkageFieldExample">
delete from panel_view_linkage_field
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="io.dataease.base.domain.PanelViewLinkageField">
insert into panel_view_linkage_field (id, linkage_id, source_filed,
target_filed, update_time)
values (#{id,jdbcType=VARCHAR}, #{linkageId,jdbcType=VARCHAR}, #{sourceFiled,jdbcType=VARCHAR},
#{targetFiled,jdbcType=VARCHAR}, #{updateTime,jdbcType=BIGINT})
</insert>
<insert id="insertSelective" parameterType="io.dataease.base.domain.PanelViewLinkageField">
insert into panel_view_linkage_field
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="linkageId != null">
linkage_id,
</if>
<if test="sourceFiled != null">
source_filed,
</if>
<if test="targetFiled != null">
target_filed,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="linkageId != null">
#{linkageId,jdbcType=VARCHAR},
</if>
<if test="sourceFiled != null">
#{sourceFiled,jdbcType=VARCHAR},
</if>
<if test="targetFiled != null">
#{targetFiled,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=BIGINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="io.dataease.base.domain.PanelViewLinkageFieldExample" resultType="java.lang.Long">
select count(*) from panel_view_linkage_field
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update panel_view_linkage_field
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=VARCHAR},
</if>
<if test="record.linkageId != null">
linkage_id = #{record.linkageId,jdbcType=VARCHAR},
</if>
<if test="record.sourceFiled != null">
source_filed = #{record.sourceFiled,jdbcType=VARCHAR},
</if>
<if test="record.targetFiled != null">
target_filed = #{record.targetFiled,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 panel_view_linkage_field
set id = #{record.id,jdbcType=VARCHAR},
linkage_id = #{record.linkageId,jdbcType=VARCHAR},
source_filed = #{record.sourceFiled,jdbcType=VARCHAR},
target_filed = #{record.targetFiled,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.PanelViewLinkageField">
update panel_view_linkage_field
<set>
<if test="linkageId != null">
linkage_id = #{linkageId,jdbcType=VARCHAR},
</if>
<if test="sourceFiled != null">
source_filed = #{sourceFiled,jdbcType=VARCHAR},
</if>
<if test="targetFiled != null">
target_filed = #{targetFiled,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.PanelViewLinkageField">
update panel_view_linkage_field
set linkage_id = #{linkageId,jdbcType=VARCHAR},
source_filed = #{sourceFiled,jdbcType=VARCHAR},
target_filed = #{targetFiled,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=BIGINT}
where id = #{id,jdbcType=VARCHAR}
</update>
</mapper>

View File

@ -0,0 +1,30 @@
package io.dataease.base.mapper;
import io.dataease.base.domain.PanelViewLinkage;
import io.dataease.base.domain.PanelViewLinkageExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface PanelViewLinkageMapper {
long countByExample(PanelViewLinkageExample example);
int deleteByExample(PanelViewLinkageExample example);
int deleteByPrimaryKey(String id);
int insert(PanelViewLinkage record);
int insertSelective(PanelViewLinkage record);
List<PanelViewLinkage> selectByExample(PanelViewLinkageExample example);
PanelViewLinkage selectByPrimaryKey(String id);
int updateByExampleSelective(@Param("record") PanelViewLinkage record, @Param("example") PanelViewLinkageExample example);
int updateByExample(@Param("record") PanelViewLinkage record, @Param("example") PanelViewLinkageExample example);
int updateByPrimaryKeySelective(PanelViewLinkage record);
int updateByPrimaryKey(PanelViewLinkage record);
}

View File

@ -0,0 +1,258 @@
<?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.PanelViewLinkageMapper">
<resultMap id="BaseResultMap" type="io.dataease.base.domain.PanelViewLinkage">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="panel_id" jdbcType="VARCHAR" property="panelId" />
<result column="source_view_id" jdbcType="VARCHAR" property="sourceViewId" />
<result column="target_view_id" jdbcType="VARCHAR" property="targetViewId" />
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
<result column="update_people" jdbcType="VARCHAR" property="updatePeople" />
<result column="ext1" jdbcType="VARCHAR" property="ext1" />
<result column="ext2" jdbcType="VARCHAR" property="ext2" />
</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, panel_id, source_view_id, target_view_id, update_time, update_people, ext1, ext2
</sql>
<select id="selectByExample" parameterType="io.dataease.base.domain.PanelViewLinkageExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from panel_view_linkage
<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 panel_view_linkage
where id = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from panel_view_linkage
where id = #{id,jdbcType=VARCHAR}
</delete>
<delete id="deleteByExample" parameterType="io.dataease.base.domain.PanelViewLinkageExample">
delete from panel_view_linkage
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="io.dataease.base.domain.PanelViewLinkage">
insert into panel_view_linkage (id, panel_id, source_view_id,
target_view_id, update_time, update_people,
ext1, ext2)
values (#{id,jdbcType=VARCHAR}, #{panelId,jdbcType=VARCHAR}, #{sourceViewId,jdbcType=VARCHAR},
#{targetViewId,jdbcType=VARCHAR}, #{updateTime,jdbcType=BIGINT}, #{updatePeople,jdbcType=VARCHAR},
#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="io.dataease.base.domain.PanelViewLinkage">
insert into panel_view_linkage
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="panelId != null">
panel_id,
</if>
<if test="sourceViewId != null">
source_view_id,
</if>
<if test="targetViewId != null">
target_view_id,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="updatePeople != null">
update_people,
</if>
<if test="ext1 != null">
ext1,
</if>
<if test="ext2 != null">
ext2,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="panelId != null">
#{panelId,jdbcType=VARCHAR},
</if>
<if test="sourceViewId != null">
#{sourceViewId,jdbcType=VARCHAR},
</if>
<if test="targetViewId != null">
#{targetViewId,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=BIGINT},
</if>
<if test="updatePeople != null">
#{updatePeople,jdbcType=VARCHAR},
</if>
<if test="ext1 != null">
#{ext1,jdbcType=VARCHAR},
</if>
<if test="ext2 != null">
#{ext2,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="io.dataease.base.domain.PanelViewLinkageExample" resultType="java.lang.Long">
select count(*) from panel_view_linkage
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update panel_view_linkage
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=VARCHAR},
</if>
<if test="record.panelId != null">
panel_id = #{record.panelId,jdbcType=VARCHAR},
</if>
<if test="record.sourceViewId != null">
source_view_id = #{record.sourceViewId,jdbcType=VARCHAR},
</if>
<if test="record.targetViewId != null">
target_view_id = #{record.targetViewId,jdbcType=VARCHAR},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime,jdbcType=BIGINT},
</if>
<if test="record.updatePeople != null">
update_people = #{record.updatePeople,jdbcType=VARCHAR},
</if>
<if test="record.ext1 != null">
ext1 = #{record.ext1,jdbcType=VARCHAR},
</if>
<if test="record.ext2 != null">
ext2 = #{record.ext2,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update panel_view_linkage
set id = #{record.id,jdbcType=VARCHAR},
panel_id = #{record.panelId,jdbcType=VARCHAR},
source_view_id = #{record.sourceViewId,jdbcType=VARCHAR},
target_view_id = #{record.targetViewId,jdbcType=VARCHAR},
update_time = #{record.updateTime,jdbcType=BIGINT},
update_people = #{record.updatePeople,jdbcType=VARCHAR},
ext1 = #{record.ext1,jdbcType=VARCHAR},
ext2 = #{record.ext2,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="io.dataease.base.domain.PanelViewLinkage">
update panel_view_linkage
<set>
<if test="panelId != null">
panel_id = #{panelId,jdbcType=VARCHAR},
</if>
<if test="sourceViewId != null">
source_view_id = #{sourceViewId,jdbcType=VARCHAR},
</if>
<if test="targetViewId != null">
target_view_id = #{targetViewId,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=BIGINT},
</if>
<if test="updatePeople != null">
update_people = #{updatePeople,jdbcType=VARCHAR},
</if>
<if test="ext1 != null">
ext1 = #{ext1,jdbcType=VARCHAR},
</if>
<if test="ext2 != null">
ext2 = #{ext2,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="io.dataease.base.domain.PanelViewLinkage">
update panel_view_linkage
set panel_id = #{panelId,jdbcType=VARCHAR},
source_view_id = #{sourceViewId,jdbcType=VARCHAR},
target_view_id = #{targetViewId,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=BIGINT},
update_people = #{updatePeople,jdbcType=VARCHAR},
ext1 = #{ext1,jdbcType=VARCHAR},
ext2 = #{ext2,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR}
</update>
</mapper>

View File

@ -0,0 +1,12 @@
package io.dataease.base.mapper.ext;
import io.dataease.dto.PanelViewLinkageDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ExtPanelViewLinkageMapper {
List<PanelViewLinkageDTO> getViewLinkageGather(@Param("panelId") String panelId,@Param("sourceViewId") String sourceViewId);
}

View File

@ -0,0 +1,33 @@
<?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.ext.ExtPanelViewLinkageMapper">
<resultMap id="LinkageGatherMap" type="io.dataease.dto.PanelViewLinkageDTO">
<result column="target_view_id" jdbcType="VARCHAR" property="targetViewId" />
<result column="targetViewName" jdbcType="VARCHAR" property="targetViewName" />
<collection property="linkageFields">
<result column="source_filed" jdbcType="VARCHAR" property="sourceFiled" />
<result column="target_filed" jdbcType="VARCHAR" property="targetFiled" />
</collection>
</resultMap>
<select id ="getViewLinkageGather" resultMap="LinkageGatherMap">
SELECT
chart_view.`name` as 'targetViewName',
panel_view_linkage.target_view_id,
panel_view_linkage_field.source_filed,
panel_view_linkage_field.target_filed
FROM
chart_view
LEFT JOIN panel_view_linkage ON chart_view.id = panel_view_linkage.target_view_id
LEFT JOIN panel_view_linkage_field ON panel_view_linkage.id = panel_view_linkage_field.linkage_id
AND panel_view_linkage.panel_id = #{panelId}
AND panel_view_linkage.source_view_id = #{sourceViewId}
where chart_view.id in
<foreach collection="targetViewIds" item="targetViewId" index="index" open="(" close=")" separator=",">
#{targetViewId}
</foreach>
</select>
</mapper>

View File

@ -5,11 +5,7 @@ import java.io.BufferedReader;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.Enumeration; import java.util.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.servlet.ReadListener; import javax.servlet.ReadListener;
@ -17,12 +13,20 @@ import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletRequestWrapper;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import io.dataease.commons.holder.ThreadLocalContextHolder; import io.dataease.commons.holder.ThreadLocalContextHolder;
import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.commons.utils.ServletUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.env.Environment;
import org.springframework.util.StreamUtils; import org.springframework.util.StreamUtils;
public class XssAndSqlHttpServletRequestWrapper extends HttpServletRequestWrapper { public class XssAndSqlHttpServletRequestWrapper extends HttpServletRequestWrapper {
private static Gson gson = new Gson();
HttpServletRequest orgRequest = null; HttpServletRequest orgRequest = null;
private Map<String, String[]> parameterMap; private Map<String, String[]> parameterMap;
@ -215,9 +219,24 @@ public class XssAndSqlHttpServletRequestWrapper extends HttpServletRequestWrappe
} }
public static boolean checkSqlInjection(Object obj){ public static boolean checkSqlInjection(Object obj){
Pattern pattern= Pattern.compile("(.*\\=.*\\-\\-.*)|(.*(\\+|\\-).*)|(.*\\w+(%|\\$|#|&)\\w+.*)|(.*\\|\\|.*)|(.*\\s+(and|or)\\s+.*)" + HttpServletRequest request = ServletUtils.request();
String url = request.getRequestURI().toString();
if (null == obj) return false;
if (StringUtils.isEmpty(obj.toString())) return false;
String orders = orders(obj.toString());
if (StringUtils.isEmpty(orders)) return false;
String whiteLists = CommonBeanFactory.getBean(Environment.class).getProperty("dataease.sqlinjection.whitelists", String.class, null);
if (StringUtils.isNotEmpty(whiteLists)) {
// 命中白名单 无需检测sql注入
if (Arrays.stream(whiteLists.split(",")).anyMatch(item -> url.indexOf(item) != -1)) return false;
}
Pattern pattern= Pattern.compile("(.*\\=.*\\-\\-.*)|(.*(\\+).*)|(.*\\w+(%|\\$|#|&)\\w+.*)|(.*\\|\\|.*)|(.*\\s+(and|or)\\s+.*)" +
"|(.*\\b(select|update|union|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|into|drop|execute)\\b.*)"); "|(.*\\b(select|update|union|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|into|drop|execute)\\b.*)");
Matcher matcher=pattern.matcher(obj.toString().toLowerCase()); Matcher matcher=pattern.matcher(orders.toLowerCase());
return matcher.find(); return matcher.find();
} }
@ -332,6 +351,28 @@ public class XssAndSqlHttpServletRequestWrapper extends HttpServletRequestWrappe
return false; return false;
} }
private static String orders(String json) {
if (StringUtils.isEmpty(json)) return null;
try{
Map<String, Object> map = JSONObject.parseObject(json, Map.class);
Object orders = map.get("orders");
if (orders != null) {
return gson.toJson(orders);
}
Object sort = map.get("sort");
if (sort != null) {
return sort.toString();
}
return null;
}catch (Exception e) {
return null;
}
}
@Override @Override
public BufferedReader getReader() throws IOException { public BufferedReader getReader() throws IOException {
return new BufferedReader(new InputStreamReader(getInputStream())); return new BufferedReader(new InputStreamReader(getInputStream()));

View File

@ -0,0 +1,33 @@
package io.dataease.controller.panel;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.controller.request.panel.PanelLinkageRequest;
import io.dataease.service.panel.PanelViewLinkageService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
* Author: wangjiahao
* Date: 8/4/21
* Description:
*/
@Api(tags = "仪表板:视图联动")
@ApiSupport(order = 171)
@RestController
@RequestMapping("linkage")
public class PanelViewLinkageController {
@Resource
private PanelViewLinkageService panelViewLinkageService;
@ApiOperation("获取仪表板视图联动信息")
@PostMapping("/getViewLinkageGather")
public Map getViewLinkageGather(@RequestBody PanelLinkageRequest request){
return panelViewLinkageService.getViewLinkageGather(request);
}
}

View File

@ -0,0 +1,41 @@
package io.dataease.controller.request.panel;
import java.util.List;
/**
* Author: wangjiahao
* Date: 8/4/21
* Description:
*/
public class PanelLinkageRequest {
private String panelId;
private String sourceViewId;
private List<String> targetViewIds;
public String getPanelId() {
return panelId;
}
public void setPanelId(String panelId) {
this.panelId = panelId;
}
public String getSourceViewId() {
return sourceViewId;
}
public void setSourceViewId(String sourceViewId) {
this.sourceViewId = sourceViewId;
}
public List<String> getTargetViewIds() {
return targetViewIds;
}
public void setTargetViewIds(List<String> targetViewIds) {
this.targetViewIds = targetViewIds;
}
}

View File

@ -0,0 +1,54 @@
package io.dataease.dto;
import io.dataease.base.domain.PanelViewLinkage;
import java.util.ArrayList;
import java.util.List;
/**
* Author: wangjiahao
* Date: 8/4/21
* Description:
*/
public class PanelViewLinkageDTO extends PanelViewLinkage {
//目标视图名称
private String targetViewName;
//关联状态
private boolean linkageActive = true;
private List<PanelViewLinkageFieldDTO> linkageFields = new ArrayList<>();
public PanelViewLinkageDTO() {
}
public String getTargetViewName() {
return targetViewName;
}
public void setTargetViewName(String targetViewName) {
this.targetViewName = targetViewName;
}
public PanelViewLinkageDTO(boolean linkageActive) {
this.linkageActive = linkageActive;
}
public boolean isLinkageActive() {
return linkageActive;
}
public void setLinkageActive(boolean linkageActive) {
this.linkageActive = linkageActive;
}
public List<PanelViewLinkageFieldDTO> getLinkageFields() {
return linkageFields;
}
public void setLinkageFields(List<PanelViewLinkageFieldDTO> linkageFields) {
this.linkageFields = linkageFields;
}
}

View File

@ -0,0 +1,31 @@
package io.dataease.dto;
import io.dataease.base.domain.PanelViewLinkageField;
/**
* Author: wangjiahao
* Date: 8/4/21
* Description:
*/
public class PanelViewLinkageFieldDTO extends PanelViewLinkageField {
private String sourceViewId;
private String targetViewId;
public String getSourceViewId() {
return sourceViewId;
}
public void setSourceViewId(String sourceViewId) {
this.sourceViewId = sourceViewId;
}
public String getTargetViewId() {
return targetViewId;
}
public void setTargetViewId(String targetViewId) {
this.targetViewId = targetViewId;
}
}

View File

@ -0,0 +1,48 @@
package io.dataease.service.panel;
import io.dataease.base.mapper.PanelViewLinkageMapper;
import io.dataease.base.mapper.ext.ExtPanelViewLinkageMapper;
import io.dataease.controller.request.panel.PanelLinkageRequest;
import io.dataease.dto.PanelViewLinkageDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* Author: wangjiahao
* Date: 8/4/21
* Description:
*/
@Service
public class PanelViewLinkageService {
@Resource
private PanelViewLinkageMapper panelViewLinkageMapper;
@Resource
private ExtPanelViewLinkageMapper extPanelViewLinkageMapper;
public Map<String, PanelViewLinkageDTO> getViewLinkageGather(PanelLinkageRequest request) {
if(CollectionUtils.isNotEmpty(request.getTargetViewIds())){
Map<String, PanelViewLinkageDTO> result = Optional.ofNullable(extPanelViewLinkageMapper.getViewLinkageGather(request.getPanelId(),request.getSourceViewId()))
.orElse(new ArrayList<>()).stream()
.collect(Collectors.toMap(PanelViewLinkageDTO::getTargetViewId,PanelViewLinkageDTO->PanelViewLinkageDTO));
// Set<String> innerTargetIds = result.keySet();
//
// // 将对应没有建立关联关系的targetId 也补充进去
// request.getTargetViewIds().stream().forEach(targetId->{
// if(!innerTargetIds.contains(targetId)){
// result.put(targetId,new PanelViewLinkageDTO(false));
// }
// });
return result;
}
return new HashMap<>();
}
}

View File

@ -76,6 +76,8 @@ pagehelper.PageRowBounds=true
#excel等用户上传文件路径 #excel等用户上传文件路径
upload.file.path=/opt/dataease/data/kettle/ upload.file.path=/opt/dataease/data/kettle/
dataease.sqlinjection.whitelists=/dataset/table/sqlPreview,/dataset/table/update

View File

@ -1,18 +1,4 @@
/*
Navicat Premium Data Transfer
Source Server : ali_sh_mysql
Source Server Type : MySQL
Source Server Version : 50732
Source Host : 47.117.200.215:3306
Source Schema : dataease
Target Server Type : MySQL
Target Server Version : 50732
File Encoding : 65001
Date: 13/07/2021 18:09:09
*/
SET NAMES utf8mb4; SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0; SET FOREIGN_KEY_CHECKS = 0;

File diff suppressed because it is too large Load Diff

View File

@ -64,7 +64,6 @@
<!--要生成的数据库表 --> <!--要生成的数据库表 -->
<table tableName="dataset_table_function"/>
<!-- <table tableName="sys_dict"/>--> <!-- <table tableName="sys_dict"/>-->
<!-- <table tableName="sys_dict_item"/>--> <!-- <table tableName="sys_dict_item"/>-->
<!-- <table tableName="dataset_table_field"/>--> <!-- <table tableName="dataset_table_field"/>-->

View File

@ -6,7 +6,7 @@
<parent> <parent>
<artifactId>dataease-server</artifactId> <artifactId>dataease-server</artifactId>
<groupId>io.dataease</groupId> <groupId>io.dataease</groupId>
<version>1.0.0</version> <version>1.2.0</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -0,0 +1,11 @@
import request from '@/utils/request'
export function getViewLinkageGather(requestInfo) {
return request({
url: '/linkage/getViewLinkageGather',
method: 'post',
data: requestInfo,
loading: true
})
}

View File

@ -10,7 +10,8 @@
[classNameResizable]: resizable, [classNameResizable]: resizable,
[classNameRotating]: rotating, [classNameRotating]: rotating,
[classNameRotatable]: rotatable, [classNameRotatable]: rotatable,
[classNameMouseOn]: mouseOn || active [classNameMouseOn]: mouseOn || active,
['linkageSetting']:linkageActive
}, },
className className
]" ]"
@ -310,6 +311,11 @@ export default {
changeStyle: { changeStyle: {
require: true, require: true,
type: Object type: Object
},
//
linkageActive: {
type: Boolean,
default: false
} }
}, },
data: function() { data: function() {
@ -1631,6 +1637,10 @@ export default {
user-select: none; user-select: none;
} }
.linkageSetting{
opacity: 0.5;
}
/*.mouseOn >>> .icon-shezhi{*/ /*.mouseOn >>> .icon-shezhi{*/
/* z-index: 2;*/ /* z-index: 2;*/
/* display:block!important;*/ /* display:block!important;*/

View File

@ -1,10 +1,11 @@
<template> <template>
<div class="bar-main"> <div class="bar-main">
<div v-if="linkageSettingStatus" style="margin-right: -1px;width: 18px"> <div v-if="linkageSettingStatus&&element!==curLinkageView&&element.type==='view'" style="margin-right: -1px;width: 18px">
<el-checkbox v-model="linkageActiveStatus" /> <el-checkbox v-model="linkageInfo.linkageActive" />
<i v-if="linkageActiveStatus" class="icon iconfont icon-edit" @click.stop="linkageEdit" /> <linkage-field v-if="linkageInfo.linkageActive" />
<!-- <i v-if="linkageInfo.linkageActive" class="icon iconfont icon-edit" @click.stop="linkageEdit" />-->
</div> </div>
<div v-else> <div v-else-if="!linkageSettingStatus">
<setting-menu v-if="activeModel==='edit'" style="float: right;height: 24px!important;"> <setting-menu v-if="activeModel==='edit'" style="float: right;height: 24px!important;">
<i slot="icon" class="icon iconfont icon-shezhi" /> <i slot="icon" class="icon iconfont icon-shezhi" />
</setting-menu> </setting-menu>
@ -17,12 +18,12 @@
<script> <script>
import { mapState } from 'vuex' import { mapState } from 'vuex'
import eventBus from '@/components/canvas/utils/eventBus'
import bus from '@/utils/bus' import bus from '@/utils/bus'
import SettingMenu from '@/components/canvas/components/Editor/SettingMenu' import SettingMenu from '@/components/canvas/components/Editor/SettingMenu'
import LinkageField from '@/components/canvas/components/Editor/LinkageField'
export default { export default {
components: { SettingMenu }, components: { SettingMenu, LinkageField },
props: { props: {
element: { element: {
@ -51,15 +52,22 @@ export default {
] ]
} }
}, },
computed: mapState([ computed: {
'menuTop', linkageInfo() {
'menuLeft', return this.targetLinkageInfo[this.element.propValue.viewId]
'menuShow', },
'curComponent', ...mapState([
'componentData', 'menuTop',
'canvasStyleData', 'menuLeft',
'linkageSettingStatus' 'menuShow',
]), 'curComponent',
'componentData',
'canvasStyleData',
'linkageSettingStatus',
'targetLinkageInfo',
'curLinkageView'
])
},
methods: { methods: {
showViewDetails() { showViewDetails() {
this.$emit('showViewDetails') this.$emit('showViewDetails')

View File

@ -0,0 +1,112 @@
<template>
<el-popover
v-model="isSetting"
width="300"
trigger="click"
>
<el-row>
<el-col :span="10" />
<el-col :span="10" />
</el-row>
this is test
<el-row class="bottom">
<el-button size="mini" type="success" icon="el-icon-plus" round>追加联动依赖字段</el-button>
</el-row>
<!-- <el-button slot="reference">T</el-button>-->
<i slot="reference" class="icon iconfont icon-edit slot-class" />
</el-popover>
</template>
<script>
import { mapState } from 'vuex'
export default {
props: {
element: {
type: Object,
required: true
},
active: {
type: Boolean,
required: false,
default: false
},
// preview edit
activeModel: {
type: String,
required: false,
default: 'preview'
}
},
data() {
return {
componentType: null,
linkageActiveStatus: false,
editFilter: [
'view',
'custom'
]
}
},
computed: {
linkageInfo() {
return this.targetLinkageInfo[this.element.propValue.viewId]
},
...mapState([
'menuTop',
'menuLeft',
'menuShow',
'curComponent',
'componentData',
'canvasStyleData',
'linkageSettingStatus',
'targetLinkageInfo',
'curLinkageView'
])
},
methods: {
showViewDetails() {
this.$emit('showViewDetails')
},
edit() {
//
this.$store.dispatch('panel/setComponentDataTemp', JSON.stringify(this.componentData))
this.$store.dispatch('panel/setCanvasStyleDataTemp', JSON.stringify(this.canvasStyleData))
if (this.curComponent.type === 'view') {
this.$store.dispatch('chart/setViewId', null)
this.$store.dispatch('chart/setViewId', this.curComponent.propValue.viewId)
bus.$emit('PanelSwitchComponent', { name: 'ChartEdit', param: { 'id': this.curComponent.propValue.viewId, 'optType': 'edit' }})
}
if (this.curComponent.type === 'custom') {
bus.$emit('component-dialog-edit')
}
//
if (this.curComponent.type === 'v-text' || this.curComponent.type === 'rect-shape') {
bus.$emit('component-dialog-style')
}
},
linkageEdit() {
}
}
}
</script>
<style lang="scss" scoped>
.slot-class{
color: white;
}
.bottom {
text-align: center;
}
</style>

View File

@ -153,7 +153,7 @@ export default {
this.searchCount++ this.searchCount++
}, refreshTime) }, refreshTime)
eventBus.$on('openChartDetailsDialog', this.openChartDetailsDialog) eventBus.$on('openChartDetailsDialog', this.openChartDetailsDialog)
this.$store.commit('setLinkageSettingStatus', false) this.$store.commit('clearLinkageSettingInfo', false)
}, },
beforeDestroy() { beforeDestroy() {
clearInterval(this.timer) clearInterval(this.timer)

View File

@ -21,6 +21,7 @@
<script> <script>
import { mapState } from 'vuex' import { mapState } from 'vuex'
import bus from '@/utils/bus' import bus from '@/utils/bus'
import { getViewLinkageGather } from '@/api/panel/linkage'
export default { export default {
data() { data() {
@ -122,7 +123,19 @@ export default {
this.$store.commit('recordSnapshot') this.$store.commit('recordSnapshot')
}, },
linkageSetting() { linkageSetting() {
this.$store.commit('setLinkageSettingStatus', true) debugger
const targetViewIds = this.componentData.filter(item => item.type === 'view' && item.propValue && item.propValue.viewId && item !== this.curComponent)
.map(item => item.propValue.viewId)
//
const requestInfo = {
'panelId': this.$store.state.panel.panelInfo.id,
'sourceViewId': this.curComponent.propValue.viewId,
'targetViewIds': targetViewIds
}
getViewLinkageGather(requestInfo).then(rsp => {
this.$store.commit('setLinkageInfo', rsp.data)
})
} }
} }
} }

View File

@ -30,6 +30,8 @@
:snap-tolerance="2" :snap-tolerance="2"
:change-style="customStyle" :change-style="customStyle"
:draggable="!linkageSettingStatus" :draggable="!linkageSettingStatus"
:resizable="!linkageSettingStatus"
:linkage-active="linkageSettingStatus&&item===curLinkageView"
@refLineParams="getRefLineParams" @refLineParams="getRefLineParams"
@showViewDetails="showViewDetails(index)" @showViewDetails="showViewDetails(index)"
> >
@ -251,7 +253,8 @@ export default {
'curComponent', 'curComponent',
'canvasStyleData', 'canvasStyleData',
'editor', 'editor',
'linkageSettingStatus' 'linkageSettingStatus',
'curLinkageView'
]) ])
}, },
watch: { watch: {

View File

@ -322,7 +322,7 @@ export default {
this.cancelLinkageSettingStatus() this.cancelLinkageSettingStatus()
}, },
cancelLinkageSettingStatus() { cancelLinkageSettingStatus() {
this.$store.commit('setLinkageSettingStatus', false) this.$store.commit('clearLinkageSettingInfo')
} }
} }
} }

View File

@ -50,7 +50,11 @@ const data = {
isClickComponent: false, isClickComponent: false,
canvasCommonStyleData: DEFAULT_COMMON_CANVAS_STYLE_STRING, canvasCommonStyleData: DEFAULT_COMMON_CANVAS_STYLE_STRING,
// 联动设置状态 // 联动设置状态
linkageSettingStatus: false linkageSettingStatus: false,
// 当前设置联动的组件
curLinkageView: null,
// 和当前组件联动的目标组件
targetLinkageInfo: []
}, },
mutations: { mutations: {
...animation.mutations, ...animation.mutations,
@ -176,9 +180,15 @@ const data = {
} }
state.componentData.splice(index, 1) state.componentData.splice(index, 1)
}, },
setLinkageSettingStatus(state, status) { setLinkageInfo(state, targetLinkageInfo) {
state.linkageSettingStatus = status state.linkageSettingStatus = true
console.log('linkageSettingStatus:', state.linkageSettingStatus) state.curLinkageView = state.curComponent
state.targetLinkageInfo = targetLinkageInfo
},
clearLinkageSettingInfo(state) {
state.linkageSettingStatus = false
state.curLinkageView = null
state.targetLinkageInfo = []
} }
}, },
modules: { modules: {

View File

@ -0,0 +1,129 @@
<template>
<span>
<el-tag v-if="!hasDataPermission('manage',param.privileges)" size="small" class="item-axis" :type="item.groupType === 'q'?'success':''">
<span style="float: left">
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
<svg-icon v-if="item.sort === 'asc'" icon-class="sort-asc" class-name="field-icon-sort" />
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
</span>
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
</el-tag>
<el-dropdown v-else trigger="click" size="mini" @command="clickItem">
<span class="el-dropdown-link">
<el-tag size="small" class="item-axis" :type="item.groupType === 'q'?'success':''">
<span style="float: left">
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
<svg-icon v-if="item.sort === 'asc'" icon-class="sort-asc" class-name="field-icon-sort" />
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
</span>
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
<i class="el-icon-arrow-down el-icon--right" style="position: absolute;top: 6px;right: 10px;" />
</el-tag>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item icon="el-icon-delete" :command="beforeClickItem('remove')">
<span>{{ $t('chart.delete') }}</span>
</el-dropdown-item>
</el-dropdown-menu>
</span>
</el-dropdown>
</span>
</template>
<script>
export default {
name: 'DrillItem',
props: {
param: {
type: Object,
required: true
},
item: {
type: Object,
required: true
},
index: {
type: Number,
required: true
}
},
data() {
return {
}
},
mounted() {
},
methods: {
clickItem(param) {
if (!param) {
return
}
switch (param.type) {
case 'remove':
this.removeItem()
break
default:
break
}
},
beforeClickItem(type) {
return {
type: type
}
},
removeItem() {
this.item.index = this.index
this.$emit('onDimensionItemRemove', this.item)
}
}
}
</script>
<style scoped>
.item-axis {
padding: 1px 6px;
margin: 0 3px 2px 3px;
text-align: left;
height: 24px;
line-height: 22px;
display: flex;
border-radius: 4px;
box-sizing: border-box;
white-space: nowrap;
width: 159px;
}
.item-axis:hover {
background-color: #fdfdfd;
cursor: pointer;
}
span {
font-size: 12px;
}
.summary-span{
margin-left: 4px;
color: #878d9f;;
}
.inner-dropdown-menu{
display: flex;
justify-content: space-between;
align-items: center;
width: 100%
}
.item-span-style{
display: inline-block;
width: 100px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
</style>

View File

@ -746,6 +746,7 @@ export default {
view.yaxis = JSON.stringify([]) view.yaxis = JSON.stringify([])
view.extStack = JSON.stringify([]) view.extStack = JSON.stringify([])
view.customFilter = JSON.stringify([]) view.customFilter = JSON.stringify([])
view.drillFields = JSON.stringify([])
post('/chart/view/save', view).then(response => { post('/chart/view/save', view).then(response => {
this.closeCreateChart() this.closeCreateChart()
this.$store.dispatch('chart/setTableId', null) this.$store.dispatch('chart/setTableId', null)

View File

@ -233,6 +233,29 @@
/> />
</span> </span>
</el-row> </el-row>
<el-row class="padding-lr">
<span style="width: 80px;text-align: right;">
<span>钻取</span>
/
<span>{{ $t('chart.dimension') }}</span>
</span>
<draggable
v-model="view.drillFields"
:disabled="!hasDataPermission('manage',param.privileges)"
group="drag"
animation="300"
:move="onMove"
class="drag-block-style"
@add="addDrill"
>
<transition-group class="draggable-group">
<drill-item v-for="(item,index) in view.drillFields" :key="item.id" :param="param" :index="index" :item="item" @onDimensionItemChange="dillItemChange" @onDimensionItemRemove="drillItemRemove" />
</transition-group>
</draggable>
<div v-if="!view.drillFields || view.drillFields.length === 0" class="drag-placeholder-style">
<span class="drag-placeholder-style-span">{{ $t('chart.placeholder_field') }}</span>
</div>
</el-row>
<el-row v-if="view.type !=='text' && view.type !== 'gauge'" class="padding-lr"> <el-row v-if="view.type !=='text' && view.type !== 'gauge'" class="padding-lr">
<span style="width: 80px;text-align: right;"> <span style="width: 80px;text-align: right;">
<span v-if="view.type && view.type.includes('table')">{{ $t('chart.drag_block_table_data_column') }}</span> <span v-if="view.type && view.type.includes('table')">{{ $t('chart.drag_block_table_data_column') }}</span>
@ -532,6 +555,7 @@ import DimensionItem from '../components/drag-item/DimensionItem'
import QuotaItem from '../components/drag-item/QuotaItem' import QuotaItem from '../components/drag-item/QuotaItem'
import FilterItem from '../components/drag-item/FilterItem' import FilterItem from '../components/drag-item/FilterItem'
import ChartDragItem from '../components/drag-item/ChartDragItem' import ChartDragItem from '../components/drag-item/ChartDragItem'
import DrillItem from '../components/drag-item/DrillItem'
import ResultFilterEditor from '../components/filter/ResultFilterEditor' import ResultFilterEditor from '../components/filter/ResultFilterEditor'
import ChartComponent from '../components/ChartComponent' import ChartComponent from '../components/ChartComponent'
import bus from '@/utils/bus' import bus from '@/utils/bus'
@ -593,7 +617,8 @@ export default {
QuotaItem, QuotaItem,
DimensionItem, DimensionItem,
draggable, draggable,
ChartDragItem ChartDragItem,
DrillItem
}, },
props: { props: {
param: { param: {
@ -613,6 +638,7 @@ export default {
xaxis: [], xaxis: [],
yaxis: [], yaxis: [],
extStack: [], extStack: [],
drillFields: [],
show: true, show: true,
type: 'bar', type: 'bar',
title: '', title: '',
@ -800,6 +826,7 @@ export default {
view.customStyle = JSON.stringify(view.customStyle) view.customStyle = JSON.stringify(view.customStyle)
view.customFilter = JSON.stringify(view.customFilter) view.customFilter = JSON.stringify(view.customFilter)
view.extStack = JSON.stringify(view.extStack) view.extStack = JSON.stringify(view.extStack)
view.drillFields = JSON.stringify(view.drillFields)
post('/chart/view/save', view).then(response => { post('/chart/view/save', view).then(response => {
// this.get(response.data.id); // this.get(response.data.id);
// this.getData(response.data.id) // this.getData(response.data.id)
@ -900,6 +927,7 @@ export default {
this.view.xaxis = this.view.xaxis ? JSON.parse(this.view.xaxis) : [] this.view.xaxis = this.view.xaxis ? JSON.parse(this.view.xaxis) : []
this.view.yaxis = this.view.yaxis ? JSON.parse(this.view.yaxis) : [] this.view.yaxis = this.view.yaxis ? JSON.parse(this.view.yaxis) : []
this.view.extStack = this.view.extStack ? JSON.parse(this.view.extStack) : [] this.view.extStack = this.view.extStack ? JSON.parse(this.view.extStack) : []
this.view.drillFields = this.view.drillFields ? JSON.parse(this.view.drillFields) : []
this.view.customAttr = this.view.customAttr ? JSON.parse(this.view.customAttr) : {} this.view.customAttr = this.view.customAttr ? JSON.parse(this.view.customAttr) : {}
this.view.customStyle = this.view.customStyle ? JSON.parse(this.view.customStyle) : {} this.view.customStyle = this.view.customStyle ? JSON.parse(this.view.customStyle) : {}
this.view.customFilter = this.view.customFilter ? JSON.parse(this.view.customFilter) : {} this.view.customFilter = this.view.customFilter ? JSON.parse(this.view.customFilter) : {}
@ -932,6 +960,7 @@ export default {
this.view.xaxis = this.view.xaxis ? JSON.parse(this.view.xaxis) : [] this.view.xaxis = this.view.xaxis ? JSON.parse(this.view.xaxis) : []
this.view.yaxis = this.view.yaxis ? JSON.parse(this.view.yaxis) : [] this.view.yaxis = this.view.yaxis ? JSON.parse(this.view.yaxis) : []
this.view.extStack = this.view.extStack ? JSON.parse(this.view.extStack) : [] this.view.extStack = this.view.extStack ? JSON.parse(this.view.extStack) : []
this.view.drillFields = this.view.drillFields ? JSON.parse(this.view.drillFields) : []
this.view.customAttr = this.view.customAttr ? JSON.parse(this.view.customAttr) : {} this.view.customAttr = this.view.customAttr ? JSON.parse(this.view.customAttr) : {}
this.view.customStyle = this.view.customStyle ? JSON.parse(this.view.customStyle) : {} this.view.customStyle = this.view.customStyle ? JSON.parse(this.view.customStyle) : {}
this.view.customFilter = this.view.customFilter ? JSON.parse(this.view.customFilter) : {} this.view.customFilter = this.view.customFilter ? JSON.parse(this.view.customFilter) : {}
@ -1364,6 +1393,18 @@ export default {
stackItemRemove(item) { stackItemRemove(item) {
this.view.extStack.splice(item.index, 1) this.view.extStack.splice(item.index, 1)
this.save(true) this.save(true)
},
dillItemChange(item) {
this.save(true)
},
drillItemRemove(item) {
this.view.drillFields.splice(item.index, 1)
this.save(true)
},
addDrill(e) {
this.dragCheckType(this.view.drillFields, 'd')
this.dragMoveDuplicate(this.view.drillFields, e)
this.save(true)
} }
} }
} }

View File

@ -323,7 +323,7 @@ export default {
listenGlobalKeyDown() listenGlobalKeyDown()
this.$store.commit('setCurComponent', { component: null, index: null }) this.$store.commit('setCurComponent', { component: null, index: null })
this.$store.commit('setLinkageSettingStatus', false) this.$store.commit('clearLinkageSettingInfo', false)
}, },
mounted() { mounted() {
// this.insertToBody() // this.insertToBody()

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>io.dataease</groupId> <groupId>io.dataease</groupId>
<artifactId>dataease-server</artifactId> <artifactId>dataease-server</artifactId>
<version>1.0.0</version> <version>1.2.0</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<parent> <parent>