跳到主要内容

Skills — Online图表生成

1. 功能介绍

jeecg-onlchart 是 Claude Code 的 AI Skill,能够将自然语言需求自动转换为 JeecgBoot Online 图表,完成从 SQL 编写 → 字段解析 → X/Y 轴推导 → 图表配置 → 创建图表 的全流程自动化。

核心能力:

  • 用自然语言描述图表需求,AI 自动生成 SQL 查询语句
  • 智能推导 X/Y 轴字段:维度字段→X 轴,度量字段→Y 轴
  • 根据数据特征自动推荐图表类型(柱状图、折线图、饼图、组合图表)
  • 自动调用 parseSql 接口解析 SQL 字段
  • 智能推导字段的中文名称、字典配置、查询方式、合计等属性
  • 自动调用 API 创建/编辑图表
  • 支持组合图表(折线+柱状同时展示)
  • 支持 SQL 参数化查询(Velocity 模板语法)
  • 支持动态数据源
  • 自动生成菜单 SQL

不确定该用哪个 Skill?请查看 AI Skills 技能清单。 下载地址:https://github.com/jeecgboot/skills

2. 前置条件

使用前需要准备两个信息:

信息获取方式示例
API 地址JeecgBoot 后端服务地址https://boot3.jeecg.com/jeecgboot
X-Access-Token浏览器 F12 → Network → 任意请求的 Request HeaderseyJhbGciOiJIUzI1NiIs...

获取 Token 步骤:

  1. 登录 JeecgBoot 后台管理系统
  2. 按 F12 打开浏览器开发者工具
  3. 切换到 Network(网络)面板
  4. 点击页面上任意操作触发一个请求
  5. 点击该请求,在 Request Headers 中找到 X-Access-Token 的值并复制

3. 使用方式

在 Claude Code 中直接用自然语言描述需求即可。以下是触发关键词:

创建图表、生成图表、新建图表、做一个图表、
online图表、数据图表、柱状图、折线图、饼图、
统计图、可视化、chart、graph

4. 实战示例:创建用户性别统计图表

4.1 第一步:描述需求

直接告诉 AI 你需要什么图表:

创建一个柱状图,统计系统用户的男女比例

AI 会根据需求:

  1. 自动推导 SQL 查询语句
  2. 调用 parseSql 接口解析字段
  3. 智能识别 X 轴(sex 性别)和 Y 轴(count 人数)
  4. 推荐图表类型(柱状图)

4.2 第二步:AI 展示配置摘要

## Online 图表配置摘要

- 图表编码:tj_user_sex
- 图表名称:统计男女比例
- 图表类型:bar(柱状图)
- X 轴字段:sex(性别)
- Y 轴字段:cout(人数)
- 数据源:默认
- 目标环境:https://boot3.jeecg.com/jeecgboot

### SQL 语句
select count(*) cout, sex from sys_user group by sex

### 字段配置

| 序号 | 字段名 | 显示名称 | 类型 | 显示 | 查询 | 字典 | 合计 |
|------|--------|---------|--------|------|------|------|------|
| 0 | cout | 人数 | String | Y | N | - | Y |
| 1 | sex | 性别 | String | Y | N | sex | N |

确认以上配置?(y/n)

4.3 第三步:提供 Token 并确认

确认配置后,提供 API 地址和 Token:

x-access-token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxx

4.4 第四步:AI 自动执行

AI 会依次执行以下操作:

1. 调用 parseSql API → 解析 SQL 字段 ✓
2. 调用 add API → 创建图表配置 ✓
3. 查询图表 ID → 获取 headId ✓
4. 输出菜单 SQL → 供用户选择是否执行

4.5 第五步:查看结果

## Online 图表创建成功

- 图表编码:tj_user_sex
- 图表名称:统计男女比例
- 图表类型:bar(柱状图)
- X 轴:sex(性别)
- Y 轴:cout(人数)
- 目标环境:https://boot3.jeecg.com/jeecgboot

### 菜单 SQL(可选)
INSERT INTO sys_permission(...)
VALUES ('headId', NULL, '统计男女比例', '/online/graphreport/headId', ...);

### 后续操作
1. 打开 JeecgBoot 后台 → Online图表
2. 找到该图表,点击「功能测试」预览效果
3. 如需配置菜单,执行上方 SQL 或在后台手动添加

5. 更多使用场景

5.1 直接提供 SQL 创建图表

如果你已经有现成的 SQL:

创建一个图表,SQL如下:
select DATE_FORMAT(create_time,'%Y-%m') month, count(*) cnt
from sys_user group by month
用折线图展示

AI 会自动解析 SQL 中的字段,识别 X 轴(month)和 Y 轴(cnt),并设置图表类型为折线图。

5.2 饼图展示占比分布

用饼图展示系统用户的性别分布

AI 识别"饼图"关键词,设置 graphType: "pie",自动推导 SQL 和 X/Y 轴字段。

5.3 组合图表(折线+柱状)

