编辑 | blame | 历史 | 原始文档

管理驾驶舱与统计分析模块

1. 模块概述

对应招标需求书第 12 条:**整合生产、质检、库存、出库、追溯五大维度核心指标,提供可视化图表展示,支持 Excel/PDF 格式报表导出和打印存档。**

  • 五大维度:
  • 生产:生产批次、袋码(一袋一码)、托盘码、今日扫码入库袋数、生产趋势;
  • 质检:种子四项指标(纯度/净度/发芽率/水分)检验结果分布、均值与合格率;
  • 库存:按仓库/品种/库存状态(暂存库/合格库/已出库)分布、低库存预警数;
  • 出库:出库按日趋势、按经销商出库 TOP20;
  • 追溯:消费者扫码趋势、省份分布、渠道分布、窜货预警汇总。
  • 导出能力:

  • Excel:后端 EasyExcel(fastexcel)生成多 sheet 工作簿,共 6 个 sheet(驾驶舱总览 / 生产统计 / 质检统计 / 库存统计 / 出库统计 / 追溯统计);
  • PDF:前端 html2canvas + jspdf 将驾驶舱报表区域生成为可直接下载的 PDF 文件;
  • 打印:前端 vue3-print-nb 打印报表区域用于存档。

2. 数据源要求(重要)

种子业务数据表位于 mom-thzy(含生产批次 mes_pro_batch、袋码 mes_pro_bag_code、托盘 mes_pro_pallet、种子质检 mes_qc_seed_quality、扫码事件 mes_trace_consumer_scan_event 等全部业务表)。

✅ 已处理:yudao-server/src/main/resources/application-local.yaml 主数据源已指回 jdbc:mysql://192.168.197.128:3306/mom-thzy(root / sugaozhixing.cn)。驾驶舱及一袋一码等种子业务功能**必须连接 mom-thzy 库**才能正常统计,请勿再切回 ruoyi-vue-pro(该库不含种子业务表)。

若目标库缺少种子业务表,需先执行 sql/mysql/ 下的初始化脚本:
- mes_pro_batch_bag_code_init.sql(生产批次/袋码/托盘)
- mes_seed_quality_init.sql(种子质检)
- mes_trace_consumer_scan_event.sql(消费者扫码事件)
- mes_trace_anti_cross_region_init.sql(窜货预警)
- mes_pro_scan_inbound_init.sql(生产线扫码入库)

3. 后端实现

后端位于 yudao-module-mes,新增包:

文件 说明
controller/admin/dashboard/MesDashboardController.java /mes/dashboard 统计接口 + Excel 多 sheet 导出
controller/admin/dashboard/vo/*.java 统计响应 VO 与 Excel 导出 VO
service/dashboard/MesDashboardService(.java|Impl) 五维度统计聚合(含按日补零)
dal/mysql/dashboard/MesDashboardMapper.java MyBatis Mapper 接口
resources/mapper/dashboard/MesDashboardMapper.xml 手写统计 SQL

接口清单(权限 mes:dashboard:query / mes:dashboard:export):

接口 说明
GET /mes/dashboard/summary 五维度 KPI 汇总
GET /mes/dashboard/production-trend?days= 生产趋势
GET /mes/dashboard/quality-statistics 质检维度统计
GET /mes/dashboard/inventory-statistics 库存维度统计
GET /mes/dashboard/outbound-statistics?days= 出库维度统计
GET /mes/dashboard/trace-statistics?days= 追溯维度统计(复用扫码统计与窜货预警服务)
GET /mes/dashboard/export-excel Excel 多 sheet 报表导出

设计要点:
- 追溯维度**复用** MesTraceConsumerScanStatisticsServiceMesTraceCrossRegionService,避免重复 SQL;
- 库存低预警数**复用** MesWmStockWarningService.getCurrentWarnings()
- 空数据表(如质检/库存/出库尚无数据)返回 0 或空数组,前端图表正常渲染;Excel 导出空 sheet 自动补「暂无数据」行,保证表头可推断。

4. 前端实现

前端位于 mom-pro2-before,新增:

文件 说明
src/api/mes/management-cockpit/index.ts 驾驶舱 API(requestClient
src/views/management-cockpit/index.vue 驾驶舱主页面(工具栏 + 报表区域)
src/views/management-cockpit/chart-options.ts ECharts 配置工厂
src/views/management-cockpit/modules/*.vue KPI 卡 + 生产/质检/库存/出库/追溯图表组件

页面能力:
- 刷新:整体刷新全部维度数据;
- 导出 ExcelrequestClient.download 下载后端多 sheet 工作簿;
- 导出 PDFhtml2canvas 截取报表区域 + jspdf 生成可下载 PDF;
- 打印vue3-print-nb 打印报表区域,用于存档。

新增依赖(根 package.json):html2canvasjspdf

5. 菜单与权限

执行 sql/mysql/mes_dashboard_module_init.sql(幂等)注册:

  • 顶级目录「统计分析」(id=602700,已存在时复用);
  • 页面「管理驾驶舱」(id=602701,component = management-cockpit/index);
  • 按钮权限 mes:dashboard:querymes:dashboard:export

菜单由后端 system_menu 动态下发,前端 component 字段映射到 src/views/management-cockpit/index.vue

6. 验证

  1. 后端编译:mvn compile -pl yudao-module-mes -am -q
  2. 前端类型检查:pnpm typecheck(本次新增文件无类型错误)
  3. 执行 mes_dashboard_module_init.sql 后登录系统,菜单出现「统计分析 → 管理驾驶舱」
  4. 核对五大维度图表数据与 mom-thzy 库实际数据一致
  5. 分别验证 Excel 下载、PDF 下载、打印三个功能