zzw
3 天以前 757dcb3fcad665eaef93074a4981c4134f7a027e
emergency-repair-server/src/main/resources/mapper/ReportMapper.xml
@@ -52,14 +52,16 @@
                   NVL(SUM(CASE WHEN IS_H_RELATED = 1 THEN 1 ELSE 0 END), 0) AS H_RELATED,
                   NVL(SUM(CASE WHEN IS_MONITOR_ITEM = 1 THEN 1 ELSE 0 END), 0) AS MONITOR_ITEM,
                   NVL(SUM(CASE WHEN TASK_STATUS = 'CANCELLED' THEN 1 ELSE 0 END), 0) AS CANCELLED
            FROM LX.T_FAULT
        ) f
        CROSS JOIN (
            SELECT NVL(SUM(CASE WHEN COMPLETION_STATUS IS NULL OR COMPLETION_STATUS <> 'COMPLETED' THEN 1 ELSE 0 END), 0) AS UNFINISHED,
                   NVL(SUM(CASE WHEN COMPLETION_STATUS = 'COMPLETED' THEN 1 ELSE 0 END), 0) AS COMPLETED,
                   NVL(SUM(CASE WHEN COMPLETION_STATUS = 'WAIT_TEST' THEN 1 ELSE 0 END), 0) AS WAIT_TEST
            FROM LX.T_WORK_ORDER
        ) w
             FROM LX.T_FAULT
             WHERE DEL_FLAG = 0
         ) f
         CROSS JOIN (
             SELECT NVL(SUM(CASE WHEN COMPLETION_STATUS IS NULL OR COMPLETION_STATUS <> 'COMPLETED' THEN 1 ELSE 0 END), 0) AS UNFINISHED,
                    NVL(SUM(CASE WHEN COMPLETION_STATUS = 'COMPLETED' THEN 1 ELSE 0 END), 0) AS COMPLETED,
                    NVL(SUM(CASE WHEN COMPLETION_STATUS = 'WAIT_TEST' THEN 1 ELSE 0 END), 0) AS WAIT_TEST
             FROM LX.T_WORK_ORDER
             WHERE DEL_FLAG = 0
         ) w
    </select>
    <select id="selectTopEquipment" resultMap="metricResultMap">
