# 生产报表模块设计文档 ## 版本信息 - **版本号**: v1.6.014 - **日期**: 2026-01-17 - **开发者**: 周启威 --- ## 一、模块概述 ### 1.1 功能目标 生产报表模块用于统计和展示生产相关的各类数据报表,帮助管理人员了解生产进度、产量、合格率、工时等关键指标。 ### 1.2 主要功能 1. **日报表** - 按日统计生产数据(产量、合格率、报工人员等) 2. **月报表** - 按月汇总生产数据 3. **产量统计** - 按产品/工序/车间/工位统计产量 4. **合格率分析** - 统计各维度的合格率数据 5. **工时统计** - 统计员工/设备工时 6. **导出功能** - 支持Excel导出 --- ## 二、数据库设计 ### 2.1 涉及的现有表 | 表名 | 说明 | |------|------| | `pro_report` | 报工单表 | | `pro_workorder` | 生产工单表 | | `pro_workorder_entry` | 工单分录表 | | `md_material` | 物料表 | | `md_workshop` | 车间表 | | `md_station` | 工位表 | | `sys_user` | 用户表 | ### 2.2 报表视图(可选,用于优化查询性能) 暂不创建视图,直接使用SQL查询聚合数据。 ### 2.3 数据来源说明 #### 2.3.1 生产数据来源(pro_report表) | 数据项 | 来源表 | 字段 | 说明 | |--------|--------|------|------| | 报工数量 | `pro_report` | `report_quantity` | 每次报工的数量 | | 合格数量 | `pro_report` | `qualified_quantity` | 报工合格数量 | | 不合格数量 | `pro_report` | `unqualified_quantity` | 报工不合格数量 | | 报工时间 | `pro_report` | `report_time` | 用于按日期统计 | | 报工人 | `pro_report` | `report_user_id`, `report_user_name` | 用于按人员统计 | | 车间 | `pro_report` | `workshop_id`, `workshop_name` | 用于按车间统计 | | 工位 | `pro_report` | `station_id`, `station_name` | 用于按工位统计 | | 设备 | `pro_report` | `equipment_id`, `equipment_name` | 用于按设备统计 | | 班次 | `pro_report` | `shift_name` | 用于按班次统计 | | 报工时段 | `pro_report` | `report_period_start`, `report_period_end` | 用于工时计算 | | 停机时间 | `pro_report` | `downtime_minutes` | 用于设备利用率计算 | #### 2.3.2 质检数据来源(FIIH新版质检) | 数据项 | 来源表 | 字段 | 说明 | |--------|--------|------|------| | 质检总数 | `fiih_qc_data` | `COUNT(id)` | 质检记录总条数 | | 不合格数 | `fiih_qc_data` | `fiih_qc_result` | 统计结论为"不合格"的条数 | | 合格数 | `fiih_qc_data` | 计算值 | 总数 - 不合格数 | | 质检结论 | `fiih_qc_data` | `fiih_qc_result` | 合格/不合格 | | 不良原因 | `fiih_qc_data` | `fiih_bad_reason` | 不合格原因 | | 对象名称 | `fiih_qc_data` | `fiih_object_name` | 质检对象 | | 任务名称 | `fiih_qc_data` | `fiih_task_name` | 质检任务 | | 环节名称 | `fiih_qc_data` | `fiih_link_name` | 质检环节 | | 采集时间 | `fiih_qc_data` | `fiih_collect_time` | 用于按日期统计 | | 任务状态 | `fiih_qc_data` | `fiih_status` | 1进行中 2完成 3作废 | #### 2.3.3 质检配置来源 | 数据项 | 来源表 | 字段 | 说明 | |--------|--------|------|------| | 配置信息 | `fiih_qc_config` | 多字段 | 质检项配置 | | 分项配置 | `fiih_qc_config` | `fiih_config_ch0~23` | 24个通道的JSON配置 | | 负责人 | `fiih_qc_config` | `fiih_leader_id`, `fiih_leader_name` | 质检负责人 | #### 2.3.4 关联数据来源 | 数据项 | 来源表 | 关联方式 | 说明 | |--------|--------|----------|------| | 产品信息 | `pro_workorder` | 通过 `work_order_id` 关联 | 获取物料名称、规格型号等 | | 工序信息 | `pro_workorder_entry` | 通过 `work_order_entry_id` 关联 | 获取工序名称、工序顺序 | | 工单信息 | `pro_workorder` | 通过 `work_order_id` 关联 | 获取工单编号、批次号等 | | 客户信息 | `sal_order` | 通过工单关联销售订单 | 获取客户名称 | #### 2.3.5 统计计算逻辑 | 指标 | 计算公式 | 数据来源 | |------|----------|----------| | 总产量 | `SUM(report_quantity)` | pro_report | | 生产合格率 | `SUM(qualified_quantity) / SUM(report_quantity) * 100%` | pro_report | | 报工次数 | `COUNT(id)` | pro_report | | 工时(分钟) | `SUM(TIMESTAMPDIFF(MINUTE, report_period_start, report_period_end))` | pro_report | | 有效工时 | 工时 - 停机时间 | pro_report | | 设备利用率 | 有效工时 / 总工时 * 100% | pro_report | | **质检合格率** | `(总条数 - 不合格条数) / 总条数 * 100%` | **fiih_qc_data** | | **质检总数** | `COUNT(id)` | **fiih_qc_data** | | **不合格数** | `COUNT(id) WHERE fiih_qc_result = '不合格'` | **fiih_qc_data** | --- ## 2.4 首页Dashboard质检数据修改 ### 2.4.1 当前实现(需修改) - 文件: `DashboardMapper.xml` - 方法: `selectProductQualityRate` - 数据源: `qc_report_quality` 表(旧版质检) ### 2.4.2 修改方案 将首页质检合格率改为从 `fiih_qc_data` 表读取: ```sql SELECT COUNT(*) AS totalCount, SUM(CASE WHEN fiih_qc_result = '不合格' THEN 1 ELSE 0 END) AS unqualifiedCount, COUNT(*) - SUM(CASE WHEN fiih_qc_result = '不合格' THEN 1 ELSE 0 END) AS qualifiedCount, ROUND((COUNT(*) - SUM(CASE WHEN fiih_qc_result = '不合格' THEN 1 ELSE 0 END)) / COUNT(*) * 100, 2) AS rate FROM fiih_qc_data WHERE fiih_status != 3 -- 排除作废的记录 ``` --- ## 三、接口设计 ### 3.1 后端接口 #### 3.1.1 日报表查询 ``` GET /statement/productionStatement/dailyReport ``` **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | reportDate | String | 否 | 报工日期 (yyyy-MM-dd),默认当天 | | workshopId | Long | 否 | 车间ID | | stationId | Long | 否 | 工位ID | | materialId | Long | 否 | 产品ID | **返回数据**: ```json { "code": 200, "data": { "summary": { "totalReportQuantity": 1000, "totalQualifiedQuantity": 980, "totalUnqualifiedQuantity": 20, "qualifiedRate": 98.0, "reportCount": 50 }, "byWorkshop": [...], "byMaterial": [...], "byUser": [...] } } ``` #### 3.1.2 月报表查询 ``` GET /statement/productionStatement/monthlyReport ``` **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | yearMonth | String | 否 | 年月 (yyyy-MM),默认当月 | | workshopId | Long | 否 | 车间ID | **返回数据**: ```json { "code": 200, "data": { "summary": {...}, "dailyTrend": [...], "byMaterial": [...] } } ``` #### 3.1.3 产量统计 ``` GET /statement/productionStatement/outputStatistics ``` **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|------| | startDate | String | 是 | 开始日期 | | endDate | String | 是 | 结束日期 | | groupBy | String | 否 | 分组维度: material/workshop/station/user | | workshopId | Long | 否 | 车间ID | #### 3.1.4 合格率分析 ``` GET /statement/productionStatement/qualifiedRateAnalysis ``` #### 3.1.5 工时统计 ``` GET /statement/productionStatement/workHourStatistics ``` #### 3.1.6 导出报表 ``` GET /statement/productionStatement/export ``` --- ## 四、前端设计 ### 4.1 目录结构 ``` mes-ui/src/ ├── api/mes/statement/ │ └── productionStatement.js # API接口 └── views/mes/statement/ └── productionStatement/ └── index.vue # 生产报表主页面 ``` ### 4.2 页面布局 #### 4.2.1 主页面结构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 筛选条件区域 │ │ [日期范围] [车间] [工位] [产品] [查询] [重置] [导出] │ ├─────────────────────────────────────────────────────────────┤ │ Tab切换: [日报表] [月报表] [产量统计] [合格率分析] [工时统计] │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 汇总卡片区域 │ │ │ │ [总产量] [合格数] [不合格数] [合格率] [报工次数] │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 图表区域 (ECharts) │ │ │ │ - 日报表: 按小时产量柱状图 │ │ │ │ - 月报表: 日趋势折线图 │ │ │ │ - 产量统计: 分组柱状图/饼图 │ │ │ │ - 合格率: 趋势图 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 数据表格区域 │ │ │ │ - 明细数据列表 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 五、后端实现 ### 5.1 文件清单 | 文件路径 | 说明 | |----------|------| | `cn.sourceplan.statement.controller.ProductionStatementController` | 控制器 | | `cn.sourceplan.statement.service.IProductionStatementService` | 服务接口 | | `cn.sourceplan.statement.service.impl.ProductionStatementServiceImpl` | 服务实现 | | `cn.sourceplan.statement.mapper.ProductionStatementMapper` | Mapper接口 | | `mapper/statement/ProductionStatementMapper.xml` | Mapper XML | | `cn.sourceplan.statement.domain.vo.DailyReportVO` | 日报表VO | | `cn.sourceplan.statement.domain.vo.MonthlyReportVO` | 月报表VO | | `cn.sourceplan.statement.domain.vo.OutputStatisticsVO` | 产量统计VO | | `cn.sourceplan.statement.domain.query.ProductionStatementQuery` | 查询参数 | --- ## 六、菜单与权限 ### 6.1 菜单配置 - **父菜单**: 报表管理 (已存在) - **菜单名称**: 生产报表 - **路由地址**: statement/productionStatement - **组件路径**: mes/statement/productionStatement/index - **权限标识**: statement:productionStatement:list ### 6.2 权限配置 | 权限标识 | 说明 | |----------|------| | statement:productionStatement:list | 查询生产报表 | | statement:productionStatement:export | 导出生产报表 | --- ## 七、开发计划 ### 7.1 任务分解 | 序号 | 任务 | 预估工时 | |------|------|----------| | 1 | 后端Controller/Service/Mapper | 4h | | 2 | 前端页面开发 | 4h | | 3 | 图表集成 | 2h | | 4 | 导出功能 | 1h | | 5 | 测试与调优 | 1h | ### 7.2 里程碑 - [ ] 后端接口完成 - [ ] 前端页面完成 - [ ] 联调测试通过 - [ ] 发布上线 --- ## 八、SQL脚本 详见: `.sql/2026-01-17_v1.6.014_周启威_生产报表.sql`