需求:
提供报表模板, 根据报表模板创建报表,报表参数可预置,查询页可定义参数显示与否
相关表结构
数据源表
字段类型 | 字段名 | 字段含义 |
---|---|---|
int | DataSourceId | 数据源ID |
varchar | DataSourceName | 数据源名称 |
varchar | DataSourceCode | 数据源编码(根据编码调用对应业务的数据查询) |
报表模板表
字段类型 | 字段名 | 字段含义 |
---|---|---|
int | ReportSchemaId | 数据源ID |
varchar | ReportSchemaName | 数据源名称 |
varchar | ReportSchemaDescription | 数据源编码(根据编码调用对应业务的数据查询) |
varchar | Version | 版本 |
int | ReportSchemaCategoryId | 报表模板分类id |
varchar | Author | 作者 |
varchar | Project | 项目名称 |
datetime | CreateTime | 创建时间 |
int | DataSourceId | 数据源Id |
报表模板分类表
报表模板查询参数表
字段名 | 字段类型 | 字段含义 |
---|---|---|
ReportSchemaQueryParameterId | int | 查询参数ID |
ReportSchemaQueryParameterName | varchar | 查询参数名 |
ReportSchemaQueryParameterTitle | varchar | 查询参数标题 |
ReportSchemaId | int | 所属报表模板ID |
ParameterControlId | varchar | 参数控件ID |
DataSourceExpression | text | 数据源表达式 |
DataSourceFormat | varchar | 数据源返回的格式 |
IsNull | tinyint | 查询参数是否允许为空 |
说明:
ParameterControlId: 前端参数的类型有多样,对应的控件有多样,有下拉选择,有文本框,有checkbox,有专属控件等,为了提高控件的通用性,为每个控件定义了对应一个ID,前端通过ID自动在报表查询页渲染出控件
DataSourceExpression: 参数控件对应的数据来源,目前有json格式和api格式,
使用方法:json= 或者是api=, 可提供json数据源或者api数据源,前端控件通过识别前缀自动获取数据源
例子:
json=[{"name":"全部", "value":"0"},{"name":"告警结束", "value":"1"}, {"name":"告警确认", "value":"2"}, {"name":"告警备注", "value":"3"}]
api=persons
DataSourceFormat: 数据源返回的格式,以下拉选择控件为例,一般的下拉控件从数据源取得的是key-value格式的数值, key为选择的值, value为显示的值
既然知道了控件ID,又知道了控件的数据源,就只差控件数据源的返回格式
{"value": "value", "display":"name"}
结合上面的json例子,可以知道该控件要将json里面的name用于展示,查询的实际值为对应的value里面的值
IsNull:有些报表的某个查询条件不允许为空,可设置为false
报表参数预置表
字段名 | 字段类型 | 字段含义 |
---|---|---|
ReportParameterPresetId | int | 参数预置ID |
ReportId | int | 对应报表ID |
ReportSchemaQueryParameterId | int | 对应查询参数ID |
value | text | 预置值 |
display | tinyint | 查询页是否显示 |
说明:
display: 有些报表可能查询参数较多,部分查询条件比较固定,可设置预置值,然后将display设置为false, 这样在报表展示页这些查询条件便不会显示出来