@@ -76,9 +78,10 @@
                        ',' || CAST(p.ID AS VARCHAR(40)) || ',') &gt; 0
                  OR (NVL(f.EQUIPMENT_IDS, '') = '' AND f.EQUIPMENT_ID = p.ID)
             )
            JOIN LX.T_BASE_EQUIPMENT b ON b.ID = p.BASE_EQUIPMENT_ID
        ),
        splitter AS (
             JOIN LX.T_BASE_EQUIPMENT b ON b.ID = p.BASE_EQUIPMENT_ID
             WHERE f.DEL_FLAG = 0 AND p.DEL_FLAG = 0 AND b.DEL_FLAG = 0
         ),
         splitter AS (
            SELECT LEVEL AS N
            FROM DUAL
            CONNECT BY LEVEL &lt;= (
@@ -86,10 +89,11 @@
                    REPLACE(REPLACE(REPLACE(NVL(EQUIPMENT_NAME, ''), ',', '、'), ',', '、'), CHR(10), '、'),
                    '、'
                )), 0) + 1
                FROM LX.T_FAULT
            )
        ),
        fallback_names AS (
                 FROM LX.T_FAULT
                 WHERE DEL_FLAG = 0
             )
         ),
         fallback_names AS (
            SELECT f.ID AS FAULT_ID,
                   NVL(TRIM(REGEXP_SUBSTR(
                       REPLACE(REPLACE(REPLACE(NVL(f.EQUIPMENT_NAME, ''), ',', '、'), ',', '、'), CHR(10), '、'),
@@ -102,26 +106,29 @@
              ON sp.N &lt;= REGEXP_COUNT(
                  REPLACE(REPLACE(REPLACE(NVL(f.EQUIPMENT_NAME, ''), ',', '、'), ',', '、'), CHR(10), '、'),
                  '、'
              ) + 1
        ),
        fallback_link AS (
               ) + 1
             WHERE f.DEL_FLAG = 0
         ),
         fallback_link AS (
            SELECT DISTINCT fn.FAULT_ID,
                            b.ID AS BASE_ID,
                            b.NAME AS BASE_NAME
            FROM fallback_names fn
            JOIN LX.T_FAULT f ON f.ID = fn.FAULT_ID
            JOIN LX.T_PRODUCT_TREE p5
              ON p5.NODE_LEVEL = 5
             AND p5.NAME = fn.EQUIPMENT_NAME
             AND p5.BASE_EQUIPMENT_ID IS NOT NULL
            JOIN LX.T_PRODUCT_TREE p4 ON p4.ID = p5.PARENT_ID
            JOIN LX.T_PRODUCT_TREE p3 ON p3.ID = p4.PARENT_ID
            JOIN LX.T_PRODUCT_TREE x
              ON x.ID = p3.PARENT_ID
             AND x.NODE_LEVEL = 2
             AND x.NAME = f.X_NO
            JOIN LX.T_BASE_EQUIPMENT b ON b.ID = p5.BASE_EQUIPMENT_ID
            WHERE NOT EXISTS (
             JOIN LX.T_FAULT f ON f.ID = fn.FAULT_ID
             JOIN LX.T_PRODUCT_TREE p5
               ON p5.NODE_LEVEL = 5
              AND p5.NAME = fn.EQUIPMENT_NAME
              AND p5.BASE_EQUIPMENT_ID IS NOT NULL
              AND p5.DEL_FLAG = 0
             JOIN LX.T_PRODUCT_TREE p4 ON p4.ID = p5.PARENT_ID AND p4.DEL_FLAG = 0
             JOIN LX.T_PRODUCT_TREE p3 ON p3.ID = p4.PARENT_ID AND p3.DEL_FLAG = 0
             JOIN LX.T_PRODUCT_TREE x
               ON x.ID = p3.PARENT_ID
              AND x.NODE_LEVEL = 2
              AND x.NAME = f.X_NO
              AND x.DEL_FLAG = 0
             JOIN LX.T_BASE_EQUIPMENT b ON b.ID = p5.BASE_EQUIPMENT_ID AND b.DEL_FLAG = 0
             WHERE NOT EXISTS (
                SELECT 1
                FROM explicit_link el
                WHERE el.FAULT_ID = fn.FAULT_ID
@@ -166,27 +173,29 @@
    <select id="selectByTeam" resultMap="teamResultMap">
        WITH fault_agg AS (
            SELECT CASE
                       WHEN TRIM(TEAM_MAJOR) IS NULL OR TRIM(TEAM_MAJOR) = '' THEN '未填写T队专业'
                       WHEN TRIM(TEAM_MAJOR) IS NULL OR TRIM(TEAM_MAJOR) = '' THEN '未填写rk_T队专业'
                       ELSE TRIM(TEAM_MAJOR)
                   END AS NAME,
                   COUNT(*) AS FAULT_COUNT
            FROM LX.T_FAULT
            GROUP BY CASE
                         WHEN TRIM(TEAM_MAJOR) IS NULL OR TRIM(TEAM_MAJOR) = '' THEN '未填写T队专业'
             FROM LX.T_FAULT
             WHERE DEL_FLAG = 0
             GROUP BY CASE
                         WHEN TRIM(TEAM_MAJOR) IS NULL OR TRIM(TEAM_MAJOR) = '' THEN '未填写rk_T队专业'
                         ELSE TRIM(TEAM_MAJOR)
                     END
        ),
        parts_agg AS (
            SELECT CASE
                       WHEN f.TEAM_MAJOR IS NULL OR TRIM(f.TEAM_MAJOR) = '' THEN '未填写T队专业'
                       WHEN f.TEAM_MAJOR IS NULL OR TRIM(f.TEAM_MAJOR) = '' THEN '未填写rk_T队专业'
                       ELSE TRIM(f.TEAM_MAJOR)
                   END AS NAME,
                   NVL(SUM(NVL(ci.CONSUMABLE_COUNT, 0)), 0) AS PARTS_COUNT
            FROM LX.T_COMPLETION_INFO ci
            JOIN LX.T_WORK_ORDER w ON w.ID = ci.WORK_ORDER_ID
            LEFT JOIN LX.T_FAULT f ON f.ID = w.FAULT_ID
            GROUP BY CASE
                         WHEN f.TEAM_MAJOR IS NULL OR TRIM(f.TEAM_MAJOR) = '' THEN '未填写T队专业'
             FROM LX.T_COMPLETION_INFO ci
             JOIN LX.T_WORK_ORDER w ON w.ID = ci.WORK_ORDER_ID AND w.DEL_FLAG = 0
             LEFT JOIN LX.T_FAULT f ON f.ID = w.FAULT_ID AND f.DEL_FLAG = 0
             WHERE ci.DEL_FLAG = 0
             GROUP BY CASE
                         WHEN f.TEAM_MAJOR IS NULL OR TRIM(f.TEAM_MAJOR) = '' THEN '未填写rk_T队专业'
                         ELSE TRIM(f.TEAM_MAJOR)
                     END
        ),
@@ -210,8 +219,9 @@
               NVL(SUM(CASE WHEN COMPLETION_STATUS IS NULL OR COMPLETION_STATUS &lt;&gt; 'COMPLETED' THEN 1 ELSE 0 END), 0) AS UNFINISHED_COUNT,
               NVL(SUM(CASE WHEN COMPLETION_STATUS = 'COMPLETED' THEN 1 ELSE 0 END), 0) AS COMPLETED_COUNT,
               NVL(ROUND(AVG(SCORE), 1), 0) AS AVERAGE_SCORE
        FROM LX.T_WORK_ORDER
        GROUP BY CONTRACTOR_NAME
         FROM LX.T_WORK_ORDER
         WHERE DEL_FLAG = 0
         GROUP BY CONTRACTOR_NAME
        ORDER BY TOTAL_COUNT DESC, CONTRACTOR_NAME ASC
    </select>
@@ -219,18 +229,18 @@
        WITH fault_agg AS (
            SELECT EXTRACT(YEAR FROM REPORT_DATE) AS REPORT_YEAR,
                   COUNT(*) AS FAULT_COUNT
            FROM LX.T_FAULT
            WHERE REPORT_DATE IS NOT NULL
            GROUP BY EXTRACT(YEAR FROM REPORT_DATE)
             FROM LX.T_FAULT
             WHERE DEL_FLAG = 0 AND REPORT_DATE IS NOT NULL
             GROUP BY EXTRACT(YEAR FROM REPORT_DATE)
        ),
        parts_agg AS (
            SELECT EXTRACT(YEAR FROM f.REPORT_DATE) AS REPORT_YEAR,
                   NVL(SUM(NVL(ci.CONSUMABLE_COUNT, 0)), 0) AS PARTS_COUNT
            FROM LX.T_COMPLETION_INFO ci
            JOIN LX.T_WORK_ORDER w ON w.ID = ci.WORK_ORDER_ID
            JOIN LX.T_FAULT f ON f.ID = w.FAULT_ID
            WHERE f.REPORT_DATE IS NOT NULL
            GROUP BY EXTRACT(YEAR FROM f.REPORT_DATE)
             FROM LX.T_COMPLETION_INFO ci
             JOIN LX.T_WORK_ORDER w ON w.ID = ci.WORK_ORDER_ID AND w.DEL_FLAG = 0
             JOIN LX.T_FAULT f ON f.ID = w.FAULT_ID AND f.DEL_FLAG = 0
             WHERE ci.DEL_FLAG = 0 AND f.REPORT_DATE IS NOT NULL
             GROUP BY EXTRACT(YEAR FROM f.REPORT_DATE)
        ),
        report_years AS (
            SELECT REPORT_YEAR FROM fault_agg