refactor(仪表板、数据大屏): 优化仪表板展示速度
This commit is contained in:
parent
283804828f
commit
a3482a9f2f
@ -127,11 +127,21 @@ public class ChartViewManege {
|
||||
QueryWrapper<CoreChartView> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("scene_id", sceneId);
|
||||
List<ChartViewDTO> chartViewDTOS = transChart(coreChartViewMapper.selectList(wrapper));
|
||||
for (ChartViewDTO dto : chartViewDTOS) {
|
||||
QueryWrapper<CoreDatasetTableField> wp = new QueryWrapper<>();
|
||||
wp.eq("dataset_group_id", dto.getTableId());
|
||||
List<CoreDatasetTableField> coreDatasetTableFields = coreDatasetTableFieldMapper.selectList(wp);
|
||||
dto.setCalParams(Utils.getParams(datasetTableFieldManage.transDTO(coreDatasetTableFields)));
|
||||
if(!CollectionUtils.isEmpty(chartViewDTOS)){
|
||||
List<Long> tableIds = chartViewDTOS.stream()
|
||||
.map(ChartViewDTO::getTableId) // 提取 id
|
||||
.toList();
|
||||
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;
|
||||
}
|
||||
|
||||
@ -5,11 +5,11 @@ import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* 可视化大屏信息表
|
||||
* </p>
|
||||
*
|
||||
* @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 +
|
||||
"}";
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* </p>
|
||||
*
|
||||
* @author fit2cloud
|
||||
* @since 2024-11-18
|
||||
* @since 2024-11-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface DataVisualizationInfoMapper extends BaseMapper<DataVisualizationInfo> {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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';
|
||||
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';
|
||||
@ -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';
|
||||
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';
|
||||
@ -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}
|
||||
|
||||
@ -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<IResponse> => {
|
||||
return request.post({ url: '/dataVisualization/tree', data }).then(res => {
|
||||
return res?.data
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
/**
|
||||
* 从模板解压可视化资源 模板来源包括 模板市场、内部模板管理
|
||||
*
|
||||
|
||||
@ -148,9 +148,13 @@ public class DataVisualizationVO implements Serializable {
|
||||
/**
|
||||
* 内容标识
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private String contentId;
|
||||
|
||||
/**
|
||||
* 内容检查标识
|
||||
*/
|
||||
private String checkVersion;
|
||||
|
||||
/**
|
||||
* 图表基本信息
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user