From 2fc2bb1f887ba633483ee74556aad567d5f9558b Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Tue, 29 Jun 2021 13:44:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=AA=E8=A1=A8=E6=9D=BF=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=97=B6=E5=8F=AF=E4=BB=A5=E8=BF=9B=E8=A1=8C=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E7=9A=84=E5=A4=8D=E5=88=B6=EF=BC=8C=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E8=A7=86=E5=9B=BE=E6=A0=B7=E5=BC=8F=E7=AD=89?= =?UTF-8?q?=E6=94=B9=E5=8F=98=E4=B8=8D=E5=BD=B1=E5=93=8D=E5=8E=9F=E6=9C=89?= =?UTF-8?q?=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/mapper/ext/ExtChartViewMapper.java | 2 + .../base/mapper/ext/ExtChartViewMapper.xml | 41 +++++++++++++++++++ .../controller/chart/ChartViewController.java | 5 +++ .../service/chart/ChartViewService.java | 6 +++ .../db/migration/V9__chart_view_copy.sql | 25 +++++++++++ frontend/src/api/chart/chart.js | 8 ++++ .../canvas/components/Editor/ContextMenu.vue | 2 +- frontend/src/components/canvas/store/copy.js | 14 ++++++- 8 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 backend/src/main/resources/db/migration/V9__chart_view_copy.sql 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 190bb92296..89ae4b74d8 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 @@ -12,6 +12,8 @@ import java.util.List; public interface ExtChartViewMapper { List search(ChartViewRequest request); + void chartCopy(@Param("newChartId")String newChartId,@Param("oldChartId")String oldChartId); + @Select("select id from chart_view where table_id = #{tableId}") List allViewIds(@Param("tableId") String tableId); } 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 13fdcb64e6..042283e2f9 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 @@ -27,4 +27,45 @@ + + + INSERT INTO chart_view ( + `id`, + `name`, + `scene_id`, + `table_id`, + `type`, + `title`, + `x_axis`, + `y_axis`, + `custom_attr`, + `custom_style`, + `custom_filter`, + `create_by`, + `create_time`, + `update_time`, + `snapshot`, + `style_priority` + ) SELECT + #{newChartId}, + GET_CHART_VIEW_COPY_NAME ( #{oldChartId} ), + `scene_id`, + `table_id`, + `type`, + `title`, + `x_axis`, + `y_axis`, + `custom_attr`, + `custom_style`, + `custom_filter`, + `create_by`, + `create_time`, + `update_time`, + `snapshot`, + `style_priority` + FROM + chart_view + WHERE + id = #{oldChartId} + 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 207d64b188..7d0260887e 100644 --- a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java +++ b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java @@ -55,4 +55,9 @@ public class ChartViewController { public Map chartDetail(@PathVariable String id) { return chartViewService.getChartDetail(id); } + + @PostMapping("chartCopy/{id}") + public String chartCopy(@PathVariable String id) { + return chartViewService.chartCopy(id); + } } 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 f358596722..256a96f3ec 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -342,4 +342,10 @@ public class ChartViewService { public ChartViewWithBLOBs findOne(String id) { return chartViewMapper.selectByPrimaryKey(id); } + + public String chartCopy(String id) { + String newChartId = UUID.randomUUID().toString(); + extChartViewMapper.chartCopy(newChartId,id); + return newChartId; + } } diff --git a/backend/src/main/resources/db/migration/V9__chart_view_copy.sql b/backend/src/main/resources/db/migration/V9__chart_view_copy.sql new file mode 100644 index 0000000000..0cbcb569c9 --- /dev/null +++ b/backend/src/main/resources/db/migration/V9__chart_view_copy.sql @@ -0,0 +1,25 @@ +DROP FUNCTION IF EXISTS `GET_CHART_VIEW_COPY_NAME`; +delimiter ;; +CREATE DEFINER=`root`@`%` FUNCTION `GET_CHART_VIEW_COPY_NAME`(chartId varchar(255)) RETURNS varchar(255) CHARSET utf8 + READS SQL DATA +BEGIN + +DECLARE chartName varchar(255); + +DECLARE pid varchar(255); + +DECLARE regexpInfo varchar(255); + +DECLARE chartNameCount INTEGER; + +select `name` ,`scene_id` into chartName, pid from chart_view where id =chartId; + +set regexpInfo = concat('^',chartName,'-copy','\\(([0-9])+\\)$'); + +select (count(1)+1) into chartNameCount from chart_view where name REGEXP regexpInfo; + +RETURN concat(chartName,'-copy(',chartNameCount,')'); + +END +;; +delimiter ; diff --git a/frontend/src/api/chart/chart.js b/frontend/src/api/chart/chart.js index ab528b0aaa..81b76ef1eb 100644 --- a/frontend/src/api/chart/chart.js +++ b/frontend/src/api/chart/chart.js @@ -27,3 +27,11 @@ export function getChartTree(data) { data }) } + +export function chartCopy(id) { + return request({ + url: '/chart/view/chartCopy/' + id, + method: 'post', + loading: true + }) +} diff --git a/frontend/src/components/canvas/components/Editor/ContextMenu.vue b/frontend/src/components/canvas/components/Editor/ContextMenu.vue index 85c189b244..bf2f0d42e0 100644 --- a/frontend/src/components/canvas/components/Editor/ContextMenu.vue +++ b/frontend/src/components/canvas/components/Editor/ContextMenu.vue @@ -4,7 +4,7 @@