This commit is contained in:
Jane
2023-12-22 10:59:10 +08:00
parent 751c43e199
commit d1ede2d4aa
2774 changed files with 291509 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
package cn.datax.service.data.visual.api.dto;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
@Data
public class BoardConfig implements Serializable {
private static final long serialVersionUID=1L;
@NotEmpty(message = "布局不能为空")
private List<BoardItem> layout;
private List<BoardTimer> interval;
}

View File

@@ -0,0 +1,37 @@
package cn.datax.service.data.visual.api.dto;
import cn.datax.common.validate.ValidationGroups;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* <p>
* 可视化看板配置信息表 实体DTO
* </p>
*
* @author AllDataDC
* @date 2022-11-04
*/
@ApiModel(value = "可视化看板配置信息表Model")
@Data
public class BoardDto implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键ID")
@NotBlank(message = "主键ID不能为空", groups = {ValidationGroups.Update.class})
private String id;
@ApiModelProperty(value = "看板名称")
@NotBlank(message = "看板名称不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
private String boardName;
@ApiModelProperty(value = "看板缩略图(图片base64)")
private String boardThumbnail;
@ApiModelProperty(value = "看板配置")
@Valid
private BoardConfig boardConfig;
}

View File

@@ -0,0 +1,17 @@
package cn.datax.service.data.visual.api.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class BoardItem implements Serializable {
private static final long serialVersionUID=1L;
private Integer x;
private Integer y;
private Integer w;
private Integer h;
private String i;
}

View File

@@ -0,0 +1,14 @@
package cn.datax.service.data.visual.api.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class BoardTimer implements Serializable {
private static final long serialVersionUID=1L;
private String id;
private Integer milliseconds;
}

View File

@@ -0,0 +1,23 @@
package cn.datax.service.data.visual.api.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
@Data
public class ChartConfig implements Serializable {
private static final long serialVersionUID=1L;
@NotBlank(message = "数据集不能为空")
private String dataSetId;
@NotBlank(message = "图表类型不能为空")
private String chartType;
private List<ChartItem> rows;
private List<ChartItem> columns;
@NotEmpty(message = "指标不能为空")
private List<ChartItem> measures;
}

View File

@@ -0,0 +1,36 @@
package cn.datax.service.data.visual.api.dto;
import cn.datax.common.validate.ValidationGroups;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* <p>
* 可视化图表配置信息表 实体DTO
* </p>
*
* @author AllDataDC
* @date 2022-11-04
*/
@ApiModel(value = "可视化图表配置信息表Model")
@Data
public class ChartDto implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键ID")
@NotBlank(message = "主键ID不能为空", groups = {ValidationGroups.Update.class})
private String id;
@ApiModelProperty(value = "图表名称")
@NotBlank(message = "图表名称不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
private String chartName;
@ApiModelProperty(value = "图表缩略图(图片base64)")
private String chartThumbnail;
@ApiModelProperty(value = "图表配置")
private String chartConfig;
}

View File

@@ -0,0 +1,22 @@
package cn.datax.service.data.visual.api.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class ChartItem implements Serializable {
private static final long serialVersionUID=1L;
private String col;
private String alias;
/**
* 指标聚合函数类型
*/
private String aggregateType;
/**
* 指标柱状、折线图表类型
*/
private String seriesType;
}

View File

@@ -0,0 +1,14 @@
package cn.datax.service.data.visual.api.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class ColumnParse implements Serializable {
private static final long serialVersionUID=1L;
private String col;
private String alias;
}

View File

