mirror of
https://github.com/dataease/dataease.git
synced 2026-05-24 06:18:10 +08:00
feat(应用): 应用模板支持选择存量数据源
This commit is contained in:
@@ -20,9 +20,9 @@ public class PanelConstants {
|
||||
|
||||
public final static String PANEL_NODE_TYPE_PANEL = "panel";
|
||||
|
||||
public final static String OPT_TYPE_INSERT="insert";
|
||||
public final static String OPT_TYPE_INSERT = "insert";
|
||||
|
||||
public final static String OPT_TYPE_UPDATE="update";
|
||||
public final static String OPT_TYPE_UPDATE = "update";
|
||||
|
||||
public final static String PANEL_GATHER_DEFAULT_PANEL = "default_panel";
|
||||
|
||||
@@ -68,4 +68,16 @@ public class PanelConstants {
|
||||
|
||||
}
|
||||
|
||||
|
||||
//应用数据源来源
|
||||
public static final class APP_DATASOURCE_FROM {
|
||||
|
||||
// 新建
|
||||
public static final String NEW = "new";
|
||||
|
||||
// 复用
|
||||
public static final String HISTORY = "history";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -29,5 +29,9 @@ public class PanelAppTemplateApplyRequest {
|
||||
|
||||
private String appTemplateId;
|
||||
|
||||
private String datasourceFrom;
|
||||
|
||||
private String datasourceHistoryId;
|
||||
|
||||
private List<Datasource> datasourceList;
|
||||
}
|
||||
|
||||
@@ -16,40 +16,42 @@
|
||||
</resultMap>
|
||||
<select id="query" parameterType="io.dataease.service.panel.applog.AppLogQueryParam" resultMap="BaseResultMapDTO">
|
||||
select
|
||||
logInfo.*,
|
||||
get_auths(logInfo.dataset_group_id,'dataset',#{userId}) as `dataset_privileges`,
|
||||
get_auths(logInfo.panel_id,'panel',#{userId}) as `panel_privileges`,
|
||||
get_auths(logInfo.datasource_id,'link',#{userId}) as `datasource_privileges`
|
||||
from
|
||||
logInfo.*,
|
||||
get_auths(logInfo.dataset_group_id,'dataset',#{userId}) as `dataset_privileges`,
|
||||
get_auths(logInfo.panel_id,'panel',#{userId}) as `panel_privileges`,
|
||||
get_auths(logInfo.datasource_id,'link',#{userId}) as `datasource_privileges`
|
||||
from
|
||||
(select * from
|
||||
(SELECT
|
||||
panel_app_template_log.id,
|
||||
panel_app_template_log.app_template_id,
|
||||
panel_app_template_log.app_template_name,
|
||||
datasource.id as datasource_id,
|
||||
panel_app_template_log.source_datasource_name,
|
||||
dataset_group.id as dataset_group_id,
|
||||
panel_app_template_log.source_dataset_group_name,
|
||||
panel_group.id as panel_id,
|
||||
panel_app_template_log.source_panel_name,
|
||||
panel_app_template_log.apply_time,
|
||||
panel_app_template_log.apply_persion,
|
||||
panel_app_template_log.is_success,
|
||||
panel_app_template_log.remark,
|
||||
panel_group.pid as panel_group_pid,
|
||||
datasource.type as datasource_type,
|
||||
dataset_group.pid as dataset_group_pid,
|
||||
IFNULL(panel_app_template.name,CONCAT(panel_app_template_log.app_template_name,'(Deleted)')) as app_name,
|
||||
IFNULL(panel_group.name,CONCAT(panel_app_template_log.source_panel_name,'(Deleted)')) as panel_name,
|
||||
IFNULL(dataset_group.name,CONCAT(panel_app_template_log.source_dataset_group_name,'(Deleted)')) as dataset_group_name,
|
||||
IFNULL(datasource.`name`,CONCAT(panel_app_template_log.source_datasource_name,'(Deleted)')) as datasource_name
|
||||
FROM
|
||||
panel_app_template_log
|
||||
LEFT JOIN panel_group ON panel_app_template_log.panel_id = panel_group.id
|
||||
left join dataset_group on panel_app_template_log.dataset_group_id = dataset_group.id
|
||||
left join datasource on panel_app_template_log.datasource_id = datasource.id
|
||||
left join panel_app_template on panel_app_template_log.app_template_id = panel_app_template.id
|
||||
) t
|
||||
(SELECT
|
||||
panel_app_template_log.id,
|
||||
panel_app_template_log.app_template_id,
|
||||
panel_app_template_log.app_template_name,
|
||||
datasource.id as datasource_id,
|
||||
panel_app_template_log.source_datasource_name,
|
||||
panel_app_template_log.datasource_from,
|
||||
dataset_group.id as dataset_group_id,
|
||||
panel_app_template_log.source_dataset_group_name,
|
||||
panel_group.id as panel_id,
|
||||
panel_app_template_log.source_panel_name,
|
||||
panel_app_template_log.apply_time,
|
||||
panel_app_template_log.apply_persion,
|
||||
panel_app_template_log.is_success,
|
||||
panel_app_template_log.remark,
|
||||
panel_group.pid as panel_group_pid,
|
||||
datasource.type as datasource_type,
|
||||
dataset_group.pid as dataset_group_pid,
|
||||
IFNULL(panel_app_template.name,CONCAT(panel_app_template_log.app_template_name,'(Deleted)')) as app_name,
|
||||
IFNULL(panel_group.name,CONCAT(panel_app_template_log.source_panel_name,'(Deleted)')) as panel_name,
|
||||
IFNULL(dataset_group.name,CONCAT(panel_app_template_log.source_dataset_group_name,'(Deleted)')) as
|
||||
dataset_group_name,
|
||||
IFNULL(datasource.`name`,CONCAT(panel_app_template_log.source_datasource_name,'(Deleted)')) as datasource_name
|
||||
FROM
|
||||
panel_app_template_log
|
||||
LEFT JOIN panel_group ON panel_app_template_log.panel_id = panel_group.id
|
||||
left join dataset_group on panel_app_template_log.dataset_group_id = dataset_group.id
|
||||
left join datasource on panel_app_template_log.datasource_id = datasource.id
|
||||
left join panel_app_template on panel_app_template_log.app_template_id = panel_app_template.id
|
||||
) t
|
||||
where 1=1
|
||||
<if test="extendCondition != null">
|
||||
and
|
||||
|
||||
@@ -137,13 +137,18 @@ public class PanelAppTemplateService {
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Map<String, String> applyDatasource(List<Datasource> oldDatasourceList, List<Datasource> newDatasourceList) throws Exception {
|
||||
public Map<String, String> applyDatasource(List<Datasource> oldDatasourceList, PanelAppTemplateApplyRequest request) throws Exception {
|
||||
Map<String, String> datasourceRealMap = new HashMap<>();
|
||||
for (int i = 0; i < newDatasourceList.size(); i++) {
|
||||
Datasource datasource = newDatasourceList.get(0);
|
||||
datasource.setId(null);
|
||||
Datasource newDatasource = datasourceService.addDatasource(datasource);
|
||||
datasourceRealMap.put(oldDatasourceList.get(i).getId(), newDatasource.getId());
|
||||
if (PanelConstants.APP_DATASOURCE_FROM.HISTORY.equals(request.getDatasourceFrom())) {
|
||||
datasourceRealMap.put(oldDatasourceList.get(0).getId(), request.getDatasourceHistoryId());
|
||||
} else {
|
||||
List<Datasource> newDatasourceList = request.getDatasourceList();
|
||||
for (int i = 0; i < newDatasourceList.size(); i++) {
|
||||
Datasource datasource = newDatasourceList.get(0);
|
||||
datasource.setId(null);
|
||||
Datasource newDatasource = datasourceService.addDatasource(datasource);
|
||||
datasourceRealMap.put(oldDatasourceList.get(i).getId(), newDatasource.getId());
|
||||
}
|
||||
}
|
||||
return datasourceRealMap;
|
||||
}
|
||||
@@ -366,18 +371,22 @@ public class PanelAppTemplateService {
|
||||
datasetGroup.setPid(request.getDatasetGroupPid());
|
||||
datasetGroup.setName(request.getDatasetGroupName());
|
||||
dataSetGroupService.checkName(datasetGroup);
|
||||
request.getDatasourceList().stream().forEach(datasource -> {
|
||||
datasourceService.checkName(datasource.getName(), datasource.getType(), null);
|
||||
});
|
||||
if (PanelConstants.APP_DATASOURCE_FROM.NEW.equals(request.getDatasourceFrom())) {
|
||||
request.getDatasourceList().stream().forEach(datasource -> {
|
||||
datasourceService.checkName(datasource.getName(), datasource.getType(), null);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
DatasetGroup datasetGroup = new DatasetGroup();
|
||||
datasetGroup.setPid(request.getDatasetGroupPid());
|
||||
datasetGroup.setName(request.getDatasetGroupName());
|
||||
datasetGroup.setId(request.getDatasetGroupId());
|
||||
dataSetGroupService.checkName(datasetGroup);
|
||||
request.getDatasourceList().stream().forEach(datasource -> {
|
||||
datasourceService.checkName(datasource.getName(), datasource.getType(), datasource.getId());
|
||||
});
|
||||
if (PanelConstants.APP_DATASOURCE_FROM.NEW.equals(request.getDatasourceFrom())) {
|
||||
request.getDatasourceList().stream().forEach(datasource -> {
|
||||
datasourceService.checkName(datasource.getName(), datasource.getType(), datasource.getId());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -898,7 +898,7 @@ public class PanelGroupService {
|
||||
List<PanelView> panelViewsInfo = gson.fromJson(appInfo.getPanelViewsInfo(), new TypeToken<List<PanelView>>() {
|
||||
}.getType());
|
||||
|
||||
Map<String, String> datasourceRealMap = panelAppTemplateService.applyDatasource(oldDatasourceInfo, request.getDatasourceList());
|
||||
Map<String, String> datasourceRealMap = panelAppTemplateService.applyDatasource(oldDatasourceInfo, request);
|
||||
|
||||
Map<String, String> datasetsRealMap = panelAppTemplateService.applyDataset(datasetTablesInfo, datasourceRealMap, asideDatasetGroupId);
|
||||
|
||||
@@ -909,7 +909,7 @@ public class PanelGroupService {
|
||||
Map<String, String> datasetFieldsRealMap = panelAppTemplateService.applyDatasetField(datasetTableFieldsInfo, datasetsRealMap, datasetTypeRealMap, datasetFieldsMd5FormatRealMap);
|
||||
|
||||
panelAppTemplateService.createDorisTable(datasetTablesInfo);
|
||||
|
||||
|
||||
panelAppTemplateService.resetCustomAndUnionDataset(datasetTablesInfo, datasetsRealMap, datasetFieldsRealMap);
|
||||
|
||||
Map<String, String> chartViewsRealMap = panelAppTemplateService.applyViews(chartViewsInfo, datasetsRealMap, datasetFieldsRealMap, datasetFieldsMd5FormatRealMap, newPanelId);
|
||||
@@ -922,17 +922,19 @@ public class PanelGroupService {
|
||||
|
||||
String newDatasourceId = datasourceRealMap.entrySet().stream().findFirst().get().getValue();
|
||||
|
||||
String newDatasourceName = request.getDatasourceList().get(0).getName();
|
||||
|
||||
PanelAppTemplateLog templateLog = new PanelAppTemplateLog();
|
||||
templateLog.setPanelId(newPanelId);
|
||||
templateLog.setSourcePanelName(request.getPanelName());
|
||||
templateLog.setDatasourceId(newDatasourceId);
|
||||
templateLog.setSourceDatasourceName(newDatasourceName);
|
||||
if (PanelConstants.APP_DATASOURCE_FROM.NEW.equals(request.getDatasourceFrom())) {
|
||||
templateLog.setSourceDatasourceName(request.getDatasourceList().get(0).getName());
|
||||
}
|
||||
templateLog.setDatasetGroupId(asideDatasetGroupId);
|
||||
templateLog.setSourceDatasetGroupName(request.getDatasetGroupName());
|
||||
templateLog.setAppTemplateId(appInfo.getId());
|
||||
templateLog.setAppTemplateName(appInfo.getName());
|
||||
templateLog.setDatasourceFrom(request.getDatasourceFrom());
|
||||
appTemplateLogService.newAppApplyLog(templateLog);
|
||||
return newPanelId;
|
||||
}
|
||||
|
||||
2
backend/src/main/resources/db/migration/V45__1.18.sql
Normal file
2
backend/src/main/resources/db/migration/V45__1.18.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `panel_app_template_log`
|
||||
ADD COLUMN `datasource_from` varchar(255) NULL DEFAULT 'new' COMMENT '数据源来源' AFTER `datasource_id`;
|
||||
Reference in New Issue
Block a user