|
|
|
|
@ -0,0 +1,997 @@
|
|
|
|
|
# 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_VAL,PARAM_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 | RECORD_ALARM_DEVICE | IS_FLAG=0的最新一条报警记录,时间格式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. **报警信息来源**:使用 RECORD_ALARM_DEVICE 表,字段 `ALARM_INFO` 和 `ALARM_TIME`,并以 `IS_FLAG = 0` 过滤有效记录
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 九、变更记录
|
|
|
|
|
|
|
|
|
|
| 日期 | 版本 | 变更内容 | 作者 |
|
|
|
|
|
|------|------|----------|------|
|
|
|
|
|
| 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 |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# 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 | RECORD_ALARM_DEVICE | 近30天每日告警数量,按ALARM_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 故障数量曲线(使用RECORD_ALARM_DEVICE)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT TO_CHAR(ALARM_TIME, 'DD') AS dateValue,
|
|
|
|
|
COUNT(*) AS faultCount
|
|
|
|
|
FROM RECORD_ALARM_DEVICE
|
|
|
|
|
WHERE IS_FLAG = 0
|
|
|
|
|
AND ALARM_TIME >= TRUNC(SYSDATE) - 30
|
|
|
|
|
GROUP BY TO_CHAR(ALARM_TIME, 'DD'), TRUNC(ALARM_TIME)
|
|
|
|
|
ORDER BY TRUNC(ALARM_TIME)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**业务逻辑说明**:
|
|
|
|
|
- 数据来源:`RECORD_ALARM_DEVICE` 设备告警记录表
|
|
|
|
|
- 时间范围:近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
|
|
|
|
|
WHERE d.IS_FLAG = 0
|
|
|
|
|
AND d.DEVICE_TYPE = '1'
|
|
|
|
|
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. **❗重要:故障数量曲线使用 RECORD_ALARM_DEVICE 表**
|
|
|
|
|
- 数据来源:`RECORD_ALARM_DEVICE` 设备告警记录表
|
|
|
|
|
- 筛选条件:`IS_FLAG = 0` 且 `ALARM_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-21 | 1.2 | 产量机台TOP5替代备件消耗费用TOP5 | YinQ |
|