初始代码
This commit is contained in:
309
yawei-mes/.tasks/2026-01-17_v1.6.014_生产报表.md
Normal file
309
yawei-mes/.tasks/2026-01-17_v1.6.014_生产报表.md
Normal file
@@ -0,0 +1,309 @@
|
||||
# 生产报表模块设计文档
|
||||
|
||||
## 版本信息
|
||||
- **版本号**: 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`
|
||||
Reference in New Issue
Block a user