@@ -0,0 +1,47 @@
package cn.datax.service.data.visual.api.dto;
import cn.datax.common.validate.ValidationGroups;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* <p>
* 数据集信息表 实体DTO
* </p>
*
* @author AllDataDC
* @date 2022-11-31
*/
@ApiModel(value = "数据集信息表Model")
@Data
public class DataSetDto implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键ID")
@NotBlank(message = "主键ID不能为空", groups = {ValidationGroups.Update.class})
private String id;
@ApiModelProperty(value = "数据源")
@NotBlank(message = "数据源不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
private String sourceId;
@ApiModelProperty(value = "数据集名称")
@NotBlank(message = "数据集名称不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
private String setName;
@ApiModelProperty(value = "数据集sql")
@NotBlank(message = "数据集sql不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
private String setSql;
@ApiModelProperty(value = "数据模型定义")
@Valid
private SchemaConfig schemaConfig;
@ApiModelProperty(value = "状态")
@NotNull(message = "状态不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
private String status;
@ApiModelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,31 @@
package cn.datax.service.data.visual.api.dto;
import cn.datax.common.validate.ValidationGroups;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "数据模型定义")
@Data
public class SchemaConfig implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "解析字段")
private List<String> columns;
@ApiModelProperty(value = "维度列")
@NotEmpty(message = "维度列不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
@Size(min = 1, message="维度列长度不能少于{min}位")
private List<ColumnParse> dimensions;
@ApiModelProperty(value = "指标列")
@NotEmpty(message = "指标列不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
@Size(min = 1, message="指标列长度不能少于{min}位")
private List<ColumnParse> measures;
}

View File

@@ -0,0 +1,17 @@
package cn.datax.service.data.visual.api.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class ScreenAttr implements Serializable {
private static final long serialVersionUID=1L;
private String id;
private String chartName;
private Integer milliseconds;
private String border;
private String backgroundColor;
}

View File

@@ -0,0 +1,21 @@
package cn.datax.service.data.visual.api.dto;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
@Data
public class ScreenConfig implements Serializable {
private static final long serialVersionUID=1L;
private Integer width;
private Integer height;
private Integer scale;
private String backgroundImage;
@NotEmpty(message = "布局不能为空")
private List<ScreenItem> layout;
private List<ScreenAttr> property;
}

View File

@@ -0,0 +1,36 @@
package cn.datax.service.data.visual.api.dto;
import cn.datax.common.validate.ValidationGroups;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* <p>
* 可视化酷屏配置信息表 实体DTO
* </p>
*
* @author AllDataDC
* @date 2022-11-15
*/
@ApiModel(value = "可视化酷屏配置信息表Model")
@Data
public class ScreenDto implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键ID")
@NotBlank(message = "主键ID不能为空", groups = {ValidationGroups.Update.class})
private String id;
@ApiModelProperty(value = "酷屏名称")
private String screenName;
@ApiModelProperty(value = "酷屏缩略图(图片base64)")
private String screenThumbnail;
@ApiModelProperty(value = "酷屏配置")
@Valid
private ScreenConfig screenConfig;
}

View File

@@ -0,0 +1,17 @@
package cn.datax.service.data.visual.api.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class ScreenItem implements Serializable {
private static final long serialVersionUID=1L;
private Integer x;
private Integer y;
private Integer w;
private Integer h;
private String i;
}

View File

@@ -0,0 +1,17 @@
package cn.datax.service.data.visual.api.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
public class SqlParseDto implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "SQL文本")
@NotBlank(message = "SQL不能为空")
private String sqlText;
}

View File

@@ -0,0 +1,41 @@
package cn.datax.service.data.visual.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 可视化看板和图表关联表
* </p>
*
* @author AllDataDC
* @date 2022-11-11
*/
@Data
@Accessors(chain = true)
@TableName("visual_board_chart")
public class BoardChartEntity implements Serializable {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
/**
* 看板ID
*/
private String boardId;
/**
* 图表ID
*/
private String chartId;
}

View File

@@ -0,0 +1,48 @@
package cn.datax.service.data.visual.api.entity;
import cn.datax.common.base.DataScopeBaseEntity;
import cn.datax.service.data.visual.api.dto.BoardConfig;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
/**
* <p>
* 可视化看板配置信息表
* </p>
*
* @author AllDataDC
* @date 2022-11-04
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "visual_board", autoResultMap = true)
public class BoardEntity extends DataScopeBaseEntity {
private static final long serialVersionUID=1L;
/**
* 看板名称
*/
private String boardName;
/**
* 看板缩略图(图片base64)
*/
private String boardThumbnail;
/**
* 看板配置
*/
@TableField(value = "board_json", typeHandler = JacksonTypeHandler.class)
private BoardConfig boardConfig;
@TableField(exist = false)
private List<ChartEntity> charts;
}

