From a8e097409f20530f249dda0c26d4ceaba1cc619a Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Mon, 5 Jul 2021 12:42:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E4=BB=AA=E8=A1=A8=E6=9D=BF?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E8=A7=86=E5=9B=BE=E6=97=B6=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E5=92=8Ctitle=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml index 042283e2f9..c6fcfb69a5 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml @@ -52,7 +52,7 @@ `scene_id`, `table_id`, `type`, - `title`, + GET_CHART_VIEW_COPY_NAME ( #{oldChartId} ), `x_axis`, `y_axis`, `custom_attr`, From 4b11bfeb7278c2636e00f593457fb46f7fbefc2a Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Tue, 6 Jul 2021 18:34:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E4=BB=AA=E8=A1=A8=E6=9D=BF?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=A2=9E=E5=8A=A0=E6=96=B0=E5=BB=BA=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=8F=AF=E4=BB=A5=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E5=9C=A8=E4=BB=AA=E8=A1=A8=E6=9D=BF=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/base/domain/PanelView.java | 25 + .../base/domain/PanelViewExample.java | 670 ++++++++++++++++++ .../dataease/base/mapper/PanelViewMapper.java | 36 + .../dataease/base/mapper/PanelViewMapper.xml | 304 ++++++++ .../base/mapper/ext/ExtChartViewMapper.java | 2 + .../base/mapper/ext/ExtChartViewMapper.xml | 15 + .../base/mapper/ext/ExtPanelViewMapper.java | 7 + .../base/mapper/ext/ExtPanelViewMapper.xml | 10 + .../controller/chart/ChartViewController.java | 5 + .../dto/panel/po/PanelViewInsertDTO.java | 21 + .../service/chart/ChartViewService.java | 4 + .../service/panel/PanelGroupService.java | 9 + .../service/panel/PanelViewService.java | 34 + .../db/migration/V11__panel_view.sql | 12 + .../src/main/resources/generatorConfig.xml | 2 +- frontend/src/api/chart/chart.js | 16 + .../canvas/components/Editor/ContextMenu.vue | 2 +- frontend/src/lang/en.js | 2 + frontend/src/lang/tw.js | 2 + frontend/src/lang/zh.js | 2 + frontend/src/views/chart/group/Group.vue | 76 +- frontend/src/views/chart/view/ChartEdit.vue | 6 +- frontend/src/views/panel/ViewSelect/index.vue | 23 +- frontend/src/views/panel/edit/index.vue | 63 +- 24 files changed, 1324 insertions(+), 24 deletions(-) create mode 100644 backend/src/main/java/io/dataease/base/domain/PanelView.java create mode 100644 backend/src/main/java/io/dataease/base/domain/PanelViewExample.java create mode 100644 backend/src/main/java/io/dataease/base/mapper/PanelViewMapper.java create mode 100644 backend/src/main/java/io/dataease/base/mapper/PanelViewMapper.xml create mode 100644 backend/src/main/java/io/dataease/dto/panel/po/PanelViewInsertDTO.java create mode 100644 backend/src/main/resources/db/migration/V11__panel_view.sql diff --git a/backend/src/main/java/io/dataease/base/domain/PanelView.java b/backend/src/main/java/io/dataease/base/domain/PanelView.java new file mode 100644 index 0000000000..0f323c61af --- /dev/null +++ b/backend/src/main/java/io/dataease/base/domain/PanelView.java @@ -0,0 +1,25 @@ +package io.dataease.base.domain; + +import java.io.Serializable; +import lombok.Data; + +@Data +public class PanelView implements Serializable { + private String id; + + private String panelId; + + private String chartViewId; + + private String createBy; + + private Long createTime; + + private String updateBy; + + private Long updateTime; + + private byte[] content; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/domain/PanelViewExample.java b/backend/src/main/java/io/dataease/base/domain/PanelViewExample.java new file mode 100644 index 0000000000..259289685b --- /dev/null +++ b/backend/src/main/java/io/dataease/base/domain/PanelViewExample.java @@ -0,0 +1,670 @@ +package io.dataease.base.domain; + +import java.util.ArrayList; +import java.util.List; + +public class PanelViewExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public PanelViewExample() { + oredCriteria = new ArrayList(); + } + + 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 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 criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List 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 values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List 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 values) { + addCriterion("panel_id in", values, "panelId"); + return (Criteria) this; + } + + public Criteria andPanelIdNotIn(List 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 andChartViewIdIsNull() { + addCriterion("chart_view_id is null"); + return (Criteria) this; + } + + public Criteria andChartViewIdIsNotNull() { + addCriterion("chart_view_id is not null"); + return (Criteria) this; + } + + public Criteria andChartViewIdEqualTo(String value) { + addCriterion("chart_view_id =", value, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdNotEqualTo(String value) { + addCriterion("chart_view_id <>", value, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdGreaterThan(String value) { + addCriterion("chart_view_id >", value, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdGreaterThanOrEqualTo(String value) { + addCriterion("chart_view_id >=", value, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdLessThan(String value) { + addCriterion("chart_view_id <", value, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdLessThanOrEqualTo(String value) { + addCriterion("chart_view_id <=", value, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdLike(String value) { + addCriterion("chart_view_id like", value, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdNotLike(String value) { + addCriterion("chart_view_id not like", value, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdIn(List values) { + addCriterion("chart_view_id in", values, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdNotIn(List values) { + addCriterion("chart_view_id not in", values, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdBetween(String value1, String value2) { + addCriterion("chart_view_id between", value1, value2, "chartViewId"); + return (Criteria) this; + } + + public Criteria andChartViewIdNotBetween(String value1, String value2) { + addCriterion("chart_view_id not between", value1, value2, "chartViewId"); + return (Criteria) this; + } + + public Criteria andCreateByIsNull() { + addCriterion("create_by is null"); + return (Criteria) this; + } + + public Criteria andCreateByIsNotNull() { + addCriterion("create_by is not null"); + return (Criteria) this; + } + + public Criteria andCreateByEqualTo(String value) { + addCriterion("create_by =", value, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByNotEqualTo(String value) { + addCriterion("create_by <>", value, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByGreaterThan(String value) { + addCriterion("create_by >", value, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByGreaterThanOrEqualTo(String value) { + addCriterion("create_by >=", value, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByLessThan(String value) { + addCriterion("create_by <", value, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByLessThanOrEqualTo(String value) { + addCriterion("create_by <=", value, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByLike(String value) { + addCriterion("create_by like", value, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByNotLike(String value) { + addCriterion("create_by not like", value, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByIn(List values) { + addCriterion("create_by in", values, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByNotIn(List values) { + addCriterion("create_by not in", values, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByBetween(String value1, String value2) { + addCriterion("create_by between", value1, value2, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateByNotBetween(String value1, String value2) { + addCriterion("create_by not between", value1, value2, "createBy"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Long value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Long value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Long value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Long value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Long value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Long value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Long value1, Long value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Long value1, Long value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andUpdateByIsNull() { + addCriterion("update_by is null"); + return (Criteria) this; + } + + public Criteria andUpdateByIsNotNull() { + addCriterion("update_by is not null"); + return (Criteria) this; + } + + public Criteria andUpdateByEqualTo(String value) { + addCriterion("update_by =", value, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByNotEqualTo(String value) { + addCriterion("update_by <>", value, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByGreaterThan(String value) { + addCriterion("update_by >", value, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByGreaterThanOrEqualTo(String value) { + addCriterion("update_by >=", value, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByLessThan(String value) { + addCriterion("update_by <", value, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByLessThanOrEqualTo(String value) { + addCriterion("update_by <=", value, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByLike(String value) { + addCriterion("update_by like", value, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByNotLike(String value) { + addCriterion("update_by not like", value, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByIn(List values) { + addCriterion("update_by in", values, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByNotIn(List values) { + addCriterion("update_by not in", values, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByBetween(String value1, String value2) { + addCriterion("update_by between", value1, value2, "updateBy"); + return (Criteria) this; + } + + public Criteria andUpdateByNotBetween(String value1, String value2) { + addCriterion("update_by not between", value1, value2, "updateBy"); + 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 values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List 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); + } + } +} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/mapper/PanelViewMapper.java b/backend/src/main/java/io/dataease/base/mapper/PanelViewMapper.java new file mode 100644 index 0000000000..1020b9d4a7 --- /dev/null +++ b/backend/src/main/java/io/dataease/base/mapper/PanelViewMapper.java @@ -0,0 +1,36 @@ +package io.dataease.base.mapper; + +import io.dataease.base.domain.PanelView; +import io.dataease.base.domain.PanelViewExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface PanelViewMapper { + long countByExample(PanelViewExample example); + + int deleteByExample(PanelViewExample example); + + int deleteByPrimaryKey(String id); + + int insert(PanelView record); + + int insertSelective(PanelView record); + + List selectByExampleWithBLOBs(PanelViewExample example); + + List selectByExample(PanelViewExample example); + + PanelView selectByPrimaryKey(String id); + + int updateByExampleSelective(@Param("record") PanelView record, @Param("example") PanelViewExample example); + + int updateByExampleWithBLOBs(@Param("record") PanelView record, @Param("example") PanelViewExample example); + + int updateByExample(@Param("record") PanelView record, @Param("example") PanelViewExample example); + + int updateByPrimaryKeySelective(PanelView record); + + int updateByPrimaryKeyWithBLOBs(PanelView record); + + int updateByPrimaryKey(PanelView record); +} \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/mapper/PanelViewMapper.xml b/backend/src/main/java/io/dataease/base/mapper/PanelViewMapper.xml new file mode 100644 index 0000000000..f01b55c6ce --- /dev/null +++ b/backend/src/main/java/io/dataease/base/mapper/PanelViewMapper.xml @@ -0,0 +1,304 @@ + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, panel_id, chart_view_id, create_by, create_time, update_by, update_time + + + content + + + + + + delete from panel_view + where id = #{id,jdbcType=VARCHAR} + + + delete from panel_view + + + + + + insert into panel_view (id, panel_id, chart_view_id, + create_by, create_time, update_by, + update_time, content) + values (#{id,jdbcType=VARCHAR}, #{panelId,jdbcType=VARCHAR}, #{chartViewId,jdbcType=VARCHAR}, + #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateBy,jdbcType=VARCHAR}, + #{updateTime,jdbcType=BIGINT}, #{content,jdbcType=LONGVARBINARY}) + + + insert into panel_view + + + id, + + + panel_id, + + + chart_view_id, + + + create_by, + + + create_time, + + + update_by, + + + update_time, + + + content, + + + + + #{id,jdbcType=VARCHAR}, + + + #{panelId,jdbcType=VARCHAR}, + + + #{chartViewId,jdbcType=VARCHAR}, + + + #{createBy,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=BIGINT}, + + + #{updateBy,jdbcType=VARCHAR}, + + + #{updateTime,jdbcType=BIGINT}, + + + #{content,jdbcType=LONGVARBINARY}, + + + + + + update panel_view + + + id = #{record.id,jdbcType=VARCHAR}, + + + panel_id = #{record.panelId,jdbcType=VARCHAR}, + + + chart_view_id = #{record.chartViewId,jdbcType=VARCHAR}, + + + create_by = #{record.createBy,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=BIGINT}, + + + update_by = #{record.updateBy,jdbcType=VARCHAR}, + + + update_time = #{record.updateTime,jdbcType=BIGINT}, + + + content = #{record.content,jdbcType=LONGVARBINARY}, + + + + + + + + update panel_view + set id = #{record.id,jdbcType=VARCHAR}, + panel_id = #{record.panelId,jdbcType=VARCHAR}, + chart_view_id = #{record.chartViewId,jdbcType=VARCHAR}, + create_by = #{record.createBy,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=BIGINT}, + update_by = #{record.updateBy,jdbcType=VARCHAR}, + update_time = #{record.updateTime,jdbcType=BIGINT}, + content = #{record.content,jdbcType=LONGVARBINARY} + + + + + + update panel_view + set id = #{record.id,jdbcType=VARCHAR}, + panel_id = #{record.panelId,jdbcType=VARCHAR}, + chart_view_id = #{record.chartViewId,jdbcType=VARCHAR}, + create_by = #{record.createBy,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=BIGINT}, + update_by = #{record.updateBy,jdbcType=VARCHAR}, + update_time = #{record.updateTime,jdbcType=BIGINT} + + + + + + update panel_view + + + panel_id = #{panelId,jdbcType=VARCHAR}, + + + chart_view_id = #{chartViewId,jdbcType=VARCHAR}, + + + create_by = #{createBy,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=BIGINT}, + + + update_by = #{updateBy,jdbcType=VARCHAR}, + + + update_time = #{updateTime,jdbcType=BIGINT}, + + + content = #{content,jdbcType=LONGVARBINARY}, + + + where id = #{id,jdbcType=VARCHAR} + + + update panel_view + set panel_id = #{panelId,jdbcType=VARCHAR}, + chart_view_id = #{chartViewId,jdbcType=VARCHAR}, + create_by = #{createBy,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=BIGINT}, + update_by = #{updateBy,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=BIGINT}, + content = #{content,jdbcType=LONGVARBINARY} + where id = #{id,jdbcType=VARCHAR} + + + update panel_view + set panel_id = #{panelId,jdbcType=VARCHAR}, + chart_view_id = #{chartViewId,jdbcType=VARCHAR}, + create_by = #{createBy,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=BIGINT}, + update_by = #{updateBy,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=BIGINT} + where id = #{id,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.java index 89ae4b74d8..fdbb430fbc 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.java +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.java @@ -16,4 +16,6 @@ public interface ExtChartViewMapper { @Select("select id from chart_view where table_id = #{tableId}") List allViewIds(@Param("tableId") String tableId); + + String searchAdviceSceneId(@Param("userId") String userId,@Param("panelId") String panelId); } diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml index c6fcfb69a5..a7ccd9855c 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtChartViewMapper.xml @@ -68,4 +68,19 @@ WHERE id = #{oldChartId} + + diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.java index 99f3d9f24f..3e46d5ad70 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.java +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.java @@ -1,6 +1,9 @@ package io.dataease.base.mapper.ext; +import io.dataease.base.domain.PanelView; import io.dataease.dto.panel.PanelViewDto; +import io.dataease.dto.panel.po.PanelViewInsertDTO; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -9,4 +12,8 @@ public interface ExtPanelViewMapper { List groups(String userId); List views(String userId); + + void deleteWithPanelId(String panelId); + + void savePanelView(@Param("panelViews") List panelViews); } diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.xml index 329278dc2c..8e0a523da4 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.xml @@ -31,6 +31,16 @@ + + delete from panel_view where panel_id =#{panelId} + + + + INSERT INTO `panel_view` (id,chart_view_id, panel_id) VALUES + + (uuid(),#{panelView.chartViewId},#{panelView.panelId}) + + diff --git a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java index 7d0260887e..abbb5c9bf7 100644 --- a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java +++ b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java @@ -60,4 +60,9 @@ public class ChartViewController { public String chartCopy(@PathVariable String id) { return chartViewService.chartCopy(id); } + + @GetMapping("searchAdviceSceneId/{panelId}") + public String searchAdviceSceneId(@PathVariable String panelId){ + return chartViewService.searchAdviceSceneId(panelId); + } } diff --git a/backend/src/main/java/io/dataease/dto/panel/po/PanelViewInsertDTO.java b/backend/src/main/java/io/dataease/dto/panel/po/PanelViewInsertDTO.java new file mode 100644 index 0000000000..1bdd000bda --- /dev/null +++ b/backend/src/main/java/io/dataease/dto/panel/po/PanelViewInsertDTO.java @@ -0,0 +1,21 @@ +package io.dataease.dto.panel.po; + +import io.dataease.base.domain.PanelView; + +/** + * Author: wangjiahao + * Date: 2021-07-06 + * Description: + */ +public class PanelViewInsertDTO extends PanelView { + + public PanelViewInsertDTO() { + } + + public PanelViewInsertDTO(String chartViewId,String panelGroupId) { + super(); + super.setChartViewId(chartViewId); + super.setPanelId(panelGroupId); + } + +} diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 7f233d6fa5..ef20d0102d 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -382,4 +382,8 @@ public class ChartViewService { extChartViewMapper.chartCopy(newChartId,id); return newChartId; } + + public String searchAdviceSceneId(String panelId){ + return extChartViewMapper.searchAdviceSceneId(AuthUtils.getUser().getUserId().toString(),panelId); + } } diff --git a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java index 17852ad456..00ed8e5e45 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java @@ -53,6 +53,8 @@ public class PanelGroupService { private PanelLinkService panelLinkService; @Resource private SysAuthService sysAuthService; + @Resource + private PanelViewService panelViewService; public List tree(PanelGroupRequest panelGroupRequest) { String userId = String.valueOf(AuthUtils.getUser().getUserId()); @@ -72,6 +74,12 @@ public class PanelGroupService { @Transactional public PanelGroup saveOrUpdate(PanelGroupRequest request) { + try{ + panelViewService.syncPanelViews(request); + }catch (Exception e){ + e.printStackTrace(); + LOGGER.error("更新panelView出错panelId:{}" ,request.getId()); + } String panelId = request.getId(); if (StringUtils.isEmpty(panelId)) { // 新建 @@ -163,4 +171,5 @@ public class PanelGroupService { }); return chartViewDTOList; } + } diff --git a/backend/src/main/java/io/dataease/service/panel/PanelViewService.java b/backend/src/main/java/io/dataease/service/panel/PanelViewService.java index 5ffe8fc8d0..aa1f50c544 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelViewService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelViewService.java @@ -1,15 +1,27 @@ package io.dataease.service.panel; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import io.dataease.base.domain.PanelGroup; +import io.dataease.base.domain.PanelGroupWithBLOBs; +import io.dataease.base.mapper.PanelViewMapper; import io.dataease.base.mapper.ext.ExtPanelViewMapper; import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.BeanUtils; import io.dataease.dto.panel.PanelViewDto; +import io.dataease.dto.panel.po.PanelViewInsertDTO; import io.dataease.dto.panel.po.PanelViewPo; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; + +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -22,6 +34,7 @@ public class PanelViewService { @Autowired(required = false) private ExtPanelViewMapper extPanelViewMapper; + private final static String SCENE_TYPE = "scene"; public List groups(){ @@ -63,4 +76,25 @@ public class PanelViewService { // 最后 没有孩子的老东西淘汰 return roots.stream().filter(item -> CollectionUtils.isNotEmpty(item.getChildren())).collect(Collectors.toList()); } + + @Transactional(propagation=Propagation.REQUIRES_NEW) + public void syncPanelViews(PanelGroupWithBLOBs panelGroup){ + String panelId = panelGroup.getId(); + Assert.notNull(panelId, "panelId cannot be null"); + String panelData = panelGroup.getPanelData(); + if(StringUtils.isNotEmpty(panelData)){ + JSONArray dataArray = JSON.parseArray(panelData); + List panelViewInsertDTOList = new ArrayList<>(); + for(int i=0;i--> - +
diff --git a/frontend/src/api/chart/chart.js b/frontend/src/api/chart/chart.js index 81b76ef1eb..77945e5f17 100644 --- a/frontend/src/api/chart/chart.js +++ b/frontend/src/api/chart/chart.js @@ -35,3 +35,19 @@ export function chartCopy(id) { loading: true }) } +export function chartGroupTree(data) { + return request({ + url: '/chart/group/tree', + method: 'post', + loading: true, + data + }) +} + +export function searchAdviceSceneId(panelId) { + return request({ + url: '/chart/view/searchAdviceSceneId/' + panelId, + method: 'get', + loading: true + }) +} diff --git a/frontend/src/components/canvas/components/Editor/ContextMenu.vue b/frontend/src/components/canvas/components/Editor/ContextMenu.vue index 1e9f4ca429..2806cec0df 100644 --- a/frontend/src/components/canvas/components/Editor/ContextMenu.vue +++ b/frontend/src/components/canvas/components/Editor/ContextMenu.vue @@ -51,7 +51,7 @@ export default { 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 }}) + bus.$emit('PanelSwitchComponent', { name: 'ChartEdit', param: { 'id': this.curComponent.propValue.viewId, 'optType': 'edit' }}) } if (this.curComponent.type === 'custom') { bus.$emit('component-dialog-edit') diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index ac06118638..b45e3923b9 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -666,6 +666,8 @@ export default { area_mode: 'Area', rose_radius: 'Fillet', view_name: 'Chart Title', + belong_group: 'Belong Group', + select_group: 'Select Group', name_can_not_empty: 'Name cannot be empty', template_can_not_empty: 'Please check a Template', custom_count: 'Number of records', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 25ccba0d53..c338a33bb7 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -708,6 +708,8 @@ export default { area_mode: '面積', rose_radius: '園角', view_name: '視圖標題', + belong_group: '所属分组', + select_group: '选择分组', name_can_not_empty: '名稱不能為空', template_can_not_empty: '請選擇儀表板', custom_count: '記錄數', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index c8e612fc2d..1c64bb5083 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -666,6 +666,8 @@ export default { area_mode: '面积', rose_radius: '圆角', view_name: '视图标题', + belong_group: '所属分组', + select_group: '选择分组', name_can_not_empty: '名称不能为空', template_can_not_empty: '请选择仪表版', custom_count: '记录数', diff --git a/frontend/src/views/chart/group/Group.vue b/frontend/src/views/chart/group/Group.vue index ed22f81813..e74468b65e 100644 --- a/frontend/src/views/chart/group/Group.vue +++ b/frontend/src/views/chart/group/Group.vue @@ -290,17 +290,29 @@ class="dialog-css" :destroy-on-close="true" > - + - - - + + + + + + + + + + @@ -327,7 +339,7 @@