Add chart business block data model

This commit is contained in:
王鹏
2026-06-19 23:26:51 +08:00
parent 3d4294a164
commit 9a07a42d63
14 changed files with 499 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
package com.ruoyi.generator.domain.front.dto.block;
import java.util.List;
public class BusinessBlockConfigField
{
private String key;
private String label;
private String type;
private String table;
private Boolean required;
private List<String> options;
public String getKey() { return key; }
public void setKey(String key) { this.key = key; }
public String getLabel() { return label; }
public void setLabel(String label) { this.label = label; }
public String getType() { return type; }
public void setType(String type) { this.type = type; }
public String getTable() { return table; }
public void setTable(String table) { this.table = table; }
public Boolean getRequired() { return required; }
public void setRequired(Boolean required) { this.required = required; }
public List<String> getOptions() { return options; }
public void setOptions(List<String> options) { this.options = options; }
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.generator.domain.front.dto.block;
import java.util.Map;
public class BusinessBlockInstance
{
private String id;
private String blockCode;
private String name;
private Map<String, String> config;
private Integer span;
private ChartDatasetConfig dataset;
private Map<String, Object> display;
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getBlockCode() { return blockCode; }
public void setBlockCode(String blockCode) { this.blockCode = blockCode; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Map<String, String> getConfig() { return config; }
public void setConfig(Map<String, String> config) { this.config = config; }
public Integer getSpan() { return span; }
public void setSpan(Integer span) { this.span = span; }
public ChartDatasetConfig getDataset() { return dataset; }
public void setDataset(ChartDatasetConfig dataset) { this.dataset = dataset; }
public Map<String, Object> getDisplay() { return display; }
public void setDisplay(Map<String, Object> display) { this.display = display; }
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.generator.domain.front.dto.block;
public class BusinessBlockTemplateFile
{
private String key;
private String template;
private String outputPath;
public String getKey() { return key; }
public void setKey(String key) { this.key = key; }
public String getTemplate() { return template; }
public void setTemplate(String template) { this.template = template; }
public String getOutputPath() { return outputPath; }
public void setOutputPath(String outputPath) { this.outputPath = outputPath; }
}

View File

@@ -0,0 +1,32 @@
package com.ruoyi.generator.domain.front.dto.block;
import java.util.List;
public class ChartDatasetConfig
{
private String schema;
private String table;
private ChartDimensionConfig dimension;
private List<ChartMetricConfig> metrics;
private List<ChartFilterConfig> filters;
private ChartDateRangeConfig dateRange;
private ChartSortConfig sort;
private Integer limit;
public String getSchema() { return schema; }
public void setSchema(String schema) { this.schema = schema; }
public String getTable() { return table; }
public void setTable(String table) { this.table = table; }
public ChartDimensionConfig getDimension() { return dimension; }
public void setDimension(ChartDimensionConfig dimension) { this.dimension = dimension; }
public List<ChartMetricConfig> getMetrics() { return metrics; }
public void setMetrics(List<ChartMetricConfig> metrics) { this.metrics = metrics; }
public List<ChartFilterConfig> getFilters() { return filters; }
public void setFilters(List<ChartFilterConfig> filters) { this.filters = filters; }
public ChartDateRangeConfig getDateRange() { return dateRange; }
public void setDateRange(ChartDateRangeConfig dateRange) { this.dateRange = dateRange; }
public ChartSortConfig getSort() { return sort; }
public void setSort(ChartSortConfig sort) { this.sort = sort; }
public Integer getLimit() { return limit; }
public void setLimit(Integer limit) { this.limit = limit; }
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.generator.domain.front.dto.block;
public class ChartDateRangeConfig
{
private String field;
private String preset;
private String start;
private String end;
public String getField() { return field; }
public void setField(String field) { this.field = field; }
public String getPreset() { return preset; }
public void setPreset(String preset) { this.preset = preset; }
public String getStart() { return start; }
public void setStart(String start) { this.start = start; }
public String getEnd() { return end; }
public void setEnd(String end) { this.end = end; }
}

View File

@@ -0,0 +1,12 @@
package com.ruoyi.generator.domain.front.dto.block;
public class ChartDimensionConfig
{
private String field;
private String timeUnit;
public String getField() { return field; }
public void setField(String field) { this.field = field; }
public String getTimeUnit() { return timeUnit; }
public void setTimeUnit(String timeUnit) { this.timeUnit = timeUnit; }
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.generator.domain.front.dto.block;
public class ChartFilterConfig
{
private String field;
private String operator;
private Object value;
public String getField() { return field; }
public void setField(String field) { this.field = field; }
public String getOperator() { return operator; }
public void setOperator(String operator) { this.operator = operator; }
public Object getValue() { return value; }
public void setValue(Object value) { this.value = value; }
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.generator.domain.front.dto.block;
public class ChartMetricConfig
{
private String field;
private String aggregate;
private String alias;
private String label;
public String getField() { return field; }
public void setField(String field) { this.field = field; }
public String getAggregate() { return aggregate; }
public void setAggregate(String aggregate) { this.aggregate = aggregate; }
public String getAlias() { return alias; }
public void setAlias(String alias) { this.alias = alias; }
public String getLabel() { return label; }
public void setLabel(String label) { this.label = label; }
}

View File

@@ -0,0 +1,12 @@
package com.ruoyi.generator.domain.front.dto.block;
public class ChartSortConfig
{
private String by;
private String order;
public String getBy() { return by; }
public void setBy(String by) { this.by = by; }
public String getOrder() { return order; }
public void setOrder(String order) { this.order = order; }
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.generator.domain.front.dto.block;
import java.util.List;
public class PageBusinessBlockLayout
{
private String canvas;
private List<BusinessBlockInstance> blocks;
public String getCanvas() { return canvas; }
public void setCanvas(String canvas) { this.canvas = canvas; }
public List<BusinessBlockInstance> getBlocks() { return blocks; }
public void setBlocks(List<BusinessBlockInstance> blocks) { this.blocks = blocks; }
}

View File

@@ -81,6 +81,24 @@ public class BusinessBlockRegistryServiceTest
assertEquals("cart", layout.getBlocks().get(0).getBlockCode());
}
@Test
public void parseLayoutReadsChartDatasetAndSpan()
{
PageBusinessBlockLayout layout = service.parseLayout(
"{\"canvas\":\"business-blocks-v1\",\"blocks\":[{"
+ "\"id\":\"line_001\",\"blockCode\":\"admin_line_chart\",\"span\":6,"
+ "\"dataset\":{\"schema\":\"single-table-aggregate-v1\",\"table\":\"shop_order\","
+ "\"dimension\":{\"field\":\"create_time\",\"timeUnit\":\"day\"},"
+ "\"metrics\":[{\"field\":\"amount\",\"aggregate\":\"sum\",\"alias\":\"salesAmount\"}]},"
+ "\"display\":{\"showLegend\":true}}]}");
BusinessBlockInstance instance = layout.getBlocks().get(0);
assertEquals(Integer.valueOf(6), instance.getSpan());
assertEquals("shop_order", instance.getDataset().getTable());
assertEquals("amount", instance.getDataset().getMetrics().get(0).getField());
assertEquals(Boolean.TRUE, instance.getDisplay().get("showLegend"));
}
@Test
public void validateInstanceConfigRejectsMissingRequiredConfig()
{