『7x24小时有问必答』

前言

做过数据分析的人应该都深有体会:拿到一堆Excel数据,先要花大量时间清洗整理,然后琢磨用什么图表展示最合适,再对着ECharts文档一行一行写配置,最后还要搭看板做汇报。这一套流程走下来,少说也得小半天。
如果告诉AI你想要什么,它自动帮你把图表配置生成好,甚至把数据结论也写出来,你只需要微调一下就能用,是不是能省下不少时间?
这篇文章介绍的就是这样一个系统——一个前后端分离的轻量级智能BI平台,让数据分析这件事变得更快、更省事。

项目介绍

一套基于Spring Boot + React + TypeScript构建的智能BI系统。用户上传Excel数据文件后,系统自动调用大语言模型生成ECharts图表配置和数据分析结论。整个流程支持同步和异步两种模式,同时涵盖了图表管理、数据大屏、多文件联合分析等完整的BI业务能力。
说白了,这就是一个用AI帮你把Excel数据变成可视化图表和分析报告的工具,不用自己折腾图表代码。

项目功能

功能模块
具体说明
图表AI生成
上传Excel后自动调用AI模型生成ECharts配置和数据分析结论
三种执行模式
同步阻塞、线程池异步、RabbitMQ消息队列异步
图表生命周期管理
增删改查、收藏、置顶、回收站恢复与物理删除、重新生成
多文件联合分析
支持多Excel同时上传,跨表字段拼接后统一分析
数据可视化大屏
自定义拖拽布局,将已有图表组合成数据看板
实时状态推送
WebSocket推送AI任务执行状态,无需手动刷新
数据统计仪表盘
展示图表总量、成功/运行中任务、7天趋势、图表类型分布
用户权限管理
基于@AuthCheck注解实现简易权限控制,区分普通用户和管理员
接口限流防刷
Redis实现接口限流和分布式锁,防止高频重复提交

项目特点

AI驱动图表生成:用户只需要提供数据,系统自动分析数据特征并选择合适的图表类型,配置代码全部由AI生成
异步解耦设计:通过RabbitMQ将AI调用与主业务流程分离,即使AI接口响应慢也不影响用户其他操作
多任务方案灵活切换:根据业务场景可选择同步、线程池或MQ三种模式,开发调试用同步,生产环境用MQ
全生命周期图表管理:从生成到删除回收,图表状态和操作记录完整可追溯
跨文件联合分析:Session缓存实现多Excel数据拼接,不用反复上传相同文件
实时反馈机制:WebSocket推送让用户能清晰感知任务进度,而不是干等

项目技术

后端技术栈

技术
用途
Spring Boot
基础框架,提供Web服务能力
MyBatis-Plus
数据持久层,简化数据库操作
RabbitMQ
消息队列,异步解耦AI生成任务
Redis
接口限流、分布式锁、缓存
WebSocket
实时推送图表生成状态
AiManage
自定义模块,对接智谱AI大模型
Hutool、Gson、Commons Lang3
工具类库

前端技术栈

技术
用途
Umi Max / Ant Design Pro v6
企业级后台框架
Ant Design v5
UI组件库
ECharts + echarts-for-react
图表可视化渲染
react-grid-layout
大屏拖拽布局
TypeScript
类型安全

数据库

MySQL 5.7/8.x,存储用户、图表、数据看板、任务配置等业务数据。

项目代码

先看后端的核心实体类——图表实体,记录了AI生成任务的完整信息:
@Data

@TableName("chart")

publicclass  Chart  {

       private  Long id;

       private  Long userId;

       private  String chartName;

       private  String excelData;

       private  String chartConfig;

       private  String analysisResult;

       private  String status;

       private  String execMessage;

       private  Boolean isFavourite;

       private  Boolean isPinned;

       private  Integer taskType;

       private  Date createTime;

       private  Date updateTime;

}

AI调用核心逻辑封装在AiManage模块中,负责组装提示词、调用大模型接口、解析返回结果。
@Service

