diff --git a/aucma-report/boardAPIComplete.md b/aucma-report/boardAPIComplete.md index f44168a..d57c026 100644 --- a/aucma-report/boardAPIComplete.md +++ b/aucma-report/boardAPIComplete.md @@ -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 |