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;
+
/**
* 图表基本信息
*/