From da7fdcabea6c6cb68803653fc61397d85c86d2ea Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Wed, 30 Mar 2022 12:35:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=A8=A1=E6=9D=BF=E8=A7=86=E5=9B=BE?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E5=87=BA=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/mapper/ext/ExtChartViewMapper.xml | 4 +- .../ext/ExtPanelGroupExtendDataMapper.java | 4 ++ .../ext/ExtPanelGroupExtendDataMapper.xml | 52 +++++++++++++++++-- .../service/chart/ChartViewService.java | 15 +++++- .../service/panel/PanelGroupService.java | 2 + .../main/resources/db/migration/V33__1.9.sql | 3 ++ 6 files changed, 72 insertions(+), 8 deletions(-) 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 f8026fa4b3..700328593c 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 @@ -214,7 +214,7 @@ `is_plugin`, `senior`, `data_from` - FROM chart_view_cache + FROM chart_view WHERE id = #{oldChartId} @@ -298,7 +298,7 @@ FROM panel_view WHERE copy_id = #{copyId} ) pv_copy - LEFT JOIN chart_view ON chart_view.id = pv_copy.copy_from_view + INNER JOIN chart_view ON chart_view.id = pv_copy.copy_from_view diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelGroupExtendDataMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelGroupExtendDataMapper.java index 1de1596074..3cb6c9093e 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelGroupExtendDataMapper.java +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelGroupExtendDataMapper.java @@ -7,4 +7,8 @@ import java.util.List; public interface ExtPanelGroupExtendDataMapper { void savePanelExtendData(@Param("records") List records); + + void copyExtendData(@Param("sourceViewId")String sourceViewId,@Param("newViewId")String newViewId,@Param("newPanelId")String newPanelId); + + void copyWithCopyId(@Param("copyId")String copyId); } diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelGroupExtendDataMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelGroupExtendDataMapper.xml index e6380c910e..00dca3a3cd 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelGroupExtendDataMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelGroupExtendDataMapper.xml @@ -2,11 +2,53 @@ - - INSERT INTO `panel_group_extend_data` (id, panel_id,view_id,view_details) VALUES - - (uuid(),#{item.panelId},#{item.viewId},#{item.viewDetails}) - + + INSERT INTO `panel_group_extend_data` (id, panel_id,view_id,view_details) VALUES + + (uuid(),#{item.panelId},#{item.viewId},#{item.viewDetails}) + + + + + INSERT INTO `panel_group_extend_data` ( id, panel_id, view_id, view_details ) SELECT + uuid() as id, + #{newPanelId}, + #{newViewId}, + view_details + FROM + panel_group_extend_data + WHERE + view_id =#{sourceViewId} + + INSERT INTO `panel_group_extend_data` ( + id, + panel_id, + view_id, + view_details, + copy_from, + copy_id + ) SELECT + uuid() AS id, + pv_copy.panel_id AS panel_id, + pv_copy.chart_view_id AS view_id, + view_details, + id AS copy_from, + #{copyId} AS copy_id + FROM + ( + SELECT + panel_id, + copy_from_view, + chart_view_id + FROM + panel_view + WHERE + copy_id = #{copyId} + ) pv_copy + INNER JOIN panel_group_extend_data ON panel_group_extend_data.view_id = pv_copy.copy_from_view + + + 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 cac787eb48..5862bb8c26 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -10,6 +10,7 @@ import io.dataease.base.mapper.ChartViewMapper; import io.dataease.base.mapper.PanelViewMapper; import io.dataease.base.mapper.ext.ExtChartGroupMapper; import io.dataease.base.mapper.ext.ExtChartViewMapper; +import io.dataease.base.mapper.ext.ExtPanelGroupExtendDataMapper; import io.dataease.commons.constants.ColumnPermissionConstants; import io.dataease.commons.constants.CommonConstants; import io.dataease.commons.constants.JdbcConstants; @@ -47,6 +48,7 @@ import io.dataease.service.panel.PanelViewService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.pentaho.di.core.util.UUIDUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -90,9 +92,11 @@ public class ChartViewService { @Resource private ChartViewCacheMapper chartViewCacheMapper; @Resource - private PanelViewService panelViewService; + private PanelViewMapper panelViewMapper; @Resource private PanelGroupExtendDataService extendDataService; + @Resource + private ExtPanelGroupExtendDataMapper extPanelGroupExtendDataMapper; //默认使用非公平 @@ -121,6 +125,14 @@ public class ChartViewService { // 新建的视图也存入缓存表中 extChartViewMapper.copyToCache(chartView.getId()); + PanelView newPanelView = new PanelView(); + newPanelView.setId(UUIDUtil.getUUIDAsString()); + newPanelView.setChartViewId(chartView.getId()); + newPanelView.setCreateBy(chartView.getCreateBy()); + newPanelView.setPanelId(chartView.getSceneId()); + newPanelView.setCreateTime(timestamp); + newPanelView.setPosition("panel"); + panelViewMapper.insertSelective(newPanelView); return chartView; } @@ -1028,6 +1040,7 @@ public class ChartViewService { public String chartCopy(String id, String panelId) { String newChartId = UUID.randomUUID().toString(); extChartViewMapper.chartCopy(newChartId, id, panelId); + extPanelGroupExtendDataMapper.copyExtendData(id,newChartId,panelId); extChartViewMapper.copyToCache(newChartId); return newChartId; } 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 b88280396b..1f1c51a8f0 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java @@ -291,6 +291,8 @@ public class PanelGroupService { extChartViewMapper.chartCopyWithPanel(copyId); //TODO 替换panel_data viewId 数据 List panelViewList = panelViewService.findPanelViews(copyId); + //TODO 复制模板缓存数据 + extPanelGroupExtendDataMapper.copyWithCopyId(copyId); if (CollectionUtils.isNotEmpty(panelViewList)) { String panelData = newPanel.getPanelData(); //TODO 替换panel_data viewId 数据 并保存 diff --git a/backend/src/main/resources/db/migration/V33__1.9.sql b/backend/src/main/resources/db/migration/V33__1.9.sql index fd5d222e0b..e0251c26f2 100644 --- a/backend/src/main/resources/db/migration/V33__1.9.sql +++ b/backend/src/main/resources/db/migration/V33__1.9.sql @@ -66,9 +66,12 @@ CREATE TABLE `panel_group_extend_data` ( `panel_id` varchar(50) DEFAULT NULL, `view_id` varchar(50) DEFAULT NULL, `view_details` longtext, + `copy_from` varchar(255) DEFAULT NULL, + `copy_id` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + SET FOREIGN_KEY_CHECKS = 1;