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 82667c44a0..d35a55d2fd 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 @@ -45,4 +45,7 @@ public interface ExtChartViewMapper { void copyCacheToView(@Param("viewIds") List viewIds ); + int updateToCache(@Param("viewId") String viewId ); + + void copyCache(@Param("sourceViewId") String sourceViewId,@Param("newViewId") String newViewId); } 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 84fb290bcd..531b19914b 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 @@ -89,6 +89,69 @@ chart_view.id = #{id} + + INSERT INTO chart_view_cache ( + id, + `name`, + title, + scene_id, + table_id, + `type`, + render, + result_count, + result_mode, + create_by, + create_time, + update_time, + style_priority, + chart_type, + is_plugin, + x_axis, + x_axis_ext, + y_axis, + y_axis_ext, + ext_stack, + ext_bubble, + custom_attr, + custom_style, + custom_filter, + drill_fields, + senior, + SNAPSHOT, + data_from + ) SELECT + #{newViewId} as id, + `name`, + title, + scene_id, + table_id, + `type`, + render, + result_count, + result_mode, + create_by, + create_time, + update_time, + style_priority, + chart_type, + is_plugin, + x_axis, + x_axis_ext, + y_axis, + y_axis_ext, + ext_stack, + ext_bubble, + custom_attr, + custom_style, + custom_filter, + drill_fields, + senior, + SNAPSHOT, + data_from from chart_view_cache + WHERE + chart_view_cache.id = #{sourceViewId} + + @@ -404,4 +467,37 @@ #{viewId} + + + UPDATE chart_view_cache cv, + chart_view cve + SET cv.`name` = cve.`name`, + cv.title = cve.title, + cv.scene_id = cve.scene_id, + cv.table_id = cve.table_id, + cv.`type` = cve.`type`, + cv.render = cve.render, + cv.result_count = cve.result_count, + cv.result_mode = cve.result_mode, + cv.create_by = cve.create_by, + cv.create_time = cve.create_time, + cv.update_time = cve.update_time, + cv.style_priority = cve.style_priority, + cv.chart_type = cve.chart_type, + cv.is_plugin = cve.is_plugin, + cv.x_axis = cve.x_axis, + cv.x_axis_ext = cve.x_axis_ext, + cv.y_axis = cve.y_axis, + cv.y_axis_ext = cve.y_axis_ext, + cv.ext_stack = cve.ext_stack, + cv.ext_bubble = cve.ext_bubble, + cv.custom_attr = cve.custom_attr, + cv.custom_style = cve.custom_style, + cv.custom_filter = cve.custom_filter, + cv.drill_fields = cve.drill_fields, + cv.senior = cve.senior, + cv.SNAPSHOT = cve.SNAPSHOT, + cv.data_from = cve.data_from + where cve.id = cv.id and cv.id =#{viewId} + 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 2f1bd97c90..e23370eb14 100644 --- a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java +++ b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java @@ -13,6 +13,7 @@ import io.dataease.controller.request.chart.ChartViewCacheRequest; import io.dataease.controller.request.chart.ChartViewRequest; import io.dataease.controller.response.ChartDetail; import io.dataease.dto.chart.ChartViewDTO; +import io.dataease.service.chart.ChartViewCacheService; import io.dataease.service.chart.ChartViewService; import io.dataease.service.panel.PanelViewService; import io.swagger.annotations.Api; @@ -34,8 +35,9 @@ import java.util.List; public class ChartViewController { @Resource private ChartViewService chartViewService; + @Resource - private PanelViewService panelViewService; + private ChartViewCacheService chartViewCacheService; @DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANNEL_LEVEL_MANAGE) @ApiOperation("保存") @@ -150,7 +152,7 @@ public class ChartViewController { @ApiOperation("重置视图缓存") @PostMapping("/resetViewCache/{id}/{panelId}") public void resetViewCache(@PathVariable String id, @PathVariable String panelId) { - chartViewService.resetViewCache(id); + chartViewCacheService.refreshCache(id); } } diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewCacheService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewCacheService.java new file mode 100644 index 0000000000..07426943e3 --- /dev/null +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewCacheService.java @@ -0,0 +1,28 @@ +package io.dataease.service.chart; + +import io.dataease.base.mapper.ChartViewCacheMapper; +import io.dataease.base.mapper.ext.ExtChartViewMapper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +/** + * Author: wangjiahao + * Date: 2022/4/2 + * Description: + */ +@Service +public class ChartViewCacheService { + + @Resource + private ExtChartViewMapper extChartViewMapper; + + @Transactional + public void refreshCache(String viewId){ + if(extChartViewMapper.updateToCache(viewId)==0){ + extChartViewMapper.copyToCache(viewId); + } + } + +} 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 d42d44b804..2f5a670380 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -97,6 +97,8 @@ public class ChartViewService { private PanelGroupExtendDataService extendDataService; @Resource private ExtPanelGroupExtendDataMapper extPanelGroupExtendDataMapper; + @Resource + private ChartViewCacheService chartViewCacheService; //默认使用非公平 @@ -130,7 +132,7 @@ public class ChartViewService { chartView.setUpdateTime(timestamp); chartViewMapper.insertSelective(chartView); // 新建的视图也存入缓存表中 - extChartViewMapper.copyToCache(chartView.getId()); + chartViewCacheService.refreshCache(chartView.getId()); PanelView newPanelView = new PanelView(); newPanelView.setId(UUIDUtil.getUUIDAsString()); @@ -154,27 +156,6 @@ public class ChartViewService { }); } - -// // 直接保存统一到缓存表 -// public ChartViewWithBLOBs save(ChartViewRequest chartView) { -// checkName(chartView); -// long timestamp = System.currentTimeMillis(); -// chartView.setUpdateTime(timestamp); -// if (ObjectUtils.isEmpty(chartView.getId())) { -// chartView.setId(UUID.randomUUID().toString()); -// chartView.setCreateBy(AuthUtils.getUser().getUsername()); -// chartView.setCreateTime(timestamp); -// chartView.setUpdateTime(timestamp); -// chartViewMapper.insertSelective(chartView); -// } else { -// chartViewMapper.updateByPrimaryKeySelective(chartView); -// } -// Optional.ofNullable(chartView.getId()).ifPresent(id -> { -// CacheUtils.remove(JdbcConstants.VIEW_CACHE_KEY, id); -// }); -// return getOneWithPermission(chartView.getId()); -// } - public List list(ChartViewRequest chartViewRequest) { chartViewRequest.setUserId(String.valueOf(AuthUtils.getUser().getUserId())); return extChartViewMapper.search(chartViewRequest); @@ -268,7 +249,7 @@ public class ChartViewService { //仪表板编辑页面 从缓存表中取数据 缓存表中没有数据则进行插入 result = extChartViewMapper.searchOneFromCache(id); if (result == null) { - extChartViewMapper.copyToCache(id); + chartViewCacheService.refreshCache(id); result = extChartViewMapper.searchOneFromCache(id); } } else { @@ -1047,8 +1028,9 @@ public class ChartViewService { public String chartCopy(String id, String panelId) { String newChartId = UUID.randomUUID().toString(); extChartViewMapper.chartCopy(newChartId, id, panelId); + extChartViewMapper.copyCache(id,newChartId); extPanelGroupExtendDataMapper.copyExtendData(id,newChartId,panelId); - extChartViewMapper.copyToCache(newChartId); + chartViewCacheService.refreshCache(id); return newChartId; } @@ -1082,9 +1064,4 @@ public class ChartViewService { extChartViewMapper.deleteCacheWithPanel(panelId); } - public void resetViewCache(String viewId) { - extChartViewMapper.deleteViewCache(viewId); - - extChartViewMapper.copyToCache(viewId); - } }