Merge branch 'dev' into pr@dev@sqlserver
This commit is contained in:
commit
4ec3cdb68d
@ -4,9 +4,9 @@ ARG IMAGE_TAG
|
||||
|
||||
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
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>dataease-server</artifactId>
|
||||
<groupId>io.dataease</groupId>
|
||||
<version>1.0.0</version>
|
||||
<version>1.2.0</version>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
@ -341,7 +341,7 @@
|
||||
<dependency>
|
||||
<groupId>io.dataease</groupId>
|
||||
<artifactId>dataease-plugin-interface</artifactId>
|
||||
<version>1.0</version>
|
||||
<version>1.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@ -384,7 +384,7 @@
|
||||
<includes>
|
||||
<include>**/*</include>
|
||||
</includes>
|
||||
<filtering>true</filtering>
|
||||
<filtering>false</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
@ -414,11 +414,11 @@
|
||||
<skipTests>true</skipTests>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<!--<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>2.4.3</version>
|
||||
</plugin>
|
||||
</plugin>-->
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
|
||||
@ -21,6 +21,8 @@ public class ChartViewWithBLOBs extends ChartView implements Serializable {
|
||||
|
||||
private String customFilter;
|
||||
|
||||
private String drillFields;
|
||||
|
||||
private String snapshot;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -20,6 +20,7 @@
|
||||
<result column="custom_attr" jdbcType="LONGVARCHAR" property="customAttr" />
|
||||
<result column="custom_style" jdbcType="LONGVARCHAR" property="customStyle" />
|
||||
<result column="custom_filter" jdbcType="LONGVARCHAR" property="customFilter" />
|
||||
<result column="drill_fields" jdbcType="LONGVARCHAR" property="drillFields" />
|
||||
<result column="snapshot" jdbcType="LONGVARCHAR" property="snapshot" />
|
||||
</resultMap>
|
||||
<sql id="Example_Where_Clause">
|
||||
@ -85,7 +86,8 @@
|
||||
style_priority
|
||||
</sql>
|
||||
<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>
|
||||
<select id="selectByExampleWithBLOBs" parameterType="io.dataease.base.domain.ChartViewExample" resultMap="ResultMapWithBLOBs">
|
||||
select
|
||||
@ -141,13 +143,15 @@
|
||||
create_by, create_time, update_time,
|
||||
style_priority, x_axis, y_axis,
|
||||
ext_stack, custom_attr, custom_style,
|
||||
custom_filter, snapshot)
|
||||
custom_filter, drill_fields, snapshot
|
||||
)
|
||||
values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{sceneId,jdbcType=VARCHAR},
|
||||
#{tableId,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR},
|
||||
#{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT},
|
||||
#{stylePriority,jdbcType=VARCHAR}, #{xAxis,jdbcType=LONGVARCHAR}, #{yAxis,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 id="insertSelective" parameterType="io.dataease.base.domain.ChartViewWithBLOBs">
|
||||
insert into chart_view
|
||||
@ -200,6 +204,9 @@
|
||||
<if test="customFilter != null">
|
||||
custom_filter,
|
||||
</if>
|
||||
<if test="drillFields != null">
|
||||
drill_fields,
|
||||
</if>
|
||||
<if test="snapshot != null">
|
||||
snapshot,
|
||||
</if>
|
||||
@ -253,6 +260,9 @@
|
||||
<if test="customFilter != null">
|
||||
#{customFilter,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
<if test="drillFields != null">
|
||||
#{drillFields,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
<if test="snapshot != null">
|
||||
#{snapshot,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
@ -315,6 +325,9 @@
|
||||
<if test="record.customFilter != null">
|
||||
custom_filter = #{record.customFilter,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
<if test="record.drillFields != null">
|
||||
drill_fields = #{record.drillFields,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
<if test="record.snapshot != null">
|
||||
snapshot = #{record.snapshot,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
@ -341,6 +354,7 @@
|
||||
custom_attr = #{record.customAttr,jdbcType=LONGVARCHAR},
|
||||
custom_style = #{record.customStyle,jdbcType=LONGVARCHAR},
|
||||
custom_filter = #{record.customFilter,jdbcType=LONGVARCHAR},
|
||||
drill_fields = #{record.drillFields,jdbcType=LONGVARCHAR},
|
||||
snapshot = #{record.snapshot,jdbcType=LONGVARCHAR}
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
@ -410,6 +424,9 @@
|
||||
<if test="customFilter != null">
|
||||
custom_filter = #{customFilter,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
<if test="drillFields != null">
|
||||
drill_fields = #{drillFields,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
<if test="snapshot != null">
|
||||
snapshot = #{snapshot,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
@ -433,6 +450,7 @@
|
||||
custom_attr = #{customAttr,jdbcType=LONGVARCHAR},
|
||||
custom_style = #{customStyle,jdbcType=LONGVARCHAR},
|
||||
custom_filter = #{customFilter,jdbcType=LONGVARCHAR},
|
||||
drill_fields = #{drillFields,jdbcType=LONGVARCHAR},
|
||||
snapshot = #{snapshot,jdbcType=LONGVARCHAR}
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
|
||||
@ -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);
|
||||
}
|
||||
@ -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>
|
||||
@ -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);
|
||||
}
|
||||
@ -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>
|
||||
@ -0,0 +1,14 @@
|
||||
package io.dataease.base.mapper.ext;
|
||||
|
||||
import io.dataease.base.domain.DatasetTableField;
|
||||
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,@Param("targetViewIds") List<String> targetViewIds);
|
||||
List<DatasetTableField> queryTableField(@Param("tableId") String tableId);
|
||||
|
||||
}
|
||||
@ -0,0 +1,57 @@
|
||||
<?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="TableFieldMap" type="io.dataease.base.domain.DatasetTableField">
|
||||
<id column="id" jdbcType="VARCHAR" property="id"/>
|
||||
<result column="table_id" jdbcType="VARCHAR" property="tableId"/>
|
||||
<result column="origin_name" jdbcType="VARCHAR" property="originName"/>
|
||||
<result column="name" jdbcType="VARCHAR" property="name"/>
|
||||
<result column="de_type" jdbcType="INTEGER" property="deType"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="LinkageGatherMap" type="io.dataease.dto.PanelViewLinkageDTO">
|
||||
<result column="target_view_id" jdbcType="VARCHAR" property="targetViewId"/>
|
||||
<result column="table_id" jdbcType="VARCHAR" property="tableId"/>
|
||||
<result column="targetViewName" jdbcType="VARCHAR" property="targetViewName"/>
|
||||
<result column="linkageActive" property="linkageActive"/>
|
||||
<!-- <collection property="targetViewFields" ofType="io.dataease.base.domain.DatasetTableField" column="table_id"-->
|
||||
<!-- select="queryTableField">-->
|
||||
<!-- </collection>-->
|
||||
<collection property="linkageFields" ofType="io.dataease.dto.PanelViewLinkageFieldDTO">
|
||||
<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',
|
||||
chart_view.id as 'target_view_id',
|
||||
chart_view.table_id,
|
||||
(case when panel_view_linkage.target_view_id is null then 0 else 1 end) as 'linkageActive',
|
||||
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>
|
||||
|
||||
<select id="queryTableField" resultMap="TableFieldMap">
|
||||
select
|
||||
dataset_table_field.id,
|
||||
dataset_table_field.table_id,
|
||||
dataset_table_field.origin_name,
|
||||
dataset_table_field.name,
|
||||
dataset_table_field.de_type
|
||||
from dataset_table_field where table_id = #{tableId}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@ -0,0 +1,78 @@
|
||||
package io.dataease.commons.filter;
|
||||
|
||||
import io.dataease.commons.holder.ThreadLocalContextHolder;
|
||||
import io.dataease.commons.wrapper.XssAndSqlHttpServletRequestWrapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.*;
|
||||
|
||||
|
||||
public class SqlFilter implements Filter {
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||
|
||||
String method = "GET";
|
||||
String param = "";
|
||||
XssAndSqlHttpServletRequestWrapper xssRequest = null;
|
||||
if (request instanceof HttpServletRequest) {
|
||||
method = ((HttpServletRequest) request).getMethod();
|
||||
xssRequest = new XssAndSqlHttpServletRequestWrapper((HttpServletRequest) request);
|
||||
}
|
||||
if ("POST".equalsIgnoreCase(method)) {
|
||||
param = this.getBodyString(xssRequest.getReader());
|
||||
if(StringUtils.isNotBlank(param)){
|
||||
if(xssRequest.checkXSSAndSql(param)){
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/json;charset=UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
String msg = ThreadLocalContextHolder.getData().toString();
|
||||
out.write(msg);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (xssRequest.checkParameter()) {
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/json;charset=UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
String msg = ThreadLocalContextHolder.getData().toString();
|
||||
out.write(msg);
|
||||
return;
|
||||
}
|
||||
chain.doFilter(xssRequest, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
|
||||
}
|
||||
|
||||
// 获取request请求body中参数
|
||||
public static String getBodyString(BufferedReader br) {
|
||||
String inputLine;
|
||||
String str = "";
|
||||
try {
|
||||
while ((inputLine = br.readLine()) != null) {
|
||||
str += inputLine;
|
||||
}
|
||||
br.close();
|
||||
} catch (IOException e) {
|
||||
System.out.println("IOException: " + e);
|
||||
}
|
||||
return str;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
package io.dataease.commons.holder;
|
||||
|
||||
public class ThreadLocalContextHolder {
|
||||
|
||||
|
||||
private static ThreadLocal<Object> sceneThreadLocal = new ThreadLocal<>();
|
||||
|
||||
|
||||
public static Object getData() {
|
||||
return sceneThreadLocal.get();
|
||||
}
|
||||
|
||||
public static void setData(Object data) {
|
||||
if (ThreadLocalContextHolder.sceneThreadLocal == null) {
|
||||
ThreadLocalContextHolder.sceneThreadLocal = new ThreadLocal<>();
|
||||
}
|
||||
ThreadLocalContextHolder.sceneThreadLocal.set(data);
|
||||
}
|
||||
|
||||
public static void clearScene() {
|
||||
setData(null);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,411 @@
|
||||
package io.dataease.commons.wrapper;
|
||||
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import javax.servlet.ReadListener;
|
||||
import javax.servlet.ServletInputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
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.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;
|
||||
|
||||
|
||||
public class XssAndSqlHttpServletRequestWrapper extends HttpServletRequestWrapper {
|
||||
|
||||
private static Gson gson = new Gson();
|
||||
|
||||
HttpServletRequest orgRequest = null;
|
||||
private Map<String, String[]> parameterMap;
|
||||
private final byte[] body; //用于保存读取body中数据
|
||||
|
||||
public XssAndSqlHttpServletRequestWrapper(HttpServletRequest request) throws IOException{
|
||||
super(request);
|
||||
orgRequest = request;
|
||||
parameterMap = request.getParameterMap();
|
||||
body = StreamUtils.copyToByteArray(request.getInputStream());
|
||||
}
|
||||
|
||||
// 重写几个HttpServletRequestWrapper中的方法
|
||||
/**
|
||||
* 获取所有参数名
|
||||
*
|
||||
* @return 返回所有参数名
|
||||
*/
|
||||
@Override
|
||||
public Enumeration<String> getParameterNames() {
|
||||
Vector<String> vector = new Vector<String>(parameterMap.keySet());
|
||||
return vector.elements();
|
||||
}
|
||||
|
||||
/**
|
||||
* 覆盖getParameter方法,将参数名和参数值都做xss & sql过滤。<br/>
|
||||
* 如果需要获得原始的值,则通过super.getParameterValues(name)来获取<br/>
|
||||
* getParameterNames,getParameterValues和getParameterMap也可能需要覆盖
|
||||
*/
|
||||
@Override
|
||||
public String getParameter(String name) {
|
||||
String[] results = parameterMap.get(name);
|
||||
if (results == null || results.length <= 0)
|
||||
return null;
|
||||
else {
|
||||
String value = results[0];
|
||||
if (value != null) {
|
||||
value = xssEncode(value);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定参数名的所有值的数组,如:checkbox的所有数据 接收数组变量 ,如checkobx类型
|
||||
*/
|
||||
@Override
|
||||
public String[] getParameterValues(String name) {
|
||||
String[] results = parameterMap.get(name);
|
||||
if (results == null || results.length <= 0)
|
||||
return null;
|
||||
else {
|
||||
int length = results.length;
|
||||
for (int i = 0; i < length; i++) {
|
||||
results[i] = xssEncode(results[i]);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 覆盖getHeader方法,将参数名和参数值都做xss & sql过滤。<br/>
|
||||
* 如果需要获得原始的值,则通过super.getHeaders(name)来获取<br/>
|
||||
* getHeaderNames 也可能需要覆盖
|
||||
*/
|
||||
@Override
|
||||
public String getHeader(String name) {
|
||||
|
||||
String value = super.getHeader(xssEncode(name));
|
||||
if (value != null) {
|
||||
value = xssEncode(value);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将容易引起xss & sql漏洞的半角字符直接替换成全角字符
|
||||
*
|
||||
* @param s
|
||||
* @return
|
||||
*/
|
||||
private static String xssEncode(String s) {
|
||||
if (s == null || s.isEmpty()) {
|
||||
return s;
|
||||
} else {
|
||||
s = stripXSSAndSql(s);
|
||||
}
|
||||
StringBuilder sb = new StringBuilder(s.length() + 16);
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
switch (c) {
|
||||
case '>':
|
||||
sb.append(">");// 转义大于号
|
||||
break;
|
||||
case '<':
|
||||
sb.append("<");// 转义小于号
|
||||
break;
|
||||
// case '\'':
|
||||
// sb.append("'");// 转义单引号
|
||||
// break;
|
||||
// case '\"':
|
||||
// sb.append(""");// 转义双引号
|
||||
// break;
|
||||
case '&':
|
||||
sb.append("&");// 转义&
|
||||
break;
|
||||
case '#':
|
||||
sb.append("#");// 转义#
|
||||
break;
|
||||
default:
|
||||
sb.append(c);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最原始的request
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public HttpServletRequest getOrgRequest() {
|
||||
return orgRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最原始的request的静态方法
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static HttpServletRequest getOrgRequest(HttpServletRequest req) {
|
||||
if (req instanceof XssAndSqlHttpServletRequestWrapper) {
|
||||
return ((XssAndSqlHttpServletRequestWrapper) req).getOrgRequest();
|
||||
}
|
||||
|
||||
return req;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 防止xss跨脚本攻击(替换,根据实际情况调整)
|
||||
*/
|
||||
|
||||
public static String stripXSSAndSql(String value) {
|
||||
if (value != null) {
|
||||
// NOTE: It's highly recommended to use the ESAPI library and
|
||||
// uncomment the following line to
|
||||
// avoid encoded attacks.
|
||||
// value = ESAPI.encoder().canonicalize(value);
|
||||
// Avoid null characters
|
||||
/** value = value.replaceAll("", ""); ***/
|
||||
// Avoid anything between script tags
|
||||
Pattern scriptPattern = Pattern.compile(
|
||||
"<[\r\n| | ]*script[\r\n| | ]*>(.*?)</[\r\n| | ]*script[\r\n| | ]*>", Pattern.CASE_INSENSITIVE);
|
||||
value = scriptPattern.matcher(value).replaceAll("");
|
||||
// Avoid anything in a
|
||||
// src="http://www.yihaomen.com/article/java/..." type of
|
||||
// e-xpression
|
||||
scriptPattern = Pattern.compile("src[\r\n| | ]*=[\r\n| | ]*[\\\"|\\\'](.*?)[\\\"|\\\']",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||
value = scriptPattern.matcher(value).replaceAll("");
|
||||
// Remove any lonesome </script> tag
|
||||
scriptPattern = Pattern.compile("</[\r\n| | ]*script[\r\n| | ]*>", Pattern.CASE_INSENSITIVE);
|
||||
value = scriptPattern.matcher(value).replaceAll("");
|
||||
// Remove any lonesome <script ...> tag
|
||||
scriptPattern = Pattern.compile("<[\r\n| | ]*script(.*?)>",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||
value = scriptPattern.matcher(value).replaceAll("");
|
||||
// Avoid eval(...) expressions
|
||||
scriptPattern = Pattern.compile("eval\\((.*?)\\)",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||
value = scriptPattern.matcher(value).replaceAll("");
|
||||
// Avoid e-xpression(...) expressions
|
||||
scriptPattern = Pattern.compile("e-xpression\\((.*?)\\)",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||
value = scriptPattern.matcher(value).replaceAll("");
|
||||
// Avoid javascript:... expressions
|
||||
scriptPattern = Pattern.compile("javascript[\r\n| | ]*:[\r\n| | ]*", Pattern.CASE_INSENSITIVE);
|
||||
value = scriptPattern.matcher(value).replaceAll("");
|
||||
// Avoid vbscript:... expressions
|
||||
scriptPattern = Pattern.compile("vbscript[\r\n| | ]*:[\r\n| | ]*", Pattern.CASE_INSENSITIVE);
|
||||
value = scriptPattern.matcher(value).replaceAll("");
|
||||
// Avoid onload= expressions
|
||||
scriptPattern = Pattern.compile("onload(.*?)=",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||
value = scriptPattern.matcher(value).replaceAll("");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
public static boolean checkSqlInjection(Object obj){
|
||||
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.*)");
|
||||
Matcher matcher=pattern.matcher(orders.toLowerCase());
|
||||
return matcher.find();
|
||||
}
|
||||
|
||||
|
||||
public static boolean checkXSSAndSql(String value) {
|
||||
boolean flag = false;
|
||||
|
||||
if (value != null) {
|
||||
boolean b = checkSqlInjection(value);
|
||||
if(b) {
|
||||
ThreadLocalContextHolder.setData("包含SQL注入的参数,请检查参数!");
|
||||
return true;
|
||||
}
|
||||
// NOTE: It's highly recommended to use the ESAPI library and
|
||||
// uncomment the following line to
|
||||
// avoid encoded attacks.
|
||||
// value = ESAPI.encoder().canonicalize(value);
|
||||
// Avoid null characters
|
||||
/** value = value.replaceAll("", ""); ***/
|
||||
// Avoid anything between script tags
|
||||
Pattern scriptPattern = Pattern.compile(
|
||||
"<[\r\n| | ]*script[\r\n| | ]*>(.*?)</[\r\n| | ]*script[\r\n| | ]*>", Pattern.CASE_INSENSITIVE);
|
||||
flag = scriptPattern.matcher(value).find();
|
||||
if (flag) {
|
||||
// threadLocal.set("包含XSS攻击脚本,请检查参数!");
|
||||
return flag;
|
||||
}
|
||||
// Avoid anything in a
|
||||
// src="http://www.yihaomen.com/article/java/..." type of
|
||||
// e-xpression
|
||||
scriptPattern = Pattern.compile("src[\r\n| | ]*=[\r\n| | ]*[\\\"|\\\'](.*?)[\\\"|\\\']",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||
flag = scriptPattern.matcher(value).find();
|
||||
if (flag) {
|
||||
ThreadLocalContextHolder.setData("包含XSS攻击脚本,请检查参数!");
|
||||
return flag;
|
||||
}
|
||||
// Remove any lonesome </script> tag
|
||||
scriptPattern = Pattern.compile("</[\r\n| | ]*script[\r\n| | ]*>", Pattern.CASE_INSENSITIVE);
|
||||
flag = scriptPattern.matcher(value).find();
|
||||
if (flag) {
|
||||
ThreadLocalContextHolder.setData("包含XSS攻击脚本,请检查参数!");
|
||||
return flag;
|
||||
}
|
||||
// Remove any lonesome <script ...> tag
|
||||
scriptPattern = Pattern.compile("<[\r\n| | ]*script(.*?)>",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||
flag = scriptPattern.matcher(value).find();
|
||||
if (flag) {
|
||||
ThreadLocalContextHolder.setData("包含XSS攻击脚本,请检查参数!");
|
||||
return flag;
|
||||
}
|
||||
// Avoid eval(...) expressions
|
||||
scriptPattern = Pattern.compile("eval\\((.*?)\\)",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||
flag = scriptPattern.matcher(value).find();
|
||||
if (flag) {
|
||||
ThreadLocalContextHolder.setData("包含XSS攻击脚本,请检查参数!");
|
||||
return flag;
|
||||
}
|
||||
// Avoid e-xpression(...) expressions
|
||||
scriptPattern = Pattern.compile("e-xpression\\((.*?)\\)",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||
flag = scriptPattern.matcher(value).find();
|
||||
if (flag) {
|
||||
ThreadLocalContextHolder.setData("包含XSS攻击脚本,请检查参数!");
|
||||
return flag;
|
||||
}
|
||||
// Avoid javascript:... expressions
|
||||
scriptPattern = Pattern.compile("javascript[\r\n| | ]*:[\r\n| | ]*", Pattern.CASE_INSENSITIVE);
|
||||
flag = scriptPattern.matcher(value).find();
|
||||
if (flag) {
|
||||
ThreadLocalContextHolder.setData("包含XSS攻击脚本,请检查参数!");
|
||||
return flag;
|
||||
}
|
||||
// Avoid vbscript:... expressions
|
||||
scriptPattern = Pattern.compile("vbscript[\r\n| | ]*:[\r\n| | ]*", Pattern.CASE_INSENSITIVE);
|
||||
flag = scriptPattern.matcher(value).find();
|
||||
if (flag) {
|
||||
ThreadLocalContextHolder.setData("包含XSS攻击脚本,请检查参数!");
|
||||
return flag;
|
||||
}
|
||||
// Avoid onload= expressions
|
||||
scriptPattern = Pattern.compile("onload(.*?)=",
|
||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||
flag = scriptPattern.matcher(value).find();
|
||||
if (flag) {
|
||||
ThreadLocalContextHolder.setData("包含XSS攻击脚本,请检查参数!");
|
||||
return flag;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
public final boolean checkParameter() {
|
||||
Map<String, String[]> submitParams = new HashMap(parameterMap);
|
||||
Set<String> submitNames = submitParams.keySet();
|
||||
for (String submitName : submitNames) {
|
||||
Object submitValues = submitParams.get(submitName);
|
||||
if ((submitValues instanceof String)) {
|
||||
if (checkXSSAndSql((String) submitValues)) {
|
||||
return true;
|
||||
}
|
||||
} else if ((submitValues instanceof String[])) {
|
||||
for (String submitValue : (String[])submitValues){
|
||||
if (checkXSSAndSql(submitValue)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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
|
||||
public BufferedReader getReader() throws IOException {
|
||||
return new BufferedReader(new InputStreamReader(getInputStream()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServletInputStream getInputStream() throws IOException {
|
||||
final ByteArrayInputStream bais = new ByteArrayInputStream(body);
|
||||
return new ServletInputStream() {
|
||||
|
||||
@Override
|
||||
public int read() throws IOException {
|
||||
return bais.read();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFinished() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReady() {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadListener(ReadListener arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
21
backend/src/main/java/io/dataease/config/FilterConfig.java
Normal file
21
backend/src/main/java/io/dataease/config/FilterConfig.java
Normal file
@ -0,0 +1,21 @@
|
||||
package io.dataease.config;
|
||||
|
||||
import io.dataease.commons.filter.SqlFilter;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class FilterConfig {
|
||||
|
||||
@Bean
|
||||
public FilterRegistrationBean registration(){
|
||||
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
|
||||
filterRegistrationBean.setFilter(new SqlFilter());//实例化Filter类
|
||||
filterRegistrationBean.addUrlPatterns("/*");//设置匹配模式,这里设置为所有,可以按需求设置为"/hello"等等
|
||||
filterRegistrationBean.setName("SqlFilter");//设置过滤器名称
|
||||
filterRegistrationBean.setOrder(1);//设置执行顺序
|
||||
return filterRegistrationBean;
|
||||
}
|
||||
|
||||
}
|
||||
20
backend/src/main/java/io/dataease/config/WebMvcConfig.java
Normal file
20
backend/src/main/java/io/dataease/config/WebMvcConfig.java
Normal file
@ -0,0 +1,20 @@
|
||||
package io.dataease.config;
|
||||
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@Configuration
|
||||
public class WebMvcConfig implements WebMvcConfigurer {
|
||||
|
||||
@Value("${geo.rootpath:file:/opt/dataease/data/feature/full/}")
|
||||
private String geoPath;
|
||||
|
||||
@Override
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
|
||||
registry.addResourceHandler("/geo/**").addResourceLocations(geoPath);
|
||||
}
|
||||
}
|
||||
@ -66,7 +66,7 @@ public class DataSetTableTaskController {
|
||||
|
||||
@ApiOperation("更新状态")
|
||||
@PostMapping("/updateStatus")
|
||||
public void updateStatus(@RequestBody DatasetTableTask datasetTableTask) {
|
||||
public void updateStatus(@RequestBody DatasetTableTask datasetTableTask) throws Exception{
|
||||
dataSetTableTaskService.updateDatasetTableTaskStatus(datasetTableTask);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,78 @@
|
||||
package io.dataease.dto;
|
||||
|
||||
import io.dataease.base.domain.DatasetTableField;
|
||||
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 = false;
|
||||
|
||||
private List<PanelViewLinkageFieldDTO> linkageFields = new ArrayList<>();
|
||||
|
||||
|
||||
private List<DatasetTableField> targetViewFields = new ArrayList<>();
|
||||
|
||||
private String tableId;
|
||||
|
||||
|
||||
|
||||
public PanelViewLinkageDTO() {
|
||||
|
||||
}
|
||||
|
||||
public String getTableId() {
|
||||
return tableId;
|
||||
}
|
||||
|
||||
public void setTableId(String tableId) {
|
||||
this.tableId = tableId;
|
||||
}
|
||||
|
||||
public List<DatasetTableField> getTargetViewFields() {
|
||||
return targetViewFields;
|
||||
}
|
||||
|
||||
public void setTargetViewFields(List<DatasetTableField> targetViewFields) {
|
||||
this.targetViewFields = targetViewFields;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -494,7 +494,12 @@ public class ChartViewService {
|
||||
}
|
||||
}
|
||||
if (StringUtils.equals(a.toString(), x.get(i))) {
|
||||
ss.getData().set(i, new BigDecimal(row[xAxis.size() + extStack.size()]));
|
||||
if (row.length > xAxis.size() + extStack.size()) {
|
||||
String s = row[xAxis.size() + extStack.size()];
|
||||
if (StringUtils.isNotEmpty(s)) {
|
||||
ss.getData().set(i, new BigDecimal(s));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,7 +4,6 @@ import io.dataease.base.domain.*;
|
||||
import io.dataease.base.mapper.DatasetTableMapper;
|
||||
import io.dataease.base.mapper.DatasetTableTaskMapper;
|
||||
import io.dataease.base.mapper.ext.ExtDataSetTaskMapper;
|
||||
import io.dataease.base.mapper.ext.UtilMapper;
|
||||
import io.dataease.base.mapper.ext.query.GridExample;
|
||||
import io.dataease.commons.constants.JobStatus;
|
||||
import io.dataease.commons.constants.ScheduleType;
|
||||
@ -52,8 +51,6 @@ public class DataSetTableTaskService {
|
||||
private ExtDataSetTaskMapper extDataSetTaskMapper;
|
||||
@Resource
|
||||
private DatasetTableMapper datasetTableMapper;
|
||||
@Resource
|
||||
private UtilMapper utilMapper;
|
||||
|
||||
public DatasetTableTask save(DataSetTaskRequest dataSetTaskRequest) throws Exception {
|
||||
checkName(dataSetTaskRequest);
|
||||
@ -95,12 +92,15 @@ public class DataSetTableTaskService {
|
||||
datasetTableTaskMapper.updateByPrimaryKeySelective(datasetTableTask);
|
||||
}
|
||||
|
||||
scheduleService.addSchedule(datasetTableTask);
|
||||
|
||||
// simple
|
||||
if (datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString())) { // SIMPLE 类型,提前占位
|
||||
execNow(datasetTableTask);
|
||||
}else {
|
||||
checkTaskIsStopped(datasetTableTask);
|
||||
}
|
||||
scheduleService.addSchedule(datasetTableTask);
|
||||
checkTaskIsStopped(datasetTableTask);
|
||||
|
||||
return datasetTableTask;
|
||||
}
|
||||
|
||||
@ -281,7 +281,13 @@ public class DataSetTableTaskService {
|
||||
}
|
||||
}
|
||||
|
||||
public void updateDatasetTableTaskStatus(DatasetTableTask datasetTableTask){
|
||||
public void updateDatasetTableTaskStatus(DatasetTableTask datasetTableTask)throws Exception{
|
||||
|
||||
DatasetTableTask dbDatasetTableTask = datasetTableTaskMapper.selectByPrimaryKey(datasetTableTask.getId());
|
||||
if(dbDatasetTableTask.getStatus().equalsIgnoreCase(TaskStatus.Exec.name()) || dbDatasetTableTask.getStatus().equals(TaskStatus.Stopped.name())){
|
||||
throw new Exception(Translator.get("i18n_change_task_status_error") + Translator.get("i18n_" + dbDatasetTableTask.getStatus()));
|
||||
}
|
||||
|
||||
DatasetTableTaskExample datasetTableTaskExample = new DatasetTableTaskExample();
|
||||
DatasetTableTaskExample.Criteria criteria = datasetTableTaskExample.createCriteria();
|
||||
criteria.andIdEqualTo(datasetTableTask.getId());
|
||||
|
||||
@ -283,7 +283,7 @@ public class ExtractDataService {
|
||||
createDorisTable(DorisTableUtils.dorisTmpName(DorisTableUtils.dorisName(datasetTableId)), dorisTablColumnSql);
|
||||
generateTransFile("all_scope", datasetTable, datasource, datasetTableFields, null);
|
||||
if (datasetTable.getType().equalsIgnoreCase("sql")) {
|
||||
generateJobFile("all_scope", datasetTable, fetchSqlField(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(), datasource));
|
||||
generateJobFile("all_scope", datasetTable, String.join(",", datasetTableFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList())));
|
||||
} else {
|
||||
generateJobFile("all_scope", datasetTable, String.join(",", datasetTableFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList())));
|
||||
}
|
||||
@ -297,6 +297,7 @@ public class ExtractDataService {
|
||||
saveErrorLog(datasetTableId, taskId, e);
|
||||
msg = false;
|
||||
lastExecStatus = JobStatus.Error;
|
||||
execTime = null;
|
||||
} finally {
|
||||
try { deleteFile("all_scope", datasetTableId); }catch (Exception ignore){ System.out.println(ignore.getMessage());}
|
||||
try { sendWebMsg(datasetTable, datasetTableTask, datasetTableTaskLog, msg); }catch (Exception ignore){ System.out.println(ignore.getMessage());}
|
||||
@ -316,14 +317,17 @@ public class ExtractDataService {
|
||||
return;
|
||||
}
|
||||
|
||||
if (datasetTable.getLastUpdateTime() == 0 || datasetTable.getLastUpdateTime() == null) {
|
||||
updateTableStatus(datasetTableId, datasetTable, JobStatus.Completed, null);
|
||||
return;
|
||||
}
|
||||
|
||||
if (datasetTableTask == null ) {
|
||||
datasetTableTaskLog = writeDatasetTableTaskLog(datasetTableId, taskId);
|
||||
}
|
||||
|
||||
if (datasetTable.getLastUpdateTime() == null || datasetTable.getLastUpdateTime() == 0) {
|
||||
updateTableStatus(datasetTableId, datasetTable, JobStatus.Completed, null);
|
||||
saveErrorLog(datasetTableId, taskId, new Exception("未进行全量同步"));
|
||||
lastExecStatus = JobStatus.Error;
|
||||
return;
|
||||
}
|
||||
|
||||
execTime = System.currentTimeMillis();
|
||||
if (StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalAdd()) && StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalAdd().replace(" ", ""))) {// 增量添加
|
||||
String sql = datasetTableIncrementalConfig.getIncrementalAdd().replace(lastUpdateTime, datasetTable.getLastUpdateTime().toString())
|
||||
@ -348,6 +352,7 @@ public class ExtractDataService {
|
||||
saveErrorLog(datasetTableId, taskId, e);
|
||||
msg = false;
|
||||
lastExecStatus = JobStatus.Error;
|
||||
execTime = null;
|
||||
} finally {
|
||||
try { deleteFile("incremental_add", datasetTableId); deleteFile("incremental_delete", datasetTableId); }catch (Exception ignore){}
|
||||
try { sendWebMsg(datasetTable, datasetTableTask, datasetTableTaskLog, msg); }catch (Exception ignore){}
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
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())){
|
||||
List<PanelViewLinkageDTO> linkageDTOList = extPanelViewLinkageMapper.getViewLinkageGather(request.getPanelId(),request.getSourceViewId(),request.getTargetViewIds());
|
||||
linkageDTOList.stream().forEach(linkage ->{
|
||||
linkage.setTargetViewFields(extPanelViewLinkageMapper.queryTableField(linkage.getTableId()));
|
||||
});
|
||||
Map<String, PanelViewLinkageDTO> result = linkageDTOList.stream()
|
||||
.collect(Collectors.toMap(PanelViewLinkageDTO::getTargetViewId,PanelViewLinkageDTO->PanelViewLinkageDTO));
|
||||
return result;
|
||||
}
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -76,6 +76,8 @@ pagehelper.PageRowBounds=true
|
||||
#excel等用户上传文件路径
|
||||
upload.file.path=/opt/dataease/data/kettle/
|
||||
|
||||
dataease.sqlinjection.whitelists=/dataset/table/sqlPreview,/dataset/table/update
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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 FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
403
backend/src/main/resources/db/migration/V18__add_demo.sql
Normal file
403
backend/src/main/resources/db/migration/V18__add_demo.sql
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
142
backend/src/main/resources/db/migration/V19__area_mapping.sql
Normal file
142
backend/src/main/resources/db/migration/V19__area_mapping.sql
Normal file
@ -0,0 +1,142 @@
|
||||
ALTER TABLE `chart_view` ADD COLUMN `ext_stack` LONGTEXT COMMENT '堆叠项' AFTER `y_axis`;
|
||||
UPDATE `chart_view` SET `ext_stack` = '[]';
|
||||
|
||||
ALTER TABLE `dataset_table_field` MODIFY COLUMN `origin_name` LONGTEXT;
|
||||
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dataset_table_function
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dataset_table_function`;
|
||||
CREATE TABLE `dataset_table_function` (
|
||||
`id` bigint(20) NOT NULL COMMENT 'ID',
|
||||
`name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '函数名称',
|
||||
`func` varchar(500) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '函数表达式',
|
||||
`db_type` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '所属数据库',
|
||||
`func_type` int(10) DEFAULT NULL COMMENT '函数类型:0-聚合函数;1-快速计算函数;2-数学和三角函数;3-日期函数;4-文本函数;5-逻辑函数;6-其它函数',
|
||||
`desc` longtext COLLATE utf8mb4_bin COMMENT '描述',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of dataset_table_function
|
||||
-- ----------------------------
|
||||
BEGIN;
|
||||
INSERT INTO `dataset_table_function` VALUES (1, 'ABS', 'ABS(x)', 'mysql', 2, '返回x的绝对值');
|
||||
INSERT INTO `dataset_table_function` VALUES (2, 'PI', 'PI()', 'mysql', 2, '返回圆周率π,默认显示6位小数');
|
||||
INSERT INTO `dataset_table_function` VALUES (3, 'SQRT', 'SQRT(x)', 'mysql', 2, '返回非负数的x的二次方根');
|
||||
INSERT INTO `dataset_table_function` VALUES (4, 'MOD', 'MOD(x,y)', 'mysql', 2, '返回x被y除后的余数');
|
||||
INSERT INTO `dataset_table_function` VALUES (5, 'CEIL', 'CEIL(x)', 'mysql', 2, '返回不小于x的最小整数');
|
||||
INSERT INTO `dataset_table_function` VALUES (6, 'FLOOR', 'FLOOR(x)', 'mysql', 2, '返回不大于x的最大整数');
|
||||
INSERT INTO `dataset_table_function` VALUES (7, 'ROUND', 'ROUND(x)', 'mysql', 2, '返回离x最近的整数');
|
||||
INSERT INTO `dataset_table_function` VALUES (8, 'ROUND', 'ROUND(x,y)', 'mysql', 2, '保留x小数点后y位的值,但截断时要进行四舍五入');
|
||||
INSERT INTO `dataset_table_function` VALUES (9, 'SIGN', 'SIGN(x)', 'mysql', 2, '返回参数x的符号,-1表示负数,0表示0,1表示正数');
|
||||
INSERT INTO `dataset_table_function` VALUES (10, 'POW', 'POW(x,y)', 'mysql', 2, '返回x的y次乘方的值');
|
||||
INSERT INTO `dataset_table_function` VALUES (11, 'EXP', 'EXP(x)', 'mysql', 2, '返回e的x乘方后的值');
|
||||
INSERT INTO `dataset_table_function` VALUES (12, 'LOG', 'LOG(x)', 'mysql', 2, '返回x的自然对数,x相对于基数e的对数');
|
||||
INSERT INTO `dataset_table_function` VALUES (13, 'LOG10', 'LOG10(x)', 'mysql', 2, '返回x的基数为10的对数');
|
||||
INSERT INTO `dataset_table_function` VALUES (14, 'RADIANS', 'RADIANS(x)', 'mysql', 2, '返回x由角度转化为弧度的值');
|
||||
INSERT INTO `dataset_table_function` VALUES (15, 'DEGREES', 'DEGREES(x)', 'mysql', 2, '返回x由弧度转化为角度的值');
|
||||
INSERT INTO `dataset_table_function` VALUES (16, 'SIN', 'SIN(x)', 'mysql', 2, '返回x的正弦,其中x为给定的弧度值');
|
||||
INSERT INTO `dataset_table_function` VALUES (17, 'ASIN', 'ASIN(x)', 'mysql', 2, '返回x的反正弦值');
|
||||
INSERT INTO `dataset_table_function` VALUES (18, 'COS', 'COS(x)', 'mysql', 2, '返回x的余弦,其中x为给定的弧度值');
|
||||
INSERT INTO `dataset_table_function` VALUES (19, 'ACOS', 'ACOS(x)', 'mysql', 2, '返回x的反余弦值');
|
||||
INSERT INTO `dataset_table_function` VALUES (20, 'TAN', 'TAN(x)', 'mysql', 2, '返回x的正切,其中x为给定的弧度值');
|
||||
INSERT INTO `dataset_table_function` VALUES (21, 'ATAN', 'ATAN(x)', 'mysql', 2, '返回x的反正切值');
|
||||
INSERT INTO `dataset_table_function` VALUES (22, 'COT', 'COT(x)', 'mysql', 2, '返回给定弧度值x的余切');
|
||||
INSERT INTO `dataset_table_function` VALUES (23, 'CHAR_LENGTH', 'CHAR_LENGTH(str)', 'mysql', 4, '计算字符串字符个数');
|
||||
INSERT INTO `dataset_table_function` VALUES (24, 'TRIM', 'TRIM(s)', 'mysql', 4, '返回字符串s删除了两边空格之后的字符串');
|
||||
INSERT INTO `dataset_table_function` VALUES (25, 'LTRIM', 'LTRIM(s)', 'mysql', 4, '返回字符串s,其左边所有空格被删除');
|
||||
INSERT INTO `dataset_table_function` VALUES (26, 'RTRIM', 'RTRIM(s)', 'mysql', 4, '返回字符串s,其右边所有空格被删除');
|
||||
INSERT INTO `dataset_table_function` VALUES (27, 'REPLACE', 'REPLACE(s,s1,s2)', 'mysql', 4, '返回一个字符串,用字符串s2替代字符串s中所有的字符串s1');
|
||||
INSERT INTO `dataset_table_function` VALUES (28, 'SUBSTRING', 'SUBSTRING(s,n,len)', 'mysql', 4, '获取从字符串s中的第n个位置开始长度为len的字符串');
|
||||
INSERT INTO `dataset_table_function` VALUES (29, 'CONCAT', 'CONCAT(s1,s2,...)', 'mysql', 4, '返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为NULL则返回值为NULL');
|
||||
INSERT INTO `dataset_table_function` VALUES (30, 'INSERT', 'INSERT(s1,x,len,s2)', 'mysql', 4, '返回字符串s1,其子字符串起始于位置x,被字符串s2取代len个字符');
|
||||
INSERT INTO `dataset_table_function` VALUES (31, 'LOWER', 'LOWER(str)', 'mysql', 4, '将str中的字母全部转换成小写');
|
||||
INSERT INTO `dataset_table_function` VALUES (32, 'UPPER', 'UPPER(str)', 'mysql', 4, '将字符串中的字母全部转换成大写');
|
||||
INSERT INTO `dataset_table_function` VALUES (33, 'LEFT', 'LEFT(s,n)', 'mysql', 4, '返回字符串s从最左边开始的n个字符');
|
||||
INSERT INTO `dataset_table_function` VALUES (34, 'RIGHT', 'RIGHT(s,n)', 'mysql', 4, '返回字符串s从最右边开始的n个字符');
|
||||
INSERT INTO `dataset_table_function` VALUES (35, 'REPEAT', 'REPEAT(s,n)', 'mysql', 4, '返回一个由重复字符串s组成的字符串,字符串s的数目等于n');
|
||||
INSERT INTO `dataset_table_function` VALUES (36, 'SPACE', 'SPACE(n)', 'mysql', 4, '返回一个由n个空格组成的字符串');
|
||||
INSERT INTO `dataset_table_function` VALUES (37, 'REVERSE', 'REVERSE(s)', 'mysql', 4, '将字符串s反转');
|
||||
INSERT INTO `dataset_table_function` VALUES (38, 'CURDATE', 'CURDATE()', 'mysql', 3, '将当前日期按照\"YYYY-MM-DD\"或者\"YYYYMMDD\"格式的值返回,具体格式根据函数用在字符串或是数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (39, 'CURRENT_DATE', 'CURRENT_DATE()', 'mysql', 3, '将当前日期按照\"YYYY-MM-DD\"或者\"YYYYMMDD\"格式的值返回,具体格式根据函数用在字符串或是数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (40, 'NOW', 'NOW()', 'mysql', 3, '返回当前日期和时间值,格式为\"YYYY_MM-DD HH:MM:SS\"或\"YYYYMMDDHHMMSS\",具体格式根据函数用在字符串或数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (41, 'SYSDATE', 'SYSDATE()', 'mysql', 3, '返回当前日期和时间值,格式为\"YYYY_MM-DD HH:MM:SS\"或\"YYYYMMDDHHMMSS\",具体格式根据函数用在字符串或数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (42, 'LOCALTIME', 'LOCALTIME()', 'mysql', 3, '返回当前日期和时间值,格式为\"YYYY_MM-DD HH:MM:SS\"或\"YYYYMMDDHHMMSS\",具体格式根据函数用在字符串或数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (43, 'CURRENT_TIMESTAMP', 'CURRENT_TIMESTAMP()', 'mysql', 3, '返回当前日期和时间值,格式为\"YYYY_MM-DD HH:MM:SS\"或\"YYYYMMDDHHMMSS\",具体格式根据函数用在字符串或数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (44, 'UNIX_TIMESTAMP', 'UNIX_TIMESTAMP()', 'mysql', 3, '返回一个格林尼治标准时间1970-01-01 00:00:00到现在的秒数');
|
||||
INSERT INTO `dataset_table_function` VALUES (45, 'UNIX_TIMESTAMP', 'UNIX_TIMESTAMP(date)', 'mysql', 3, '返回一个格林尼治标准时间1970-01-01 00:00:00到指定时间的秒数');
|
||||
INSERT INTO `dataset_table_function` VALUES (46, 'FROM_UNIXTIME', 'FROM_UNIXTIME(date)', 'mysql', 3, '把UNIX时间戳转换为普通格式的时间');
|
||||
INSERT INTO `dataset_table_function` VALUES (47, 'CASE', 'CASE expr WHEN v1 THEN r1 [WHEN v2 THEN v2] [ELSE rn] END', 'mysql', 5, '如果expr等于某个vn,则返回对应位置THEN后面的结果,如果与所有值都不想等,则返回ELSE后面的rn');
|
||||
INSERT INTO `dataset_table_function` VALUES (48, 'IF', 'IF(expr,v1,v2)', 'mysql', 5, '如果expr是TRUE则返回v1,否则返回v2');
|
||||
INSERT INTO `dataset_table_function` VALUES (49, 'IFNULL', 'IFNULL(v1,v2)', 'mysql', 5, '如果v1不为NULL,则返回v1,否则返回v2');
|
||||
INSERT INTO `dataset_table_function` VALUES (50, 'ABS', 'ABS(x)', 'doris', 2, '返回x的绝对值');
|
||||
INSERT INTO `dataset_table_function` VALUES (51, 'PI', 'PI()', 'doris', 2, '返回圆周率π,默认显示6位小数');
|
||||
INSERT INTO `dataset_table_function` VALUES (52, 'SQRT', 'SQRT(x)', 'doris', 2, '返回非负数的x的二次方根');
|
||||
INSERT INTO `dataset_table_function` VALUES (53, 'MOD', 'MOD(x,y)', 'doris', 2, '返回x被y除后的余数');
|
||||
INSERT INTO `dataset_table_function` VALUES (54, 'CEIL', 'CEIL(x)', 'doris', 2, '返回不小于x的最小整数');
|
||||
INSERT INTO `dataset_table_function` VALUES (55, 'FLOOR', 'FLOOR(x)', 'doris', 2, '返回不大于x的最大整数');
|
||||
INSERT INTO `dataset_table_function` VALUES (56, 'ROUND', 'ROUND(x)', 'doris', 2, '返回离x最近的整数');
|
||||
INSERT INTO `dataset_table_function` VALUES (57, 'ROUND', 'ROUND(x,y)', 'doris', 2, '保留x小数点后y位的值,但截断时要进行四舍五入');
|
||||
INSERT INTO `dataset_table_function` VALUES (58, 'SIGN', 'SIGN(x)', 'doris', 2, '返回参数x的符号,-1表示负数,0表示0,1表示正数');
|
||||
INSERT INTO `dataset_table_function` VALUES (59, 'POW', 'POW(x,y)', 'doris', 2, '返回x的y次乘方的值');
|
||||
INSERT INTO `dataset_table_function` VALUES (60, 'EXP', 'EXP(x)', 'doris', 2, '返回e的x乘方后的值');
|
||||
INSERT INTO `dataset_table_function` VALUES (61, 'LOG', 'LOG(x)', 'doris', 2, '返回x的自然对数,x相对于基数e的对数');
|
||||
INSERT INTO `dataset_table_function` VALUES (62, 'LOG10', 'LOG10(x)', 'doris', 2, '返回x的基数为10的对数');
|
||||
INSERT INTO `dataset_table_function` VALUES (63, 'RADIANS', 'RADIANS(x)', 'doris', 2, '返回x由角度转化为弧度的值');
|
||||
INSERT INTO `dataset_table_function` VALUES (64, 'DEGREES', 'DEGREES(x)', 'doris', 2, '返回x由弧度转化为角度的值');
|
||||
INSERT INTO `dataset_table_function` VALUES (65, 'SIN', 'SIN(x)', 'doris', 2, '返回x的正弦,其中x为给定的弧度值');
|
||||
INSERT INTO `dataset_table_function` VALUES (66, 'ASIN', 'ASIN(x)', 'doris', 2, '返回x的反正弦值');
|
||||
INSERT INTO `dataset_table_function` VALUES (67, 'COS', 'COS(x)', 'doris', 2, '返回x的余弦,其中x为给定的弧度值');
|
||||
INSERT INTO `dataset_table_function` VALUES (68, 'ACOS', 'ACOS(x)', 'doris', 2, '返回x的反余弦值');
|
||||
INSERT INTO `dataset_table_function` VALUES (69, 'TAN', 'TAN(x)', 'doris', 2, '返回x的正切,其中x为给定的弧度值');
|
||||
INSERT INTO `dataset_table_function` VALUES (70, 'ATAN', 'ATAN(x)', 'doris', 2, '返回x的反正切值');
|
||||
INSERT INTO `dataset_table_function` VALUES (71, 'COT', 'COT(x)', 'doris', 2, '返回给定弧度值x的余切');
|
||||
INSERT INTO `dataset_table_function` VALUES (72, 'CHAR_LENGTH', 'CHAR_LENGTH(str)', 'doris', 4, '计算字符串字符个数');
|
||||
INSERT INTO `dataset_table_function` VALUES (73, 'TRIM', 'TRIM(s)', 'doris', 4, '返回字符串s删除了两边空格之后的字符串');
|
||||
INSERT INTO `dataset_table_function` VALUES (74, 'LTRIM', 'LTRIM(s)', 'doris', 4, '返回字符串s,其左边所有空格被删除');
|
||||
INSERT INTO `dataset_table_function` VALUES (75, 'RTRIM', 'RTRIM(s)', 'doris', 4, '返回字符串s,其右边所有空格被删除');
|
||||
INSERT INTO `dataset_table_function` VALUES (76, 'REPLACE', 'REPLACE(s,s1,s2)', 'doris', 4, '返回一个字符串,用字符串s2替代字符串s中所有的字符串s1');
|
||||
INSERT INTO `dataset_table_function` VALUES (77, 'SUBSTRING', 'SUBSTRING(s,n,len)', 'doris', 4, '获取从字符串s中的第n个位置开始长度为len的字符串');
|
||||
INSERT INTO `dataset_table_function` VALUES (78, 'CONCAT', 'CONCAT(s1,s2,...)', 'doris', 4, '返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为NULL则返回值为NULL');
|
||||
INSERT INTO `dataset_table_function` VALUES (79, 'INSERT', 'INSERT(s1,x,len,s2)', 'doris', 4, '返回字符串s1,其子字符串起始于位置x,被字符串s2取代len个字符');
|
||||
INSERT INTO `dataset_table_function` VALUES (80, 'LOWER', 'LOWER(str)', 'doris', 4, '将str中的字母全部转换成小写');
|
||||
INSERT INTO `dataset_table_function` VALUES (81, 'UPPER', 'UPPER(str)', 'doris', 4, '将字符串中的字母全部转换成大写');
|
||||
INSERT INTO `dataset_table_function` VALUES (82, 'LEFT', 'LEFT(s,n)', 'doris', 4, '返回字符串s从最左边开始的n个字符');
|
||||
INSERT INTO `dataset_table_function` VALUES (83, 'RIGHT', 'RIGHT(s,n)', 'doris', 4, '返回字符串s从最右边开始的n个字符');
|
||||
INSERT INTO `dataset_table_function` VALUES (84, 'REPEAT', 'REPEAT(s,n)', 'doris', 4, '返回一个由重复字符串s组成的字符串,字符串s的数目等于n');
|
||||
INSERT INTO `dataset_table_function` VALUES (85, 'SPACE', 'SPACE(n)', 'doris', 4, '返回一个由n个空格组成的字符串');
|
||||
INSERT INTO `dataset_table_function` VALUES (86, 'REVERSE', 'REVERSE(s)', 'doris', 4, '将字符串s反转');
|
||||
INSERT INTO `dataset_table_function` VALUES (87, 'CURDATE', 'CURDATE()', 'doris', 3, '将当前日期按照\"YYYY-MM-DD\"或者\"YYYYMMDD\"格式的值返回,具体格式根据函数用在字符串或是数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (88, 'CURRENT_DATE', 'CURRENT_DATE()', 'doris', 3, '将当前日期按照\"YYYY-MM-DD\"或者\"YYYYMMDD\"格式的值返回,具体格式根据函数用在字符串或是数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (89, 'NOW', 'NOW()', 'doris', 3, '返回当前日期和时间值,格式为\"YYYY_MM-DD HH:MM:SS\"或\"YYYYMMDDHHMMSS\",具体格式根据函数用在字符串或数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (90, 'SYSDATE', 'SYSDATE()', 'doris', 3, '返回当前日期和时间值,格式为\"YYYY_MM-DD HH:MM:SS\"或\"YYYYMMDDHHMMSS\",具体格式根据函数用在字符串或数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (91, 'LOCALTIME', 'LOCALTIME()', 'doris', 3, '返回当前日期和时间值,格式为\"YYYY_MM-DD HH:MM:SS\"或\"YYYYMMDDHHMMSS\",具体格式根据函数用在字符串或数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (92, 'CURRENT_TIMESTAMP', 'CURRENT_TIMESTAMP()', 'doris', 3, '返回当前日期和时间值,格式为\"YYYY_MM-DD HH:MM:SS\"或\"YYYYMMDDHHMMSS\",具体格式根据函数用在字符串或数字语境中而定');
|
||||
INSERT INTO `dataset_table_function` VALUES (93, 'UNIX_TIMESTAMP', 'UNIX_TIMESTAMP()', 'doris', 3, '返回一个格林尼治标准时间1970-01-01 00:00:00到现在的秒数');
|
||||
INSERT INTO `dataset_table_function` VALUES (94, 'UNIX_TIMESTAMP', 'UNIX_TIMESTAMP(date)', 'doris', 3, '返回一个格林尼治标准时间1970-01-01 00:00:00到指定时间的秒数');
|
||||
INSERT INTO `dataset_table_function` VALUES (95, 'FROM_UNIXTIME', 'FROM_UNIXTIME(date)', 'doris', 3, '把UNIX时间戳转换为普通格式的时间');
|
||||
INSERT INTO `dataset_table_function` VALUES (96, 'CASE', 'CASE expr WHEN v1 THEN r1 [WHEN v2 THEN v2] [ELSE rn] END', 'doris', 3, '如果expr等于某个vn,则返回对应位置THEN后面的结果,如果与所有值都不想等,则返回ELSE后面的rn');
|
||||
INSERT INTO `dataset_table_function` VALUES (97, 'IF', 'IF(expr,v1,v2)', 'doris', 5, '如果expr是TRUE则返回v1,否则返回v2');
|
||||
INSERT INTO `dataset_table_function` VALUES (98, 'IFNULL', 'IFNULL(v1,v2)', 'doris', 5, '如果v1不为NULL,则返回v1,否则返回v2');
|
||||
INSERT INTO `dataset_table_function` VALUES (99, 'SUBSTR', 'SUBSTR(char, position, substring_length)', 'oracle', 4, '获取从字符串char中的第position个位置开始长度为substring_lenght的字符串');
|
||||
INSERT INTO `dataset_table_function` VALUES (100, 'REPLACE', 'REPLACE(X,old,new)', 'oracle', 4, '在X中查找old,并替换成new');
|
||||
INSERT INTO `dataset_table_function` VALUES (101, 'TRIM', 'TRIM([TRIM_STR FROM]X)', 'oracle', 4, '把X的两边截去trim_str字符串,缺省截去空格');
|
||||
INSERT INTO `dataset_table_function` VALUES (102, 'LOWER', 'LOWER(X)', 'oracle', 4, 'X转换成小写');
|
||||
INSERT INTO `dataset_table_function` VALUES (103, 'UPPER', 'UPPER(X)', 'oracle', 4, 'X转换成大写');
|
||||
INSERT INTO `dataset_table_function` VALUES (104, 'LENGTH', 'LENGTH(X)', 'oracle', 4, '返回X的长度');
|
||||
INSERT INTO `dataset_table_function` VALUES (105, 'ABS', 'ABS(value)', 'oracle', 2, '返回value的绝对值');
|
||||
INSERT INTO `dataset_table_function` VALUES (106, 'CEIL', 'CEIL(value)', 'oracle', 2, '返回大于等于value的最小整数');
|
||||
INSERT INTO `dataset_table_function` VALUES (107, 'FLOOR', 'FLOOR(value)', 'oracle', 2, '返回小于等于value的最大整数');
|
||||
INSERT INTO `dataset_table_function` VALUES (108, 'ROUND', 'ROUND(value,n)', 'oracle', 2, '对value进行四舍五入,保存小数点右侧的n位。如果n省略的话,相当于n=0的情况');
|
||||
COMMIT;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
ALTER TABLE `chart_view` ADD COLUMN `drill_fields` LONGTEXT COMMENT '钻取字段' AFTER `custom_filter`;
|
||||
UPDATE `chart_view` SET `drill_fields` = '[]';
|
||||
|
||||
@ -64,7 +64,6 @@
|
||||
|
||||
<!--要生成的数据库表 -->
|
||||
|
||||
<table tableName="dataset_table_function"/>
|
||||
<!-- <table tableName="sys_dict"/>-->
|
||||
<!-- <table tableName="sys_dict_item"/>-->
|
||||
<!-- <table tableName="dataset_table_field"/>-->
|
||||
|
||||
@ -277,4 +277,7 @@ i18n_data_not_sync=Please sync data first
|
||||
i18n_excel_colume_change=The column name of Excel is inconsistent with the original data set
|
||||
i18n_timed_task=Timed Task
|
||||
i18n_datasource_connect_error=Data source connection exception:
|
||||
i18n_check_sql_error=Check incremental SQL exception,
|
||||
i18n_check_sql_error=Check incremental SQL exception,
|
||||
i18n_change_task_status_error=Suspension is not allowed. The task status is:
|
||||
i18n_Stopped=END
|
||||
i18n_Exec=Running
|
||||
@ -277,3 +277,7 @@ i18n_excel_colume_change=Excel的列名与原数据集不一致
|
||||
i18n_timed_task=定时任务
|
||||
i18n_datasource_connect_error=数据源连接异常:
|
||||
i18n_check_sql_error=校验增量 SQL 异常,
|
||||
i18n_change_task_status_error=不允许暂停,任务状态为:
|
||||
i18n_Stopped=执行结束
|
||||
i18n_Exec=运行中
|
||||
|
||||
|
||||
@ -279,4 +279,7 @@ i18n_data_not_sync=請先完成數據同步
|
||||
i18n_excel_colume_change=Excel的列名與原數據集不一致
|
||||
i18n_timed_task=定時任務
|
||||
i18n_datasource_connect_error=數據源連接異常:
|
||||
i18n_check_sql_error=校驗增量SQL異常,
|
||||
i18n_check_sql_error=校驗增量SQL異常,
|
||||
i18n_change_task_status_error=不允許暫停,任務狀態為:
|
||||
i18n_Stopped=執行結束
|
||||
i18n_Exec=運行中
|
||||
@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<artifactId>dataease-server</artifactId>
|
||||
<groupId>io.dataease</groupId>
|
||||
<version>1.0.0</version>
|
||||
<version>1.2.0</version>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@ -8,9 +8,17 @@ export const areaMapping = () => {
|
||||
})
|
||||
}
|
||||
|
||||
// export function geoJson(areaCode) {
|
||||
// return request({
|
||||
// url: '/api/map/resourceFull/' + areaCode,
|
||||
// method: 'get',
|
||||
// loading: true
|
||||
// })
|
||||
// }
|
||||
|
||||
export function geoJson(areaCode) {
|
||||
return request({
|
||||
url: '/api/map/resourceFull/' + areaCode,
|
||||
url: '/geo/' + areaCode + '_full.json',
|
||||
method: 'get',
|
||||
loading: true
|
||||
})
|
||||
|
||||
11
frontend/src/api/panel/linkage.js
Normal file
11
frontend/src/api/panel/linkage.js
Normal 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
|
||||
})
|
||||
}
|
||||
|
||||
@ -10,7 +10,8 @@
|
||||
[classNameResizable]: resizable,
|
||||
[classNameRotating]: rotating,
|
||||
[classNameRotatable]: rotatable,
|
||||
[classNameMouseOn]: mouseOn || active
|
||||
[classNameMouseOn]: mouseOn || active,
|
||||
['linkageSetting']:linkageActive
|
||||
},
|
||||
className
|
||||
]"
|
||||
@ -19,9 +20,7 @@
|
||||
@mouseenter="enter"
|
||||
@mouseleave="leave"
|
||||
>
|
||||
<setting-menu style="right:5px;position: absolute;z-index: 2">
|
||||
<i slot="icon" class="icon iconfont icon-shezhi" />
|
||||
</setting-menu>
|
||||
<edit-bar v-if="active||linkageSettingStatus" :active-model="'edit'" :element="element" @showViewDetails="showViewDetails" />
|
||||
<div
|
||||
v-for="(handlei, indexi) in actualHandles"
|
||||
:key="indexi"
|
||||
@ -46,11 +45,12 @@ let eventsFor = events.mouse
|
||||
import eventBus from '@/components/canvas/utils/eventBus'
|
||||
import { mapState } from 'vuex'
|
||||
import SettingMenu from '@/components/canvas/components/Editor/SettingMenu'
|
||||
import EditBar from '@/components/canvas/components/Editor/EditBar'
|
||||
|
||||
export default {
|
||||
replace: true,
|
||||
name: 'VueDragResizeRotate',
|
||||
components: { SettingMenu },
|
||||
components: { EditBar },
|
||||
props: {
|
||||
className: {
|
||||
type: String,
|
||||
@ -311,6 +311,11 @@ export default {
|
||||
changeStyle: {
|
||||
require: true,
|
||||
type: Object
|
||||
},
|
||||
// 联动设置
|
||||
linkageActive: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data: function() {
|
||||
@ -464,7 +469,8 @@ export default {
|
||||
'curComponent',
|
||||
'editor',
|
||||
'curCanvasScale',
|
||||
'canvasStyleData'
|
||||
'canvasStyleData',
|
||||
'linkageSettingStatus'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
@ -1540,6 +1546,9 @@ export default {
|
||||
removeEvent(document.documentElement, 'mouseup', this.handleUp)
|
||||
removeEvent(document.documentElement, 'touchend touchcancel', this.deselect)
|
||||
removeEvent(window, 'resize', this.checkParentSize)
|
||||
},
|
||||
showViewDetails() {
|
||||
this.$emit('showViewDetails')
|
||||
}
|
||||
}
|
||||
|
||||
@ -1628,26 +1637,30 @@ export default {
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.mouseOn >>> .icon-shezhi{
|
||||
z-index: 2;
|
||||
display:block!important;
|
||||
}
|
||||
.vdr > i{
|
||||
right: 5px;
|
||||
color: gray;
|
||||
position: absolute;
|
||||
.linkageSetting{
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.vdr >>> i:hover {
|
||||
color: red;
|
||||
}
|
||||
/*.mouseOn >>> .icon-shezhi{*/
|
||||
/* z-index: 2;*/
|
||||
/* display:block!important;*/
|
||||
/*}*/
|
||||
/*.vdr > i{*/
|
||||
/* right: 5px;*/
|
||||
/* color: gray;*/
|
||||
/* position: absolute;*/
|
||||
/*}*/
|
||||
|
||||
.vdr:hover >>> i {
|
||||
z-index: 2;
|
||||
display:block;
|
||||
}
|
||||
/*.vdr >>> i:hover {*/
|
||||
/* color: red;*/
|
||||
/*}*/
|
||||
|
||||
.vdr>>>.icon-shezhi {
|
||||
display:none
|
||||
}
|
||||
/*.vdr:hover >>> i {*/
|
||||
/* z-index: 2;*/
|
||||
/* display:block;*/
|
||||
/*}*/
|
||||
|
||||
/*.vdr>>>.icon-shezhi {*/
|
||||
/* display:none*/
|
||||
/*}*/
|
||||
</style>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
@click="handleClick"
|
||||
@mousedown="elementMouseDown"
|
||||
>
|
||||
<edit-bar v-if="config === curComponent" @showViewDetails="showViewDetails" />
|
||||
<edit-bar v-if="config === curComponent" :element="config" @showViewDetails="showViewDetails" />
|
||||
<de-out-widget
|
||||
v-if="config.type==='custom'"
|
||||
:id="'component' + config.id"
|
||||
@ -18,9 +18,9 @@
|
||||
/>
|
||||
|
||||
<component
|
||||
ref="wrapperChild"
|
||||
:is="config.component"
|
||||
v-else
|
||||
ref="wrapperChild"
|
||||
:out-style="config.style"
|
||||
:style="getComponentStyleDefault(config.style)"
|
||||
:prop-value="config.propValue"
|
||||
@ -112,8 +112,8 @@ export default {
|
||||
e.stopPropagation()
|
||||
this.$store.commit('setCurComponent', { component: this.config, index: this.index })
|
||||
},
|
||||
showViewDetails(){
|
||||
this.$refs.wrapperChild.openChartDetailsDialog();
|
||||
showViewDetails() {
|
||||
this.$refs.wrapperChild.openChartDetailsDialog()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,17 +1,35 @@
|
||||
<template>
|
||||
<div class="bar-main">
|
||||
<i v-if="curComponent.type==='view'" class="icon iconfont icon-fangda" @click.stop="showViewDetails" />
|
||||
<i v-if="activeModel==='edit'" class="icon iconfont icon-shezhi" @click.stop="showViewDetails" />
|
||||
<div v-if="linkageSettingStatus&&element!==curLinkageView&&element.type==='view'" style="margin-right: -1px;width: 18px">
|
||||
<el-checkbox v-model="linkageInfo.linkageActive" />
|
||||
<linkage-field v-if="linkageInfo.linkageActive" :element="element" />
|
||||
<!-- <i v-if="linkageInfo.linkageActive" class="icon iconfont icon-edit" @click.stop="linkageEdit" />-->
|
||||
</div>
|
||||
<div v-else-if="!linkageSettingStatus">
|
||||
<setting-menu v-if="activeModel==='edit'" style="float: right;height: 24px!important;">
|
||||
<i slot="icon" class="icon iconfont icon-shezhi" />
|
||||
</setting-menu>
|
||||
<i v-if="activeModel==='edit'&&curComponent&&editFilter.includes(curComponent.type)" class="icon iconfont icon-edit" @click.stop="edit" />
|
||||
<i v-if="curComponent.type==='view'" class="icon iconfont icon-fangda" @click.stop="showViewDetails" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from 'vuex'
|
||||
import eventBus from '@/components/canvas/utils/eventBus'
|
||||
import bus from '@/utils/bus'
|
||||
import SettingMenu from '@/components/canvas/components/Editor/SettingMenu'
|
||||
import LinkageField from '@/components/canvas/components/Editor/LinkageField'
|
||||
|
||||
export default {
|
||||
components: { SettingMenu, LinkageField },
|
||||
|
||||
props: {
|
||||
element: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
active: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
@ -27,23 +45,54 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
componentType: null,
|
||||
linkageActiveStatus: false,
|
||||
editFilter: [
|
||||
'view',
|
||||
'custom'
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: mapState([
|
||||
'menuTop',
|
||||
'menuLeft',
|
||||
'menuShow',
|
||||
'curComponent',
|
||||
'componentData',
|
||||
'canvasStyleData'
|
||||
]),
|
||||
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() {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,113 @@
|
||||
<template>
|
||||
|
||||
<el-popover
|
||||
width="300"
|
||||
trigger="click"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="10">
|
||||
<div class="ellip">联动视图</div>
|
||||
</el-col>
|
||||
<el-col :span="10">
|
||||
<div class="ellip">{{ linkageInfo.targetViewName }}</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
linkageInfo{{ linkageInfo }}
|
||||
|
||||
<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() {
|
||||
|
||||
},
|
||||
linkageEdit() {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.slot-class{
|
||||
color: white;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
.ellip{
|
||||
/*width: 100%;*/
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
overflow: hidden;/*超出部分隐藏*/
|
||||
white-space: nowrap;/*不换行*/
|
||||
text-overflow:ellipsis;/*超出部分文字以...显示*/
|
||||
background-color: #f7f8fa;
|
||||
color: #3d4d66;
|
||||
font-size: 12px;
|
||||
line-height: 24px;
|
||||
height: 24px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@ -153,6 +153,7 @@ export default {
|
||||
this.searchCount++
|
||||
}, refreshTime)
|
||||
eventBus.$on('openChartDetailsDialog', this.openChartDetailsDialog)
|
||||
this.$store.commit('clearLinkageSettingInfo', false)
|
||||
},
|
||||
beforeDestroy() {
|
||||
clearInterval(this.timer)
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
<script>
|
||||
import { mapState } from 'vuex'
|
||||
import bus from '@/utils/bus'
|
||||
import { getViewLinkageGather } from '@/api/panel/linkage'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@ -122,7 +123,19 @@ export default {
|
||||
this.$store.commit('recordSnapshot')
|
||||
},
|
||||
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)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
@mousedown="handleMouseDown"
|
||||
>
|
||||
<!-- 网格线 -->
|
||||
<Grid v-if="canvasStyleData.auxiliaryMatrix" :matrix-style="matrixStyle" />
|
||||
<Grid v-if="canvasStyleData.auxiliaryMatrix&&!linkageSettingStatus" :matrix-style="matrixStyle" />
|
||||
<!--页面组件列表展示-->
|
||||
<de-drag
|
||||
v-for="(item, index) in componentData"
|
||||
@ -29,12 +29,17 @@
|
||||
:snap="true"
|
||||
:snap-tolerance="2"
|
||||
:change-style="customStyle"
|
||||
:draggable="!linkageSettingStatus"
|
||||
:resizable="!linkageSettingStatus"
|
||||
:linkage-active="linkageSettingStatus&&item===curLinkageView"
|
||||
@refLineParams="getRefLineParams"
|
||||
@showViewDetails="showViewDetails(index)"
|
||||
>
|
||||
<component
|
||||
:is="item.component"
|
||||
v-if="item.type==='v-text'"
|
||||
:id="'component' + item.id"
|
||||
ref="wrapperChild"
|
||||
class="component"
|
||||
:style="getComponentStyleDefault(item.style)"
|
||||
:prop-value="item.propValue"
|
||||
@ -69,6 +74,7 @@
|
||||
:is="item.component"
|
||||
v-else-if="item.type==='other'"
|
||||
:id="'component' + item.id"
|
||||
ref="wrapperChild"
|
||||
class="component"
|
||||
:style="getComponentStyle(item.style)"
|
||||
:prop-value="item.propValue"
|
||||
@ -80,6 +86,7 @@
|
||||
:is="item.component"
|
||||
v-else
|
||||
:id="'component' + item.id"
|
||||
ref="wrapperChild"
|
||||
class="component"
|
||||
:style="getComponentStyleDefault(item.style)"
|
||||
:prop-value="item.propValue"
|
||||
@ -245,7 +252,9 @@ export default {
|
||||
'componentData',
|
||||
'curComponent',
|
||||
'canvasStyleData',
|
||||
'editor'
|
||||
'editor',
|
||||
'linkageSettingStatus',
|
||||
'curLinkageView'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
@ -275,6 +284,7 @@ export default {
|
||||
// 第一次变化 不需要 重置边界 待改进
|
||||
if (this.changeIndex++ > 0) {
|
||||
this.resizeParentBounds()
|
||||
this.$store.state.styleChangeTimes++
|
||||
}
|
||||
// this.changeScale()
|
||||
},
|
||||
@ -602,6 +612,9 @@ export default {
|
||||
},
|
||||
exportExcel() {
|
||||
this.$refs['userViewDialog'].exportExcel()
|
||||
},
|
||||
showViewDetails(index) {
|
||||
this.$refs.wrapperChild[index].openChartDetailsDialog()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,17 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="toolbar">
|
||||
<!-- linkageActiveStatus:{{ linkageActiveStatus }}-->
|
||||
<div v-if="linkageSettingStatus" class="toolbar">
|
||||
<span style="float: right;">
|
||||
<el-button size="mini" @click="saveLinkage">
|
||||
{{ $t('commons.confirm') }}
|
||||
</el-button>
|
||||
<el-button size="mini" @click="cancelLinkage">
|
||||
{{ $t('commons.cancel') }}
|
||||
</el-button>
|
||||
</span>
|
||||
</div>
|
||||
<div v-else class="toolbar">
|
||||
|
||||
<div class="canvas-config" style="margin-right: 10px">
|
||||
<el-switch v-model="canvasStyleData.auxiliaryMatrix" :width="35" name="auxiliaryMatrix" />
|
||||
@ -125,7 +136,8 @@ export default {
|
||||
'curComponent',
|
||||
'changeTimes',
|
||||
'snapshotIndex',
|
||||
'lastSaveSnapshotIndex'
|
||||
'lastSaveSnapshotIndex',
|
||||
'linkageSettingStatus'
|
||||
]),
|
||||
|
||||
created() {
|
||||
@ -302,6 +314,15 @@ export default {
|
||||
},
|
||||
closeNotSave() {
|
||||
this.close()
|
||||
},
|
||||
saveLinkage() {
|
||||
this.cancelLinkageSettingStatus()
|
||||
},
|
||||
cancelLinkage() {
|
||||
this.cancelLinkageSettingStatus()
|
||||
},
|
||||
cancelLinkageSettingStatus() {
|
||||
this.$store.commit('clearLinkageSettingInfo')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div style="overflow: hidden">
|
||||
<div style="overflow: hidden;width: 100%;height: 100%;">
|
||||
<img :src="propValue">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -228,10 +228,12 @@ export default {
|
||||
padding:0 8px;
|
||||
}
|
||||
.father .child {
|
||||
display: none;
|
||||
/*display: none;*/
|
||||
visibility: hidden;
|
||||
}
|
||||
.father:hover .child {
|
||||
display: inline;
|
||||
/*display: inline;*/
|
||||
visibility: visible;
|
||||
}
|
||||
.de-filter-tree {
|
||||
>>>span.is-leaf {
|
||||
|
||||
@ -127,7 +127,7 @@ export default {
|
||||
tokenError: 'Token error, please login again',
|
||||
username_error: 'Please enter the correct ID',
|
||||
password_error: 'The password can not be less than 8 digits',
|
||||
login_again: 'Login again'
|
||||
re_login: 'Login again'
|
||||
},
|
||||
commons: {
|
||||
no_target_permission: 'No permission',
|
||||
@ -754,6 +754,7 @@ export default {
|
||||
chart_funnel: 'Funnel',
|
||||
chart_radar: 'Radar',
|
||||
chart_gauge: 'Gauge',
|
||||
chart_map: 'Map',
|
||||
dateStyle: 'Date Style',
|
||||
datePattern: 'Date Format',
|
||||
y: 'Year',
|
||||
@ -822,6 +823,11 @@ export default {
|
||||
drag_block_funnel_split: 'Funnel Split',
|
||||
drag_block_radar_length: 'Branch Length',
|
||||
drag_block_radar_label: 'Branch Label',
|
||||
stack_item: 'Stack Item',
|
||||
map_range: 'Map range',
|
||||
select_map_range: 'Please select map range',
|
||||
area: 'Area',
|
||||
placeholder_field: 'Drag Field To Here',
|
||||
axis_label_rotate: 'Label Rotate'
|
||||
},
|
||||
dataset: {
|
||||
@ -976,7 +982,19 @@ export default {
|
||||
right_join: 'RIGHT JOIN',
|
||||
inner_join: 'INNER JOIN',
|
||||
full_join: 'FULL JOIN',
|
||||
can_not_union_diff_datasource: 'Union dataset must have same data source'
|
||||
can_not_union_diff_datasource: 'Union dataset must have same data source',
|
||||
operator: 'Operator',
|
||||
d_q_trans: 'Dimension/Quota Transform',
|
||||
add_calc_field: 'Create calc field',
|
||||
input_name: 'Please input name',
|
||||
field_exp: 'Field Expression',
|
||||
data_type: 'Data Type',
|
||||
click_ref_field: 'Click Quote Field',
|
||||
click_ref_function: 'Click Quote Function',
|
||||
field_manage: 'Field Manage',
|
||||
edit_calc_field: 'Edit calc field',
|
||||
calc_field: 'Calc Field',
|
||||
show_sql: 'Show SQL'
|
||||
},
|
||||
datasource: {
|
||||
datasource: 'Data Source',
|
||||
@ -1290,5 +1308,54 @@ export default {
|
||||
i18n_msg_type_dataset_sync_faild: 'Dataset synchronization failed',
|
||||
i18n_msg_type_all: 'All type',
|
||||
channel_inner_msg: 'On site news'
|
||||
},
|
||||
denumberrange: {
|
||||
label: 'Number range',
|
||||
split_placeholder: 'To',
|
||||
please_key_min: 'Please key min value',
|
||||
please_key_max: 'Please key max value',
|
||||
out_of_min: 'The min value cannot be less than the min integer -2³²',
|
||||
out_of_max: 'The max value cannot be more than the max integer 2³²-1',
|
||||
must_int: 'Please key interger',
|
||||
min_out_max: 'The min value must be less than the max value',
|
||||
max_out_min: 'The max value must be more than the min value'
|
||||
},
|
||||
denumberselect: {
|
||||
label: 'Number selector',
|
||||
placeholder: 'Please select'
|
||||
},
|
||||
deinputsearch: {
|
||||
label: 'Text search',
|
||||
placeholder: 'Please key keyword'
|
||||
},
|
||||
detextselect: {
|
||||
label: 'Text selector',
|
||||
placeholder: 'Please select'
|
||||
},
|
||||
detextgridselect: {
|
||||
label: 'Text list',
|
||||
placeholder: 'Please select'
|
||||
},
|
||||
denumbergridselect: {
|
||||
label: 'Number list',
|
||||
placeholder: 'Please select'
|
||||
},
|
||||
dedaterange: {
|
||||
label: 'Date range',
|
||||
to_placeholder: 'End date',
|
||||
from_placeholder: 'Start date',
|
||||
split_placeholder: 'To'
|
||||
},
|
||||
dedate: {
|
||||
label: 'Date',
|
||||
placeholder: 'Please select date'
|
||||
},
|
||||
deyearmonth: {
|
||||
label: 'Month',
|
||||
placeholder: 'Please select month'
|
||||
},
|
||||
deyear: {
|
||||
label: 'Year',
|
||||
placeholder: 'Please select year'
|
||||
}
|
||||
}
|
||||
|
||||
@ -109,25 +109,25 @@ export default {
|
||||
navbar: {
|
||||
dashboard: '首頁',
|
||||
github: '項目地址',
|
||||
logOut: '退出登錄',
|
||||
logOut: '退出登陸',
|
||||
profile: '個人中心',
|
||||
theme: '換膚',
|
||||
size: '佈局大小'
|
||||
},
|
||||
login: {
|
||||
title: '系統登錄',
|
||||
title: '系統登陸',
|
||||
welcome: '歡迎使用',
|
||||
logIn: '登錄',
|
||||
logIn: '登陸',
|
||||
username: '帳號',
|
||||
password: '密碼',
|
||||
any: '任意字符',
|
||||
thirdparty: '第三方登錄',
|
||||
thirdparty: '第三方登陸',
|
||||
thirdpartyTips: '本地不能模擬,請結合自己業務進行模擬!!!',
|
||||
expires: '登錄信息過期,請重新登錄',
|
||||
tokenError: '信息錯誤,請重新登錄',
|
||||
expires: '登陸信息過期,請重新登陸',
|
||||
tokenError: '信息錯誤,請重新登陸',
|
||||
username_error: '請輸入正確的 ID',
|
||||
password_error: '密碼不小於 8 位',
|
||||
login_again: '重新登錄'
|
||||
re_login: '重新登陸'
|
||||
},
|
||||
commons: {
|
||||
no_target_permission: '沒有權限',
|
||||
@ -184,7 +184,7 @@ export default {
|
||||
prompt: '提示',
|
||||
operating: '操作',
|
||||
input_limit: '長度在 {0} 到 {1} 個字符',
|
||||
login: '登錄',
|
||||
login: '登陸',
|
||||
welcome: '一站式開源數據分析平臺',
|
||||
username: '姓名',
|
||||
password: '密碼',
|
||||
@ -256,7 +256,7 @@ export default {
|
||||
remove: '移除',
|
||||
remove_cancel: '移除取消',
|
||||
remove_success: '移除成功',
|
||||
tips: '認證信息已過期,請重新登錄',
|
||||
tips: '認證信息已過期,請重新登陸',
|
||||
not_performed_yet: '尚未執行',
|
||||
incorrect_input: '輸入內容不正確',
|
||||
delete_confirm: '請輸入以下內容,確認刪除:',
|
||||
@ -754,6 +754,7 @@ export default {
|
||||
chart_funnel: '漏鬥圖',
|
||||
chart_radar: '雷達圖',
|
||||
chart_gauge: '儀表盤',
|
||||
chart_map: '地圖',
|
||||
dateStyle: '日期顯示',
|
||||
datePattern: '日期格式',
|
||||
y: '年',
|
||||
@ -822,6 +823,11 @@ export default {
|
||||
drag_block_funnel_split: '漏鬥分層',
|
||||
drag_block_radar_length: '分支長度',
|
||||
drag_block_radar_label: '分支標簽',
|
||||
map_range: '地圖範圍',
|
||||
select_map_range: '請選擇地圖範圍',
|
||||
area: '地區',
|
||||
stack_item: '堆疊項',
|
||||
placeholder_field: '拖動字段至此處',
|
||||
axis_label_rotate: '標簽角度'
|
||||
},
|
||||
dataset: {
|
||||
@ -976,7 +982,19 @@ export default {
|
||||
right_join: '右連接',
|
||||
inner_join: '內連接',
|
||||
full_join: '全連接',
|
||||
can_not_union_diff_datasource: '被關聯數據集必須與當前數據集的數據源一致'
|
||||
can_not_union_diff_datasource: '被關聯數據集必須與當前數據集的數據源一致',
|
||||
operator: '操作',
|
||||
d_q_trans: '維度/指標轉換',
|
||||
add_calc_field: '新建计算字段',
|
||||
input_name: '請輸入名稱',
|
||||
field_exp: '字段表達式',
|
||||
data_type: '數據類型',
|
||||
click_ref_field: '點擊引用字段',
|
||||
click_ref_function: '點擊引用函數',
|
||||
field_manage: '字段管理',
|
||||
edit_calc_field: '編輯計算字段',
|
||||
calc_field: '計算字段',
|
||||
show_sql: '顯示SQL'
|
||||
},
|
||||
datasource: {
|
||||
datasource: '數據源',
|
||||
@ -1129,7 +1147,7 @@ export default {
|
||||
lineHeight: '行高',
|
||||
letterSpacing: '字間距',
|
||||
textAlign: '左右對齊',
|
||||
opacity: '透明度',
|
||||
opacity: '不透明度',
|
||||
verticalAlign: '上下對齊',
|
||||
text_align_left: '左對齊',
|
||||
text_align_center: '左右居中',
|
||||
@ -1168,9 +1186,9 @@ export default {
|
||||
},
|
||||
display: {
|
||||
logo: '頭部系統 Logo',
|
||||
loginLogo: '登錄頁面頭部 Logo',
|
||||
loginImage: '登錄頁面右側圖片',
|
||||
loginTitle: '登錄頁面標題',
|
||||
loginLogo: '登陸頁面頭部 Logo',
|
||||
loginImage: '登陸頁面右側圖片',
|
||||
loginTitle: '登陸頁面標題',
|
||||
title: '系統名稱',
|
||||
advice_size: '建議圖片大小'
|
||||
},
|
||||
@ -1290,5 +1308,54 @@ export default {
|
||||
i18n_msg_type_dataset_sync_faild: '數據集同步失敗',
|
||||
i18n_msg_type_all: '全部類型',
|
||||
channel_inner_msg: '站內消息'
|
||||
},
|
||||
denumberrange: {
|
||||
label: '數值區間',
|
||||
split_placeholder: '至',
|
||||
please_key_min: '請輸入最小值',
|
||||
please_key_max: '請輸入最大值',
|
||||
out_of_min: '最小值不能小于最小整數-2³²',
|
||||
out_of_max: '最大值不能大于最大整數2³²-1',
|
||||
must_int: '請輸入整數',
|
||||
min_out_max: '最小值必須小于最大值',
|
||||
max_out_min: '最大值必須大于最小值'
|
||||
},
|
||||
denumberselect: {
|
||||
label: '數字下拉',
|
||||
placeholder: '請選擇'
|
||||
},
|
||||
deinputsearch: {
|
||||
label: '文本搜索',
|
||||
placeholder: '請輸入關鍵字'
|
||||
},
|
||||
detextselect: {
|
||||
label: '文本下拉',
|
||||
placeholder: '請選擇'
|
||||
},
|
||||
detextgridselect: {
|
||||
label: '文本列表',
|
||||
placeholder: '請選擇'
|
||||
},
|
||||
denumbergridselect: {
|
||||
label: '數字列表',
|
||||
placeholder: '請選擇'
|
||||
},
|
||||
dedaterange: {
|
||||
label: '日期範圍',
|
||||
to_placeholder: '結束日期',
|
||||
from_placeholder: '開始日期',
|
||||
split_placeholder: '至'
|
||||
},
|
||||
dedate: {
|
||||
label: '日期',
|
||||
placeholder: '請選擇日期'
|
||||
},
|
||||
deyearmonth: {
|
||||
label: '年月',
|
||||
placeholder: '請選擇年月'
|
||||
},
|
||||
deyear: {
|
||||
label: '年份',
|
||||
placeholder: '請選擇年份'
|
||||
}
|
||||
}
|
||||
|
||||
@ -127,7 +127,7 @@ export default {
|
||||
tokenError: '登陆信息错误,请重新登录',
|
||||
username_error: '请输入正确的 ID',
|
||||
password_error: '密码不小于 8 位',
|
||||
login_again: '重新登录'
|
||||
re_login: '重新登录'
|
||||
},
|
||||
commons: {
|
||||
no_target_permission: '没有权限',
|
||||
@ -754,6 +754,7 @@ export default {
|
||||
chart_funnel: '漏斗图',
|
||||
chart_radar: '雷达图',
|
||||
chart_gauge: '仪表盘',
|
||||
chart_map: '地图',
|
||||
dateStyle: '日期显示',
|
||||
datePattern: '日期格式',
|
||||
y: '年',
|
||||
@ -822,6 +823,11 @@ export default {
|
||||
drag_block_funnel_split: '漏斗分层',
|
||||
drag_block_radar_length: '分支长度',
|
||||
drag_block_radar_label: '分支标签',
|
||||
map_range: '地图范围',
|
||||
select_map_range: '请选择地图范围',
|
||||
area: '地区',
|
||||
stack_item: '堆叠项',
|
||||
placeholder_field: '拖动字段至此处',
|
||||
axis_label_rotate: '标签角度'
|
||||
},
|
||||
dataset: {
|
||||
@ -976,7 +982,19 @@ export default {
|
||||
right_join: '右连接',
|
||||
inner_join: '内连接',
|
||||
full_join: '全连接',
|
||||
can_not_union_diff_datasource: '被关联数据集必须与当前数据集的数据源一致'
|
||||
can_not_union_diff_datasource: '被关联数据集必须与当前数据集的数据源一致',
|
||||
operator: '操作',
|
||||
d_q_trans: '维度/指标转换',
|
||||
add_calc_field: '新建计算字段',
|
||||
input_name: '请输入名称',
|
||||
field_exp: '字段表达式',
|
||||
data_type: '数据类型',
|
||||
click_ref_field: '点击引用字段',
|
||||
click_ref_function: '点击引用函数',
|
||||
field_manage: '字段管理',
|
||||
edit_calc_field: '编辑计算字段',
|
||||
calc_field: '计算字段',
|
||||
show_sql: '显示SQL'
|
||||
},
|
||||
datasource: {
|
||||
datasource: '数据源',
|
||||
@ -1131,7 +1149,7 @@ export default {
|
||||
lineHeight: '行高',
|
||||
letterSpacing: '字间距',
|
||||
textAlign: '左右对齐',
|
||||
opacity: '透明度',
|
||||
opacity: '不透明度',
|
||||
verticalAlign: '上下对齐',
|
||||
text_align_left: '左对齐',
|
||||
text_align_center: '左右居中',
|
||||
@ -1293,5 +1311,54 @@ export default {
|
||||
i18n_msg_type_dataset_sync_faild: '数据集同步失败',
|
||||
i18n_msg_type_all: '全部类型',
|
||||
channel_inner_msg: '站内消息'
|
||||
},
|
||||
denumberrange: {
|
||||
label: '数值区间',
|
||||
split_placeholder: '至',
|
||||
please_key_min: '请输入最小值',
|
||||
please_key_max: '请输入最大值',
|
||||
out_of_min: '最小值不能小于最小整数-2³²',
|
||||
out_of_max: '最大值不能大于最大整数2³²-1',
|
||||
must_int: '请输入整数',
|
||||
min_out_max: '最小值必须小于最大值',
|
||||
max_out_min: '最大值必须大于最小值'
|
||||
},
|
||||
denumberselect: {
|
||||
label: '数字下拉',
|
||||
placeholder: '请选择'
|
||||
},
|
||||
deinputsearch: {
|
||||
label: '文本搜索',
|
||||
placeholder: '请输入关键字'
|
||||
},
|
||||
detextselect: {
|
||||
label: '文本下拉',
|
||||
placeholder: '请选择'
|
||||
},
|
||||
detextgridselect: {
|
||||
label: '文本列表',
|
||||
placeholder: '请选择'
|
||||
},
|
||||
denumbergridselect: {
|
||||
label: '数字列表',
|
||||
placeholder: '请选择'
|
||||
},
|
||||
dedaterange: {
|
||||
label: '日期范围',
|
||||
to_placeholder: '结束日期',
|
||||
from_placeholder: '开始日期',
|
||||
split_placeholder: '至'
|
||||
},
|
||||
dedate: {
|
||||
label: '日期',
|
||||
placeholder: '请选择日期'
|
||||
},
|
||||
deyearmonth: {
|
||||
label: '年月',
|
||||
placeholder: '请选择年月'
|
||||
},
|
||||
deyear: {
|
||||
label: '年份',
|
||||
placeholder: '请选择年份'
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,7 +50,11 @@ const data = {
|
||||
isClickComponent: false,
|
||||
canvasCommonStyleData: DEFAULT_COMMON_CANVAS_STYLE_STRING,
|
||||
// 联动设置状态
|
||||
linkageSettingStatus: false
|
||||
linkageSettingStatus: false,
|
||||
// 当前设置联动的组件
|
||||
curLinkageView: null,
|
||||
// 和当前组件联动的目标组件
|
||||
targetLinkageInfo: []
|
||||
},
|
||||
mutations: {
|
||||
...animation.mutations,
|
||||
@ -176,9 +180,15 @@ const data = {
|
||||
}
|
||||
state.componentData.splice(index, 1)
|
||||
},
|
||||
setLinkageSettingStatus(state, status) {
|
||||
state.linkageSettingStatus = status
|
||||
console.log('linkageSettingStatus:', state.linkageSettingStatus)
|
||||
setLinkageInfo(state, targetLinkageInfo) {
|
||||
state.linkageSettingStatus = true
|
||||
state.curLinkageView = state.curComponent
|
||||
state.targetLinkageInfo = targetLinkageInfo
|
||||
},
|
||||
clearLinkageSettingInfo(state) {
|
||||
state.linkageSettingStatus = false
|
||||
state.curLinkageView = null
|
||||
state.targetLinkageInfo = []
|
||||
}
|
||||
},
|
||||
modules: {
|
||||
|
||||
@ -16,7 +16,7 @@ const LinkTokenKey = Config.LinkTokenKey
|
||||
const service = axios.create({
|
||||
baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
|
||||
// withCredentials: true, // send cookies when cross-domain requests
|
||||
timeout: 20000 // request timeout
|
||||
timeout: 10000 // request timeout
|
||||
})
|
||||
|
||||
// request interceptor
|
||||
@ -52,6 +52,10 @@ service.interceptors.request.use(
|
||||
}
|
||||
)
|
||||
|
||||
// const defaultOptions = {
|
||||
// confirmButtonText: i18n.t('login.re_login')
|
||||
// }
|
||||
|
||||
const checkAuth = response => {
|
||||
// 请根据实际需求修改
|
||||
|
||||
@ -63,7 +67,7 @@ const checkAuth = response => {
|
||||
location.reload()
|
||||
})
|
||||
}, {
|
||||
confirmButtonText: i18n.t('login.login_again'),
|
||||
confirmButtonText: i18n.t('login.re_login'),
|
||||
showClose: false
|
||||
})
|
||||
}
|
||||
@ -75,7 +79,7 @@ const checkAuth = response => {
|
||||
location.reload()
|
||||
})
|
||||
}, {
|
||||
confirmButtonText: i18n.t('login.login_again'),
|
||||
confirmButtonText: i18n.t('login.re_login'),
|
||||
showClose: false
|
||||
})
|
||||
}
|
||||
|
||||
@ -113,13 +113,16 @@ export default {
|
||||
}
|
||||
|
||||
geoJson(customAttr.areaCode).then(res => {
|
||||
this.initMapChart(res.data, chart)
|
||||
// this.initMapChart(res.data, chart)
|
||||
this.initMapChart(res, chart)
|
||||
|
||||
this.$store.dispatch('map/setGeo', {
|
||||
key: customAttr.areaCode,
|
||||
value: res.data
|
||||
value: res
|
||||
// value: res.data
|
||||
})
|
||||
this.currentGeoJson = res.data
|
||||
// this.currentGeoJson = res.data
|
||||
this.currentGeoJson = res
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
129
frontend/src/views/chart/components/drag-item/DrillItem.vue
Normal file
129
frontend/src/views/chart/components/drag-item/DrillItem.vue
Normal 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>
|
||||
@ -6,15 +6,15 @@
|
||||
id="label-content"
|
||||
:style="content_class"
|
||||
>
|
||||
<p v-for="item in chart.data.series" :key="item.name" :style="label_content_class">
|
||||
{{ item.data[0] }}
|
||||
</p>
|
||||
<span v-if="quotaShow" :style="label_space">
|
||||
<p v-if="dimensionShow" :style="label_class">
|
||||
<!-- {{ chart.data.x[0] }}-->
|
||||
{{ chart.data.series[0].name }}
|
||||
<p v-for="item in chart.data.series" :key="item.name" :style="label_content_class">
|
||||
{{ item.data[0] }}
|
||||
</p>
|
||||
</span>
|
||||
<p v-if="dimensionShow" :style="label_class">
|
||||
<!-- {{ chart.data.x[0] }}-->
|
||||
{{ chart.data.series[0].name }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -115,14 +115,6 @@
|
||||
</el-form>
|
||||
|
||||
<el-form v-show="chart.type && chart.type.includes('text')" ref="sizeFormPie" :disabled="param && !hasDataPermission('manage',param.privileges)" :model="sizeForm" label-width="100px" size="mini">
|
||||
<el-form-item :label="$t('chart.dimension_show')" class="form-item">
|
||||
<el-checkbox v-model="sizeForm.dimensionShow" @change="changeBarSizeCase">{{ $t('chart.show') }}</el-checkbox>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('chart.dimension_font_size')" class="form-item">
|
||||
<el-select v-model="sizeForm.dimensionFontSize" :placeholder="$t('chart.dimension_font_size')" @change="changeBarSizeCase">
|
||||
<el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('chart.quota_show')" class="form-item">
|
||||
<el-checkbox v-model="sizeForm.quotaShow" @change="changeBarSizeCase">{{ $t('chart.show') }}</el-checkbox>
|
||||
</el-form-item>
|
||||
@ -131,6 +123,14 @@
|
||||
<el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('chart.dimension_show')" class="form-item">
|
||||
<el-checkbox v-model="sizeForm.dimensionShow" @change="changeBarSizeCase">{{ $t('chart.show') }}</el-checkbox>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('chart.dimension_font_size')" class="form-item">
|
||||
<el-select v-model="sizeForm.dimensionFontSize" :placeholder="$t('chart.dimension_font_size')" @change="changeBarSizeCase">
|
||||
<el-option v-for="option in fontSize" :key="option.value" :label="option.name" :value="option.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('chart.space_split')" class="form-item">
|
||||
<el-input-number v-model="sizeForm.spaceSplit" size="mini" @change="changeBarSizeCase" />
|
||||
</el-form-item>
|
||||
|
||||
@ -257,13 +257,13 @@
|
||||
|
||||
<!--添加视图-选择数据集-->
|
||||
<el-dialog
|
||||
v-if="selectTableFlag"
|
||||
v-dialogDrag
|
||||
:title="$t('chart.add_chart')"
|
||||
:visible="selectTableFlag"
|
||||
:show-close="false"
|
||||
width="70%"
|
||||
class="dialog-css"
|
||||
:destroy-on-close="true"
|
||||
>
|
||||
<el-row style="width: 800px;">
|
||||
<el-form ref="form" :model="table" label-width="80px" size="mini" class="form-item">
|
||||
@ -746,6 +746,7 @@ export default {
|
||||
view.yaxis = JSON.stringify([])
|
||||
view.extStack = JSON.stringify([])
|
||||
view.customFilter = JSON.stringify([])
|
||||
view.drillFields = JSON.stringify([])
|
||||
post('/chart/view/save', view).then(response => {
|
||||
this.closeCreateChart()
|
||||
this.$store.dispatch('chart/setTableId', null)
|
||||
@ -1048,10 +1049,12 @@ export default {
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.father .child {
|
||||
display: none;
|
||||
/*display: none;*/
|
||||
visibility: hidden;
|
||||
}
|
||||
.father:hover .child {
|
||||
display: inline;
|
||||
/*display: inline;*/
|
||||
visibility: visible;
|
||||
}
|
||||
.tree-style {
|
||||
padding: 10px 15px;
|
||||
|
||||
@ -233,6 +233,29 @@
|
||||
/>
|
||||
</span>
|
||||
</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">
|
||||
<span style="width: 80px;text-align: right;">
|
||||
<span v-if="view.type && view.type.includes('table')">{{ $t('chart.drag_block_table_data_column') }}</span>
|
||||
@ -489,13 +512,13 @@
|
||||
|
||||
<!--视图更换数据集-->
|
||||
<el-dialog
|
||||
v-if="selectTableFlag"
|
||||
v-dialogDrag
|
||||
:title="changeDsTitle"
|
||||
:visible="selectTableFlag"
|
||||
:show-close="false"
|
||||
width="70%"
|
||||
class="dialog-css"
|
||||
:destroy-on-close="true"
|
||||
>
|
||||
<table-selector @getTable="getTable" />
|
||||
<p style="margin-top: 10px;color:#F56C6C;font-size: 12px;">{{ $t('chart.change_ds_tip') }}</p>
|
||||
@ -507,10 +530,10 @@
|
||||
|
||||
<!--编辑视图使用的数据集的字段-->
|
||||
<el-dialog
|
||||
v-if="editDsField"
|
||||
:visible="editDsField"
|
||||
:show-close="false"
|
||||
class="dialog-css"
|
||||
:destroy-on-close="true"
|
||||
:fullscreen="true"
|
||||
>
|
||||
<field-edit :param="table" />
|
||||
@ -532,6 +555,7 @@ import DimensionItem from '../components/drag-item/DimensionItem'
|
||||
import QuotaItem from '../components/drag-item/QuotaItem'
|
||||
import FilterItem from '../components/drag-item/FilterItem'
|
||||
import ChartDragItem from '../components/drag-item/ChartDragItem'
|
||||
import DrillItem from '../components/drag-item/DrillItem'
|
||||
import ResultFilterEditor from '../components/filter/ResultFilterEditor'
|
||||
import ChartComponent from '../components/ChartComponent'
|
||||
import bus from '@/utils/bus'
|
||||
@ -593,7 +617,8 @@ export default {
|
||||
QuotaItem,
|
||||
DimensionItem,
|
||||
draggable,
|
||||
ChartDragItem
|
||||
ChartDragItem,
|
||||
DrillItem
|
||||
},
|
||||
props: {
|
||||
param: {
|
||||
@ -613,6 +638,7 @@ export default {
|
||||
xaxis: [],
|
||||
yaxis: [],
|
||||
extStack: [],
|
||||
drillFields: [],
|
||||
show: true,
|
||||
type: 'bar',
|
||||
title: '',
|
||||
@ -800,6 +826,7 @@ export default {
|
||||
view.customStyle = JSON.stringify(view.customStyle)
|
||||
view.customFilter = JSON.stringify(view.customFilter)
|
||||
view.extStack = JSON.stringify(view.extStack)
|
||||
view.drillFields = JSON.stringify(view.drillFields)
|
||||
post('/chart/view/save', view).then(response => {
|
||||
// this.get(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.yaxis = this.view.yaxis ? JSON.parse(this.view.yaxis) : []
|
||||
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.customStyle = this.view.customStyle ? JSON.parse(this.view.customStyle) : {}
|
||||
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.yaxis = this.view.yaxis ? JSON.parse(this.view.yaxis) : []
|
||||
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.customStyle = this.view.customStyle ? JSON.parse(this.view.customStyle) : {}
|
||||
this.view.customFilter = this.view.customFilter ? JSON.parse(this.view.customFilter) : {}
|
||||
@ -1352,7 +1381,7 @@ export default {
|
||||
return resultNode
|
||||
},
|
||||
addStack(e) {
|
||||
this.dragCheckType(this.dimensionData, 'd')
|
||||
this.dragCheckType(this.view.extStack, 'd')
|
||||
if (this.view.extStack && this.view.extStack.length > 1) {
|
||||
this.view.extStack = [this.view.extStack[0]]
|
||||
}
|
||||
@ -1364,6 +1393,18 @@ export default {
|
||||
stackItemRemove(item) {
|
||||
this.view.extStack.splice(item.index, 1)
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,7 +68,6 @@
|
||||
|
||||
<script>
|
||||
import { isKettleRunning, post } from '@/api/dataset/dataset'
|
||||
import { authModel } from '@/api/system/sysAuth'
|
||||
import { hasDataPermission } from '@/utils/permission'
|
||||
|
||||
export default {
|
||||
@ -403,11 +402,14 @@ export default {
|
||||
|
||||
searchTree(val) {
|
||||
const queryCondition = {
|
||||
withExtend: 'parent',
|
||||
modelType: 'dataset',
|
||||
// withExtend: 'parent',
|
||||
// modelType: 'dataset',
|
||||
name: val
|
||||
}
|
||||
authModel(queryCondition).then(res => {
|
||||
// authModel(queryCondition).then(res => {
|
||||
// this.data = this.buildTree(res.data)
|
||||
// })
|
||||
post('/dataset/table/search', queryCondition).then(res => {
|
||||
this.data = this.buildTree(res.data)
|
||||
})
|
||||
},
|
||||
@ -420,8 +422,8 @@ export default {
|
||||
const roots = []
|
||||
arrs.forEach(el => {
|
||||
// 判断根节点 ###
|
||||
el.type = el.modelInnerType
|
||||
el.isLeaf = el.leaf
|
||||
// el.type = el.modelInnerType
|
||||
// el.isLeaf = el.leaf
|
||||
if (el[this.treeProps.parentId] === null || el[this.treeProps.parentId] === 0 || el[this.treeProps.parentId] === '0') {
|
||||
roots.push(el)
|
||||
return
|
||||
|
||||
@ -315,6 +315,8 @@ export default {
|
||||
if (!this.fieldForm.id) {
|
||||
this.fieldForm.type = this.fieldForm.deType
|
||||
this.fieldForm.deExtractType = this.fieldForm.deType
|
||||
this.fieldForm.tableId = this.param.id
|
||||
this.fieldForm.columnIndex = this.tableFields.dimensionList.length + this.tableFields.quotaList.length
|
||||
}
|
||||
post('/dataset/field/save', this.fieldForm).then(response => {
|
||||
this.closeCalcField()
|
||||
@ -371,7 +373,8 @@ export default {
|
||||
padding: 0 4px;
|
||||
}
|
||||
.field-height{
|
||||
height: calc(50% - 20px);
|
||||
height: calc(50% - 25px);
|
||||
margin-top: 4px;
|
||||
}
|
||||
.drag-list {
|
||||
height: calc(100% - 26px);
|
||||
@ -442,8 +445,9 @@ export default {
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.function-height{
|
||||
height: calc(100% - 20px);
|
||||
height: calc(100% - 50px);
|
||||
overflow: auto;
|
||||
margin-top: 4px;
|
||||
}
|
||||
.function-pop>>>.el-popover{
|
||||
padding: 6px!important;
|
||||
|
||||
@ -432,10 +432,14 @@ export default {
|
||||
created() {
|
||||
this.timer = setInterval(() => {
|
||||
this.listTaskLog(false)
|
||||
}, 5000);
|
||||
this.taskTimer = setInterval(() => {
|
||||
this.listTask(false)
|
||||
}, 5000)
|
||||
},
|
||||
beforeDestroy() {
|
||||
clearInterval(this.timer)
|
||||
clearInterval(this.taskTimer)
|
||||
},
|
||||
methods: {
|
||||
calHeight() {
|
||||
|
||||
@ -989,10 +989,12 @@ export default {
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.father .child {
|
||||
display: none;
|
||||
/*display: none;*/
|
||||
visibility: hidden;
|
||||
}
|
||||
.father:hover .child {
|
||||
display: inline;
|
||||
/*display: inline;*/
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.dialog-css >>> .el-dialog__body {
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
<de-container>
|
||||
<!--左侧导航栏-->
|
||||
<de-aside-container class="ms-aside-container">
|
||||
<div style="width: 60px; left: 0px; top: 0px; bottom: 0px; position: absolute">
|
||||
<div v-if="!linkageSettingStatus" style="width: 60px; left: 0px; top: 0px; bottom: 0px; position: absolute">
|
||||
<div style="width: 60px;height: 100%;overflow: hidden auto;position: relative;margin: 0px auto; font-size: 14px">
|
||||
<!-- 视图图表 start -->
|
||||
<div class="button-div-class" style=" width: 24px;height: 24px;text-align: center;line-height: 1;position: relative;margin: 16px auto 0px;">
|
||||
@ -290,7 +290,8 @@ export default {
|
||||
'isClickComponent',
|
||||
'canvasStyleData',
|
||||
'curComponentIndex',
|
||||
'componentData'
|
||||
'componentData',
|
||||
'linkageSettingStatus'
|
||||
])
|
||||
},
|
||||
|
||||
@ -322,6 +323,7 @@ export default {
|
||||
listenGlobalKeyDown()
|
||||
|
||||
this.$store.commit('setCurComponent', { component: null, index: null })
|
||||
this.$store.commit('clearLinkageSettingInfo', false)
|
||||
},
|
||||
mounted() {
|
||||
// this.insertToBody()
|
||||
|
||||
@ -463,6 +463,7 @@ export default {
|
||||
message: this.$t('panel.delete_success'),
|
||||
showClose: true
|
||||
})
|
||||
this.clearCanvas()
|
||||
this.tree(this.groupForm)
|
||||
this.defaultTree()
|
||||
})
|
||||
@ -470,6 +471,17 @@ export default {
|
||||
})
|
||||
},
|
||||
|
||||
clearCanvas() {
|
||||
// 清空当前缓存,快照
|
||||
this.$store.commit('setComponentData', [])
|
||||
this.$store.commit('setCanvasStyle', DEFAULT_COMMON_CANVAS_STYLE_STRING)
|
||||
this.$store.dispatch('panel/setPanelInfo', {
|
||||
id: null,
|
||||
name: '',
|
||||
preStyle: null
|
||||
})
|
||||
},
|
||||
|
||||
close() {
|
||||
this.editGroup = false
|
||||
this.groupForm = {
|
||||
@ -647,10 +659,12 @@ export default {
|
||||
}
|
||||
|
||||
.father .child {
|
||||
display: none;
|
||||
/*display: none;*/
|
||||
visibility: hidden;
|
||||
}
|
||||
.father:hover .child {
|
||||
display: inline;
|
||||
/*display: inline;*/
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@ -298,10 +298,12 @@ export default {
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.father .child {
|
||||
display: none;
|
||||
/*display: none;*/
|
||||
visibility: hidden;
|
||||
}
|
||||
.father:hover .child {
|
||||
display: inline;
|
||||
/*display: inline;*/
|
||||
visibility: visible;
|
||||
}
|
||||
.tree-style {
|
||||
padding: 10px 15px;
|
||||
|
||||
@ -416,15 +416,21 @@ export default {
|
||||
this.update_task = true
|
||||
},
|
||||
changeTaskStatus(task) {
|
||||
const param = task
|
||||
let param = JSON.parse(JSON.stringify(task));
|
||||
param.status = task.status === 'Underway' ? 'Pending' : 'Underway'
|
||||
post('/dataset/task/updateStatus', task).then(response => {
|
||||
task.status = param.status
|
||||
this.$message({
|
||||
message: this.$t('dataset.task.change_success'),
|
||||
type: 'success',
|
||||
showClose: true
|
||||
})
|
||||
post('/dataset/task/updateStatus', param).then(response => {
|
||||
if(response.success){
|
||||
task.status = param.status
|
||||
this.$message({
|
||||
message: this.$t('dataset.task.change_success'),
|
||||
type: 'success',
|
||||
showClose: true
|
||||
})
|
||||
}else {
|
||||
this.search(this.last_condition, false)
|
||||
}
|
||||
}).catch(() => {
|
||||
this.search(this.last_condition, false)
|
||||
})
|
||||
},
|
||||
execTask(task) {
|
||||
|
||||
@ -140,8 +140,8 @@ export default {
|
||||
createTimer() {
|
||||
if (!this.timer) {
|
||||
this.timer = setInterval(() => {
|
||||
this.search(this.last_condition, false)
|
||||
}, 1000)
|
||||
this.timerSearch(this.last_condition, false)
|
||||
}, 15000)
|
||||
}
|
||||
},
|
||||
destroyTimer() {
|
||||
@ -168,7 +168,7 @@ export default {
|
||||
},
|
||||
select(selection) {
|
||||
},
|
||||
search(condition, showLoading = true) {
|
||||
timerSearch(condition, showLoading = true) {
|
||||
if(!this.lastRequestComplete){
|
||||
return;
|
||||
}else {
|
||||
@ -188,6 +188,17 @@ export default {
|
||||
this.lastRequestComplete = true;
|
||||
})
|
||||
},
|
||||
search(condition, showLoading = true) {
|
||||
this.last_condition = condition
|
||||
condition = formatQuickCondition(condition, 'dataset_table_task.name')
|
||||
const temp = formatCondition(condition)
|
||||
const param = temp || {}
|
||||
param['orders'] = formatOrders(this.orderConditions)
|
||||
post('/dataset/taskLog/list/notexcel/' + this.paginationConfig.currentPage + '/' + this.paginationConfig.pageSize, param, showLoading).then(response => {
|
||||
this.data = response.data.listObject
|
||||
this.paginationConfig.total = response.data.itemCount
|
||||
})
|
||||
},
|
||||
showErrorMassage(massage) {
|
||||
this.show_error_massage = true
|
||||
this.error_massage = massage
|
||||
|
||||
Loading…
Reference in New Issue
Block a user