Merge pull request #10966 from dataease/pr@dev-v2@feat_app

feat(仪表板、大屏): 支持应用导出
This commit is contained in:
王嘉豪 2024-07-15 19:10:07 +08:00 committed by GitHub
commit d2345ee259
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 859 additions and 71 deletions

View File

@ -2,6 +2,7 @@ package io.dataease.template.dao.ext;
import io.dataease.api.template.dto.TemplateManageDTO;
import io.dataease.api.template.request.TemplateManageRequest;
import io.dataease.api.visualization.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -28,6 +29,29 @@ public interface ExtVisualizationTemplateMapper{
Long checkCategoryTemplateBatchNames(@Param("templateNames") List<String> templateNames,@Param("categories") List<String> categories,@Param("templateArray") List<String> templateArray);
List<String> findTemplateCategories(@Param("templateId") String templateId);
List<String> findTemplateArrayCategories(@Param("templateArray") List<String> templateArray);
List<AppCoreChartViewVO> findAppViewInfo(@Param("viewIds") List<Long> viewIds);
List<AppCoreDatasetGroupVO> findAppDatasetGroupInfo(@Param("dsIds") List<Long> dsIds);
List<AppCoreDatasetTableVO> findAppDatasetTableInfo(@Param("dsIds") List<Long> dsIds);
List<AppCoreDatasetTableFieldVO> findAppDatasetTableFieldInfo(@Param("dsIds") List<Long> dsIds);
List<AppCoreDatasourceVO> findAppDatasourceInfo(@Param("dsIds") List<Long> dsIds);
List<AppCoreDatasourceTaskVO> findAppDatasourceTaskInfo(@Param("dsIds") List<Long> dsIds);
List<VisualizationLinkageVO> findAppLinkageInfo(@Param("dvId") Long dvId);
List<VisualizationLinkageFieldVO> findAppLinkageFieldInfo(@Param("dvId") Long dvId);
List<VisualizationLinkJumpVO> findAppLinkJumpInfo(@Param("dvId") Long dvId);
List<VisualizationLinkJumpInfoVO> findAppLinkJumpInfoInfo(@Param("dvId") Long dvId);
List<VisualizationLinkJumpTargetViewInfoVO> findAppJumpTargetViewInfo(@Param("dvId") Long dvId);
}

View File

