doc(board): 修复巡检完成率超过100%问题

- 应检设备数计算逻辑从COUNT(DISTINCT PLAN_INSPECT_ID) * 18改为关联DMS_PLAN_INSPECT表SUM(DEVICE_AMOUNT)
- 更新inspectStatistics接口数据来源,增加DMS_PLAN_INSPECT表依赖
- 修正巡检执行情况统计数据查询SQL,通过计划表获取实际设备数量
- 删除硬编码的每计划18台设备假设,支持动态设备数量配置
- 更新业务逻辑说明文档,明确巡检计划表关联必要性
- 添加版本更新记录,记录巡检完成率修复详情
master
zangch@mesnac.com 5 days ago
parent 9eec0b171c
commit d0ee1d4ab9

@ -725,7 +725,7 @@ public class Board5ProductionTopVo {
| orderWorkStatistics | DMS_BILLS_FAULT_INSTANCE, DMS_BILLS_MAINT_INSTANCE, DMS_BILLS_INSPECT_INSTANCE | 工单总数=维修+保养+巡检;已完成=维修完成(BILLS_STATUS='2')+保养完成(MAINT_STATUS='3')+巡检完成(INSPECT_STATUS='3');停机=维修中(BILLS_STATUS='1') |
| repairTimeStatistics | DMS_BILLS_FAULT_INSTANCE | 平均响应时间=(REAL_BEGIN_TIME-APPLY_TIME)*24*60分钟平均维修时间=(REAL_END_TIME-REAL_BEGIN_TIME)*24小时仅统计BILLS_STATUS='2' |
| maintStatistics | DMS_BILLS_MAINT_INSTANCE | 按MAINT_STATUS分组统计1=待保养2=保养中3=已完成4=待验证无此数据返回0 |
| inspectStatistics | DMS_BILLS_INSPECT_INSTANCE | 应检设备=COUNT(DISTINCT PLAN_INSPECT_ID)*18;已检设备=INSPECT_STATUS='3'的数量 |
| inspectStatistics | DMS_BILLS_INSPECT_INSTANCE, DMS_PLAN_INSPECT | 应检设备=关联计划表SUM(DEVICE_AMOUNT);已检设备=INSPECT_STATUS='3'的数量 |
| deviceStatusDistribution | BASE_DEVICELEDGER | 按DEVICE_STATUS和DEVICE_TYPE分组统计WHERE IS_FLAG=1 |
| faultSourceDistribution | DMS_BILLS_FAULT_INSTANCE | 按FAULT_SOURCE_TYPE分组1=维护故障2/3=运行故障9=自然故障WHERE IS_FLAG='1' |
| faultTrendList | DMS_RECORD_ALARM_INFO | 近30天每日告警数量按ALARM_BEGIN_TIME日期分组 |
@ -791,15 +791,23 @@ FROM DMS_BILLS_MAINT_INSTANCE
#### 4.2.4 巡检执行情况统计
```sql
SELECT (SELECT COUNT(DISTINCT PLAN_INSPECT_ID) * 18 FROM DMS_BILLS_INSPECT_INSTANCE WHERE IS_FLAG = '1') AS DEVICE_COUNT,
SELECT (SELECT NVL(SUM(p.DEVICE_AMOUNT), 0)
FROM DMS_PLAN_INSPECT p
WHERE p.PLAN_INSPECT_ID IN (
SELECT DISTINCT PLAN_INSPECT_ID
FROM DMS_BILLS_INSPECT_INSTANCE
WHERE IS_FLAG = '1'
)
) AS DEVICE_COUNT,
(SELECT COUNT(*) FROM DMS_BILLS_INSPECT_INSTANCE WHERE IS_FLAG = '1' AND INSPECT_STATUS = '3') AS COMPLETE_COUNT
FROM DUAL
```
**业务逻辑说明**
- **应检设备数** = 不同巡检计划数 × 18每计划覆盖18台设备
- **应检设备数** = 关联 `DMS_PLAN_INSPECT` 计划表,汇总 `DEVICE_AMOUNT`(每个计划覆盖的设备数量
- **已检设备数** = 已完成的巡检工单数(`INSPECT_STATUS = '3'`
- **数据来源**`DMS_BILLS_INSPECT_INSTANCE` 巡检工单表
- **数据来源**`DMS_BILLS_INSPECT_INSTANCE` 巡检工单表 + `DMS_PLAN_INSPECT` 巡检计划表
- **关联原因**工单表无设备ID字段需通过计划表获取设备数量信息
#### 4.2.5 设备状态分布
@ -1041,8 +1049,9 @@ export function getProductionTop5() {
- 巡检工单:`DMS_BILLS_INSPECT_INSTANCE`WHERE IS_FLAG='1'
2. **❗重要:巡检应检设备数计算**
- 应检设备数 = COUNT(DISTINCT PLAN_INSPECT_ID) × 18
- 每个巡检计划覆盖18台设备固定值
- 应检设备数 = 关联 `DMS_PLAN_INSPECT` 表,汇总 `DEVICE_AMOUNT`
- 每个巡检计划的 `DEVICE_AMOUNT` 可能不同,不能硬编码 × 18
- 原先的计算逻辑 `COUNT(DISTINCT PLAN_INSPECT_ID) × 18` 导致完成率可能超过 100%
3. **保养状态映射**DMS_BILLS_MAINT_INSTANCE.MAINT_STATUS
- 1 = 待保养
@ -1081,3 +1090,4 @@ export function getProductionTop5() {
| 2026-01-21 | 1.2 | 产量机台TOP5替代备件消耗费用TOP5 | YinQ |
| 2026-01-22 | 1.3 | 故障数量曲线切换为DMS_RECORD_ALARM_INFO表 | YinQ |
| 2026-01-26 | 2.0 | 根据Mapper XML更新业务逻辑工单统计改用工单表汇总、保养/巡检改用工单实例表、更新所有SQL示例和表结构 | Claude |
| 2026-01-26 | 2.1 | 修复巡检完成率超过100%问题应检设备数改为关联DMS_PLAN_INSPECT表SUM(DEVICE_AMOUNT)替代硬编码×18 | Claude |

Loading…
Cancel
Save