Merge pull request #13511 from dataease/pr@dev-v2@refactor_show-speed

Pr@dev v2@refactor show speed
This commit is contained in:
王嘉豪 2024-11-22 19:09:41 +08:00 committed by GitHub
commit 5765c69b58
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 129 additions and 21 deletions

View File

@ -127,11 +127,21 @@ public class ChartViewManege {
QueryWrapper<CoreChartView> wrapper = new QueryWrapper<>(); QueryWrapper<CoreChartView> wrapper = new QueryWrapper<>();
wrapper.eq("scene_id", sceneId); wrapper.eq("scene_id", sceneId);
List<ChartViewDTO> chartViewDTOS = transChart(coreChartViewMapper.selectList(wrapper)); List<ChartViewDTO> chartViewDTOS = transChart(coreChartViewMapper.selectList(wrapper));
for (ChartViewDTO dto : chartViewDTOS) { if(!CollectionUtils.isEmpty(chartViewDTOS)){
QueryWrapper<CoreDatasetTableField> wp = new QueryWrapper<>(); List<Long> tableIds = chartViewDTOS.stream()
wp.eq("dataset_group_id", dto.getTableId()); .map(ChartViewDTO::getTableId) // 提取 id
List<CoreDatasetTableField> coreDatasetTableFields = coreDatasetTableFieldMapper.selectList(wp); .toList();
dto.setCalParams(Utils.getParams(datasetTableFieldManage.transDTO(coreDatasetTableFields))); if(!CollectionUtils.isEmpty(tableIds)){
QueryWrapper<CoreDatasetTableField> wp = new QueryWrapper<>();
wp.in("dataset_group_id", tableIds);
List<CoreDatasetTableField> coreDatasetTableFields = coreDatasetTableFieldMapper.selectList(wp);
Map<Long, List<CoreDatasetTableField>> groupedByTableId = coreDatasetTableFields.stream()
.collect(Collectors.groupingBy(CoreDatasetTableField::getDatasetGroupId));
chartViewDTOS.forEach(dto ->{
dto.setCalParams(Utils.getParams(datasetTableFieldManage.transDTO(groupedByTableId.get(dto.getTableId()))));
});
}
} }
return chartViewDTOS; return chartViewDTOS;
} }

View File