publicclass  AiManage  {

      

       public  String  doAnalysis(String csvData, String userGoal)  {

            String prompt = buildPrompt(csvData, userGoal);

            String response = callAiModel(prompt);

             return  extractChartConfig(response);

      }

      

       private  String  buildPrompt(String csvData, String userGoal)  {

             return"你是一个数据分析专家。以下是CSV格式的数据:\n"  + csvData +

                       "\n用户需求:"  + userGoal +

                       "\n请生成ECharts图表配置JSON和数据分析结论,按照以下格式返回...";

      }

}

MQ异步生成图表是生产环境推荐模式。生产者发送消息,消费者消费任务并调用AI接口。
@Component

publicclass  ChartMessageProducer  {

      

       @Autowired

       private  RabbitTemplate rabbitTemplate;

      

       public  void  sendChartTask(Long chartId)  {

            rabbitTemplate.convertAndSend("chart.exchange",  "chart.route", chartId);

      }

}

@Component

publicclass  ChartMessageConsumer  {

      

       @RabbitListener(queues =  "chart.queue")

       public  void  consumeChartTask(Long chartId)  {

             // 查询图表记录

             // 调用AI接口生成图表配置

             // 更新图表状态

             // WebSocket推送结果

      }

}

WebSocket前端连接和消息处理的代码很精简,连接成功后监听状态更新事件,收到消息后刷新对应图表的状态展示。
useEffect(() => {

   const ws = new WebSocket('ws://localhost:8080/ws/chart');

   ws.onmessage = (event) => {

      const data = JSON.parse(event.data);

      updateChartStatus(data.chartId, data.status);

   };

   return () => ws.close();

}, []);

项目效果

图表管理列表页:所有生成的图表以表格形式展示,状态标签清晰标识任务进度,支持搜索、筛选、收藏和置顶操作。
图表生成页面:上传Excel后自动调用AI生成图表配置,同时展示AI生成的数据分析结论和ECharts图表。
数据仪表盘:统计图表总量、成功任务数、运行中任务数以及7天内的任务趋势和图表类型分布。
多文件联合分析:支持同时上传多个Excel文件,预览数据后选择需要分析的字段,系统自动拼接后生成联合分析图表。

数据大屏:通过拖拽布局将已有图表组合成大屏看板,适配大屏展示场景。

项目源码

后端:基于Spring Boot + MyBatis-Plus + RabbitMQ + Redis
前端:基于Umi Max + Ant Design Pro + TypeScript + ECharts
数据库:MySQL,初始化脚本在项目sql目录下
启动流程
1、执行create_table.sql初始化数据库
2、修改application.yml配置数据库、Redis、RabbitMQ和AI模型参数
3、启动Spring Boot服务
4、前端执行npm install后npm run dev
GitHub:https://github.com/dongzhy/zhybi
总结
以前拿到一沓Excel,得先想清楚用什么图展示最合适,然后翻ECharts文档写option配置,遇到复杂图表还得调试半天样式。现在把数据丢进去,告诉AI你想看什么维度的分析,它直接把图表配置和结论一起返回,你只需要确认一下,改一改细节就能用了。
多文件联合分析这块在实际工作中也挺实用。比如销售数据和库存数据分别在两个表里,以前得先合并再分析,现在系统帮你把字段拼好再丢给AI,省了一步操作。
RabbitMQ异步模式在生产环境跑下来比较稳,AI接口响应慢的时候用户该干嘛干嘛,任务处理完了通过WebSocket通知一声就行。如果对实时性要求不高,这种异步模式用起来确实省心。
总体来说,这个系统比较适合需要频繁处理数据报表、又不想在图表配置上花太多时间的场景。后续计划接入更多AI模型,支持自然语言直接查询数据,让数据分析的门槛再往下降一降。

关键词

智能BI、AI图表生成、Spring Boot、React、TypeScriptECharts数据可视化、RabbitMQ异步、WebSocket实时推送、Excel数据分析、Ant Design Pro、数据大屏、多文件联合分析、Redis限流、大语言模型
作者:小码编匠
出处:gitee.com/smallcore/DotNetCore
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!

END

一款跨平台物联网设备配置管理工具

备注【开源
方便大家交流、资源共享和共同成长
纯技术交流群、需要的小伙伴请扫码

有收获?不妨分享让更多人受益
关注「程序员开源栈」,共同提升技术实力

点分享
点收藏
点在看
点点赞

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码