View File

@@ -0,0 +1,41 @@
package cn.datax.service.data.visual.api.entity;
import cn.datax.common.base.DataScopeBaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 可视化图表配置信息表
* </p>
*
* @author AllDataDC
* @date 2022-11-04
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "visual_chart", autoResultMap = true)
public class ChartEntity extends DataScopeBaseEntity {
private static final long serialVersionUID=1L;
/**
* 图表名称
*/
private String chartName;
/**
* 图表缩略图(图片base64)
*/
private String chartThumbnail;
/**
* 图表配置
*/
@TableField(value = "chart_json")
private String chartConfig;
}

View File

@@ -0,0 +1,48 @@
package cn.datax.service.data.visual.api.entity;
import cn.datax.common.base.DataScopeBaseEntity;
import cn.datax.service.data.visual.api.dto.SchemaConfig;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 数据集信息表
* </p>
*
* @author AllDataDC
* @date 2022-11-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "visual_data_set", autoResultMap = true)
public class DataSetEntity extends DataScopeBaseEntity {
private static final long serialVersionUID=1L;
/**
* 数据源
*/
private String sourceId;
/**
* 数据集名称
*/
private String setName;
/**
* 数据集sql
*/
private String setSql;
/**
* 数据模型定义
*/
@TableField(value = "schema_json", typeHandler = JacksonTypeHandler.class)
private SchemaConfig schemaConfig;
}

View File

@@ -0,0 +1,43 @@
package cn.datax.service.data.visual.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import cn.datax.common.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 可视化酷屏和图表关联表
* </p>
*
* @author AllDataDC
* @date 2022-11-15
*/
@Data
@Accessors(chain = true)
@TableName("visual_screen_chart")
public class ScreenChartEntity implements Serializable {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
/**
* 酷屏ID
*/
private String screenId;
/**
* 图表ID
*/
private String chartId;
}

View File

@@ -0,0 +1,48 @@
package cn.datax.service.data.visual.api.entity;
import cn.datax.common.base.DataScopeBaseEntity;
import cn.datax.service.data.visual.api.dto.ScreenConfig;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
/**
* <p>
* 可视化酷屏配置信息表
* </p>
*
* @author AllDataDC
* @date 2022-11-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "visual_screen", autoResultMap = true)
public class ScreenEntity extends DataScopeBaseEntity {
private static final long serialVersionUID=1L;
/**
* 酷屏名称
*/
private String screenName;
/**
* 酷屏缩略图(图片base64)
*/
private String screenThumbnail;
/**
* 酷屏配置
*/
@TableField(value = "screen_json", typeHandler = JacksonTypeHandler.class)
private ScreenConfig screenConfig;
@TableField(exist = false)
private List<ChartEntity> charts;
}

View File

@@ -0,0 +1,15 @@
package cn.datax.service.data.visual.api.feign;
import cn.datax.service.data.visual.api.entity.DataSetEntity;
import cn.datax.service.data.visual.api.feign.factory.VisualServiceFeignFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@FeignClient(contextId = "visualServiceFeign", value = "service-data-visual", fallbackFactory = VisualServiceFeignFallbackFactory.class)
public interface VisualServiceFeign {
@GetMapping("/dataSets/source/{sourceId}")
DataSetEntity getBySourceId(@PathVariable String sourceId);
}

View File

@@ -0,0 +1,18 @@
package cn.datax.service.data.visual.api.feign.factory;
import cn.datax.service.data.visual.api.feign.VisualServiceFeign;
import cn.datax.service.data.visual.api.feign.fallback.VisualServiceFeignFallbackImpl;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;
@Component
public class VisualServiceFeignFallbackFactory implements FallbackFactory<VisualServiceFeign> {
@Override
public VisualServiceFeign create(Throwable throwable) {
VisualServiceFeignFallbackImpl feignFallback = new VisualServiceFeignFallbackImpl();
feignFallback.setCause(throwable);
return feignFallback;
}
}

View File

