forked from github/dataease
Merge pull request #12400 from dataease/pr@dev-v2@perf_front_request
perf(X-Pack): 前端同步请求优化合并
This commit is contained in:
commit
0d3e8b0510
@ -0,0 +1,42 @@
|
||||
package io.dataease.visualization.manage;
|
||||
|
||||
import io.dataease.dataset.manage.DatasetGroupManage;
|
||||
import io.dataease.datasource.manage.DataSourceManage;
|
||||
import io.dataease.model.BusiNodeRequest;
|
||||
import io.dataease.model.BusiNodeVO;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component("coreBusiManage")
|
||||
public class CoreBusiManage {
|
||||
|
||||
@Resource
|
||||
private CoreVisualizationManage coreVisualizationManage;
|
||||
|
||||
@Resource
|
||||
private DataSourceManage dataSourceManage;
|
||||
|
||||
@Resource
|
||||
private DatasetGroupManage datasetGroupManage;
|
||||
|
||||
public Map<String, List<BusiNodeVO>> interactiveTree(Map<String, BusiNodeRequest> requestMap) {
|
||||
Map<String, List<BusiNodeVO>> result = new HashMap<>();
|
||||
for (Map.Entry<String, BusiNodeRequest> entry : requestMap.entrySet()) {
|
||||
BusiNodeRequest busiNodeRequest = entry.getValue();
|
||||
String key = entry.getKey();
|
||||
if (StringUtils.equalsIgnoreCase(key, "datasource")) {
|
||||
result.put(key, dataSourceManage.tree(busiNodeRequest));
|
||||
} else if (StringUtils.equalsIgnoreCase(key, "dataset")) {
|
||||
result.put(key, datasetGroupManage.tree(busiNodeRequest));
|
||||
} else if (StringUtils.equalsAnyIgnoreCase(key, "dashboard", "dataV")) {
|
||||
result.put(key, coreVisualizationManage.tree(busiNodeRequest));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
@ -51,6 +51,7 @@ import io.dataease.visualization.dao.auto.entity.VisualizationWatermark;
|
||||
import io.dataease.visualization.dao.auto.mapper.DataVisualizationInfoMapper;
|
||||
import io.dataease.visualization.dao.auto.mapper.VisualizationWatermarkMapper;
|
||||
import io.dataease.visualization.dao.ext.mapper.ExtDataVisualizationMapper;
|
||||
import io.dataease.visualization.manage.CoreBusiManage;
|
||||
import io.dataease.visualization.manage.CoreVisualizationManage;
|
||||
import io.dataease.visualization.utils.VisualizationUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
@ -128,6 +129,9 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
||||
@Autowired
|
||||
private CoreDatasourceMapper coreDatasourceMapper;
|
||||
|
||||
@Resource
|
||||
private CoreBusiManage coreBusiManage;
|
||||
|
||||
@Override
|
||||
public DataVisualizationVO findCopyResource(Long dvId, String busiFlag) {
|
||||
DataVisualizationVO result = findById(new DataVisualizationBaseRequest(dvId, busiFlag));
|
||||
@ -484,6 +488,11 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
||||
return coreVisualizationManage.tree(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<BusiNodeVO>> interactiveTree(Map<String, BusiNodeRequest> requestMap) {
|
||||
return coreBusiManage.interactiveTree(requestMap);
|
||||
}
|
||||
|
||||
@DeLog(id = "#p0.id", pid = "#p0.pid", ot = LogOT.MODIFY, stExp = "#p0.type")
|
||||
@Transactional
|
||||
@Override
|
||||
|
@ -41,6 +41,12 @@ export const queryTreeApi = async (data: BusiTreeRequest): Promise<IResponse> =>
|
||||
})
|
||||
}
|
||||
|
||||
export const queryBusiTreeApi = async (data): Promise<IResponse> => {
|
||||
return request.post({ url: '/dataVisualization/interactiveTree', data }).then(res => {
|
||||
return res?.data
|
||||
})
|
||||
}
|
||||
|
||||
export const findDvType = async dvId =>
|
||||
request.get({ url: `/dataVisualization/findDvType/${dvId}` })
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { store } from '@/store'
|
||||
import { queryTreeApi } from '@/api/visualization/dataVisualization'
|
||||
import { queryTreeApi, queryBusiTreeApi } from '@/api/visualization/dataVisualization'
|
||||
import { getDatasetTree } from '@/api/dataset'
|
||||
import { listDatasources } from '@/api/datasource'
|
||||
import type { BusiTreeRequest, BusiTreeNode } from '@/models/tree/TreeNode'
|
||||
@ -47,7 +47,7 @@ export const interactiveStore = defineStore('interactive', {
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
async setInteractive(param: BusiTreeRequest) {
|
||||
async setInteractive(param: BusiTreeRequest, resParam?: object) {
|
||||
const flag = busiFlagMap.findIndex(item => item === param.busiFlag)
|
||||
if (!hasMenuAuth(flag) && !window.DataEaseBi && !appStore.getIsIframe) {
|
||||
const tempData: InnerInteractive = {
|
||||
@ -66,8 +66,11 @@ export const interactiveStore = defineStore('interactive', {
|
||||
}
|
||||
return []
|
||||
}
|
||||
const method = apiMap[flag]
|
||||
const res = await method(param)
|
||||
let res = resParam
|
||||
if (!resParam) {
|
||||
const method = apiMap[flag]
|
||||
res = await method(param)
|
||||
}
|
||||
this.data[flag] = convertInteractive(res)
|
||||
if (flag === 0) {
|
||||
wsCache.set('panel-weight', convertLocalStorage(this.data[flag]))
|
||||
@ -78,6 +81,10 @@ export const interactiveStore = defineStore('interactive', {
|
||||
return res
|
||||
},
|
||||
async initInteractive(refresh?: boolean) {
|
||||
if (refresh) {
|
||||
await this.loadBusiInteractive()
|
||||
return
|
||||
}
|
||||
let index = 4
|
||||
while (index--) {
|
||||
if (!this.data[index] || refresh) {
|
||||
@ -88,6 +95,20 @@ export const interactiveStore = defineStore('interactive', {
|
||||
}
|
||||
}
|
||||
},
|
||||
async loadBusiInteractive() {
|
||||
const param = {}
|
||||
for (let i = 0; i < busiFlagMap.length; i++) {
|
||||
const key = busiFlagMap[i]
|
||||
if (window.DataEaseBi || appStore.getIsIframe || hasMenuAuth(i)) {
|
||||
param[key] = { busiFlag: key }
|
||||
}
|
||||
}
|
||||
const data = await queryBusiTreeApi(param)
|
||||
for (const busiKey in data) {
|
||||
const res = data[busiKey]
|
||||
this.setInteractive(param[busiKey], res)
|
||||
}
|
||||
},
|
||||
clear() {
|
||||
this.data = {}
|
||||
wsCache.set('panel-weight', {})
|
||||
|
2
de-xpack
2
de-xpack
@ -1 +1 @@
|
||||
Subproject commit 82b33709e27888f38ec4f2fd974efc405a0a9506
|
||||
Subproject commit 9c5aa6bd7d255286384f86b1a50ff153b041d929
|
@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static io.dataease.constant.AuthResourceEnum.PANEL;
|
||||
|
||||
@ -72,6 +73,10 @@ public interface DataVisualizationApi {
|
||||
@Operation(summary = "查询可视化资源树")
|
||||
List<BusiNodeVO> tree(@RequestBody BusiNodeRequest request);
|
||||
|
||||
@PostMapping("/interactiveTree")
|
||||
@Operation(summary = "查询业务资源树")
|
||||
Map<String, List<BusiNodeVO>> interactiveTree(@RequestBody Map<String, BusiNodeRequest> requestMap);
|
||||
|
||||
@PostMapping("/move")
|
||||
@DePermit(value = {"#p0.id+':manage'", "#p0.pid+':manage'"}, busiFlag = "#p0.type")
|
||||
@Operation(summary = "移动可视化资源")
|
||||
|
Loading…
Reference in New Issue
Block a user