Files
MES/yawei-mes/.tasks/2026-01-17_v1.6.014_生产报表.md

310 lines
12 KiB
Markdown
Raw Permalink Normal View History

2026-04-02 10:38:23 +08:00
# 生产报表模块设计文档
## 版本信息
- **版本号**: 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`