@@ -0,0 +1,22 @@
package cn.datax.service.data.visual.api.feign.fallback;
import cn.datax.service.data.visual.api.entity.DataSetEntity;
import cn.datax.service.data.visual.api.feign.VisualServiceFeign;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class VisualServiceFeignFallbackImpl implements VisualServiceFeign {
@Setter
private Throwable cause;
@Override
public DataSetEntity getBySourceId(String sourceId) {
log.error("feign 调用可视化管理查询出错", cause);
throw new RuntimeException("feign 调用可视化管理查询出错", cause);
}
}

View File

@@ -0,0 +1,22 @@
package cn.datax.service.data.visual.api.query;
import cn.datax.common.base.BaseQueryParams;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 可视化看板配置信息表 查询实体
* </p>
*
* @author AllDataDC
* @date 2022-11-04
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class BoardQuery extends BaseQueryParams {
private static final long serialVersionUID=1L;
private String boardName;
}

View File

@@ -0,0 +1,22 @@
package cn.datax.service.data.visual.api.query;
import cn.datax.common.base.BaseQueryParams;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 可视化图表配置信息表 查询实体
* </p>
*
* @author AllDataDC
* @date 2022-11-04
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ChartQuery extends BaseQueryParams {
private static final long serialVersionUID=1L;
private String chartName;
}

View File

@@ -0,0 +1,22 @@
package cn.datax.service.data.visual.api.query;
import cn.datax.common.base.BaseQueryParams;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 数据集信息表 查询实体
* </p>
*
* @author AllDataDC
* @date 2022-11-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DataSetQuery extends BaseQueryParams {
private static final long serialVersionUID=1L;
private String setName;
}

View File

@@ -0,0 +1,22 @@
package cn.datax.service.data.visual.api.query;
import cn.datax.common.base.BaseQueryParams;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 可视化酷屏配置信息表 查询实体
* </p>
*
* @author AllDataDC
* @date 2022-11-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ScreenQuery extends BaseQueryParams {
private static final long serialVersionUID=1L;
private String screenName;
}

View File

@@ -0,0 +1,33 @@
package cn.datax.service.data.visual.api.vo;
import cn.datax.service.data.visual.api.dto.BoardConfig;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 可视化看板配置信息表 实体VO
* </p>
*
* @author AllDataDC
* @date 2022-11-04
*/
@Data
public class BoardVo implements Serializable {
private static final long serialVersionUID=1L;
private String id;
private String status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
private String remark;
private String boardName;
private String boardThumbnail;
private BoardConfig boardConfig;
private List<ChartVo> charts;
}

View File

@@ -0,0 +1,30 @@
package cn.datax.service.data.visual.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 可视化图表配置信息表 实体VO
* </p>
*
* @author AllDataDC
* @date 2022-11-04
*/
@Data
public class ChartVo implements Serializable {
private static final long serialVersionUID=1L;
private String id;
private String status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
private String remark;
private String chartName;
private String chartThumbnail;
private String chartConfig;
}

View File

@@ -0,0 +1,32 @@
package cn.datax.service.data.visual.api.vo;
import cn.datax.service.data.visual.api.dto.SchemaConfig;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 数据集信息表 实体VO
* </p>
*
* @author AllDataDC
* @date 2022-11-31
*/
@Data
public class DataSetVo implements Serializable {
private static final long serialVersionUID=1L;
private String id;
private String status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
private String remark;
private String sourceId;
private String setName;
private String setSql;
private SchemaConfig schemaConfig;
}

View File

@@ -0,0 +1,33 @@
package cn.datax.service.data.visual.api.vo;
import cn.datax.service.data.visual.api.dto.ScreenConfig;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 可视化酷屏配置信息表 实体VO
* </p>
*
* @author AllDataDC
* @date 2022-11-15
*/
@Data
public class ScreenVo implements Serializable {
private static final long serialVersionUID=1L;
private String id;
private String status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
private String remark;
private String screenName;
private String screenThumbnail;
private ScreenConfig screenConfig;
private List<ChartVo> charts;
}

View File

@@ -0,0 +1,3 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.datax.service.data.visual.api.feign.factory.VisualServiceFeignFallbackFactory,\
cn.datax.service.data.visual.api.feign.fallback.VisualServiceFeignFallbackImpl