@ -5,11 +5,11 @@ import java.io.Serializable;
/** /**
* <p> * <p>
* * 可视化大屏信息表
* </p> * </p>
* *
* @author fit2cloud * @author fit2cloud
* @since 2024-04-11 * @since 2024-11-22
*/ */
@TableName("data_visualization_info") @TableName("data_visualization_info")
public class DataVisualizationInfo implements Serializable { public class DataVisualizationInfo implements Serializable {
@ -59,7 +59,7 @@ public class DataVisualizationInfo implements Serializable {
private String componentData; private String componentData;
/** /**
* 移动端布局 * 移动端布局0-关闭 1-开启
*/ */
private Boolean mobileLayout; private Boolean mobileLayout;
@ -128,11 +128,15 @@ public class DataVisualizationInfo implements Serializable {
*/ */
private Integer version; private Integer version;
/**
* 内容标识
*/
private String contentId; private String contentId;
public String getContentId() { /**
return contentId; * 内容检查标识
} */
private String checkVersion;
public void setContentId(String contentId) { public void setContentId(String contentId) {
this.contentId = contentId; this.contentId = contentId;
@ -322,6 +326,18 @@ public class DataVisualizationInfo implements Serializable {
this.version = version; this.version = version;
} }
public String getContentId() {
return contentId;
}
public String getCheckVersion() {
return checkVersion;
}
public void setCheckVersion(String checkVersion) {
this.checkVersion = checkVersion;
}
@Override @Override
public String toString() { public String toString() {
return "DataVisualizationInfo{" + return "DataVisualizationInfo{" +
@ -348,6 +364,8 @@ public class DataVisualizationInfo implements Serializable {
", deleteTime = " + deleteTime + ", deleteTime = " + deleteTime +
", deleteBy = " + deleteBy + ", deleteBy = " + deleteBy +
", version = " + version + ", version = " + version +
", contentId = " + contentId +
", checkVersion = " + checkVersion +
"}"; "}";
} }
} }

View File

@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
* </p> * </p>
* *
* @author fit2cloud * @author fit2cloud
* @since 2024-11-18 * @since 2024-11-22
*/ */
@Mapper @Mapper
public interface DataVisualizationInfoMapper extends BaseMapper<DataVisualizationInfo> { public interface DataVisualizationInfoMapper extends BaseMapper<DataVisualizationInfo> {

View File

@ -36,6 +36,7 @@ import io.dataease.exception.DEException;
import io.dataease.extensions.datasource.vo.DatasourceConfiguration; import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
import io.dataease.extensions.view.dto.ChartViewDTO; import io.dataease.extensions.view.dto.ChartViewDTO;
import io.dataease.license.config.XpackInteract; import io.dataease.license.config.XpackInteract;
import io.dataease.license.manage.CoreLicManage;
import io.dataease.log.DeLog; import io.dataease.log.DeLog;
import io.dataease.model.BusiNodeRequest; import io.dataease.model.BusiNodeRequest;
import io.dataease.model.BusiNodeVO; import io.dataease.model.BusiNodeVO;
@ -133,6 +134,9 @@ public class DataVisualizationServer implements DataVisualizationApi {
@Resource @Resource
private CoreBusiManage coreBusiManage; private CoreBusiManage coreBusiManage;
@Resource
private CoreLicManage coreLicManage;
@Override @Override
public DataVisualizationVO findCopyResource(Long dvId, String busiFlag) { public DataVisualizationVO findCopyResource(Long dvId, String busiFlag) {
DataVisualizationVO result = Objects.requireNonNull(CommonBeanFactory.proxy(this.getClass())).findById(new DataVisualizationBaseRequest(dvId, 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); 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 @Override
public DataVisualizationVO decompression(DataVisualizationBaseRequest request) throws Exception { public DataVisualizationVO decompression(DataVisualizationBaseRequest request) throws Exception {
try { try {

View File

@ -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_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`; 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'; 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';

View File

@ -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_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`; 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'; 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';

View File

@ -167,7 +167,8 @@
`delete_time`, `delete_time`,
`delete_by`, `delete_by`,
`version`, `version`,
`content_id` `content_id`,
`check_version`
FROM data_visualization_info FROM data_visualization_info
where data_visualization_info.delete_flag = 0 where data_visualization_info.delete_flag = 0
and data_visualization_info.id = #{dvId} and data_visualization_info.id = #{dvId}

View File

@ -35,6 +35,9 @@ export const findById = async (
return request.post({ url: '/dataVisualization/findById', data }) return request.post({ url: '/dataVisualization/findById', data })
} }
export const updateCheckVersion = dvId =>
request.get({ url: `/dataVisualization/updateCheckVersion/${dvId}` })
export const queryTreeApi = async (data: BusiTreeRequest): Promise<IResponse> => { export const queryTreeApi = async (data: BusiTreeRequest): Promise<IResponse> => {
return request.post({ url: '/dataVisualization/tree', data }).then(res => { return request.post({ url: '/dataVisualization/tree', data }).then(res => {
return res?.data return res?.data

View File

@ -236,6 +236,7 @@ const dvMainStore = dvMainStoreWithOut()
const { canvasStyleData, dvInfo } = storeToRefs(dvMainStore) const { canvasStyleData, dvInfo } = storeToRefs(dvMainStore)
import { import {
adaptCurThemeCommonStyleAll, adaptCurThemeCommonStyleAll,
adaptTitleFontFamilyAll,
DARK_THEME_DASHBOARD_BACKGROUND, DARK_THEME_DASHBOARD_BACKGROUND,
LIGHT_THEME_DASHBOARD_BACKGROUND LIGHT_THEME_DASHBOARD_BACKGROUND
} from '@/utils/canvasStyle' } from '@/utils/canvasStyle'
@ -303,6 +304,8 @@ const fontFamilyChange = () => {
'--de-canvas_custom_font', '--de-canvas_custom_font',
`${canvasStyleData.value.fontFamily}` `${canvasStyleData.value.fontFamily}`
) )
adaptTitleFontFamilyAll(canvasStyleData.value.fontFamily)
snapshotStore.recordSnapshotCache('renderChart')
} }
const themeChange = (modifyName?) => { const themeChange = (modifyName?) => {

View File

@ -84,6 +84,7 @@ import { ElFormItem, ElIcon } from 'element-plus-secondary'
import Icon from '../icon-custom/src/Icon.vue' import Icon from '../icon-custom/src/Icon.vue'
import { useAppearanceStoreWithOut } from '@/store/modules/appearance' import { useAppearanceStoreWithOut } from '@/store/modules/appearance'
import { CHART_FONT_FAMILY } from '@/views/chart/components/editor/util/chart' import { CHART_FONT_FAMILY } from '@/views/chart/components/editor/util/chart'
import { adaptTitleFontFamilyAll } from '@/utils/canvasStyle'
const snapshotStore = snapshotStoreWithOut() const snapshotStore = snapshotStoreWithOut()
const dvMainStore = dvMainStoreWithOut() const dvMainStore = dvMainStoreWithOut()
@ -101,6 +102,8 @@ const onFontFamilyChange = () => {
'--de-canvas_custom_font', '--de-canvas_custom_font',
`${canvasStyleData.value.fontFamily}` `${canvasStyleData.value.fontFamily}`
) )
adaptTitleFontFamilyAll(canvasStyleData.value.fontFamily)
snapshotStore.recordSnapshotCache('renderChart')
} }
const onThemeChange = () => { const onThemeChange = () => {
snapshotStore.recordSnapshotCache() snapshotStore.recordSnapshotCache()

View File

@ -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) { export function adaptCurThemeCommonStyle(component) {
if (['DeTabs'].includes(component.component)) { if (['DeTabs'].includes(component.component)) {
component.commonBackground['innerPadding'] = 0 component.commonBackground['innerPadding'] = 0

View File

@ -17,7 +17,8 @@ import {
findById, findById,
findCopyResource, findCopyResource,
saveCanvas, saveCanvas,
updateCanvas updateCanvas,
updateCheckVersion
} from '@/api/visualization/dataVisualization' } from '@/api/visualization/dataVisualization'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { getPanelAllLinkageInfo } from '@/api/visualization/linkage' import { getPanelAllLinkageInfo } from '@/api/visualization/linkage'
@ -36,9 +37,10 @@ const { inMobile, dvInfo, canvasStyleData, componentData, canvasViewInfo, appDat
const snapshotStore = snapshotStoreWithOut() const snapshotStore = snapshotStoreWithOut()
import { useI18n } from '@/hooks/web/useI18n' import { useI18n } from '@/hooks/web/useI18n'
import { useAppearanceStoreWithOut } from '@/store/modules/appearance' import { useAppearanceStoreWithOut } from '@/store/modules/appearance'
import { useCache } from '@/hooks/web/useCache'
const { t } = useI18n() const { t } = useI18n()
const appearanceStore = useAppearanceStoreWithOut() const appearanceStore = useAppearanceStoreWithOut()
const { wsCache } = useCache()
export function chartTransStr2Object(targetIn, copy) { export function chartTransStr2Object(targetIn, copy) {
const target = copy === 'Y' ? cloneDeep(targetIn) : targetIn const target = copy === 'Y' ? cloneDeep(targetIn) : targetIn
return target return target
@ -224,7 +226,13 @@ export function historyAdaptor(
attachInfo, attachInfo,
canvasVersion 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['fontFamily'] = canvasStyleResult['fontFamily'] || 'PingFang'
canvasStyleResult.dashboard['showGrid'] = canvasStyleResult.dashboard['showGrid'] || false canvasStyleResult.dashboard['showGrid'] = canvasStyleResult.dashboard['showGrid'] || false
canvasStyleResult.dashboard['matrixBase'] = canvasStyleResult.dashboard['matrixBase'] || 4 canvasStyleResult.dashboard['matrixBase'] = canvasStyleResult.dashboard['matrixBase'] || 4
@ -254,6 +262,7 @@ export function historyAdaptor(
canvasDataResult.forEach(componentItem => { canvasDataResult.forEach(componentItem => {
historyItemAdaptor(componentItem, reportFilterInfo, attachInfo, canvasVersion, canvasInfo) 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 canvasStyleResult = JSON.parse(canvasInfo.canvasStyleData)
const canvasViewInfoPreview = canvasInfo.canvasViewInfo const canvasViewInfoPreview = canvasInfo.canvasViewInfo
historyAdaptor(canvasStyleResult, canvasDataResult, canvasInfo, attachInfo, canvasVersion) historyAdaptor(canvasStyleResult, canvasDataResult, canvasInfo, attachInfo, canvasVersion)
//历史字段适配
canvasStyleResult.component['seniorStyleSetting'] =
canvasStyleResult.component['seniorStyleSetting'] || deepCopy(SENIOR_STYLE_SETTING_LIGHT)
const curPreviewGap = const curPreviewGap =
dvInfo.type === 'dashboard' && canvasStyleResult['dashboard'].gap === 'yes' dvInfo.type === 'dashboard' && canvasStyleResult['dashboard'].gap === 'yes'
? canvasStyleResult['dashboard'].gapSize ? canvasStyleResult['dashboard'].gapSize

View File

@ -105,6 +105,12 @@ public interface DataVisualizationApi {
@Operation(summary = "查询可视化资源类型") @Operation(summary = "查询可视化资源类型")
String findDvType(@PathVariable("dvId") Long dvId); String findDvType(@PathVariable("dvId") Long dvId);
@GetMapping("/updateCheckVersion/{dvId}")
@Operation(summary = "更新校验版本")
String updateCheckVersion(@PathVariable("dvId") Long dvId);
/** /**
* 从模板解压可视化资源 模板来源包括 模板市场内部模板管理 * 从模板解压可视化资源 模板来源包括 模板市场内部模板管理
* *

View File

@ -148,9 +148,13 @@ public class DataVisualizationVO implements Serializable {
/** /**
* 内容标识 * 内容标识
*/ */
@JsonSerialize(using = ToStringSerializer.class)
private String contentId; private String contentId;
/**
* 内容检查标识
*/
private String checkVersion;
/** /**
* 图表基本信息 * 图表基本信息
*/ */