From 283804828f74b685ff924b6c56c8818a500b7aa4 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Fri, 22 Nov 2024 17:31:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=E5=A4=A7=E5=B1=8F=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=90=8C=E6=AD=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=9B=BE=E8=A1=A8=E6=A0=87=E9=A2=98=E5=AD=97=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dashboard-style/OverallSetting.vue | 3 ++ .../visualization/CanvasBaseSetting.vue | 3 ++ core/core-frontend/src/utils/canvasStyle.ts | 35 +++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/core/core-frontend/src/components/dashboard/subject-setting/dashboard-style/OverallSetting.vue b/core/core-frontend/src/components/dashboard/subject-setting/dashboard-style/OverallSetting.vue index 0fa80ad43b..23c49227dc 100644 --- a/core/core-frontend/src/components/dashboard/subject-setting/dashboard-style/OverallSetting.vue +++ b/core/core-frontend/src/components/dashboard/subject-setting/dashboard-style/OverallSetting.vue @@ -236,6 +236,7 @@ const dvMainStore = dvMainStoreWithOut() const { canvasStyleData, dvInfo } = storeToRefs(dvMainStore) import { adaptCurThemeCommonStyleAll, + adaptTitleFontFamilyAll, DARK_THEME_DASHBOARD_BACKGROUND, LIGHT_THEME_DASHBOARD_BACKGROUND } from '@/utils/canvasStyle' @@ -303,6 +304,8 @@ const fontFamilyChange = () => { '--de-canvas_custom_font', `${canvasStyleData.value.fontFamily}` ) + adaptTitleFontFamilyAll(canvasStyleData.value.fontFamily) + snapshotStore.recordSnapshotCache('renderChart') } const themeChange = (modifyName?) => { diff --git a/core/core-frontend/src/components/visualization/CanvasBaseSetting.vue b/core/core-frontend/src/components/visualization/CanvasBaseSetting.vue index 4d0cb6d3fa..79bff7f493 100644 --- a/core/core-frontend/src/components/visualization/CanvasBaseSetting.vue +++ b/core/core-frontend/src/components/visualization/CanvasBaseSetting.vue @@ -84,6 +84,7 @@ import { ElFormItem, ElIcon } from 'element-plus-secondary' import Icon from '../icon-custom/src/Icon.vue' import { useAppearanceStoreWithOut } from '@/store/modules/appearance' import { CHART_FONT_FAMILY } from '@/views/chart/components/editor/util/chart' +import { adaptTitleFontFamilyAll } from '@/utils/canvasStyle' const snapshotStore = snapshotStoreWithOut() const dvMainStore = dvMainStoreWithOut() @@ -101,6 +102,8 @@ const onFontFamilyChange = () => { '--de-canvas_custom_font', `${canvasStyleData.value.fontFamily}` ) + adaptTitleFontFamilyAll(canvasStyleData.value.fontFamily) + snapshotStore.recordSnapshotCache('renderChart') } const onThemeChange = () => { snapshotStore.recordSnapshotCache() diff --git a/core/core-frontend/src/utils/canvasStyle.ts b/core/core-frontend/src/utils/canvasStyle.ts index 7d65980f37..ee77b6366b 100644 --- a/core/core-frontend/src/utils/canvasStyle.ts +++ b/core/core-frontend/src/utils/canvasStyle.ts @@ -421,6 +421,41 @@ export function adaptCurTheme(customStyle, customAttr) { } } +export function adaptTitleFontFamily(fontFamily, viewInfo) { + if (viewInfo) { + viewInfo.customStyle['text']['fontFamily'] = fontFamily + } +} + +export function adaptTitleFontFamilyAll(fontFamily) { + const componentData = dvMainStore.componentData + componentData.forEach(item => { + if (item.component === 'UserView') { + const viewDetails = dvMainStore.canvasViewInfo[item.id] + adaptTitleFontFamily(fontFamily, viewDetails) + useEmitt().emitter.emit('renderChart-' + item.id, viewDetails) + } else if (item.component === 'Group') { + item.propValue.forEach(groupItem => { + if (groupItem.component === 'UserView') { + const viewDetails = dvMainStore.canvasViewInfo[item.id] + adaptTitleFontFamily(fontFamily, viewDetails) + useEmitt().emitter.emit('renderChart-' + item.id, viewDetails) + } + }) + } else if (item.component === 'DeTabs') { + item.propValue.forEach(tabItem => { + tabItem.componentData.forEach(tabComponent => { + if (tabComponent.component === 'UserView') { + const viewDetails = dvMainStore.canvasViewInfo[item.id] + adaptTitleFontFamily(fontFamily, viewDetails) + useEmitt().emitter.emit('renderChart-' + item.id, viewDetails) + } + }) + }) + } + }) +} + export function adaptCurThemeCommonStyle(component) { if (['DeTabs'].includes(component.component)) { component.commonBackground['innerPadding'] = 0 From a3482a9f2fb9da68ae192dd98be62de82d319d7f Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Fri, 22 Nov 2024 19:08:33 +0800 Subject: [PATCH 2/2] =?UTF-8?q?refactor(=E4=BB=AA=E8=A1=A8=E6=9D=BF?= =?UTF-8?q?=E3=80=81=E6=95=B0=E6=8D=AE=E5=A4=A7=E5=B1=8F):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BB=AA=E8=A1=A8=E6=9D=BF=E5=B1=95=E7=A4=BA=E9=80=9F?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/manage/ChartViewManege.java | 20 +++++++++---- .../auto/entity/DataVisualizationInfo.java | 30 +++++++++++++++---- .../mapper/DataVisualizationInfoMapper.java | 2 +- .../server/DataVisualizationServer.java | 13 ++++++++ .../resources/db/desktop/V2.10.3__ddl.sql | 5 +++- .../resources/db/migration/V2.10.3__ddl.sql | 5 +++- .../mybatis/ExtDataVisualizationMapper.xml | 3 +- .../api/visualization/dataVisualization.ts | 3 ++ core/core-frontend/src/utils/canvasUtils.ts | 16 ++++++---- .../visualization/DataVisualizationApi.java | 6 ++++ .../visualization/vo/DataVisualizationVO.java | 6 +++- 11 files changed, 88 insertions(+), 21 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java index 2cdc8d5578..d8672a1c7d 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java @@ -127,11 +127,21 @@ public class ChartViewManege { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("scene_id", sceneId); List chartViewDTOS = transChart(coreChartViewMapper.selectList(wrapper)); - for (ChartViewDTO dto : chartViewDTOS) { - QueryWrapper wp = new QueryWrapper<>(); - wp.eq("dataset_group_id", dto.getTableId()); - List coreDatasetTableFields = coreDatasetTableFieldMapper.selectList(wp); - dto.setCalParams(Utils.getParams(datasetTableFieldManage.transDTO(coreDatasetTableFields))); + if(!CollectionUtils.isEmpty(chartViewDTOS)){ + List tableIds = chartViewDTOS.stream() + .map(ChartViewDTO::getTableId) // 提取 id + .toList(); + if(!CollectionUtils.isEmpty(tableIds)){ + QueryWrapper wp = new QueryWrapper<>(); + wp.in("dataset_group_id", tableIds); + List coreDatasetTableFields = coreDatasetTableFieldMapper.selectList(wp); + Map> groupedByTableId = coreDatasetTableFields.stream() + .collect(Collectors.groupingBy(CoreDatasetTableField::getDatasetGroupId)); + chartViewDTOS.forEach(dto ->{ + dto.setCalParams(Utils.getParams(datasetTableFieldManage.transDTO(groupedByTableId.get(dto.getTableId())))); + }); + } + } return chartViewDTOS; } diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/DataVisualizationInfo.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/DataVisualizationInfo.java index cdfca78b09..67ba543ecd 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/DataVisualizationInfo.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/DataVisualizationInfo.java @@ -5,11 +5,11 @@ import java.io.Serializable; /** *

- * + * 可视化大屏信息表 *

* * @author fit2cloud - * @since 2024-04-11 + * @since 2024-11-22 */ @TableName("data_visualization_info") public class DataVisualizationInfo implements Serializable { @@ -59,7 +59,7 @@ public class DataVisualizationInfo implements Serializable { private String componentData; /** - * 移动端布局 + * 移动端布局0-关闭 1-开启 */ private Boolean mobileLayout; @@ -128,11 +128,15 @@ public class DataVisualizationInfo implements Serializable { */ private Integer version; + /** + * 内容标识 + */ private String contentId; - public String getContentId() { - return contentId; - } + /** + * 内容检查标识 + */ + private String checkVersion; public void setContentId(String contentId) { this.contentId = contentId; @@ -322,6 +326,18 @@ public class DataVisualizationInfo implements Serializable { this.version = version; } + public String getContentId() { + return contentId; + } + + public String getCheckVersion() { + return checkVersion; + } + + public void setCheckVersion(String checkVersion) { + this.checkVersion = checkVersion; + } + @Override public String toString() { return "DataVisualizationInfo{" + @@ -348,6 +364,8 @@ public class DataVisualizationInfo implements Serializable { ", deleteTime = " + deleteTime + ", deleteBy = " + deleteBy + ", version = " + version + + ", contentId = " + contentId + + ", checkVersion = " + checkVersion + "}"; } } diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/DataVisualizationInfoMapper.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/DataVisualizationInfoMapper.java index 9b34106a11..890d6f7448 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/DataVisualizationInfoMapper.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/mapper/DataVisualizationInfoMapper.java @@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper; *

* * @author fit2cloud - * @since 2024-11-18 + * @since 2024-11-22 */ @Mapper public interface DataVisualizationInfoMapper extends BaseMapper { diff --git a/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java b/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java index 2e26522b8f..0d15cef9f1 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java @@ -36,6 +36,7 @@ import io.dataease.exception.DEException; import io.dataease.extensions.datasource.vo.DatasourceConfiguration; import io.dataease.extensions.view.dto.ChartViewDTO; import io.dataease.license.config.XpackInteract; +import io.dataease.license.manage.CoreLicManage; import io.dataease.log.DeLog; import io.dataease.model.BusiNodeRequest; import io.dataease.model.BusiNodeVO; @@ -133,6 +134,9 @@ public class DataVisualizationServer implements DataVisualizationApi { @Resource private CoreBusiManage coreBusiManage; + @Resource + private CoreLicManage coreLicManage; + @Override public DataVisualizationVO findCopyResource(Long dvId, String busiFlag) { DataVisualizationVO result = Objects.requireNonNull(CommonBeanFactory.proxy(this.getClass())).findById(new DataVisualizationBaseRequest(dvId, busiFlag)); @@ -572,6 +576,15 @@ public class DataVisualizationServer implements DataVisualizationApi { return extDataVisualizationMapper.findDvType(dvId); } + @Override + public String updateCheckVersion(Long dvId) { + DataVisualizationInfo updateInfo = new DataVisualizationInfo(); + updateInfo.setId(dvId); + updateInfo.setCheckVersion(coreLicManage.getVersion()); + visualizationInfoMapper.updateById(updateInfo); + return ""; + } + @Override public DataVisualizationVO decompression(DataVisualizationBaseRequest request) throws Exception { try { diff --git a/core/core-backend/src/main/resources/db/desktop/V2.10.3__ddl.sql b/core/core-backend/src/main/resources/db/desktop/V2.10.3__ddl.sql index 74322f57a9..6c8df1e11b 100644 --- a/core/core-backend/src/main/resources/db/desktop/V2.10.3__ddl.sql +++ b/core/core-backend/src/main/resources/db/desktop/V2.10.3__ddl.sql @@ -14,4 +14,7 @@ ALTER TABLE `visualization_link_jump_target_view_info` MODIFY COLUMN `target_view_id` varchar(50) NULL DEFAULT NULL COMMENT '目标图表ID' AFTER `source_field_active_id`, MODIFY COLUMN `target_field_id` varchar(50) NULL DEFAULT NULL COMMENT '目标字段ID' AFTER `target_view_id`; -update visualization_link_jump_target_view_info set target_type = 'view'; \ No newline at end of file +update visualization_link_jump_target_view_info set target_type = 'view'; +ALTER TABLE `data_visualization_info` + ADD COLUMN `check_version` varchar(50) NULL DEFAULT '1' COMMENT '内容检查标识'; +update data_visualization_info set check_version = '1'; \ No newline at end of file diff --git a/core/core-backend/src/main/resources/db/migration/V2.10.3__ddl.sql b/core/core-backend/src/main/resources/db/migration/V2.10.3__ddl.sql index ab5a84a61a..b912d2baff 100644 --- a/core/core-backend/src/main/resources/db/migration/V2.10.3__ddl.sql +++ b/core/core-backend/src/main/resources/db/migration/V2.10.3__ddl.sql @@ -18,4 +18,7 @@ ALTER TABLE `visualization_link_jump_target_view_info` MODIFY COLUMN `target_view_id` varchar(50) NULL DEFAULT NULL COMMENT '目标图表ID' AFTER `source_field_active_id`, MODIFY COLUMN `target_field_id` varchar(50) NULL DEFAULT NULL COMMENT '目标字段ID' AFTER `target_view_id`; -update visualization_link_jump_target_view_info set target_type = 'view'; \ No newline at end of file +update visualization_link_jump_target_view_info set target_type = 'view'; +ALTER TABLE `data_visualization_info` + ADD COLUMN `check_version` varchar(50) NULL DEFAULT '1' COMMENT '内容检查标识'; +update data_visualization_info set check_version = '1'; \ No newline at end of file diff --git a/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml index 793a8539d4..d3a5415ede 100644 --- a/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml +++ b/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml @@ -167,7 +167,8 @@ `delete_time`, `delete_by`, `version`, - `content_id` + `content_id`, + `check_version` FROM data_visualization_info where data_visualization_info.delete_flag = 0 and data_visualization_info.id = #{dvId} diff --git a/core/core-frontend/src/api/visualization/dataVisualization.ts b/core/core-frontend/src/api/visualization/dataVisualization.ts index 9f85d62fb3..eadd7990f4 100644 --- a/core/core-frontend/src/api/visualization/dataVisualization.ts +++ b/core/core-frontend/src/api/visualization/dataVisualization.ts @@ -35,6 +35,9 @@ export const findById = async ( return request.post({ url: '/dataVisualization/findById', data }) } +export const updateCheckVersion = dvId => + request.get({ url: `/dataVisualization/updateCheckVersion/${dvId}` }) + export const queryTreeApi = async (data: BusiTreeRequest): Promise => { return request.post({ url: '/dataVisualization/tree', data }).then(res => { return res?.data diff --git a/core/core-frontend/src/utils/canvasUtils.ts b/core/core-frontend/src/utils/canvasUtils.ts index 75f926fc6a..90a7aa09c9 100644 --- a/core/core-frontend/src/utils/canvasUtils.ts +++ b/core/core-frontend/src/utils/canvasUtils.ts @@ -17,7 +17,8 @@ import { findById, findCopyResource, saveCanvas, - updateCanvas + updateCanvas, + updateCheckVersion } from '@/api/visualization/dataVisualization' import { storeToRefs } from 'pinia' import { getPanelAllLinkageInfo } from '@/api/visualization/linkage' @@ -36,9 +37,10 @@ const { inMobile, dvInfo, canvasStyleData, componentData, canvasViewInfo, appDat const snapshotStore = snapshotStoreWithOut() import { useI18n } from '@/hooks/web/useI18n' import { useAppearanceStoreWithOut } from '@/store/modules/appearance' +import { useCache } from '@/hooks/web/useCache' const { t } = useI18n() const appearanceStore = useAppearanceStoreWithOut() - +const { wsCache } = useCache() export function chartTransStr2Object(targetIn, copy) { const target = copy === 'Y' ? cloneDeep(targetIn) : targetIn return target @@ -224,7 +226,13 @@ export function historyAdaptor( attachInfo, canvasVersion ) { + const curVersion = wsCache.get('x-de-execute-version') + if (canvasInfo['checkVersion'] === curVersion) { + return + } //历史字段适配 + canvasStyleResult.component['seniorStyleSetting'] = + canvasStyleResult.component['seniorStyleSetting'] || deepCopy(SENIOR_STYLE_SETTING_LIGHT) canvasStyleResult['fontFamily'] = canvasStyleResult['fontFamily'] || 'PingFang' canvasStyleResult.dashboard['showGrid'] = canvasStyleResult.dashboard['showGrid'] || false canvasStyleResult.dashboard['matrixBase'] = canvasStyleResult.dashboard['matrixBase'] || 4 @@ -254,6 +262,7 @@ export function historyAdaptor( canvasDataResult.forEach(componentItem => { historyItemAdaptor(componentItem, reportFilterInfo, attachInfo, canvasVersion, canvasInfo) }) + updateCheckVersion(canvasInfo.id) } // 重置仪表板、大屏中的其他组件 @@ -341,9 +350,6 @@ export function initCanvasDataPrepare(dvId, busiFlag, callBack) { const canvasStyleResult = JSON.parse(canvasInfo.canvasStyleData) const canvasViewInfoPreview = canvasInfo.canvasViewInfo historyAdaptor(canvasStyleResult, canvasDataResult, canvasInfo, attachInfo, canvasVersion) - //历史字段适配 - canvasStyleResult.component['seniorStyleSetting'] = - canvasStyleResult.component['seniorStyleSetting'] || deepCopy(SENIOR_STYLE_SETTING_LIGHT) const curPreviewGap = dvInfo.type === 'dashboard' && canvasStyleResult['dashboard'].gap === 'yes' ? canvasStyleResult['dashboard'].gapSize diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/DataVisualizationApi.java b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/DataVisualizationApi.java index 3b9401feb9..dcb425f464 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/DataVisualizationApi.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/DataVisualizationApi.java @@ -105,6 +105,12 @@ public interface DataVisualizationApi { @Operation(summary = "查询可视化资源类型") String findDvType(@PathVariable("dvId") Long dvId); + + @GetMapping("/updateCheckVersion/{dvId}") + @Operation(summary = "更新校验版本") + String updateCheckVersion(@PathVariable("dvId") Long dvId); + + /** * 从模板解压可视化资源 模板来源包括 模板市场、内部模板管理 * diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/DataVisualizationVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/DataVisualizationVO.java index 8609eaa452..e31cd241ea 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/DataVisualizationVO.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/DataVisualizationVO.java @@ -148,9 +148,13 @@ public class DataVisualizationVO implements Serializable { /** * 内容标识 */ - @JsonSerialize(using = ToStringSerializer.class) private String contentId; + /** + * 内容检查标识 + */ + private String checkVersion; + /** * 图表基本信息 */