# 管理驾驶舱与统计分析模块 ## 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 报表导出 | 设计要点: - 追溯维度**复用** `MesTraceConsumerScanStatisticsService`、`MesTraceCrossRegionService`,避免重复 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 卡 + 生产/质检/库存/出库/追溯图表组件 | 页面能力: - **刷新**:整体刷新全部维度数据; - **导出 Excel**:`requestClient.download` 下载后端多 sheet 工作簿; - **导出 PDF**:`html2canvas` 截取报表区域 + `jspdf` 生成可下载 PDF; - **打印**:`vue3-print-nb` 打印报表区域,用于存档。 新增依赖(根 `package.json`):`html2canvas`、`jspdf`。 ## 5. 菜单与权限 执行 `sql/mysql/mes_dashboard_module_init.sql`(幂等)注册: - 顶级目录「统计分析」(id=602700,已存在时复用); - 页面「管理驾驶舱」(id=602701,`component = management-cockpit/index`); - 按钮权限 `mes:dashboard:query`、`mes: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 下载、打印三个功能