You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

997 lines
34 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Board4 看板真实数据接口实现方案
## 一、接口概述
### 1.1 接口列表
| 序号 | 接口路径 | 请求方式 | 功能描述 | 实体类 |
|------|----------|----------|----------|--------|
| 1 | `/board4/productionTotal` | GET | 产量统计(年/月/日累计) | Board4ProductionTotalVo |
| 2 | `/board4/orderStatistics` | GET | 工单统计(计划/完成/差异/完成率) | Board4OrderStatisticsVo |
| 3 | `/board4/orderProgressList` | GET | 工单进度列表 | Board4OrderProgressVo |
| 4 | `/board4/deviceStatus` | GET | 设备状态统计 | Board4DeviceStatusVo |
| 5 | `/board4/alarmInfo` | GET | 最新报警信息 | Board4AlarmInfoVo |
| 6 | `/board4/repairAnalysisList` | GET | 维修分析列表(按设备聚合) | Board4RepairAnalysisVo |
| 7 | `/board4/repairTrendList` | GET | 报修趋势列表 | Board4RepairTrendVo |
| 8 | `/board4/qualityStatistics` | GET | 质量统计 | Board4QualityStatisticsVo |
| 9 | `/board4/qualityTraceList` | GET | 质量追溯列表 | Board4QualityTraceVo |
| 10 | `/board4/deviceProductionList` | GET | 设备分析/产量列表 | Board4DeviceProductionVo |
### 1.2 前端页面
- **页面位置**: `zs_aucma-mes-ui/src/views/board/board4/index.vue`
- **前端API**: `zs_aucma-mes-ui/src/api/board/board4.js`
---
## 二、后端文件清单
### 2.1 VO实体类10个
| 序号 | 文件路径 | 说明 |
|------|----------|------|
| 1 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board4ProductionTotalVo.java` | 产量统计 |
| 2 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board4OrderStatisticsVo.java` | 工单统计 |
| 3 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board4OrderProgressVo.java` | 工单进度 |
| 4 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board4DeviceStatusVo.java` | 设备状态 |
| 5 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board4AlarmInfoVo.java` | 报警信息 |
| 6 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board4RepairAnalysisVo.java` | 维修分析 |
| 7 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board4RepairTrendVo.java` | 报修趋势 |
| 8 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board4QualityStatisticsVo.java` | 质量统计 |
| 9 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board4QualityTraceVo.java` | 质量追溯 |
| 10 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board4DeviceProductionVo.java` | 设备产量 |
### 2.2 后端核心文件4个
| 序号 | 文件类型 | 文件路径 |
|------|----------|----------|
| 1 | Mapper接口 | `aucma-report/src/main/java/com/aucma/report/mapper/Board4Mapper.java` |
| 2 | Mapper XML | `aucma-report/src/main/resources/mapper/report/Board4Mapper.xml` |
| 3 | Service接口 | `aucma-report/src/main/java/com/aucma/report/service/IBoard4Service.java` |
| 4 | Service实现 | `aucma-report/src/main/java/com/aucma/report/service/impl/Board4ServiceImpl.java` |
| 5 | Controller | `aucma-report/src/main/java/com/aucma/report/controller/Board4Controller.java` |
### 2.3 前端文件
| 序号 | 文件类型 | 文件路径 |
|------|----------|----------|
| 1 | API文件 | `zs_aucma-mes-ui/src/api/board/board4.js` |
---
## 三、实体类定义
### 3.1 Board4ProductionTotalVo - 产量统计
```java
public class Board4ProductionTotalVo {
/** 年累计产量去年数据来源BASE_ORDERINFO */
private Long yearTotal;
/** 月累计产量当月数据来源BASE_ORDERINFO */
private Long monthTotal;
/** 日累计产量当天数据来源BASE_DEVICE_PARAM_VALPARAM_NAME='机台状态-实际产出数量' */
private Long dayTotal;
}
```
### 3.2 Board4OrderStatisticsVo - 工单统计
```java
public class Board4OrderStatisticsVo {
/** 今日计划数 */
private Long planCount;
/** 今日完成数 */
private Long completeCount;
/** 今日差异数(计划-完成) */
private Long diffCount;
/** 今日完成率(百分比,不含% */
private String completeRate;
}
```
### 3.3 Board4OrderProgressVo - 工单进度
```java
public class Board4OrderProgressVo {
/** 型号/物料名称 */
private String materialName;
/** 计划数 */
private Long planCount;
/** 完成数 */
private Long completeCount;
/** 差异数 */
private Long diffCount;
/** 执行进度(如 90% */
private String progress;
}
```
### 3.4 Board4DeviceStatusVo - 设备状态
```java
public class Board4DeviceStatusVo {
/** 设备正常数DEVICE_STATUS='0' */
private Long normalCount;
/** 设备告警数DEVICE_STATUS='1' */
private Long alarmCount;
/** 设备停机数DEVICE_STATUS='2' */
private Long stopCount;
/** 设备总数 */
private Long totalCount;
/** 总维修次数 */
private Long repairCount;
}
```
### 3.5 Board4AlarmInfoVo - 报警信息
```java
public class Board4AlarmInfoVo {
/** 是否有报警 */
private Boolean hasAlarm;
/** 报警设备名称 */
private String deviceName;
/** 报警原因 */
private String alarmReason;
/** 报警时间 */
private String alarmTime;
}
```
### 3.6 Board4RepairAnalysisVo - 维修分析
```java
public class Board4RepairAnalysisVo {
/** 设备名称 */
private String deviceName;
/** 占比(百分比数值) */
private Long percent;
/** 维修次数 */
private Long repairCount;
}
```
### 3.7 Board4RepairTrendVo - 报修趋势
```java
public class Board4RepairTrendVo {
/** 时间(小时,如 08:00 */
private String timeHour;
/** 报修次数 */
private Long repairCount;
}
```
### 3.8 Board4QualityStatisticsVo - 质量统计
```java
public class Board4QualityStatisticsVo {
/** 合格数TREATMENT_MEASURE='3' */
private Long qualifiedCount;
/** 不合格数TREATMENT_MEASURE='1' */
private Long unqualifiedCount;
}
```
### 3.9 Board4QualityTraceVo - 质量追溯
```java
public class Board4QualityTraceVo {
/** 产品名/物料名称 */
private String materialName;
/** 合格率(百分比数值) */
private Long passRate;
/** 合格上限默认100 */
private Long passLimit;
}
```
### 3.10 Board4DeviceProductionVo - 设备产量
```java
public class Board4DeviceProductionVo {
/** 设备名称 */
private String deviceName;
/** 实际产量当天工艺参数PARAM_NAME='机台状态-实际产出数量' */
private Long production;
}
```
---
## 四、数据源与业务逻辑
### 4.1 接口数据源映射表
| 接口 | 数据源表 | 业务逻辑 |
| productionTotal | BASE_ORDERINFO, BASE_DEVICE_PARAM_VAL | 年累计=去年SUM(COMPLETE_AMOUNT),月累计=当月SUM(COMPLETE_AMOUNT),日累计=当天PARAM_NAME='机台状态-实际产出数量'最新值汇总(按设备取最新一条) |
| orderStatistics | BASE_ORDERINFO | 当天SUM(ORDER_AMOUNT)和SUM(COMPLETE_AMOUNT),差异=计划-完成,完成率=完成/计划 |
| orderProgressList | BASE_ORDERINFO | 当天工单列表,进度=完成/计划百分比并带% |
| deviceStatus | BASE_DEVICELEDGER, DMS_BILLS_FAULT_INSTANCE | IS_FLAG=0有效设备按DEVICE_STATUS分组统计+总维修次数 |
| alarmInfo | DMS_RECORD_ALARM_INFO, BASE_DEVICELEDGER | 最新一条报警记录通过DEVICE_ID关联设备名称时间格式HH24:MI:SS |
| repairAnalysisList | DMS_BILLS_FAULT_INSTANCE, BASE_DEVICELEDGER | 按设备聚合故障次数按次数倒序取TOP10 |
| repairTrendList | DMS_BILLS_FAULT_INSTANCE | 按小时统计当天报修次数 |
| qualityStatistics | REPORT_QUALITY_INSPECTION | 当天TREATMENT_MEASURE='3'和'1'分组统计 |
| qualityTraceList | REPORT_QUALITY_INSPECTION | 近7天按产品统计合格率按合格率倒序取TOP10 |
| deviceProductionList | BASE_DEVICE_PARAM_VAL, BASE_DEVICELEDGER | 仅生产设备DEVICE_TYPE='1'且IS_FLAG=0取当天每台设备最新产出值 |
### 4.2 关键SQL说明
#### 4.2.1 日累计产量BASE_DEVICE_PARAM_VAL
```sql
SELECT NVL(SUM(TO_NUMBER(PARAM_VALUE)), 0) -- 汇总当天实际产出数量
FROM (
SELECT DEVICE_CODE, PARAM_VALUE,
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN -- 每台设备取最新记录
FROM BASE_DEVICE_PARAM_VAL
WHERE PARAM_NAME = '机台状态-实际产出数量' -- 固定参数名称
AND TO_CHAR(COLLECT_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') -- 当天数据
)
WHERE RN = 1 -- 仅保留最新一条
```
**业务逻辑说明**
- **使用 PARAM_NAME 而非 PARAM_CODE**`PARAM_CODE` 可能因不同设备而变化,但 `PARAM_NAME` 是固定的,始终为 "机台状态-实际产出数量"
- **窗口函数作用**`ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC)` 按设备分组,按采集时间倒序排列,取 RN=1 即每台设备当天最新的一条记录
- **汇总逻辑**:将所有设备的最新实际产出数量求和,得到日累计产量
#### 4.2.2 维修分析(按设备聚合)
```sql
SELECT d.DEVICE_NAME AS deviceName, -- 设备名称
COUNT(*) AS repairCount, -- 设备故障次数
ROUND(COUNT(*) * 100.0 / NULLIF((SELECT COUNT(*) FROM DMS_BILLS_FAULT_INSTANCE WHERE IS_FLAG = 1), 0), 0) AS percent -- 次数占比
FROM DMS_BILLS_FAULT_INSTANCE f
LEFT JOIN BASE_DEVICELEDGER d ON f.DEVICE_ID = d.OBJ_ID -- 关联设备台账
WHERE f.IS_FLAG = 1 AND f.DEVICE_ID IS NOT NULL -- 只统计有效故障
GROUP BY d.OBJ_ID, d.DEVICE_NAME -- 按设备聚合
ORDER BY repairCount DESC -- 按次数降序
```
#### 4.2.3 设备产量列表
```sql
SELECT d.DEVICE_NAME AS deviceName, -- 设备名称
NVL(TO_NUMBER(p.PARAM_VALUE), 0) AS production -- 当天实际产出
FROM BASE_DEVICELEDGER d
LEFT JOIN (
SELECT DEVICE_CODE, PARAM_VALUE
FROM (
SELECT DEVICE_CODE, PARAM_VALUE,
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN -- 每台设备最新记录
FROM BASE_DEVICE_PARAM_VAL
WHERE PARAM_NAME = '机台状态-实际产出数量' -- 固定参数名称
AND TO_CHAR(COLLECT_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') -- 当天数据
)
WHERE RN = 1 -- 仅保留最新一条
) p ON d.DEVICE_CODE = p.DEVICE_CODE -- 关联设备编码
WHERE d.IS_FLAG = 0 AND d.DEVICE_TYPE = '1' -- 仅生产设备
ORDER BY production DESC -- 按产量降序
```
**业务逻辑说明**
- **关联查询**将设备台账表BASE_DEVICELEDGER与设备工艺参数表BASE_DEVICE_PARAM_VAL通过 DEVICE_CODE 关联
- **筛选条件**`PARAM_NAME = '机台状态-实际产出数量'` 获取实际产出数量参数
- **设备过滤**`IS_FLAG = 0`NUMBER类型有效设备`DEVICE_TYPE = '1'`(生产设备)
- **排序逻辑**:按产量降序排列,产量高的设备排在前面
### 4.3 服务层返回规则补充
- 所有统计类数值默认返回0避免空值导致前端异常
- 完成率等比例字段返回的是数字字符串,不包含“%”
- 工单进度列表的 progress 字段为带“%”的字符串(如 90%
- 最新报警无数据时hasAlarm=false其他字段为空字符串
---
## 五、前端API
### 5.1 API文件
**文件**: `zs_aucma-mes-ui/src/api/board/board4.js`
```javascript
import request from '@/utils/request'
// 获取产量统计(年累计、月累计、日累计)
export function getProductionTotal() {
return request({ url: '/board4/productionTotal', method: 'get' })
}
// 获取今日工单统计
export function getOrderStatistics() {
return request({ url: '/board4/orderStatistics', method: 'get' })
}
// 获取今日工单进度列表
export function getOrderProgressList() {
return request({ url: '/board4/orderProgressList', method: 'get' })
}
// 获取设备状态统计
export function getDeviceStatus() {
return request({ url: '/board4/deviceStatus', method: 'get' })
}
// 获取最新报警信息
export function getAlarmInfo() {
return request({ url: '/board4/alarmInfo', method: 'get' })
}
// 获取维修分析列表
export function getRepairAnalysisList() {
return request({ url: '/board4/repairAnalysisList', method: 'get' })
}
// 获取报修趋势列表
export function getRepairTrendList() {
return request({ url: '/board4/repairTrendList', method: 'get' })
}
// 获取质量统计
export function getQualityStatistics() {
return request({ url: '/board4/qualityStatistics', method: 'get' })
}
// 获取质量追溯列表
export function getQualityTraceList() {
return request({ url: '/board4/qualityTraceList', method: 'get' })
}
// 获取设备分析/产量列表
export function getDeviceProductionList() {
return request({ url: '/board4/deviceProductionList', method: 'get' })
}
```
---
## 六、数据库表结构参考
### 6.1 BASE_ORDERINFO工单表
| 字段 | 类型 | 说明 |
|------|------|------|
| OBJ_ID | NUMBER | 主键 |
| MATERIAL_NAME | VARCHAR2 | 物料名称 |
| ORDER_AMOUNT | NUMBER | 订单数量 |
| COMPLETE_AMOUNT | NUMBER | 完成数量 |
| BEGIN_DATE | DATE | 计划开始日期 |
### 6.2 BASE_DEVICE_PARAM_VAL设备工艺参数表
| 字段 | 类型 | 说明 |
|------|------|------|
| PARAM_NAME | VARCHAR2 | 参数名称(固定值,如 "机台状态-实际产出数量" |
| DEVICE_CODE | VARCHAR2 | 设备编号 |
| PARAM_VALUE | VARCHAR2 | 参数值 |
| COLLECT_TIME | DATE | 采集时间 |
### 6.3 BASE_DEVICELEDGER设备台账表)
| 字段 | 类型 | 说明 |
|------|------|------|
| OBJ_ID | NUMBER | 主键标识(用于关联查询) |
| DEVICE_CODE | VARCHAR2(64) | 设备编号 |
| DEVICE_NAME | VARCHAR2(64) | 设备名称 |
| DEVICE_STATUS | NUMBER(1,0) | 设备状态0=使用1=停用2=报废) |
| DEVICE_TYPE | VARCHAR2(32) | 设备类型1=生产设备2=计量设备) |
| IS_FLAG | NUMBER(1,0) | 是否标识0=有效) |
**重要说明**
- `DEVICE_STATUS``IS_FLAG``NUMBER(1,0)` 类型SQL查询时不加引号
- 关联查询使用 `OBJ_ID` 作为主键,不是 `DEVICE_ID`
### 6.4 RECORD_ALARM_DEVICE设备告警记录表
| 字段 | 类型 | 说明 |
|------|------|------|
| OBJ_ID | NUMBER(38,0) | 主键 |
| DEVICE_CODE | VARCHAR2(128) | 设备编号 |
| DEVICE_NAME | VARCHAR2(128) | 设备名称 |
| DEVICE_TYPE | VARCHAR2(32) | 设备类型 |
| ALARM_INFO | VARCHAR2(255) | 报警信息 |
| ALARM_TIME | DATE | 报警时间 |
| REMARK | VARCHAR2(255) | 备注 |
| IS_FLAG | NUMBER | 是否标识0=有效) |
| CREATED_BY | VARCHAR2(32) | 创建人 |
| CREATED_TIME | DATE | 创建时间 |
| BATCH_ID | VARCHAR2(128) | 批次ID |
| PARAM_CODE | VARCHAR2(32) | 参数编码 |
| PARAM_VALUE | VARCHAR2(32) | 参数值 |
**报警信息来源**:使用 `RECORD_ALARM_DEVICE` 表,字段 `ALARM_INFO``ALARM_TIME`,并以 `IS_FLAG = 0` 过滤有效记录
### 6.5 DMS_BILLS_FAULT_INSTANCE故障报修工单表
---
## 七、接口返回示例
### 7.1 产量统计
```json
{ "code": 200, "data": { "yearTotal": 125000, "monthTotal": 12500, "dayTotal": 27218 } }
```
### 7.2 工单统计
```json
{ "code": 200, "data": { "planCount": 1000, "completeCount": 850, "diffCount": 150, "completeRate": "85" } }
```
### 7.3 维修分析列表
```json
{ "code": 200, "data": [{ "deviceName": "YZM-01", "percent": 40, "repairCount": 10 }] }
```
### 7.4 设备产量列表
```json
{ "code": 200, "data": [{ "deviceName": "YZM-02", "production": 27218 }] }
```
---
## 八、注意事项
1. **❗重要:使用 PARAM_NAME 而非 PARAM_CODE**
- 错误写法:`WHERE PARAM_CODE = '19'`
- 正确写法:`WHERE PARAM_NAME = '机台状态-实际产出数量'`
- 原因:`PARAM_CODE` 可能因不同设备而变化,但 `PARAM_NAME` 是固定的
2. **设备状态映射**NUMBER类型不加引号0=正常/使用1=告警/停用2=停机/报废
3. **❗重要BASE_DEVICELEDGER 表字段类型**
- `OBJ_ID`NUMBER 主键,用于关联 DMS_BILLS_FAULT_INSTANCE.DEVICE_ID
- `DEVICE_STATUS`NUMBER(1,0),查询时使用 `= 0`,不是 `= '0'`
- `IS_FLAG`NUMBER(1,0),查询时使用 `= 0`,不是 `= '0'`
4. **质检结果映射**TREATMENT_MEASURE='3'=合格,'1'=不合格
5. **日累计产量查询逻辑**
- 使用窗口函数 `ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC)` 取每台设备当天最新的一条记录
- 避免重复计算,确保每台设备只取一个值
- 将所有设备的最新值求和得到日累计产量
6. **维修分析**:使用 DMS_BILLS_FAULT_INSTANCE 故障报修表,通过 `DEVICE_ID = BASE_DEVICELEDGER.OBJ_ID` 关联设备表
7. **报警信息来源**:使用 DMS_RECORD_ALARM_INFO 表,字段 `ALARM_REASON``ALARM_BEGIN_TIME`,通过 `DEVICE_ID` 关联 BASE_DEVICELEDGER 获取设备名称
---
## 九、变更记录
| 日期 | 版本 | 变更内容 | 作者 |
|------|------|----------|------|
| 2026-01-21 | 1.0 | 初始版本 | YinQ |
| 2026-01-21 | 2.0 | 重构为独立接口模式,一个接口一个实体类 | YinQ |
| 2026-01-21 | 2.1 | 修复产量查询逻辑,使用 PARAM_NAME 替代 PARAM_CODE | YinQ |
| 2026-01-21 | 2.2 | 修复设备表结构BASE_DEVICELEDGER 字段类型修正DEVICE_STATUS/IS_FLAG 为 NUMBER 类型 | YinQ |
| 2026-01-21 | 2.3 | 修复报警表来源:使用 RECORD_ALARM_DEVICE 替代 DMS_RECORD_ALARM_INFO | YinQ |
| 2026-01-22 | 2.4 | 报警数据源切换回 DMS_RECORD_ALARM_INFO该表由外部设备插入数据 | YinQ |
---
# Board5 看板真实数据接口实现方案
## 一、接口概述
### 1.1 接口列表
| 序号 | 接口路径 | 请求方式 | 功能描述 | 实体类 |
|------|----------|----------|----------|--------|
| 1 | `/board5/orderWorkStatistics` | GET | 工单统计(总数、已完成、完成率、停机) | Board5OrderWorkStatisticsVo |
| 2 | `/board5/repairTimeStatistics` | GET | 维修时间统计(平均响应时间、平均维修时间) | Board5RepairTimeStatisticsVo |
| 3 | `/board5/maintStatistics` | GET | 保养执行情况统计 | Board5MaintStatisticsVo |
| 4 | `/board5/inspectStatistics` | GET | 巡检执行情况统计 | Board5InspectStatisticsVo |
| 5 | `/board5/deviceStatusDistribution` | GET | 设备状态分布 | Board5DeviceStatusDistributionVo |
| 6 | `/board5/faultSourceDistribution` | GET | 故障来源分布 | Board5FaultSourceDistributionVo |
| 7 | `/board5/faultTrendList` | GET | 故障数量曲线近30天 | Board5FaultTrendVo |
| 8 | `/board5/productionTop5` | GET | 产量机台TOP5 | Board5ProductionTopVo |
### 1.2 前端页面
- **页面位置**: `zs_aucma-mes-ui/src/views/board/board5/index.vue`
- **前端API**: `zs_aucma-mes-ui/src/api/board/board5.js`
---
## 二、后端文件清单
### 2.1 VO实体类8个
| 序号 | 文件路径 | 说明 |
|------|----------|------|
| 1 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board5OrderWorkStatisticsVo.java` | 工单统计 |
| 2 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board5RepairTimeStatisticsVo.java` | 维修时间统计 |
| 3 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board5MaintStatisticsVo.java` | 保养执行情况 |
| 4 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board5InspectStatisticsVo.java` | 巡检执行情况 |
| 5 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board5DeviceStatusDistributionVo.java` | 设备状态分布 |
| 6 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board5FaultSourceDistributionVo.java` | 故障来源分布 |
| 7 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board5FaultTrendVo.java` | 故障数量曲线 |
| 8 | `aucma-report/src/main/java/com/aucma/report/domain/vo/Board5ProductionTopVo.java` | 产量机台TOP5 |
### 2.2 后端核心文件5个
| 序号 | 文件类型 | 文件路径 |
|------|----------|----------|
| 1 | Mapper接口 | `aucma-report/src/main/java/com/aucma/report/mapper/Board5Mapper.java` |
| 2 | Mapper XML | `aucma-report/src/main/resources/mapper/report/Board5Mapper.xml` |
| 3 | Service接口 | `aucma-report/src/main/java/com/aucma/report/service/IBoard5Service.java` |
| 4 | Service实现 | `aucma-report/src/main/java/com/aucma/report/service/impl/Board5ServiceImpl.java` |
| 5 | Controller | `aucma-report/src/main/java/com/aucma/report/controller/Board5Controller.java` |
### 2.3 前端文件
| 序号 | 文件类型 | 文件路径 |
|------|----------|----------|
| 1 | API文件 | `zs_aucma-mes-ui/src/api/board/board5.js` |
---
## 三、实体类定义
### 3.1 Board5OrderWorkStatisticsVo - 工单统计
```java
public class Board5OrderWorkStatisticsVo {
/** 工单总数 */
private Long totalCount;
/** 已完成数量 */
private Long completeCount;
/** 完成率(百分比数值,不含% */
private String completeRate;
/** 停机工单数量 */
private Long stopCount;
}
```
### 3.2 Board5RepairTimeStatisticsVo - 维修时间统计
```java
public class Board5RepairTimeStatisticsVo {
/** 平均响应时间(分钟) */
private String avgResponseTime;
/** 平均维修时间(小时) */
private String avgRepairTime;
}
```
### 3.3 Board5MaintStatisticsVo - 保养执行情况
```java
public class Board5MaintStatisticsVo {
/** 计划保养数量 */
private Long planCount;
/** 已保养数量MAINT_STATUS=3 */
private Long completeCount;
/** 待保养数量MAINT_STATUS=1 */
private Long waitingCount;
/** 待保养比例 */
private String waitingRate;
/** 保养中数量MAINT_STATUS=2 */
private Long doingCount;
/** 保养中比例 */
private String doingRate;
/** 待验证数量MAINT_STATUS=4 */
private Long verifyCount;
/** 待验证比例 */
private String verifyRate;
/** 设备保养完成率 */
private String completeRate;
}
```
### 3.4 Board5InspectStatisticsVo - 巡检执行情况
```java
public class Board5InspectStatisticsVo {
/** 应检设备数量 */
private Long deviceCount;
/** 设备巡检完成率 */
private String completeRate;
}
```
### 3.5 Board5DeviceStatusDistributionVo - 设备状态分布
```java
public class Board5DeviceStatusDistributionVo {
/** 实验设备占比 */
private Long experimentPercent;
/** 未检设备占比 */
private Long uncheckedPercent;
/** 正常设备占比 */
private Long normalPercent;
/** 异常设备占比 */
private Long abnormalPercent;
}
```
### 3.6 Board5FaultSourceDistributionVo - 故障来源分布
```java
public class Board5FaultSourceDistributionVo {
/** 维护故障占比FAULT_SOURCE_TYPE=1 */
private Long maintainPercent;
/** 运行故障占比FAULT_SOURCE_TYPE=2,3 */
private Long runningPercent;
/** 自然故障占比FAULT_SOURCE_TYPE=9 */
private Long naturalPercent;
}
```
### 3.7 Board5FaultTrendVo - 故障数量曲线
```java
public class Board5FaultTrendVo {
/** 日期(格式:日,如 01、02... */
private String dateValue;
/** 故障数量 */
private Long faultCount;
}
```
### 3.8 Board5ProductionTopVo - 产量机台TOP5
```java
public class Board5ProductionTopVo {
/** 设备名称 */
private String deviceName;
/** 百分比(相对于最大产量) */
private Long percent;
/** 产量 */
private Long production;
}
```
---
## 四、数据源与业务逻辑
### 4.1 接口数据源映射表
| 接口 | 数据源表 | 业务逻辑 |
|------|----------|----------|
| orderWorkStatistics | BASE_ORDERINFO | 统计工单总数、已完成(EXECUTION_STATUS='COMPLETED')、停机(EXECUTION_STATUS='PAUSED') |
| repairTimeStatistics | DMS_BILLS_FAULT_INSTANCE | 平均响应时间=(REAL_BEGIN_TIME-APPLY_TIME),平均维修时间=(REAL_END_TIME-REAL_BEGIN_TIME) |
| maintStatistics | DMS_PLAN_MAINT | 按MAINT_STATUS分组统计1=待保养2=保养中3=已完成4=待验证 |
| inspectStatistics | DMS_PLAN_INSPECT, DMS_BILLS_INSPECT_INSTANCE | 应检设备=SUM(DEVICE_AMOUNT),已检=INSPECT_STATUS='2'的数量 |
| deviceStatusDistribution | BASE_DEVICELEDGER | 按DEVICE_STATUS和DEVICE_TYPE分组统计 |
| faultSourceDistribution | DMS_BILLS_FAULT_INSTANCE | 按FAULT_SOURCE_TYPE分组1=维护故障2/3=运行故障9=自然故障 |
| faultTrendList | DMS_RECORD_ALARM_INFO | 近30天每日告警数量按ALARM_BEGIN_TIME日期分组 |
| productionTop5 | BASE_DEVICE_PARAM_VAL, BASE_DEVICELEDGER | 各设备当天PARAM_NAME='机台状态-实际产出数量'最新值取TOP5 |
### 4.2 关键SQL说明
#### 4.2.1 维修时间统计
```sql
SELECT ROUND(NVL(AVG((REAL_BEGIN_TIME - APPLY_TIME) * 24 * 60), 0), 2) AS AVG_RESPONSE_TIME,
ROUND(NVL(AVG((REAL_END_TIME - REAL_BEGIN_TIME) * 24), 0), 2) AS AVG_REPAIR_TIME
FROM DMS_BILLS_FAULT_INSTANCE
WHERE IS_FLAG = '1'
AND REAL_BEGIN_TIME IS NOT NULL
AND APPLY_TIME IS NOT NULL
```
**业务逻辑说明**
- 平均响应时间 = (实际开始时间 - 申请时间) × 24 × 60单位分钟
- 平均维修时间 = (实际结束时间 - 实际开始时间) × 24单位小时
#### 4.2.2 故障数量曲线使用DMS_RECORD_ALARM_INFO
```sql
SELECT TO_CHAR(ALARM_BEGIN_TIME, 'DD') AS dateValue,
COUNT(*) AS faultCount
FROM DMS_RECORD_ALARM_INFO
WHERE ALARM_BEGIN_TIME >= TRUNC(SYSDATE) - 30
GROUP BY TO_CHAR(ALARM_BEGIN_TIME, 'DD'), TRUNC(ALARM_BEGIN_TIME)
ORDER BY TRUNC(ALARM_BEGIN_TIME)
```
**业务逻辑说明**
- 数据来源:`DMS_RECORD_ALARM_INFO` 设备报警记录表(由外部设备插入)
- 时间范围近30天
- 分组方式:按日期分组,返回每日告警数量
#### 4.2.3 产量机台TOP5替代备件消耗费用TOP5
```sql
SELECT * FROM (
SELECT d.DEVICE_NAME AS deviceName,
NVL(TO_NUMBER(p.PARAM_VALUE), 0) AS production,
0 AS percent
FROM BASE_DEVICELEDGER d
LEFT JOIN (
SELECT DEVICE_CODE, PARAM_VALUE
FROM (
SELECT DEVICE_CODE, PARAM_VALUE,
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN
FROM BASE_DEVICE_PARAM_VAL
WHERE PARAM_NAME = '机台状态-实际产出数量'
AND TO_CHAR(COLLECT_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD')
)
WHERE RN = 1
) p ON d.DEVICE_CODE = p.DEVICE_CODE
ORDER BY production DESC
) WHERE ROWNUM <= 5
```
**业务逻辑说明**
- 使用 `PARAM_NAME = '机台状态-实际产出数量'` 获取各设备当天实际产出
- 取每台设备当天最新的一条记录使用窗口函数ROW_NUMBER
- 按产量降序排列取前5名
- 百分比在Service层计算`percent = production / maxProduction * 100`
#### 4.2.4 故障来源分布
```sql
SELECT COUNT(*) AS TOTAL_COUNT,
SUM(CASE WHEN FAULT_SOURCE_TYPE = 1 THEN 1 ELSE 0 END) AS MAINTAIN_COUNT,
SUM(CASE WHEN FAULT_SOURCE_TYPE IN (2, 3) THEN 1 ELSE 0 END) AS RUNNING_COUNT,
SUM(CASE WHEN FAULT_SOURCE_TYPE = 9 THEN 1 ELSE 0 END) AS NATURAL_COUNT
FROM DMS_BILLS_FAULT_INSTANCE
WHERE IS_FLAG = '1'
```
**业务逻辑说明**
- FAULT_SOURCE_TYPE=1检修→ 维护故障
- FAULT_SOURCE_TYPE=2,3点检/巡检)→ 运行故障
- FAULT_SOURCE_TYPE=9其他→ 自然故障
---
## 五、前端API
### 5.1 API文件
**文件**: `zs_aucma-mes-ui/src/api/board/board5.js`
```javascript
import request from '@/utils/request'
// 获取工单统计(工单总数、已完成、完成率、停机工单)
export function getOrderWorkStatistics() {
return request({ url: '/board5/orderWorkStatistics', method: 'get' })
}
// 获取维修时间统计(平均响应时间、平均维修时间)
export function getRepairTimeStatistics() {
return request({ url: '/board5/repairTimeStatistics', method: 'get' })
}
// 获取保养执行情况统计
export function getMaintStatistics() {
return request({ url: '/board5/maintStatistics', method: 'get' })
}
// 获取巡检执行情况统计
export function getInspectStatistics() {
return request({ url: '/board5/inspectStatistics', method: 'get' })
}
// 获取设备状态分布
export function getDeviceStatusDistribution() {
return request({ url: '/board5/deviceStatusDistribution', method: 'get' })
}
// 获取故障来源分布
export function getFaultSourceDistribution() {
return request({ url: '/board5/faultSourceDistribution', method: 'get' })
}
// 获取故障数量曲线
export function getFaultTrendList() {
return request({ url: '/board5/faultTrendList', method: 'get' })
}
// 获取产量机台TOP5
export function getProductionTop5() {
return request({ url: '/board5/productionTop5', method: 'get' })
}
```
---
## 六、数据库表结构参考
### 6.1 BASE_ORDERINFO工单表
| 字段 | 类型 | 说明 |
|------|------|------|
| OBJ_ID | NUMBER | 主键 |
| EXECUTION_STATUS | VARCHAR2 | 执行状态PENDING/RUNNING/COMPLETED/PAUSED |
| IS_FLAG | NUMBER | 是否标识0=有效) |
### 6.2 DMS_BILLS_FAULT_INSTANCE故障报修工单表
| 字段 | 类型 | 说明 |
|------|------|------|
| REPAIR_INSTANCE_ID | NUMBER(20) | 主键 |
| APPLY_TIME | DATE | 申请时间 |
| REAL_BEGIN_TIME | DATE | 实际开始时间 |
| REAL_END_TIME | DATE | 实际完成时间 |
| FAULT_SOURCE_TYPE | NUMBER | 报修来源类型1检修 2点检 3巡检 9其他 |
| IS_FLAG | CHAR(1) | 激活标识1是 0否 |
### 6.3 DMS_PLAN_MAINT保养计划表
| 字段 | 类型 | 说明 |
|------|------|------|
| PLAN_MAINT_ID | NUMBER(20) | 主键 |
| MAINT_STATUS | NUMBER | 保养状态1待保养 2保养中 3已完成 4待验证 |
| IS_FLAG | NUMBER | 是否标识1是 2否 |
### 6.4 DMS_PLAN_INSPECT巡检计划表
| 字段 | 类型 | 说明 |
|------|------|------|
| PLAN_INSPECT_ID | NUMBER(20) | 主键 |
| DEVICE_AMOUNT | NUMBER | 设备总数 |
| IS_FLAG | CHAR(1) | 是否标识1是 0否 |
### 6.5 RECORD_ALARM_DEVICE设备告警记录表
| 字段 | 类型 | 说明 |
|------|------|------|
| OBJ_ID | NUMBER(38) | 主键 |
| DEVICE_CODE | VARCHAR2(128) | 设备编号 |
| DEVICE_NAME | VARCHAR2(128) | 设备名称 |
| ALARM_INFO | VARCHAR2(255) | 报警信息 |
| ALARM_TIME | DATE | 报警时间 |
| IS_FLAG | NUMBER | 是否标识0=有效) |
### 6.6 BASE_DEVICELEDGER设备台账表
| 字段 | 类型 | 说明 |
|------|------|------|
| OBJ_ID | NUMBER | 主键 |
| DEVICE_CODE | VARCHAR2(64) | 设备编号 |
| DEVICE_NAME | VARCHAR2(64) | 设备名称 |
| DEVICE_STATUS | NUMBER(1,0) | 设备状态0使用 1停用 2报废 |
| DEVICE_TYPE | VARCHAR2(32) | 设备类型1生产设备 2计量设备 |
| IS_FLAG | NUMBER(1,0) | 是否标识0有效 |
### 6.7 BASE_DEVICE_PARAM_VAL设备工艺参数表
| 字段 | 类型 | 说明 |
|------|------|------|
| RECORD_ID | NUMBER | 主键 |
| DEVICE_CODE | VARCHAR2(255) | 设备编号 |
| PARAM_NAME | VARCHAR2(255) | 参数名称(固定值,如"机台状态-实际产出数量" |
| PARAM_VALUE | VARCHAR2(255) | 参数值 |
| COLLECT_TIME | DATE | 采集时间 |
---
## 七、接口返回示例
### 7.1 工单统计
```json
{ "code": 200, "data": { "totalCount": 100, "completeCount": 85, "completeRate": "85", "stopCount": 5 } }
```
### 7.2 维修时间统计
```json
{ "code": 200, "data": { "avgResponseTime": "123.45", "avgRepairTime": "0.25" } }
```
### 7.3 保养执行情况
```json
{ "code": 200, "data": { "planCount": 10, "completeCount": 5, "waitingCount": 2, "waitingRate": "20", "doingCount": 2, "doingRate": "20", "verifyCount": 1, "verifyRate": "10", "completeRate": "50" } }
```
### 7.4 故障数量曲线
```json
{ "code": 200, "data": [{ "dateValue": "01", "faultCount": 5 }, { "dateValue": "02", "faultCount": 3 }] }
```
### 7.5 产量机台TOP5
```json
{ "code": 200, "data": [{ "deviceName": "YZM-02", "percent": 100, "production": 27218 }, { "deviceName": "YZM-01", "percent": 80, "production": 21774 }] }
```
---
## 八、注意事项
1. **❗重要:故障数量曲线使用 DMS_RECORD_ALARM_INFO 表**
- 数据来源:`DMS_RECORD_ALARM_INFO` 设备报警记录表(由外部设备插入)
- 筛选条件:`ALARM_BEGIN_TIME >= TRUNC(SYSDATE) - 30`
2. **❗重要产量机台TOP5 替代备件消耗费用TOP5**
- 使用 `PARAM_NAME = '机台状态-实际产出数量'` 获取设备产量
- 取每台设备当天最新值,按产量降序排列
3. **保养状态映射**DMS_PLAN_MAINT.MAINT_STATUS
- 1 = 待保养
- 2 = 保养中
- 3 = 已完成
- 4 = 待验证
4. **故障来源类型映射**DMS_BILLS_FAULT_INSTANCE.FAULT_SOURCE_TYPE
- 1 = 检修 → 维护故障
- 2 = 点检 → 运行故障
- 3 = 巡检 → 运行故障
- 9 = 其他 → 自然故障
5. **设备表字段类型**BASE_DEVICELEDGER
- `DEVICE_STATUS`NUMBER(1,0),查询时使用 `= 0`
- `IS_FLAG`NUMBER(1,0),查询时使用 `= 0`
6. **前端页面字段映射**
- text1-text4 → orderWorkStatistics工单总数、已完成、完成率、停机工单
- text5-text6 → repairTimeStatistics平均响应时间、平均维修时间
- text7-text15 → maintStatistics保养执行情况
- text16-text17 → inspectStatistics巡检执行情况
- value1-value4 → deviceStatusDistribution设备状态分布
- value5-value7 → faultSourceDistribution故障来源分布
- chart1 → faultTrendList故障数量曲线
- chart2 → productionTop5产量机台TOP5
---
## 九、变更记录
| 日期 | 版本 | 变更内容 | 作者 |
|------|------|----------|------|
| 2026-01-21 | 1.0 | Board5看板接口初始版本 | YinQ |
| 2026-01-21 | 1.1 | 故障数量曲线使用RECORD_ALARM_DEVICE表真实数据 | YinQ |
| 2026-01-22 | 1.3 | 故障数量曲线切换为DMS_RECORD_ALARM_INFO表 | YinQ |
| 2026-01-21 | 1.2 | 产量机台TOP5替代备件消耗费用TOP5 | YinQ |