@ -2,13 +2,12 @@ package io.dataease.visualization.server;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.dataease.api.visualization.request.VisualizationAppExportRequest;
import io.dataease.api.visualization.vo.*;
import io.dataease.dataset.manage.DatasetDataManage;
import io.dataease.dataset.manage.DatasetGroupManage;
import io.dataease.dataset.manage.DatasetTableManage;
import io.dataease.extensions.datasource.dto.DatasetTableDTO;
import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO;
import io.dataease.extensions.datasource.dto.DatasourceDTO;
import io.dataease.extensions.view.dto.ChartViewDTO;
import io.dataease.api.template.dto.TemplateManageFileDTO;
import io.dataease.api.template.dto.VisualizationTemplateExtendDataDTO;
@ -35,6 +34,7 @@ import io.dataease.template.dao.auto.entity.VisualizationTemplate;
import io.dataease.template.dao.auto.entity.VisualizationTemplateExtendData;
import io.dataease.template.dao.auto.mapper.VisualizationTemplateExtendDataMapper;
import io.dataease.template.dao.auto.mapper.VisualizationTemplateMapper;
import io.dataease.template.dao.ext.ExtVisualizationTemplateMapper;
import io.dataease.template.manage.TemplateCenterManage;
import io.dataease.utils.*;
import io.dataease.visualization.dao.auto.entity.DataVisualizationInfo;
@ -45,7 +45,6 @@ import io.dataease.visualization.dao.ext.mapper.ExtDataVisualizationMapper;
import io.dataease.visualization.manage.CoreVisualizationManage;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
@ -102,6 +101,9 @@ public class DataVisualizationServer implements DataVisualizationApi {
@Resource
private DatasetDataManage datasetDataManage;
@Resource
private ExtVisualizationTemplateMapper appTemplateMapper;
@Override
public DataVisualizationVO findCopyResource(Long dvId, String busiFlag) {
DataVisualizationVO result = findById(new DataVisualizationBaseRequest(dvId, busiFlag));
@ -131,11 +133,11 @@ public class DataVisualizationServer implements DataVisualizationApi {
BeanUtils.copyBean(watermarkVO, watermark);
result.setWatermarkInfo(watermarkVO);
if(DataVisualizationConstants.QUERY_SOURCE.REPORT.equals(request.getSource()) && request.getTaskId() != null){
if (DataVisualizationConstants.QUERY_SOURCE.REPORT.equals(request.getSource()) && request.getTaskId() != null) {
//获取定时报告过自定义过滤组件信息
List<VisualizationReportFilterVO> filterVOS = extDataVisualizationMapper.queryReportFilter(dvId,request.getTaskId());
List<VisualizationReportFilterVO> filterVOS = extDataVisualizationMapper.queryReportFilter(dvId, request.getTaskId());
if (!CollectionUtils.isEmpty(filterVOS)) {
Map<Long, VisualizationReportFilterVO> reportFilterInfo = filterVOS.stream().collect(Collectors.toMap(VisualizationReportFilterVO::getFilterId, filterVo ->filterVo));
Map<Long, VisualizationReportFilterVO> reportFilterInfo = filterVOS.stream().collect(Collectors.toMap(VisualizationReportFilterVO::getFilterId, filterVo -> filterVo));
result.setReportFilterInfo(reportFilterInfo);
}
}
@ -350,13 +352,13 @@ public class DataVisualizationServer implements DataVisualizationApi {
for (Map.Entry<String, String> entry : dynamicDataMap.entrySet()) {
String originViewId = entry.getKey();
Object viewInfo = entry.getValue();
try{
try {
// 旧模板图表过滤器适配
if(viewInfo instanceof Map && ((Map)viewInfo).get("customFilter") instanceof ArrayList){
((Map)viewInfo).put("customFilter",new HashMap<>());
if (viewInfo instanceof Map && ((Map) viewInfo).get("customFilter") instanceof ArrayList) {
((Map) viewInfo).put("customFilter", new HashMap<>());
}
}catch(Exception e){
LogUtil.error("History Adaptor Error",e);
} catch (Exception e) {
LogUtil.error("History Adaptor Error", e);
}
String originViewData = JsonUtil.toJSONString(entry.getValue()).toString();
ChartViewDTO chartView = JsonUtil.parseObject(originViewData, ChartViewDTO.class);
@ -381,7 +383,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
request.setCanvasStyleData(templateStyle);
//Store static resource into the server
staticResourceServer.saveFilesToServe(staticResource);
return new DataVisualizationVO(newDvId, name, dvType,version, templateStyle, templateData, canvasViewInfo, null);
return new DataVisualizationVO(newDvId, name, dvType, version, templateStyle, templateData, canvasViewInfo, null);
}
@Override
@ -393,47 +395,46 @@ public class DataVisualizationServer implements DataVisualizationApi {
public List<VisualizationViewTableDTO> detailList(Long dvId) {
List<VisualizationViewTableDTO> result = extDataVisualizationMapper.getVisualizationViewDetails(dvId);
DataVisualizationInfo dvInfo = visualizationInfoMapper.selectById(dvId);
if(dvInfo != null && !CollectionUtils.isEmpty(result)){
if (dvInfo != null && !CollectionUtils.isEmpty(result)) {
String componentData = dvInfo.getComponentData();
return result.stream().filter(item ->componentData.indexOf(String.valueOf(item.getId()))>0).toList();
}else{
return result.stream().filter(item -> componentData.indexOf(String.valueOf(item.getId())) > 0).toList();
} else {
return result;
}
}
@Override
public VisualizationExport2AppVO export2AppCheck(Long dvId) {
//1.获取所有视图信息
List<ChartViewDTO> chartViewsInfo = chartViewManege.listBySceneId(dvId);
//2.获取视图扩展字段信息 获取所有数据集信息
List<Long> allTableIds = chartViewsInfo.stream().map(ChartViewDTO::getTableId).collect(Collectors.toList());
List<DatasetTableDTO> datasetTablesInfo = datasetGroupManage.getDetail(allTableIds);
// dataset check
if (CollectionUtils.isEmpty(datasetTablesInfo)) {
return new VisualizationExport2AppVO(Translator.get("I18N_APP_NO_DATASET_ERROR"));
public VisualizationExport2AppVO export2AppCheck(VisualizationAppExportRequest appExportRequest) {
List<Long> viewIds = appExportRequest.getViewIds();
List<Long> dsIds = appExportRequest.getDsIds();
Long dvId = appExportRequest.getDvId();
List<AppCoreChartViewVO> chartViewVOInfo = null;
List<AppCoreDatasetGroupVO> datasetGroupVOInfo = null;
List<AppCoreDatasetTableVO> datasetTableVOInfo = null;
List<AppCoreDatasetTableFieldVO> datasetTableFieldVOInfo = null;
List<AppCoreDatasourceVO> datasourceVOInfo = null;
List<AppCoreDatasourceTaskVO> datasourceTaskVOInfo = null;
//TODO 获取所有视图信息
if (CollectionUtils.isEmpty(viewIds)) {
chartViewVOInfo = appTemplateMapper.findAppViewInfo(viewIds);
}
if (CollectionUtils.isEmpty(dsIds)) {
datasetGroupVOInfo = appTemplateMapper.findAppDatasetGroupInfo(dsIds);
datasetTableVOInfo = appTemplateMapper.findAppDatasetTableInfo(dsIds);
datasetTableFieldVOInfo = appTemplateMapper.findAppDatasetTableFieldInfo(dsIds);
datasourceVOInfo = appTemplateMapper.findAppDatasourceInfo(dsIds);
datasourceTaskVOInfo = appTemplateMapper.findAppDatasourceTaskInfo(dsIds);
}
//4.获取所有数据集字段信息
List<DatasetTableFieldDTO> datasetTableFieldsInfo = new ArrayList<>();
datasetTablesInfo.stream().forEach(datasetTable ->{
try {
List<DatasetTableFieldDTO> result = datasetDataManage.getTableFields(datasetTable);
if(!CollectionUtils.isEmpty(result)){
datasetTableFieldsInfo.addAll(result);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
});
//校验标准 1.存在视图且所有视图的数据来源必须是dataset 2.存在数据集且没有excel数据集 3.存在数据源且是单数据源
//1.view check
if (CollectionUtils.isEmpty(chartViewsInfo)) {
return new VisualizationExport2AppVO(Translator.get("I18N_APP_NO_VIEW_ERROR"));
} else if (chartViewsInfo.stream().filter(chartView -> chartView.getDataFrom().equals("template")).collect(Collectors.toList()).size() > 0) {
return new VisualizationExport2AppVO(Translator.get("I18N_APP_TEMPLATE_VIEW_ERROR"));
}
return new VisualizationExport2AppVO(chartViewsInfo, null, datasetTablesInfo, datasetTableFieldsInfo,
null, null, null, null, null);
List<VisualizationLinkageVO> linkageVOInfo = appTemplateMapper.findAppLinkageInfo(dvId);
List<VisualizationLinkageFieldVO> linkageFieldVOInfo = appTemplateMapper.findAppLinkageFieldInfo(dvId);
List<VisualizationLinkJumpVO> linkJumpVOInfo = appTemplateMapper.findAppLinkJumpInfo(dvId);
List<VisualizationLinkJumpInfoVO> linkJumpInfoVOInfo = appTemplateMapper.findAppLinkJumpInfoInfo(dvId);
List<VisualizationLinkJumpTargetViewInfoVO> listJumpTargetViewInfoVO = appTemplateMapper.findAppJumpTargetViewInfo(dvId);
return new VisualizationExport2AppVO(chartViewVOInfo, datasetGroupVOInfo, datasetTableVOInfo,
datasetTableFieldVOInfo, datasourceVOInfo, datasourceTaskVOInfo,
linkJumpVOInfo, linkJumpInfoVOInfo, listJumpTargetViewInfoVO, linkageVOInfo, linkageFieldVOInfo);
}
@ -466,7 +467,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
}
}
public String getAbsPath(String id) {
public String getAbsPath(String id) {
CoreChartView coreChartView = coreChartViewMapper.selectById(id);
if (coreChartView == null) {
return null;

View File

@ -172,4 +172,120 @@
GROUP BY
vtcm.template_id
</select>
<select id="findAppViewInfo" resultType="io.dataease.api.visualization.vo.AppCoreChartViewVO">
SELECT
core_chart_view.*
FROM
core_chart_view
WHERE
core_chart_view.id in
<foreach collection="viewIds" item="viewId" index="index" open="(" close=")" separator=",">
#{viewId}
</foreach>
</select>
<select id="findAppDatasetGroupInfo" resultType="io.dataease.api.visualization.vo.AppCoreDatasetGroupVO">
SELECT
DISTINCT core_dataset_group.*
FROM
core_dataset_group
WHERE
core_dataset_group.id in
<foreach collection="dsIds" item="dsId" index="index" open="(" close=")" separator=",">
#{dsId}
</foreach>
</select>
<select id="findAppDatasetTableInfo" resultType="io.dataease.api.visualization.vo.AppCoreDatasetTableVO">
SELECT
DISTINCT core_dataset_table.*
FROM
core_dataset_table
WHERE
core_dataset_table.dataset_group_id in
<foreach collection="dsIds" item="dsId" index="index" open="(" close=")" separator=",">
#{dsId}
</foreach>
</select>
<select id="findAppDatasetTableFieldInfo" resultType="io.dataease.api.visualization.vo.AppCoreDatasetTableFieldVO">
SELECT DISTINCT
core_dataset_table_field.*
FROM
core_dataset_table_field
INNER JOIN core_dataset_table ON core_dataset_table_field.dataset_table_id = core_dataset_table.id
WHERE
core_dataset_table.dataset_group_id in
<foreach collection="dsIds" item="dsId" index="index" open="(" close=")" separator=",">
#{dsId}
</foreach>
</select>
<select id="findAppDatasourceInfo" resultType="io.dataease.api.visualization.vo.AppCoreDatasourceVO">
SELECT
DISTINCT core_datasource.*
FROM core_datasource inner join
core_dataset_table on core_dataset_table.datasource_id = core_datasource.id
WHERE
core_dataset_table.dataset_group_id in
<foreach collection="dsIds" item="dsId" index="index" open="(" close=")" separator=",">
#{dsId}
</foreach>
</select>
<select id="findAppDatasourceTaskInfo" resultType="io.dataease.api.visualization.vo.AppCoreDatasourceTaskVO">
SELECT
core_datasource_task.*
FROM
core_datasource_task
INNER JOIN core_datasource ON core_datasource_task.ds_id = core_datasource.id
INNER JOIN core_dataset_table ON core_dataset_table.datasource_id = core_datasource.id
WHERE
core_dataset_table.dataset_group_id in
<foreach collection="dsIds" item="dsId" index="index" open="(" close=")" separator=",">
#{dsId}
</foreach>
</select>
<select id="findAppLinkageInfo" resultType="io.dataease.api.visualization.vo.VisualizationLinkageVO">
SELECT
visualization_linkage.*
FROM
visualization_linkage
WHERE
visualization_linkage.dv_id = #{dvId}
</select>
<select id="findAppLinkageFieldInfo" resultType="io.dataease.api.visualization.vo.VisualizationLinkageFieldVO">
SELECT
visualization_linkage_field.*
FROM
visualization_linkage_field
INNER JOIN visualization_linkage ON visualization_linkage.id = visualization_linkage_field.linkage_id
WHERE
visualization_linkage.dv_id = #{dvId}
</select>
<select id="findAppLinkJumpInfo" resultType="io.dataease.api.visualization.vo.VisualizationLinkJumpVO">
SELECT
visualization_link_jump.*
FROM
visualization_link_jump
WHERE
visualization_link_jump.source_dv_id = #{dvId}
</select>
<select id="findAppLinkJumpInfoInfo" resultType="io.dataease.api.visualization.vo.VisualizationLinkJumpInfoVO">
SELECT
visualization_link_jump_info.*
FROM
visualization_link_jump_info
INNER JOIN visualization_link_jump ON visualization_link_jump.id = visualization_link_jump_info.link_jump_id
WHERE
visualization_link_jump.source_dv_id = #{dvId}
</select>
<select id="findAppLinkJumpTargetViewInfoInfo" resultType="io.dataease.api.visualization.vo.VisualizationLinkJumpTargetViewInfoVO">
SELECT
visualization_link_jump_target_view_info.*
FROM
visualization_link_jump_target_view_info
INNER JOIN visualization_link_jump_info ON visualization_link_jump_target_view_info.link_jump_info_id = visualization_link_jump_info.id
INNER JOIN visualization_link_jump ON visualization_link_jump.id = visualization_link_jump_info.link_jump_id
WHERE
visualization_link_jump.source_dv_id = #{dvId}
</select>
</mapper>

View File

@ -59,6 +59,8 @@ export function download2AppTemplate(downloadType, canvasDom, name, callBack?) {
const blob = new Blob([JSON.stringify(templateInfo)], { type: '' })
if (downloadType === 'template') {
FileSaver.saveAs(blob, name + '-TEMPLATE.DET2')
} else if (downloadType === 'app') {
FileSaver.saveAs(blob, name + '-APP.DET2APP')
}
}
if (callBack) {

View File

@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.api.visualization.dto.VisualizationViewTableDTO;
import io.dataease.api.visualization.request.DataVisualizationBaseRequest;
import io.dataease.api.visualization.request.VisualizationAppExportRequest;
import io.dataease.api.visualization.request.VisualizationWorkbranchQueryRequest;
import io.dataease.api.visualization.vo.DataVisualizationVO;
import io.dataease.api.visualization.vo.VisualizationExport2AppVO;
@ -112,7 +113,7 @@ public interface DataVisualizationApi {
@Operation(summary = "仪表板视图明细数据")
List<VisualizationViewTableDTO> detailList(@PathVariable("dvId") Long dvId);
@GetMapping("/export2AppCheck/{dvId}")
@GetMapping("/export2AppCheck")
@Operation(summary = "仪表板视图明细数据")
VisualizationExport2AppVO export2AppCheck(@PathVariable("dvId") Long dvId);
VisualizationExport2AppVO export2AppCheck(@RequestBody VisualizationAppExportRequest appExportRequest);
}

View File

@ -0,0 +1,19 @@
package io.dataease.api.visualization.request;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.util.List;
@Data
public class VisualizationAppExportRequest {
@JsonSerialize(using = ToStringSerializer.class)
private Long dvId;
@JsonSerialize(using = ToStringSerializer.class)
private List<Long> viewIds;
@JsonSerialize(using = ToStringSerializer.class)
private List<Long> dsIds;
}

View File

@ -0,0 +1,201 @@
package io.dataease.api.visualization.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class AppCoreChartViewVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long id;
/**
* 标题
*/
private String title;
/**
* 场景ID chart_type为private的时候 是仪表板id
*/
private Long sceneId;
/**
* 数据集表ID
*/
private Long tableId;
/**
* 图表类型
*/
private String type;
/**
* 图表渲染方式
*/
private String render;
/**
* 展示结果
*/
private Integer resultCount;
/**
* 展示模式
*/
private String resultMode;
/**
* 横轴field
*/
private String xAxis;
/**
* table-row
*/
private String xAxisExt;
/**
* 纵轴field
*/
private String yAxis;
/**
* 副轴
*/
private String yAxisExt;
/**
* 堆叠项
*/
private String extStack;
/**
* 气泡大小
*/
private String extBubble;
/**
* 动态标签
*/
private String extLabel;
/**
* 动态提示
*/
private String extTooltip;
/**
* 图形属性
*/
private String customAttr;
/**
* 组件样式
*/
private String customStyle;
/**
* 结果过滤
*/
private String customFilter;
/**
* 钻取字段
*/
private String drillFields;
/**
* 高级
*/
private String senior;
/**
* 创建人ID
*/
private String createBy;
/**
* 创建时间
*/
private Long createTime;
/**
* 更新时间
*/
private Long updateTime;
/**
* 缩略图
*/
private String snapshot;
/**
* 样式优先级 panel 仪表板 view 图表
*/
private String stylePriority;
/**
* 图表类型 public 公共 历史可复用的图表private 私有 专属某个仪表板
*/
private String chartType;
/**
* 是否插件
*/
private Boolean isPlugin;
/**
* 数据来源 template 模板数据 dataset 数据集数据
*/
private String dataFrom;
/**
* 图表字段集合
*/
private String viewFields;
/**
* 是否开启刷新
*/
private Boolean refreshViewEnable;
/**
* 刷新时间单位
*/
private String refreshUnit;
/**
* 刷新时间
*/
private Integer refreshTime;
/**
* 是否开启联动
*/
private Boolean linkageActive;
/**
* 是否开启跳转
*/
private Boolean jumpActive;
/**
* 复制来源
*/
private Long copyFrom;
/**
* 复制ID
*/
private Long copyId;
/**
* 区间条形图开启时间纬度开启聚合
*/
private Boolean aggregate;
}

View File

@ -0,0 +1,83 @@
package io.dataease.api.visualization.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class AppCoreDatasetGroupVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long id;
/**
* 名称
*/
private String name;
/**
* 父级ID
*/
private Long pid;
/**
* 当前分组处于第几级
*/
private Integer level;
/**
* node类型folder or dataset
*/
private String nodeType;
/**
* sql,union
*/
private String type;
/**
* 连接模式0-直连1-同步(包括excelapi等数据存在de中的表)
*/
private Integer mode;
/**
* 关联关系树
*/
private String info;
/**
* 创建人ID
*/
private String createBy;
/**
* 创建时间
*/
private Long createTime;
private String qrtzInstance;
/**
* 同步状态
*/
private String syncStatus;
/**
* 更新人ID
*/
private String updateBy;
/**
* 最后同步时间
*/
private Long lastUpdateTime;
/**
* 关联sql
*/
private String unionSql;
}

View File

@ -0,0 +1,114 @@
package io.dataease.api.visualization.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class AppCoreDatasetTableFieldVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long id;
/**
* 数据源ID
*/
private Long datasourceId;
/**
* 数据表ID
*/
private Long datasetTableId;
/**
* 数据集ID
*/
private Long datasetGroupId;
/**
* 图表ID
*/
private Long chartId;
/**
* 原始字段名
*/
private String originName;
/**
* 字段名用于展示
*/
private String name;
/**
* 描述
*/
private String description;
/**
* de字段名用作唯一标识
*/
private String dataeaseName;
/**
* de字段别名
*/
private String fieldShortName;
/**
* 维度/指标标识 d:维度q:指标
*/
private String groupType;
/**
* 原始字段类型
*/
private String type;
private Integer size;
/**
* dataease字段类型0-文本1-时间2-整型数值3-浮点数值4-布尔5-地理位置6-二进制
*/
private Integer deType;
/**
* de记录的原始类型
*/
private Integer deExtractType;
/**
* 是否扩展字段 0原始 1复制 2计算字段...
*/
private Integer extField;
/**
* 是否选中
*/
private Boolean checked;
/**
* 列位置
*/
private Integer columnIndex;
/**
* 同步时间
*/
private Long lastSyncTime;
/**
* 精度
*/
private Integer accuracy;
private String dateFormat;
/**
* 时间格式类型
*/
private String dateFormatType;
}

View File

@ -0,0 +1,50 @@
package io.dataease.api.visualization.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class AppCoreDatasetTableVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long id;
/**
* 名称
*/
private String name;
/**
* 物理表名
*/
private String tableName;
/**
* 数据源ID
*/
private Long datasourceId;
/**
* 数据集ID
*/
private Long datasetGroupId;
/**
* db,sql,union,excel,api
*/
private String type;
/**
* 表原始信息,表名,sql等
*/
private String info;
/**
* SQL参数
*/
private String sqlVariableDetails;
}

View File

@ -0,0 +1,90 @@
package io.dataease.api.visualization.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
@Data
public class AppCoreDatasourceTaskVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Long id;
/**
* 数据源ID
*/
private Long dsId;
/**
* 任务名称
*/
private String name;
/**
* 更新方式
*/
private String updateType;
/**
* 开始时间
*/
private Long startTime;
/**
* 执行频率0 一次性 1 cron
*/
private String syncRate;
/**
* cron表达式
*/
private String cron;
/**
* 简单重复间隔
*/
private Long simpleCronValue;
/**
* 简单重复类型
*/
private String simpleCronType;
/**
* 结束限制 0 无限制 1 设定结束时间
*/
private String endLimit;
/**
* 结束时间
*/
private Long endTime;
/**
* 创建时间
*/
private Long createTime;
/**
* 上次执行时间
*/
private Long lastExecTime;
/**
* 上次执行结果
*/
private String lastExecStatus;
private String extraData;
/**
* 任务状态
*/
private String taskStatus;
}

View File

@ -0,0 +1,82 @@
package io.dataease.api.visualization.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class AppCoreDatasourceVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Long id;
/**
* 名称
*/
private String name;
/**
* 描述
*/
private String description;
/**
* 类型
*/
private String type;
/**
* 父级ID
*/
private Long pid;
/**
* 更新方式0替换1追加
*/
private String editType;
/**
* 详细信息
*/
private String configuration;
/**
* 创建时间
*/
private Long createTime;
/**
* 更新时间
*/
private Long updateTime;
/**
* 变更人
*/
private Long updateBy;
/**
* 创建人ID
*/
private String createBy;
/**
* 状态
*/
private String status;
/**
* 状态
*/
private String qrtzInstance;
/**
* 任务状态
*/
private String taskStatus;
}

View File

@ -1,11 +1,6 @@
package io.dataease.api.visualization.vo;
import com.google.gson.Gson;
import io.dataease.extensions.datasource.dto.DatasetTableDTO;
import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO;
import io.dataease.extensions.datasource.dto.DatasourceDTO;
import io.dataease.extensions.view.dto.ChartViewDTO;
import io.dataease.extensions.view.dto.ChartViewFieldDTO;
import lombok.Data;
import java.util.ArrayList;
@ -24,20 +19,22 @@ public class VisualizationExport2AppVO {
private String chartViewsInfo;
private String chartViewFieldsInfo;
private String datasetGroupsInfo;
private String datasetTablesInfo;
private String datasetTableFieldsInfo;
private String datasetTasksInfo;
private String datasourceInfo;
private String datasourceTaskInfo;
private String linkJumps;
private String linkJumpInfos;
private String linkJumpTargetInfos;
private String linkages;
private String linkageFields;
@ -50,23 +47,31 @@ public class VisualizationExport2AppVO {
this.checkMes = checkMes;
}
public VisualizationExport2AppVO(List<ChartViewDTO> chartViewsInfo, List<ChartViewFieldDTO> chartViewFieldsInfo,
List<DatasetTableDTO> datasetTablesInfo, List<DatasetTableFieldDTO> datasetTableFieldsInfo, List<DatasourceDTO> datasourceInfo, List<VisualizationLinkJumpVO> linkJumps, List<VisualizationLinkJumpInfoVO> linkJumpInfos,
List<VisualizationLinkageVO> linkages, List<VisualizationLinkageFieldVO> linkageFields) {
List empty = new ArrayList();
public VisualizationExport2AppVO(List<AppCoreChartViewVO> chartViewVOInfo,
List<AppCoreDatasetGroupVO> datasetGroupVOInfo,
List<AppCoreDatasetTableVO> datasetTableVOInfo,
List<AppCoreDatasetTableFieldVO> datasetTableFieldVOInfo,
List<AppCoreDatasourceVO> datasourceVOInfo,
List<AppCoreDatasourceTaskVO> datasourceTaskVOInfo,
List<VisualizationLinkJumpVO> linkJumpVOInfo,
List<VisualizationLinkJumpInfoVO> linkJumpInfoVOInfo,
List<VisualizationLinkJumpTargetViewInfoVO> linkJumpTargetViewVOInfo,
List<VisualizationLinkageVO> linkagesVOInfo,
List<VisualizationLinkageFieldVO> linkageFieldVOInfo) {
List<Object> empty = new ArrayList<>();
Gson gson = new Gson();
this.checkStatus = true;
this.checkMes = "success";
this.chartViewsInfo = gson.toJson(chartViewsInfo != null ? chartViewsInfo : empty);
this.chartViewFieldsInfo = gson.toJson(chartViewFieldsInfo != null ? chartViewFieldsInfo : empty);
this.datasetTablesInfo = gson.toJson(datasetTablesInfo != null ? datasetTablesInfo : empty);
this.datasetTableFieldsInfo = gson.toJson(datasetTableFieldsInfo != null ? datasetTableFieldsInfo : empty);
this.datasetTasksInfo = gson.toJson(datasetTasksInfo != null ? datasetTasksInfo : empty);
this.datasourceInfo = gson.toJson(datasourceInfo != null ? datasourceInfo : empty);
this.visualizationViewsInfo = gson.toJson(visualizationViewsInfo != null ? visualizationViewsInfo : empty);
this.linkJumps = gson.toJson(linkJumps != null ? linkJumps : empty);
this.linkJumpInfos = gson.toJson(linkJumpInfos != null ? linkJumpInfos : empty);
this.linkages = gson.toJson(linkages != null ? linkages : empty);
this.linkageFields = gson.toJson(linkJumpInfos != null ? linkageFields : empty);
this.chartViewsInfo = gson.toJson(chartViewVOInfo != null ? chartViewVOInfo : empty);
this.datasetGroupsInfo = gson.toJson(datasetGroupVOInfo != null ? datasetGroupVOInfo : empty);
this.datasetTablesInfo = gson.toJson(datasetTableVOInfo != null ? datasetTableVOInfo : empty);
this.datasetTableFieldsInfo = gson.toJson(datasetTableFieldVOInfo != null ? datasetTableFieldVOInfo : empty);
this.datasourceTaskInfo = gson.toJson(datasourceTaskVOInfo != null ? datasourceTaskVOInfo : empty);
this.datasourceInfo = gson.toJson(datasourceVOInfo != null ? datasourceVOInfo : empty);
this.linkJumps = gson.toJson(linkJumpVOInfo != null ? linkJumpVOInfo : empty);
this.linkJumpInfos = gson.toJson(linkJumpInfoVOInfo != null ? linkJumpInfoVOInfo : empty);
this.linkJumpTargetInfos = gson.toJson(linkJumpTargetViewVOInfo != null ? linkJumpTargetViewVOInfo : empty);
this.linkages = gson.toJson(linkagesVOInfo != null ? linkagesVOInfo : empty);
this.linkageFields = gson.toJson(linkageFieldVOInfo != null ? linkageFieldVOInfo : empty);
}
}