|
|
|
|
@ -6,7 +6,7 @@
|
|
|
|
|
|
|
|
|
|
| 序号 | 接口路径 | 请求方式 | 功能描述 | 实体类 |
|
|
|
|
|
|------|----------|----------|----------|--------|
|
|
|
|
|
| 1 | `/board4/productionTotal` | GET | 产量统计(年/月/日累计) | Board4ProductionTotalVo |
|
|
|
|
|
| 1 | `/board4/productionTotal` | GET | 产量统计(年/月/日累计,按设备差分累加) | Board4ProductionTotalVo |
|
|
|
|
|
| 2 | `/board4/orderStatistics` | GET | 工单统计(计划/完成/差异/完成率) | Board4OrderStatisticsVo |
|
|
|
|
|
| 3 | `/board4/orderProgressList` | GET | 工单进度列表 | Board4OrderProgressVo |
|
|
|
|
|
| 4 | `/board4/deviceStatus` | GET | 设备状态统计 | Board4DeviceStatusVo |
|
|
|
|
|
@ -68,10 +68,10 @@ public class Board4ProductionTotalVo {
|
|
|
|
|
/** 年累计产量(去年数据,来源BASE_ORDERINFO) */
|
|
|
|
|
private Long yearTotal;
|
|
|
|
|
|
|
|
|
|
/** 月累计产量(当月数据,来源BASE_DEVICE_PARAM_VAL,按设备取当月最新“机台状态-实际产出数量”汇总) */
|
|
|
|
|
/** 月累计产量(当月数据,来源BASE_DEVICE_PARAM_VAL,按设备取当月最早/最新“机台状态-实际产出数量”差值汇总) */
|
|
|
|
|
private Long monthTotal;
|
|
|
|
|
|
|
|
|
|
/** 日累计产量(当天数据,来源BASE_DEVICE_PARAM_VAL,PARAM_NAME='机台状态-实际产出数量') */
|
|
|
|
|
/** 日累计产量(当天数据,来源BASE_DEVICE_PARAM_VAL,按设备取当日最早/最新差值汇总,PARAM_NAME='机台状态-实际产出数量') */
|
|
|
|
|
private Long dayTotal;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
@ -227,7 +227,7 @@ public class Board4DeviceProductionVo {
|
|
|
|
|
### 4.1 接口数据源映射表
|
|
|
|
|
|
|
|
|
|
| 接口 | 数据源表 | 业务逻辑 |
|
|
|
|
|
| productionTotal | BASE_ORDERINFO, BASE_DEVICE_PARAM_VAL | 年累计=去年SUM(COMPLETE_AMOUNT);月累计=当月每台设备最新PARAM_NAME='机台状态-实际产出数量'汇总;日累计=当天每台设备最新PARAM_NAME='机台状态-实际产出数量'汇总 |
|
|
|
|
|
| productionTotal | BASE_ORDERINFO, BASE_DEVICE_PARAM_VAL | 年累计=去年SUM(COMPLETE_AMOUNT);月累计=当月窗口内按设备取最早/最新“机台状态-实际产出数量”差值汇总;日累计=当天窗口内按设备取最早/最新差值汇总 |
|
|
|
|
|
| orderStatistics | BASE_ORDERINFO | 当天SUM(ORDER_AMOUNT)和SUM(COMPLETE_AMOUNT),差异=计划-完成,完成率=完成/计划 |
|
|
|
|
|
| orderProgressList | BASE_ORDERINFO | 当天工单列表,进度=完成/计划百分比并带% |
|
|
|
|
|
| deviceStatus | BASE_DEVICELEDGER, DMS_BILLS_FAULT_INSTANCE | IS_FLAG=0有效设备,按DEVICE_STATUS分组统计+总维修次数 |
|
|
|
|
|
@ -240,44 +240,64 @@ public class Board4DeviceProductionVo {
|
|
|
|
|
|
|
|
|
|
### 4.2 关键SQL说明
|
|
|
|
|
|
|
|
|
|
#### 4.2.1 日累计产量(BASE_DEVICE_PARAM_VAL)
|
|
|
|
|
#### 4.2.1 日累计产量(BASE_DEVICE_PARAM_VAL,按差分汇总)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT NVL(SUM(TO_NUMBER(PARAM_VALUE)), 0) -- 汇总当天实际产出数量
|
|
|
|
|
SELECT NVL(SUM(latest_val - earliest_val), 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') -- 当天数据
|
|
|
|
|
SELECT device_code,
|
|
|
|
|
NVL(MAX(CASE WHEN rn_desc = 1 THEN val END), 0) AS latest_val,
|
|
|
|
|
NVL(MAX(CASE WHEN rn_asc = 1 THEN val END), 0) AS earliest_val
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT DEVICE_CODE,
|
|
|
|
|
TO_NUMBER(PARAM_VALUE) AS val,
|
|
|
|
|
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS rn_desc,
|
|
|
|
|
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME ASC) AS rn_asc
|
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL
|
|
|
|
|
WHERE PARAM_NAME = '机台状态-实际产出数量'
|
|
|
|
|
AND COLLECT_TIME >= TRUNC(SYSDATE)
|
|
|
|
|
AND COLLECT_TIME < TRUNC(SYSDATE) + 1
|
|
|
|
|
)
|
|
|
|
|
GROUP BY device_code
|
|
|
|
|
)
|
|
|
|
|
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 即每台设备当天最新的一条记录
|
|
|
|
|
- **汇总逻辑**:将所有设备的最新实际产出数量求和,得到日累计产量
|
|
|
|
|
- 窗口:当天00:00:00(含)至次日00:00:00前(不含),按数据库时间。
|
|
|
|
|
- 取值:同一设备内取最早一条(rn_asc=1)和最新一条(rn_desc=1),差值=当日增量。
|
|
|
|
|
- 默认:缺最早记录时 earliest_val 置 0,最终差值为 latest-0,避免空值导致整台设备被跳过。
|
|
|
|
|
- 类型:`TO_NUMBER(PARAM_VALUE)` 将字符串数值转数字,确保可运算;需保证采集值为可解析的数字。
|
|
|
|
|
- 标识:仍用固定参数名 `PARAM_NAME='机台状态-实际产出数量'`,与采集端定义保持一致。
|
|
|
|
|
|
|
|
|
|
#### 4.2.2 月累计产量(BASE_DEVICE_PARAM_VAL)
|
|
|
|
|
#### 4.2.2 月累计产量(BASE_DEVICE_PARAM_VAL,按差分汇总)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT NVL(SUM(TO_NUMBER(PARAM_VALUE)), 0) -- 汇总当月实际产出数量
|
|
|
|
|
SELECT NVL(SUM(latest_val - earliest_val), 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 COLLECT_TIME >= TRUNC(SYSDATE, 'MM') AND COLLECT_TIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1) -- 当月数据
|
|
|
|
|
SELECT device_code,
|
|
|
|
|
NVL(MAX(CASE WHEN rn_desc = 1 THEN val END), 0) AS latest_val,
|
|
|
|
|
NVL(MAX(CASE WHEN rn_asc = 1 THEN val END), 0) AS earliest_val
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT DEVICE_CODE,
|
|
|
|
|
TO_NUMBER(PARAM_VALUE) AS val,
|
|
|
|
|
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS rn_desc,
|
|
|
|
|
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME ASC) AS rn_asc
|
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL
|
|
|
|
|
WHERE PARAM_NAME = '机台状态-实际产出数量'
|
|
|
|
|
AND COLLECT_TIME >= TRUNC(SYSDATE, 'MM')
|
|
|
|
|
AND COLLECT_TIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1)
|
|
|
|
|
)
|
|
|
|
|
GROUP BY device_code
|
|
|
|
|
)
|
|
|
|
|
WHERE RN = 1 -- 仅保留最新一条
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**业务逻辑说明**:
|
|
|
|
|
- 与日累计一致的取数口径,但时间范围是本自然月(当月1日00:00:00至下月1日00:00:00)
|
|
|
|
|
- 按设备取当月最新一条"机台状态-实际产出数量",再汇总得到月累计产量
|
|
|
|
|
|
|
|
|
|
> 原先的月累计(工单完成量 SUM(COMPLETE_AMOUNT))已替换为上述设备参数口径,旧逻辑在 Mapper XML 中以注释保留。
|
|
|
|
|
- 窗口:本自然月起始(含)到下月首日(不含)。
|
|
|
|
|
- 取值:同一设备取月内最早/最新记录差值作为当月增量。
|
|
|
|
|
- 默认:缺最早记录时 earliest_val 置 0;仅有一条记录时差值=最新-0。
|
|
|
|
|
- 类型:`TO_NUMBER(PARAM_VALUE)` 需为可解析数字。
|
|
|
|
|
- 参数名:固定使用 `PARAM_NAME='机台状态-实际产出数量'`。
|
|
|
|
|
- 旧口径:原工单累计 SUM(COMPLETE_AMOUNT) 已替换,旧 SQL 在 Mapper XML 注释保留。
|
|
|
|
|
|
|
|
|
|
#### 4.2.3 维修分析(按设备聚合)
|
|
|
|
|
|
|
|
|
|
|