做一个月度销售分析,同时显示折线图和柱状图

AI 自动设置:

  • graphType: "line,bar"
  • isCombination: "combination"

在同一坐标系中同时展示折线和柱状图。

5.4 带查询参数的图表

创建一个柱状图统计各部门人数,支持按状态筛选

AI 生成带 Velocity 参数的 SQL:

select count(*) cnt, dept from sys_user
where 1=1
${#if($status != '')} AND status = '$status' ${#end}
group by dept

5.5 使用动态数据源

用 second_db 数据源做一个销售统计图表

AI 设置 dbSource: "second_db",从指定数据源查询数据。

5.6 修改已有图表

修改图表 tj_user_sex,把图表类型改成饼图

AI 先查询现有图表配置,再进行修改,使用 edit API 更新。

6. 支持的图表类型

图表类型graphType 值适用场景数据特征
柱状图bar分类对比如男女人数、部门对比
折线图line趋势变化如月度销售、访问量趋势
饼图pie占比分布如部门比例、状态分布
组合图表line,bar趋势+对比同时展示折线和柱状

AI 会根据数据特征自动推荐最合适的图表类型:

数据场景识别:
├── 分类对比(如男女人数) → 柱状图 bar
├── 趋势变化(如月度销售) → 折线图 line
├── 占比分布(如部门比例) → 饼图 pie
└── 多维分析(趋势+对比) → 组合图表 line,bar

7. 智能字段推导规则

7.1 X/Y 轴自动推导

字段特征推导为说明
分类/维度字段(sex、dept、month、category)X 轴图表的分类维度
度量/聚合字段(count、sum、avg 的结果)Y 轴图表的数值度量

7.2 字段显示名称

AI 自动将英文字段名翻译为中文:

字段名模式推导中文名
count / cout / cnt数量/人数
sum / total / amount合计/总额
avg / average平均值
sex性别
dept / department部门
status状态
type / category类型/分类
month / year / date月份/年份/日期
name / title名称

7.3 字典自动关联

字段名关联字典
sexsex(性别)
statusvalid_status(有效状态)
prioritypriority(优先级)

也支持 SQL 字典:

{"dictCode": "SELECT id as value, name as text FROM sys_category"}

7.4 查询与合计配置

字段类型查询 (searchFlag)查询模式合计 (isTotal)
分类/维度字段YsingleN
日期/时间字段YrangeN
度量/聚合字段N-Y

8. 涉及的 API 接口

接口方法路径说明
解析 SQLGET/online/cgreport/head/parseSql?sql={sql}&dbKey={dbKey}复用报表接口解析 SQL 字段
创建图表POST/online/graphreport/head/add创建图表配置
编辑图表PUT/online/graphreport/head/edit修改已有图表
查询图表列表GET/online/graphreport/head/list?code={code}按编码搜索图表
查询图表详情GET/online/graphreport/head/queryById?id={headId}按 ID 查询图表

9. 高级配置

9.1 Y 轴标签 (yaxisText)

自定义 Y 轴显示文字:

创建图表并设置 Y 轴标签为"人数(单位:人)"

9.2 扩展 JS (extendJs)

通过自定义 JS 扩展图表行为:

创建图表,加一段扩展 JS:option.tooltip = {trigger: 'axis'};

9.3 SQL 参数语法

Online 图表使用 Velocity 模板语法实现条件查询:

-- 条件判断(参数不为空时追加条件)
${#if($status != '')} AND status = '$status' ${#end}

-- 日期范围
${#if($startDate != '')} AND create_time >= '$startDate' ${#end}

对应的参数配置:

[
{"paramName": "status", "paramTxt": "状态", "paramValue": "", "orderNum": 1}
]

10. 常见问题

Online 图表和 Online 报表有什么区别?

对比项Online 图表 (graphreport)Online 报表 (cgreport)
数据展示可视化图表(柱状/折线/饼图)数据表格列表
数据来源SQL 查询语句SQL 查询语句
X/Y 轴✅ 需要配置❌ 不涉及
适用场景数据可视化、趋势分析、占比展示数据查询、统计列表、数据导出

支持哪些图表类型?

目前支持 4 种:柱状图(bar)、折线图(line)、饼图(pie)、组合图表(line,bar)。组合图表可以在同一坐标系中同时展示折线和柱状。

parseSql 返回的字段类型都是 String?

是的,parseSql 默认返回 String 类型。AI 会根据字段名语义自动修正字段类型。

图表创建后如何预览?

在 JeecgBoot 后台 → Online 图表列表中,找到对应图表,点击「功能测试」即可预览效果。

add 和 edit 接口的字段差异?

这是一个容易踩坑的地方:

  • add 时:items 中关联 ID 字段名为 cgrheadId(值为 null)
  • edit 时:items 中关联 ID 字段名为 graphreportHeadId(值为 headId)
  • add 时:查询字段用 isSearch
  • edit 时:查询字段用 searchFlag"Y"/"N"

AI 会自动处理这些差异,用户无需关心。